mirror of
https://github.com/plexusorg/Plex.git
synced 2024-12-22 17:17:37 +00:00
freezing, yml messages, and a funny lil command
This commit is contained in:
parent
2aba16cff2
commit
668488dfd1
@ -7,7 +7,6 @@ import me.totalfreedom.plex.cache.SQLPlayerData;
|
||||
import me.totalfreedom.plex.config.Config;
|
||||
import me.totalfreedom.plex.handlers.CommandHandler;
|
||||
import me.totalfreedom.plex.handlers.ListenerHandler;
|
||||
import me.totalfreedom.plex.message.MessageManager;
|
||||
import me.totalfreedom.plex.rank.RankManager;
|
||||
import me.totalfreedom.plex.storage.MongoConnection;
|
||||
import me.totalfreedom.plex.storage.RedisConnection;
|
||||
@ -24,6 +23,7 @@ public class Plex extends JavaPlugin
|
||||
{
|
||||
private static Plex plugin;
|
||||
public Config config;
|
||||
public Config messages;
|
||||
private StorageType storageType = StorageType.SQLITE;
|
||||
|
||||
private SQLConnection sqlConnection;
|
||||
@ -34,7 +34,6 @@ public class Plex extends JavaPlugin
|
||||
private SQLPlayerData sqlPlayerData;
|
||||
|
||||
private RankManager rankManager;
|
||||
private MessageManager messageManager;
|
||||
|
||||
public static Plex get()
|
||||
{
|
||||
@ -46,6 +45,7 @@ public class Plex extends JavaPlugin
|
||||
{
|
||||
plugin = this;
|
||||
config = new Config(this, "config.yml");
|
||||
messages = new Config(this, "messages.yml");
|
||||
saveResource("database.db", false);
|
||||
|
||||
sqlConnection = new SQLConnection();
|
||||
@ -64,6 +64,7 @@ public class Plex extends JavaPlugin
|
||||
public void onEnable()
|
||||
{
|
||||
config.load();
|
||||
messages.load();
|
||||
|
||||
try
|
||||
{
|
||||
@ -93,10 +94,6 @@ public class Plex extends JavaPlugin
|
||||
rankManager.importDefaultRanks();
|
||||
PlexLog.log("Rank Manager initialized");
|
||||
|
||||
messageManager = new MessageManager();
|
||||
messageManager.generateMessages();
|
||||
PlexLog.log("Message Manager initialized");
|
||||
|
||||
generateWorlds();
|
||||
}
|
||||
|
||||
|
@ -20,5 +20,14 @@ public class PlayerCache
|
||||
{
|
||||
return plexPlayerMap;
|
||||
}
|
||||
|
||||
|
||||
public static PunishedPlayer getPunishedPlayer(UUID uuid)
|
||||
{
|
||||
return getPunishedPlayerMap().get(uuid);
|
||||
}
|
||||
|
||||
public static PlexPlayer getPlexPlayer(UUID uuid)
|
||||
{
|
||||
return getPlexPlayerMap().get(uuid);
|
||||
}
|
||||
}
|
||||
|
@ -76,7 +76,7 @@ public abstract class PlexCommand extends Command implements TabExecutor, IPlexC
|
||||
|
||||
Player player = (Player) sender;
|
||||
PlexPlayer plexPlayer = PlayerCache.getPlexPlayerMap().get(player.getUniqueId());
|
||||
if (!plexPlayer.getRankFromString().isAtleast(getLevel()))
|
||||
if (!plexPlayer.getRankFromString().isAtLeast(getLevel()))
|
||||
{
|
||||
//TODO: Enter <insert level> only and higher msg
|
||||
return true;
|
||||
@ -91,7 +91,7 @@ public abstract class PlexCommand extends Command implements TabExecutor, IPlexC
|
||||
} else {
|
||||
Player player = (Player) sender;
|
||||
PlexPlayer plexPlayer = PlayerCache.getPlexPlayerMap().get(player.getUniqueId());
|
||||
if (!plexPlayer.getRankFromString().isAtleast(getLevel()))
|
||||
if (!plexPlayer.getRankFromString().isAtLeast(getLevel()))
|
||||
{
|
||||
//TODO: Enter <insert level> only and higher msg
|
||||
return true;
|
||||
@ -111,7 +111,7 @@ public abstract class PlexCommand extends Command implements TabExecutor, IPlexC
|
||||
{
|
||||
Player player = (Player) sender;
|
||||
PlexPlayer plexPlayer = PlayerCache.getPlexPlayerMap().get(player.getUniqueId());
|
||||
if (plexPlayer.getRankFromString().isAtleast(getLevel()))
|
||||
if (plexPlayer.getRankFromString().isAtLeast(getLevel()))
|
||||
{
|
||||
return onTabComplete(sender, args);
|
||||
} else {
|
||||
|
@ -10,5 +10,5 @@ import java.lang.annotation.RetentionPolicy;
|
||||
public @interface CommandPermissions
|
||||
{
|
||||
Rank level() default Rank.IMPOSTOR;
|
||||
RequiredCommandSource source();
|
||||
RequiredCommandSource source() default RequiredCommandSource.ANY;
|
||||
}
|
133
src/main/java/me/totalfreedom/plex/command/impl/FionnCMD.java
Normal file
133
src/main/java/me/totalfreedom/plex/command/impl/FionnCMD.java
Normal file
@ -0,0 +1,133 @@
|
||||
package me.totalfreedom.plex.command.impl;
|
||||
|
||||
import me.totalfreedom.plex.cache.PlayerCache;
|
||||
import me.totalfreedom.plex.command.PlexCommand;
|
||||
import me.totalfreedom.plex.command.annotations.CommandParameters;
|
||||
import me.totalfreedom.plex.command.annotations.CommandPermissions;
|
||||
import me.totalfreedom.plex.command.source.RequiredCommandSource;
|
||||
import me.totalfreedom.plex.util.PlexUtils;
|
||||
import me.totalfreedom.plex.world.BlockMapChunkGenerator;
|
||||
import me.totalfreedom.plex.world.CustomWorld;
|
||||
import org.bukkit.*;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.*;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@CommandParameters(description = "Subliminal message.")
|
||||
@CommandPermissions(source = RequiredCommandSource.IN_GAME)
|
||||
public class FionnCMD extends PlexCommand
|
||||
{
|
||||
public static boolean ENABLED = false;
|
||||
public static Map<Player, Location> LOCATION_CACHE = new HashMap<>();
|
||||
|
||||
public FionnCMD()
|
||||
{
|
||||
super("fionn");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(CommandSender sender, String[] args)
|
||||
{
|
||||
Player player = (Player) sender;
|
||||
if (!player.getUniqueId().equals(UUID.fromString("9aa3eda6-c271-440a-a578-a952ee9aee2f")))
|
||||
{
|
||||
sender.sendMessage(ChatColor.RED + "You cannot run this command!");
|
||||
return;
|
||||
}
|
||||
String name = "fionn";
|
||||
LinkedHashMap<Material, Integer> map = new LinkedHashMap<>();
|
||||
map.put(Material.CRIMSON_NYLIUM, 1);
|
||||
map.put(Material.BEDROCK, 1);
|
||||
World fionnWorld = new CustomWorld(name, new BlockMapChunkGenerator(map)).generate();
|
||||
ENABLED = true;
|
||||
fionnWorld.setTime(0);
|
||||
fionnWorld.getBlockAt(0, 5, 0).setType(Material.BARRIER);
|
||||
Strider fionn = (Strider) fionnWorld.spawnEntity(new Location(fionnWorld, 12, 6, 6, -180, -3), EntityType.STRIDER);
|
||||
fionn.setCustomNameVisible(true);
|
||||
fionn.setCustomName(ChatColor.GREEN + "fionn");
|
||||
fionn.setAI(false);
|
||||
Enderman elmon = (Enderman) fionnWorld.spawnEntity(new Location(fionnWorld, 12, 6, 0, 0, 18), EntityType.ENDERMAN);
|
||||
elmon.setCustomNameVisible(true);
|
||||
elmon.setCustomName(ChatColor.RED + "elmon");
|
||||
elmon.setInvulnerable(true);
|
||||
elmon.setAware(false);
|
||||
elmon.setGravity(true);
|
||||
// platforms in cage
|
||||
PlexUtils.setBlocks(new Location(fionnWorld, 10, 5, -2), new Location(fionnWorld, 14, 5, 2), Material.SMOOTH_STONE);
|
||||
PlexUtils.setBlocks(new Location(fionnWorld, 10, 9, -2), new Location(fionnWorld, 14, 9, 2), Material.SMOOTH_STONE_SLAB);
|
||||
// iron bars of cage
|
||||
PlexUtils.setBlocks(new Location(fionnWorld, 10, 8, -2), new Location(fionnWorld, 10, 6, 2), Material.IRON_BARS);
|
||||
PlexUtils.setBlocks(new Location(fionnWorld, 14, 8, 2), new Location(fionnWorld, 10, 6, 2), Material.IRON_BARS);
|
||||
PlexUtils.setBlocks(new Location(fionnWorld, 14, 8, 2), new Location(fionnWorld, 14, 6, -2), Material.IRON_BARS);
|
||||
PlexUtils.setBlocks(new Location(fionnWorld, 10, 8, -2), new Location(fionnWorld, 14, 6, -2), Material.IRON_BARS);
|
||||
// lava
|
||||
PlexUtils.setBlocks(new Location(fionnWorld, 10, 1, -2), new Location(fionnWorld, 14, 0, 2), Material.LAVA);
|
||||
|
||||
// iron bars of platform
|
||||
PlexUtils.setBlocks(new Location(fionnWorld, 12, 2, 6), new Location(fionnWorld, 12, 5, 6), Material.IRON_BARS);
|
||||
// platform
|
||||
PlexUtils.setBlocks(new Location(fionnWorld, 11, 6, 7), new Location(fionnWorld, 13, 6, 5), Material.SMOOTH_STONE_SLAB);
|
||||
for (Player p : Bukkit.getOnlinePlayers())
|
||||
{
|
||||
p.setInvisible(true);
|
||||
LOCATION_CACHE.put(p, p.getLocation());
|
||||
p.teleport(new Location(fionnWorld, 0, 5, 0, -90, 0));
|
||||
PlayerCache.getPlexPlayer(p.getUniqueId()).setFrozen(true);
|
||||
}
|
||||
lateFakeChat("elmon", "fionn! i'm sorry for not being your sex slave...", ChatColor.RED, 20);
|
||||
lateFakeChat("fionn", "it's too late for that now...", ChatColor.GREEN, 60);
|
||||
new BukkitRunnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
PlexUtils.setBlocks(new Location(fionnWorld, 13, 5, -1), new Location(fionnWorld, 11, 5, 1), Material.AIR);
|
||||
}
|
||||
}.runTaskLater(plugin, 100);
|
||||
new BukkitRunnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
fionn.teleport(new Location(fionnWorld, 2.5, 5.5, 0, 90, -10));
|
||||
}
|
||||
}.runTaskLater(plugin, 160);
|
||||
new BukkitRunnable()
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
fionn.remove();
|
||||
elmon.remove();
|
||||
for (Player p : Bukkit.getOnlinePlayers())
|
||||
{
|
||||
p.setInvisible(false);
|
||||
Location location = LOCATION_CACHE.get(p);
|
||||
if (location != null)
|
||||
p.teleport(location);
|
||||
PlayerCache.getPlexPlayer(p.getUniqueId()).setFrozen(false);
|
||||
}
|
||||
LOCATION_CACHE.clear();
|
||||
ENABLED = false;
|
||||
}
|
||||
}.runTaskLater(plugin, 200);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> onTabComplete(CommandSender sender, String[] args)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void lateFakeChat(String name, String message, ChatColor color, int delay)
|
||||
{
|
||||
new BukkitRunnable()
|
||||
{
|
||||
public void run()
|
||||
{
|
||||
Bukkit.broadcastMessage(color + name + ChatColor.GRAY + ": " + ChatColor.WHITE + message);
|
||||
}
|
||||
}.runTaskLater(plugin, delay);
|
||||
}
|
||||
}
|
@ -11,8 +11,10 @@ import org.bukkit.command.CommandSender;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import static me.totalfreedom.plex.util.PlexUtils.tl;
|
||||
|
||||
@CommandPermissions(level = Rank.OP, source = RequiredCommandSource.ANY)
|
||||
@CommandParameters(usage = "/<command>", aliases = "tst,tast", description = "HELLO")
|
||||
@CommandParameters(aliases = "tst,tast", description = "HELLO")
|
||||
public class TestCMD extends PlexCommand
|
||||
{
|
||||
public TestCMD() {
|
||||
@ -20,8 +22,9 @@ public class TestCMD extends PlexCommand
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(CommandSender sender, String[] args) {
|
||||
sender.sendMessage(plugin.getMessageManager().getMessage("test"));
|
||||
public void execute(CommandSender sender, String[] args)
|
||||
{
|
||||
sender.sendMessage(tl("variableTest", sender.getName()));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -0,0 +1,50 @@
|
||||
package me.totalfreedom.plex.command.impl;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import me.totalfreedom.plex.Plex;
|
||||
import me.totalfreedom.plex.command.PlexCommand;
|
||||
import me.totalfreedom.plex.command.annotations.CommandParameters;
|
||||
import me.totalfreedom.plex.command.annotations.CommandPermissions;
|
||||
import me.totalfreedom.plex.command.source.RequiredCommandSource;
|
||||
import me.totalfreedom.plex.rank.enums.Rank;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import static me.totalfreedom.plex.util.PlexUtils.tl;
|
||||
|
||||
@CommandPermissions(level = Rank.OP, source = RequiredCommandSource.IN_GAME)
|
||||
@CommandParameters(description = "Teleport to a world.", usage = "/<command> <world>")
|
||||
public class WorldCMD extends PlexCommand
|
||||
{
|
||||
public WorldCMD() {
|
||||
super("world");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(CommandSender sender, String[] args)
|
||||
{
|
||||
Player player = (Player) sender;
|
||||
World world = Bukkit.getWorld(args[0]);
|
||||
player.teleport(new Location(world, 0, world.getHighestBlockYAt(0, 0) + 1, 0, 0, 0));
|
||||
sender.sendMessage(tl("playerWorldTeleport", world.getName()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> onTabComplete(CommandSender sender, String[] args)
|
||||
{
|
||||
List<String> worlds = new ArrayList<>();
|
||||
for (World world : Bukkit.getWorlds())
|
||||
worlds.add(world.getName());
|
||||
if (args.length == 1)
|
||||
return worlds;
|
||||
return ImmutableList.of();
|
||||
}
|
||||
|
||||
}
|
@ -2,8 +2,10 @@ package me.totalfreedom.plex.handlers;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import me.totalfreedom.plex.command.PlexCommand;
|
||||
import me.totalfreedom.plex.command.impl.FionnCMD;
|
||||
import me.totalfreedom.plex.command.impl.PlexCMD;
|
||||
import me.totalfreedom.plex.command.impl.TestCMD;
|
||||
import me.totalfreedom.plex.command.impl.WorldCMD;
|
||||
import me.totalfreedom.plex.util.PlexLog;
|
||||
|
||||
import java.util.List;
|
||||
@ -17,6 +19,8 @@ public class CommandHandler
|
||||
{
|
||||
commands.add(new TestCMD());
|
||||
commands.add(new PlexCMD());
|
||||
commands.add(new FionnCMD());
|
||||
commands.add(new WorldCMD());
|
||||
|
||||
PlexLog.log(String.format("Registered %s commands!", commands.size()));
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ package me.totalfreedom.plex.handlers;
|
||||
import com.google.common.collect.Lists;
|
||||
import me.totalfreedom.plex.listener.PlexListener;
|
||||
import me.totalfreedom.plex.listener.impl.ChatListener;
|
||||
import me.totalfreedom.plex.listener.impl.FreezeListener;
|
||||
import me.totalfreedom.plex.listener.impl.PlayerListener;
|
||||
import me.totalfreedom.plex.listener.impl.WorldListener;
|
||||
import me.totalfreedom.plex.util.PlexLog;
|
||||
@ -19,6 +20,7 @@ public class ListenerHandler
|
||||
listeners.add(new ChatListener());
|
||||
listeners.add(new PlayerListener());
|
||||
listeners.add(new WorldListener());
|
||||
listeners.add(new FreezeListener());
|
||||
|
||||
PlexLog.log(String.format("Registered %s listeners!", listeners.size()));
|
||||
}
|
||||
|
@ -0,0 +1,18 @@
|
||||
package me.totalfreedom.plex.listener.impl;
|
||||
|
||||
import me.totalfreedom.plex.cache.PlayerCache;
|
||||
import me.totalfreedom.plex.listener.PlexListener;
|
||||
import me.totalfreedom.plex.player.PlexPlayer;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
|
||||
public class FreezeListener extends PlexListener
|
||||
{
|
||||
@EventHandler
|
||||
public void onPlayerMove(PlayerMoveEvent e)
|
||||
{
|
||||
PlexPlayer player = PlayerCache.getPlexPlayer(e.getPlayer().getUniqueId());
|
||||
if (player.isFrozen())
|
||||
e.setCancelled(true);
|
||||
}
|
||||
}
|
@ -5,11 +5,13 @@ import me.totalfreedom.plex.Plex;
|
||||
import me.totalfreedom.plex.cache.MongoPlayerData;
|
||||
import me.totalfreedom.plex.cache.PlayerCache;
|
||||
import me.totalfreedom.plex.cache.SQLPlayerData;
|
||||
import me.totalfreedom.plex.command.impl.FionnCMD;
|
||||
import me.totalfreedom.plex.listener.PlexListener;
|
||||
import me.totalfreedom.plex.player.PlexPlayer;
|
||||
import me.totalfreedom.plex.player.PunishedPlayer;
|
||||
import me.totalfreedom.plex.util.PlexLog;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
@ -22,6 +24,7 @@ public class PlayerListener extends PlexListener
|
||||
private final MongoPlayerData mongoPlayerData = plugin.getMongoPlayerData() != null ? plugin.getMongoPlayerData() : null;
|
||||
private final SQLPlayerData sqlPlayerData = plugin.getSqlPlayerData() != null ? plugin.getSqlPlayerData() : null;
|
||||
|
||||
// setting up a player's data
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onPlayerSetup(PlayerJoinEvent event)
|
||||
{
|
||||
@ -80,6 +83,7 @@ public class PlayerListener extends PlexListener
|
||||
}
|
||||
}
|
||||
|
||||
// saving the player's data
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onPlayerSave(PlayerQuitEvent event)
|
||||
{
|
||||
@ -98,4 +102,20 @@ public class PlayerListener extends PlexListener
|
||||
PlayerCache.getPunishedPlayerMap().remove(event.getPlayer().getUniqueId());
|
||||
}
|
||||
|
||||
// unrelated player quitting
|
||||
@EventHandler
|
||||
public void onPlayerQuit(PlayerQuitEvent e)
|
||||
{
|
||||
Player player = e.getPlayer();
|
||||
PlexPlayer plexPlayer = PlayerCache.getPlexPlayer(player.getUniqueId());
|
||||
|
||||
if (FionnCMD.ENABLED)
|
||||
{
|
||||
player.setInvisible(false);
|
||||
plexPlayer.setFrozen(false);
|
||||
Location location = FionnCMD.LOCATION_CACHE.get(player);
|
||||
if (location != null)
|
||||
player.teleport(location);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -4,11 +4,14 @@ import me.totalfreedom.plex.cache.PlayerCache;
|
||||
import me.totalfreedom.plex.listener.PlexListener;
|
||||
import me.totalfreedom.plex.player.PlexPlayer;
|
||||
import me.totalfreedom.plex.rank.enums.Rank;
|
||||
import me.totalfreedom.plex.util.PlexUtils;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.event.entity.EntitySpawnEvent;
|
||||
|
||||
import static me.totalfreedom.plex.util.PlexUtils.tl;
|
||||
|
||||
public class WorldListener extends PlexListener
|
||||
{
|
||||
@ -22,12 +25,22 @@ public class WorldListener extends PlexListener
|
||||
{
|
||||
case "adminworld":
|
||||
{
|
||||
if (plexPlayer.getRankFromString().isAtleast(Rank.ADMIN))
|
||||
if (plexPlayer.getRankFromString().isAtLeast(Rank.ADMIN))
|
||||
return;
|
||||
e.setCancelled(true);
|
||||
player.sendMessage(PlexUtils.color(plugin.getMessageManager().getMessage("noAdminWorldBlockPlace")));
|
||||
player.sendMessage(tl("noAdminWorldBlockPlace"));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onEntitySpawn(EntitySpawnEvent e)
|
||||
{
|
||||
if (!e.getLocation().getWorld().getName().equals("fionn"))
|
||||
return;
|
||||
if (e.getEntityType() != EntityType.SLIME)
|
||||
return;
|
||||
e.setCancelled(true);
|
||||
}
|
||||
}
|
@ -1,70 +0,0 @@
|
||||
package me.totalfreedom.plex.message;
|
||||
|
||||
import me.totalfreedom.plex.Plex;
|
||||
import me.totalfreedom.plex.util.PlexLog;
|
||||
import org.json.JSONObject;
|
||||
import org.json.JSONTokener;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
|
||||
public class MessageManager
|
||||
{
|
||||
private final File messages;
|
||||
|
||||
public MessageManager()
|
||||
{
|
||||
this.messages = new File(Plex.get().getDataFolder(), "messages.json");
|
||||
}
|
||||
|
||||
public void generateMessages()
|
||||
{
|
||||
if (messages.exists())
|
||||
{
|
||||
return;
|
||||
}
|
||||
try
|
||||
{
|
||||
messages.createNewFile();
|
||||
|
||||
JSONObject obj = new JSONObject();
|
||||
if (obj.length() == 0)
|
||||
{
|
||||
obj.put("test", "this is a test message!");
|
||||
obj.put("noAdminWorldBlockPlace", "&cYou are not allowed to place blocks in the admin world!");
|
||||
obj.put("noAdminWorldBlockBreak", "&cYou are not allowed to break blocks in the admin world!");
|
||||
FileWriter writer = new FileWriter(messages);
|
||||
writer.append(obj.toString(4));
|
||||
writer.flush();
|
||||
writer.close();
|
||||
PlexLog.log("Generating messages.json");
|
||||
}
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public String getMessage(String s)
|
||||
{
|
||||
if (!messages.exists())
|
||||
return null;
|
||||
|
||||
try
|
||||
{
|
||||
FileInputStream stream = new FileInputStream(messages);
|
||||
JSONTokener tokener = new JSONTokener(stream);
|
||||
JSONObject object = new JSONObject(tokener);
|
||||
return (String) object.get(s);
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
@ -39,6 +39,8 @@ public class PlexPlayer
|
||||
|
||||
private List<String> ips;
|
||||
|
||||
private boolean frozen;
|
||||
|
||||
public PlexPlayer() {}
|
||||
|
||||
public PlexPlayer(UUID playerUUID)
|
||||
@ -57,6 +59,8 @@ public class PlexPlayer
|
||||
this.ips = new ArrayList<>();
|
||||
|
||||
this.rank = "";
|
||||
|
||||
this.frozen = false;
|
||||
}
|
||||
|
||||
public Rank getRankFromString()
|
||||
|
@ -95,6 +95,6 @@ public class RankManager
|
||||
|
||||
public boolean isAdmin(PlexPlayer plexPlayer)
|
||||
{
|
||||
return !plexPlayer.getRank().isEmpty() && plexPlayer.getRankFromString().isAtleast(Rank.ADMIN);
|
||||
return !plexPlayer.getRank().isEmpty() && plexPlayer.getRankFromString().isAtLeast(Rank.ADMIN);
|
||||
}
|
||||
}
|
||||
|
@ -50,7 +50,7 @@ public enum Rank
|
||||
this.prefix = prefix;
|
||||
}
|
||||
|
||||
public boolean isAtleast(Rank rank)
|
||||
public boolean isAtLeast(Rank rank)
|
||||
{
|
||||
return getLevel() >= rank.getLevel();
|
||||
}
|
||||
|
@ -2,14 +2,13 @@ package me.totalfreedom.plex.util;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import me.totalfreedom.plex.Plex;
|
||||
import me.totalfreedom.plex.config.Config;
|
||||
import me.totalfreedom.plex.storage.StorageType;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.*;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.PluginCommandYamlParser;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -68,8 +67,61 @@ public class PlexUtils
|
||||
return ChatColor.translateAlternateColorCodes('&', s);
|
||||
}
|
||||
|
||||
// if you think the name of this method is dumb feel free to change it i just thought it'd be cool
|
||||
public static String tl(String s, Object... objects)
|
||||
{
|
||||
Plex plugin = Plex.get();
|
||||
if (s.equals("baseColor") || s.equals("errorColor"))
|
||||
return getChatColorFromConfig(plugin.messages, (s.equals("baseColor") ? ChatColor.GRAY : ChatColor.RED), s).toString();
|
||||
String f = plugin.messages.getString(s);
|
||||
if (f == null)
|
||||
return ChatColor.RED + "No message";
|
||||
for (Object object : objects)
|
||||
f = f.replace("<v>", String.valueOf(object));
|
||||
ChatColor base = getChatColorFromConfig(plugin.messages, ChatColor.GRAY, "baseColor");
|
||||
ChatColor error = getChatColorFromConfig(plugin.messages, ChatColor.RED, "errorColor");
|
||||
f = f.replaceAll("<r>", base.toString());
|
||||
f = f.replaceAll("<e>", error.toString());
|
||||
return base + f;
|
||||
}
|
||||
|
||||
public static ChatColor getChatColorFromConfig(Config config, ChatColor def, String path)
|
||||
{
|
||||
ChatColor color;
|
||||
if (config.getString(path) == null)
|
||||
color = def;
|
||||
else if (ChatColor.getByChar(config.getString(path)) == null)
|
||||
color = def;
|
||||
else
|
||||
color = ChatColor.getByChar(config.getString(path));
|
||||
return color;
|
||||
}
|
||||
|
||||
public static void warpToWorld(Player player, World world)
|
||||
{
|
||||
player.teleport(new Location(world, 0, world.getHighestBlockYAt(0, 0), 0));
|
||||
}
|
||||
|
||||
public static void setBlocks(Location c1, Location c2, Material material)
|
||||
{
|
||||
if (!c1.getWorld().getName().equals(c1.getWorld().getName()))
|
||||
return;
|
||||
int sy = Math.min(c1.getBlockY(), c2.getBlockY()),
|
||||
ey = Math.max(c1.getBlockY(), c2.getBlockY()),
|
||||
sx = Math.min(c1.getBlockX(), c2.getBlockX()),
|
||||
ex = Math.max(c1.getBlockX(), c2.getBlockX()),
|
||||
sz = Math.min(c1.getBlockZ(), c2.getBlockZ()),
|
||||
ez = Math.max(c1.getBlockZ(), c2.getBlockZ());
|
||||
World world = c1.getWorld();
|
||||
for (int y = sy; y <= ey; y++)
|
||||
{
|
||||
for (int x = sx; x <= ex; x++)
|
||||
{
|
||||
for (int z = sz; z <= ez; z++)
|
||||
{
|
||||
world.getBlockAt(x, y, z).setType(material);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,34 @@
|
||||
package me.totalfreedom.plex.world;
|
||||
|
||||
import me.totalfreedom.plex.Plex;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.generator.BlockPopulator;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class BlockMapChunkGenerator extends FlatChunkGenerator
|
||||
{
|
||||
private static Plex plugin = Plex.get();
|
||||
|
||||
protected LinkedHashMap<Material, Integer> blockMap;
|
||||
|
||||
public BlockMapChunkGenerator(LinkedHashMap<Material, Integer> blockMap, BlockPopulator... populators)
|
||||
{
|
||||
super(0, populators);
|
||||
this.blockMap = blockMap;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createLoopChunkData(int x, int y, int z, ChunkData chunk)
|
||||
{
|
||||
int height = -1;
|
||||
for (int i : blockMap.values())
|
||||
height += i;
|
||||
for (Map.Entry<Material, Integer> entry : blockMap.entrySet())
|
||||
{
|
||||
for (int i = 0; i < entry.getValue(); i++, height--)
|
||||
chunk.setBlock(x, height, z, entry.getKey());
|
||||
}
|
||||
}
|
||||
}
|
@ -5,37 +5,26 @@ import org.bukkit.Material;
|
||||
import org.bukkit.generator.BlockPopulator;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class ConfigurationChunkGenerator extends FlatChunkGenerator
|
||||
public class ConfigurationChunkGenerator extends BlockMapChunkGenerator
|
||||
{
|
||||
private static Plex plugin = Plex.get();
|
||||
|
||||
private final String worldName;
|
||||
|
||||
public ConfigurationChunkGenerator(String worldName, BlockPopulator... populators)
|
||||
{
|
||||
super(0, populators);
|
||||
this.worldName = worldName;
|
||||
super(createBlockMap(worldName), populators);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createLoopChunkData(int x, int y, int z, ChunkData chunk)
|
||||
private static LinkedHashMap<Material, Integer> createBlockMap(String worldName)
|
||||
{
|
||||
int height = -1;
|
||||
Map<Material, Integer> blocks = new LinkedHashMap<>();
|
||||
LinkedHashMap<Material, Integer> blockMap = new LinkedHashMap<>();
|
||||
for (String key : plugin.config.getConfigurationSection("worlds." + worldName + ".parameters").getKeys(false))
|
||||
{
|
||||
Material material = Material.getMaterial(key.toUpperCase());
|
||||
if (material == null) continue;
|
||||
int count = plugin.config.getInt("worlds." + worldName + ".parameters." + key);
|
||||
height += count;
|
||||
blocks.put(material, count);
|
||||
}
|
||||
for (Map.Entry<Material, Integer> entry : blocks.entrySet())
|
||||
{
|
||||
for (int i = 0; i < entry.getValue(); i++, height--)
|
||||
chunk.setBlock(x, height, z, entry.getKey());
|
||||
blockMap.put(material, count);
|
||||
}
|
||||
return blockMap;
|
||||
}
|
||||
}
|
@ -18,7 +18,7 @@ public class CustomWorld extends WorldCreator
|
||||
|
||||
private final CustomChunkGenerator chunks;
|
||||
|
||||
private CustomWorld(String name, CustomChunkGenerator generator)
|
||||
public CustomWorld(String name, CustomChunkGenerator generator)
|
||||
{
|
||||
super(name);
|
||||
this.chunks = generator;
|
||||
|
22
src/main/resources/messages.yml
Normal file
22
src/main/resources/messages.yml
Normal file
@ -0,0 +1,22 @@
|
||||
# Plex Messages File
|
||||
|
||||
# Messages in here will be placed in for certain commands, actions, etc.
|
||||
# Warning: not all commands have customizable messages
|
||||
|
||||
# Base color - the main color prefix; will be used following each of the messages below
|
||||
# Error color - the color of an error; will be used when an error is thrown from a command
|
||||
baseColor: "7"
|
||||
errorColor: "c"
|
||||
|
||||
# Variables <v> - these are code-defined replacements for things that should be inserted into messages. (e.g. names, statuses, numbers)
|
||||
# if any of these variables are defined within a message, some documentation is provided to give more context to what the variables indicate.
|
||||
# message variables are used in numerical order that is unchangeable from this file.
|
||||
|
||||
# Reset color <r> - this will reset the color of the message to the base color defined above.
|
||||
# Error color <e> - this will make the color of the message the error color defined above.
|
||||
|
||||
test: this is a test message!
|
||||
variableTest: variable test with <v>!
|
||||
noAdminWorldBlockPlace: <e>You are not allowed to place blocks in the admin world!
|
||||
noAdminWorldBlockBreak: <e>You are not allowed to break blocks in the admin world!
|
||||
playerWorldTeleport: You have been teleported to <v>.
|
Loading…
Reference in New Issue
Block a user