diff --git a/src/main/java/org/ultramine/commands/basic/TeleportCommands.java b/src/main/java/org/ultramine/commands/basic/TeleportCommands.java deleted file mode 100644 index 6107b8e..0000000 --- a/src/main/java/org/ultramine/commands/basic/TeleportCommands.java +++ /dev/null @@ -1,47 +0,0 @@ -package org.ultramine.commands.basic; - -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.world.WorldServer; - -import org.ultramine.commands.Command; -import org.ultramine.commands.CommandContext; -import org.ultramine.server.Teleporter; - -public class TeleportCommands -{ - @Command( - name = "tp", - group = "basic", - aliases = {"tppos", "tpposp", "tpto"}, - permissions = {"basic.tp"}, - syntax = { - "", - " ", - "<%x> <%y> <%z>", - " <%x> <%y> <%z>", - " <%x> <%y> <%z>", - " <%x> <%y> <%z>" - } - ) - public static void tp(CommandContext context) - { - EntityPlayerMP target = context.contains("target") ? context.get("target").asPlayer() : context.getSenderAsPlayer(); - if(context.contains("dst")) - { - EntityPlayerMP dst = context.get("dst").asPlayer(); - Teleporter.tpNow(target, dst); - context.sendMessage(EnumChatFormatting.GOLD, "command.tp.success.player", target.getCommandSenderName(), dst.getCommandSenderName()); - } - else if(context.contains("x") && context.contains("y") && context.contains("z")) - { - WorldServer world = context.contains("world") ? context.get("world").asWorld() : target.getServerForPlayer(); - double x = context.get("x").asCoordinate(target.posX); - double y = context.get("y").asCoordinate(target.posY); - double z = context.get("z").asCoordinate(target.posZ); - Teleporter.tpNow(target, world.provider.dimensionId, x, y, z); - context.sendMessage(EnumChatFormatting.GOLD, "command.tp.success.coordinate", - target.getCommandSenderName(), world.getWorldInfo().getWorldName(), x, y, z); - } - } -} diff --git a/src/main/java/org/ultramine/commands/basic/VanillaCommands.java b/src/main/java/org/ultramine/commands/basic/VanillaCommands.java new file mode 100644 index 0000000..586add4 --- /dev/null +++ b/src/main/java/org/ultramine/commands/basic/VanillaCommands.java @@ -0,0 +1,75 @@ +package org.ultramine.commands.basic; + +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.EnumDifficulty; +import net.minecraft.world.WorldServer; + +import org.ultramine.commands.Command; +import org.ultramine.commands.CommandContext; +import org.ultramine.server.Teleporter; +import org.ultramine.server.util.BasicTypeParser; + +public class VanillaCommands +{ + @Command( + name = "tp", + group = "vanilla", + aliases = {"tppos", "tpposp", "tpto"}, + permissions = {"command.vanilla.tp"}, + syntax = { + "", + " ", + "<%x> <%y> <%z>", + " <%x> <%y> <%z>", + " <%x> <%y> <%z>", + " <%x> <%y> <%z>" + } + ) + public static void tp(CommandContext context) + { + EntityPlayerMP target = context.contains("target") ? context.get("target").asPlayer() : context.getSenderAsPlayer(); + if(context.contains("dst")) + { + EntityPlayerMP dst = context.get("dst").asPlayer(); + Teleporter.tpNow(target, dst); + context.sendMessage(EnumChatFormatting.GOLD, "command.tp.success.player", target.getCommandSenderName(), dst.getCommandSenderName()); + } + else if(context.contains("x") && context.contains("y") && context.contains("z")) + { + WorldServer world = context.contains("world") ? context.get("world").asWorld() : target.getServerForPlayer(); + double x = context.get("x").asCoordinate(target.posX); + double y = context.get("y").asCoordinate(target.posY); + double z = context.get("z").asCoordinate(target.posZ); + Teleporter.tpNow(target, world.provider.dimensionId, x, y, z); + context.sendMessage(EnumChatFormatting.GOLD, "command.tp.success.coordinate", + target.getCommandSenderName(), world.getWorldInfo().getWorldName(), x, y, z); + } + } + + @Command( + name = "difficulty", + group = "vanilla", + permissions = {"command.vanilla.difficulty"}, + syntax = { + "", + " " + } + ) + public static void difficulty(CommandContext ctx) + { + WorldServer world = ctx.contains("world") ? ctx.get("world").asWorld() : ctx.getSenderAsPlayer().getServerForPlayer(); + EnumDifficulty difficulty = BasicTypeParser.parseDifficulty(ctx.get("difficulty").asString()); + if(difficulty == null) ctx.throwBadUsage(); + ctx.notifyAdmins("command.difficulty.success", world.getWorldInfo().getWorldName(), + new ChatComponentTranslation(world.difficultySetting.getDifficultyResourceKey()), + new ChatComponentTranslation(difficulty.getDifficultyResourceKey())); + MinecraftServer server = MinecraftServer.getServer(); + if(server.isSinglePlayer()) + server.func_147139_a(difficulty); + else + world.difficultySetting = difficulty; + } +} diff --git a/src/main/java/org/ultramine/server/UltramineServerModContainer.java b/src/main/java/org/ultramine/server/UltramineServerModContainer.java index ab01a0c..35c5490 100644 --- a/src/main/java/org/ultramine/server/UltramineServerModContainer.java +++ b/src/main/java/org/ultramine/server/UltramineServerModContainer.java @@ -23,7 +23,7 @@ import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.relauncher.Side; -import org.ultramine.commands.basic.TeleportCommands; +import org.ultramine.commands.basic.VanillaCommands; import org.ultramine.commands.syntax.DefaultCompleters; import org.ultramine.permission.commands.BasicPermissionCommands; @@ -100,7 +100,7 @@ { e.registerArgumentHandlers(DefaultCompleters.class); e.registerCommands(BasicPermissionCommands.class); - e.registerCommands(TeleportCommands.class); + e.registerCommands(VanillaCommands.class); } @Subscribe diff --git a/src/main/java/org/ultramine/server/util/BasicTypeParser.java b/src/main/java/org/ultramine/server/util/BasicTypeParser.java index be0f9e2..4aa1ee6 100644 --- a/src/main/java/org/ultramine/server/util/BasicTypeParser.java +++ b/src/main/java/org/ultramine/server/util/BasicTypeParser.java @@ -1,5 +1,7 @@ package org.ultramine.server.util; +import net.minecraft.world.EnumDifficulty; + public class BasicTypeParser { public static boolean isInt(String val) @@ -51,4 +53,33 @@ return true; } + + public static EnumDifficulty parseDifficulty(String str) + { + if(isUnsignedInt(str)) + { + return EnumDifficulty.getDifficultyEnum(Math.min(Integer.parseInt(str), 3)); + } + + str = str.toLowerCase(); + + if(str.equals("p") || str.equals("peaceful")) + { + return EnumDifficulty.PEACEFUL; + } + else if(str.equals("e") || str.equals("easy")) + { + return EnumDifficulty.EASY; + } + else if(str.equals("n") || str.equals("normal")) + { + return EnumDifficulty.NORMAL; + } + else if(str.equals("h") || str.equals("hard")) + { + return EnumDifficulty.HARD; + } + + return null; + } } diff --git a/src/main/resources/assets/ultramine/lang/en_US.lang b/src/main/resources/assets/ultramine/lang/en_US.lang index f8411ba..90724c1 100644 --- a/src/main/resources/assets/ultramine/lang/en_US.lang +++ b/src/main/resources/assets/ultramine/lang/en_US.lang @@ -1,11 +1,16 @@ #Command generic commands.generic.world.invalid=Can't find world '%s' +#Vanilla replacements command.tp.usage=/tp [target player] OR /tp [target player] [world] command.tp.description=Teleport target player (or you) to another player or coordinate command.tp.success.player=Teleported <%s> to <%s> command.tp.success.coordinate=Teleported <%s> to <%s, %s, %s, %s> +command.difficulty.usage=/difficulty [world] +command.difficulty.description=Changes difficulty setting of selected world +command.difficulty.success=Difficulty of world %s changed from %s to %s + # Permissions command.pconfig.usage=/pconfig command.pconfig.description=Save or reload all permissions configs