diff --git a/src/main/java/net/minecraft/server/management/ServerConfigurationManager.java b/src/main/java/net/minecraft/server/management/ServerConfigurationManager.java index 104fe62..6413481 100644 --- a/src/main/java/net/minecraft/server/management/ServerConfigurationManager.java +++ b/src/main/java/net/minecraft/server/management/ServerConfigurationManager.java @@ -450,7 +450,8 @@ } EntityPlayerMP entityplayermp1 = new EntityPlayerMP(this.mcServer, this.mcServer.worldServerForDimension(p_72368_1_.dimension), p_72368_1_.getGameProfile(), (ItemInWorldManager)object); - WarpLocation spawn = getDataLoader().getWarp(getServerInstance().isSinglePlayer() ? "spawn" : ConfigurationHandler.getServerConfig().spawnLocations.deathSpawn).randomize(); + WarpLocation spawnWarp = getDataLoader().getWarp(getServerInstance().isSinglePlayer() ? "spawn" : ConfigurationHandler.getServerConfig().spawnLocations.deathSpawn); + WarpLocation spawn = (spawnWarp != null ? spawnWarp : getDataLoader().getWarp("spawn")).randomize(); entityplayermp1.setLocationAndAngles(spawn.x, spawn.y, spawn.z, spawn.yaw, spawn.pitch); entityplayermp1.playerNetServerHandler = p_72368_1_.playerNetServerHandler; entityplayermp1.clonePlayer(p_72368_1_, p_72368_3_); diff --git a/src/main/java/org/ultramine/commands/CommandContext.java b/src/main/java/org/ultramine/commands/CommandContext.java index 8e1e85e..799e044 100644 --- a/src/main/java/org/ultramine/commands/CommandContext.java +++ b/src/main/java/org/ultramine/commands/CommandContext.java @@ -17,6 +17,7 @@ import net.minecraft.world.WorldServer; import org.ultramine.server.PermissionHandler; +import org.ultramine.server.data.ServerDataLoader; import java.util.HashMap; import java.util.List; @@ -177,6 +178,17 @@ { return command; } + + public MinecraftServer getServer() + { + return MinecraftServer.getServer(); + } + + public ServerDataLoader getServerData() + { + return getServer().getConfigurationManager().getDataLoader(); + } + public class Argument { diff --git a/src/main/java/org/ultramine/commands/basic/BasicCommands.java b/src/main/java/org/ultramine/commands/basic/BasicCommands.java index ac7619e..ba6593b 100644 --- a/src/main/java/org/ultramine/commands/basic/BasicCommands.java +++ b/src/main/java/org/ultramine/commands/basic/BasicCommands.java @@ -2,7 +2,6 @@ import java.util.Map; -import net.minecraft.server.MinecraftServer; import static net.minecraft.util.EnumChatFormatting.*; import org.ultramine.commands.Command; @@ -93,7 +92,7 @@ ) public static void warp(CommandContext ctx) { - WarpLocation warp = MinecraftServer.getServer().getConfigurationManager().getDataLoader().getWarp(ctx.get("name").asString()); + WarpLocation warp = ctx.getServerData().getWarp(ctx.get("name").asString()); ctx.check(warp != null, "command.warp.fail"); Teleporter.tpLater(ctx.getSenderAsPlayer(), warp); } @@ -106,11 +105,11 @@ ) public static void setwarp(CommandContext ctx) { - ctx.check(MinecraftServer.getServer().getConfigurationManager().getDataLoader().getWarp(ctx.get("name").asString()) == null, "command.setwarp.fail"); + ctx.check(ctx.getServerData().getWarp(ctx.get("name").asString()) == null, "command.setwarp.fail"); WarpLocation warp = WarpLocation.getFromPlayer(ctx.getSenderAsPlayer()); if(ctx.contains("radius")) warp.randomRadius = ctx.get("radius").asDouble(); - MinecraftServer.getServer().getConfigurationManager().getDataLoader().setWarp(ctx.get("name").asString(), warp); + ctx.getServerData().setWarp(ctx.get("name").asString(), warp); ctx.sendMessage("command.setwarp.success"); } @@ -125,7 +124,7 @@ WarpLocation warp = WarpLocation.getFromPlayer(ctx.getSenderAsPlayer()); if(ctx.contains("radius")) warp.randomRadius = ctx.get("radius").asDouble(); - MinecraftServer.getServer().getConfigurationManager().getDataLoader().setWarp(ctx.get("name").asString(), warp); + ctx.getServerData().setWarp(ctx.get("name").asString(), warp); ctx.sendMessage("command.resetwarp.success"); } @@ -139,8 +138,9 @@ public static void removewarp(CommandContext ctx) { String name = ctx.get("name").asString(); - ctx.check(MinecraftServer.getServer().getConfigurationManager().getDataLoader().getWarp(name) != null, "command.removewarp.fail"); - MinecraftServer.getServer().getConfigurationManager().getDataLoader().setWarp(name, null); + ctx.check(!name.equals("spawn"), "command.removewarp.fail.spawn"); + ctx.check(ctx.getServerData().removeWarp(name), "command.removewarp.fail.nowarp"); + ctx.getServerData().removeFastWarp(name); ctx.sendMessage("command.removewarp.success"); } @@ -153,7 +153,7 @@ { ctx.getSenderAsPlayer(); ctx.sendMessage("command.warplist.head"); - for(Map.Entry ent : MinecraftServer.getServer().getConfigurationManager().getDataLoader().getWarps().entrySet()) + for(Map.Entry ent : ctx.getServerData().getWarps().entrySet()) ctx.sendMessage(GOLD, " - %s [%s](%s, %s, %s)", ent.getKey(), ent.getValue().dimension, (int)ent.getValue().x, (int)ent.getValue().y, (int)ent.getValue().z); } @@ -169,11 +169,13 @@ ctx.check(!name.equals("spawn"), "command.fastwarp.fail.spawn"); if(ctx.getAction().equals("add")) { - MinecraftServer.getServer().getConfigurationManager().getDataLoader().addFastWarp(name); + ctx.check(ctx.getServerData().getWarp(name) != null, "command.fastwarp.fail.nowarp"); + ctx.check(!ctx.getServerData().getFastWarps().contains(name), "command.fastwarp.fail.already"); + ctx.getServerData().addFastWarp(name); } else if(ctx.getAction().equals("remove")) { - MinecraftServer.getServer().getConfigurationManager().getDataLoader().removeFastWarp(name); + ctx.check(ctx.getServerData().removeFastWarp(name), "command.fastwarp.fail.nofastwarp"); } ctx.sendMessage("command.fastwarp.success."+ctx.getAction()); } diff --git a/src/main/java/org/ultramine/commands/basic/TechCommands.java b/src/main/java/org/ultramine/commands/basic/TechCommands.java index f2f7bda..45d7700 100644 --- a/src/main/java/org/ultramine/commands/basic/TechCommands.java +++ b/src/main/java/org/ultramine/commands/basic/TechCommands.java @@ -3,7 +3,6 @@ import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; -import net.minecraft.server.MinecraftServer; import net.minecraft.util.ChatComponentText; import net.minecraft.util.ChatComponentTranslation; import static net.minecraft.util.EnumChatFormatting.*; @@ -39,10 +38,10 @@ ) public static void uptime(CommandContext ctx) { - double tps = Math.round(MinecraftServer.getServer().currentTPS*10)/10d; - double downtime = MinecraftServer.getServer().currentWait/1000/1000d; + double tps = Math.round(ctx.getServer().currentTPS*10)/10d; + double downtime = ctx.getServer().currentWait/1000/1000d; int load = (int)Math.round((50-downtime)/50*100); - int uptime = (int)((System.currentTimeMillis() - MinecraftServer.getServer().startTime)/1000); + int uptime = (int)((System.currentTimeMillis() - ctx.getServer().startTime)/1000); ctx.sendMessage(DARK_GREEN, "command.uptime.msg.up", String.format("%dd %dh %dm %ds", uptime/(60*60*24), uptime/(60*60)%24, uptime/60%60, uptime%60)); ctx.sendMessage(load > 100 ? RED : DARK_GREEN, "command.uptime.msg.load", Integer.toString(load).concat("%")); ctx.sendMessage(tps < 15 ? RED : DARK_GREEN, "command.uptime.msg.tps", Double.toString(tps), diff --git a/src/main/java/org/ultramine/server/data/ServerDataLoader.java b/src/main/java/org/ultramine/server/data/ServerDataLoader.java index 359fe1c..892e6cf 100644 --- a/src/main/java/org/ultramine/server/data/ServerDataLoader.java +++ b/src/main/java/org/ultramine/server/data/ServerDataLoader.java @@ -74,10 +74,14 @@ dataProvider.saveWarp(name, warp); } - public void removeWarp(String name) + public boolean removeWarp(String name) { if(warps.remove(name) != null) + { dataProvider.removeWarp(name); + return true; + } + return false; } public Map getWarps() @@ -94,10 +98,15 @@ } } - public void removeFastWarp(String name) + public boolean removeFastWarp(String name) { if(fastWarps.remove(name)) + { dataProvider.removeFastWarp(name); + ((CommandHandler)mgr.getServerInstance().getCommandManager()).getRegistry().getCommandMap().remove(name); + return true; + } + return false; } public List getFastWarps() @@ -161,7 +170,8 @@ } if(nbt == null) //first login { - WarpLocation spawn = getWarp(isClient ? "spawn" : ConfigurationHandler.getServerConfig().spawnLocations.firstSpawn).randomize(); + WarpLocation spawnWarp = getWarp(isClient ? "spawn" : ConfigurationHandler.getServerConfig().spawnLocations.firstSpawn); + WarpLocation spawn = (spawnWarp != null ? spawnWarp : getWarp("spawn")).randomize(); player.setLocationAndAngles(spawn.x, spawn.y, spawn.z, spawn.yaw, spawn.pitch); } ForgeEventFactory.firePlayerLoadingEvent(player, ((SaveHandler)mgr.getPlayerNBTLoader()).getPlayerSaveDir(), player.getUniqueID().toString()); diff --git a/src/main/resources/assets/ultramine/lang/en_US.lang b/src/main/resources/assets/ultramine/lang/en_US.lang index de1fb02..32de08f 100644 --- a/src/main/resources/assets/ultramine/lang/en_US.lang +++ b/src/main/resources/assets/ultramine/lang/en_US.lang @@ -84,7 +84,8 @@ command.removewarp.usage=/removewarp command.removewarp.description=Removes warp with specified name -command.removewarp.fail=Warp not found +command.removewarp.fail.spawn=Can't remove spawn warp +command.removewarp.fail.nowarp=Warp not found command.removewarp.success=Warp removed command.warplist.usage=/warplist @@ -94,6 +95,9 @@ command.fastwarp.usage=/fastwarp command.fastwarp.description=Add fastwarp command.fastwarp.fail.spawn=Can't change spawn fastwarp +command.fastwarp.fail.nowarp=Warp with specified name not set; Use /setwarp +command.fastwarp.fail.nofastwarp=Fastwarp with specified name not set +command.fastwarp.fail.already=Fastwarp with specified name already set command.fastwarp.success.add=Fastwarp added command.fastwarp.success.remove=Fastwarp removed command.fastwarp.use.description=Teleport to this point