package net.minecraft.command; import java.util.List; import net.lax1dude.eaglercraft.v1_8.HString; import net.minecraft.server.MinecraftServer; import net.minecraft.util.BlockPos; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.MathHelper; import net.minecraft.world.border.WorldBorder; /**+ * This portion of EaglercraftX contains deobfuscated Minecraft 1.8 source code. * * Minecraft 1.8.8 bytecode is (c) 2015 Mojang AB. "Do not distribute!" * Mod Coder Pack v9.18 deobfuscation configs are (c) Copyright by the MCP Team * * EaglercraftX 1.8 patch files (c) 2022-2024 lax1dude, ayunami2000. All Rights Reserved. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * */ public class CommandWorldBorder extends CommandBase { /**+ * Gets the name of the command */ public String getCommandName() { return "worldborder"; } /**+ * Return the required permission level for this command. */ public int getRequiredPermissionLevel() { return 2; } /**+ * Gets the usage string for the command. */ public String getCommandUsage(ICommandSender var1) { return "commands.worldborder.usage"; } /**+ * Callback when the command is invoked */ public void processCommand(ICommandSender parICommandSender, String[] parArrayOfString) throws CommandException { if (parArrayOfString.length < 1) { throw new WrongUsageException("commands.worldborder.usage", new Object[0]); } else { WorldBorder worldborder = this.getWorldBorder(); if (parArrayOfString[0].equals("set")) { if (parArrayOfString.length != 2 && parArrayOfString.length != 3) { throw new WrongUsageException("commands.worldborder.set.usage", new Object[0]); } double d0 = worldborder.getTargetSize(); double d2 = parseDouble(parArrayOfString[1], 1.0D, 6.0E7D); long i = parArrayOfString.length > 2 ? parseLong(parArrayOfString[2], 0L, 9223372036854775L) * 1000L : 0L; if (i > 0L) { worldborder.setTransition(d0, d2, i); if (d0 > d2) { notifyOperators(parICommandSender, this, "commands.worldborder.setSlowly.shrink.success", new Object[] { HString.format("%.1f", new Object[] { Double.valueOf(d2) }), HString.format("%.1f", new Object[] { Double.valueOf(d0) }), Long.toString(i / 1000L) }); } else { notifyOperators(parICommandSender, this, "commands.worldborder.setSlowly.grow.success", new Object[] { HString.format("%.1f", new Object[] { Double.valueOf(d2) }), HString.format("%.1f", new Object[] { Double.valueOf(d0) }), Long.toString(i / 1000L) }); } } else { worldborder.setTransition(d2); notifyOperators(parICommandSender, this, "commands.worldborder.set.success", new Object[] { HString.format("%.1f", new Object[] { Double.valueOf(d2) }), HString.format("%.1f", new Object[] { Double.valueOf(d0) }) }); } } else if (parArrayOfString[0].equals("add")) { if (parArrayOfString.length != 2 && parArrayOfString.length != 3) { throw new WrongUsageException("commands.worldborder.add.usage", new Object[0]); } double d4 = worldborder.getDiameter(); double d8 = d4 + parseDouble(parArrayOfString[1], -d4, 6.0E7D - d4); long i1 = worldborder.getTimeUntilTarget() + (parArrayOfString.length > 2 ? parseLong(parArrayOfString[2], 0L, 9223372036854775L) * 1000L : 0L); if (i1 > 0L) { worldborder.setTransition(d4, d8, i1); if (d4 > d8) { notifyOperators(parICommandSender, this, "commands.worldborder.setSlowly.shrink.success", new Object[] { HString.format("%.1f", new Object[] { Double.valueOf(d8) }), HString.format("%.1f", new Object[] { Double.valueOf(d4) }), Long.toString(i1 / 1000L) }); } else { notifyOperators(parICommandSender, this, "commands.worldborder.setSlowly.grow.success", new Object[] { HString.format("%.1f", new Object[] { Double.valueOf(d8) }), HString.format("%.1f", new Object[] { Double.valueOf(d4) }), Long.toString(i1 / 1000L) }); } } else { worldborder.setTransition(d8); notifyOperators(parICommandSender, this, "commands.worldborder.set.success", new Object[] { HString.format("%.1f", new Object[] { Double.valueOf(d8) }), HString.format("%.1f", new Object[] { Double.valueOf(d4) }) }); } } else if (parArrayOfString[0].equals("center")) { if (parArrayOfString.length != 3) { throw new WrongUsageException("commands.worldborder.center.usage", new Object[0]); } BlockPos blockpos = parICommandSender.getPosition(); double d1 = parseDouble((double) blockpos.getX() + 0.5D, parArrayOfString[1], true); double d3 = parseDouble((double) blockpos.getZ() + 0.5D, parArrayOfString[2], true); worldborder.setCenter(d1, d3); notifyOperators(parICommandSender, this, "commands.worldborder.center.success", new Object[] { Double.valueOf(d1), Double.valueOf(d3) }); } else if (parArrayOfString[0].equals("damage")) { if (parArrayOfString.length < 2) { throw new WrongUsageException("commands.worldborder.damage.usage", new Object[0]); } if (parArrayOfString[1].equals("buffer")) { if (parArrayOfString.length != 3) { throw new WrongUsageException("commands.worldborder.damage.buffer.usage", new Object[0]); } double d5 = parseDouble(parArrayOfString[2], 0.0D); double d9 = worldborder.getDamageBuffer(); worldborder.setDamageBuffer(d5); notifyOperators(parICommandSender, this, "commands.worldborder.damage.buffer.success", new Object[] { HString.format("%.1f", new Object[] { Double.valueOf(d5) }), HString.format("%.1f", new Object[] { Double.valueOf(d9) }) }); } else if (parArrayOfString[1].equals("amount")) { if (parArrayOfString.length != 3) { throw new WrongUsageException("commands.worldborder.damage.amount.usage", new Object[0]); } double d6 = parseDouble(parArrayOfString[2], 0.0D); double d10 = worldborder.getDamageAmount(); worldborder.setDamageAmount(d6); notifyOperators(parICommandSender, this, "commands.worldborder.damage.amount.success", new Object[] { HString.format("%.2f", new Object[] { Double.valueOf(d6) }), HString.format("%.2f", new Object[] { Double.valueOf(d10) }) }); } } else if (parArrayOfString[0].equals("warning")) { if (parArrayOfString.length < 2) { throw new WrongUsageException("commands.worldborder.warning.usage", new Object[0]); } int j = parseInt(parArrayOfString[2], 0); if (parArrayOfString[1].equals("time")) { if (parArrayOfString.length != 3) { throw new WrongUsageException("commands.worldborder.warning.time.usage", new Object[0]); } int k = worldborder.getWarningTime(); worldborder.setWarningTime(j); notifyOperators(parICommandSender, this, "commands.worldborder.warning.time.success", new Object[] { Integer.valueOf(j), Integer.valueOf(k) }); } else if (parArrayOfString[1].equals("distance")) { if (parArrayOfString.length != 3) { throw new WrongUsageException("commands.worldborder.warning.distance.usage", new Object[0]); } int l = worldborder.getWarningDistance(); worldborder.setWarningDistance(j); notifyOperators(parICommandSender, this, "commands.worldborder.warning.distance.success", new Object[] { Integer.valueOf(j), Integer.valueOf(l) }); } } else { if (!parArrayOfString[0].equals("get")) { throw new WrongUsageException("commands.worldborder.usage", new Object[0]); } double d7 = worldborder.getDiameter(); parICommandSender.setCommandStat(CommandResultStats.Type.QUERY_RESULT, MathHelper.floor_double(d7 + 0.5D)); parICommandSender.addChatMessage(new ChatComponentTranslation("commands.worldborder.get.success", new Object[] { HString.format("%.0f", new Object[] { Double.valueOf(d7) }) })); } } } protected WorldBorder getWorldBorder() { return MinecraftServer.getServer().worldServers[0].getWorldBorder(); } /**+ * Return a list of options when the user types TAB */ public List addTabCompletionOptions(ICommandSender var1, String[] astring, BlockPos blockpos) { return astring.length == 1 ? getListOfStringsMatchingLastWord(astring, new String[] { "set", "center", "damage", "warning", "add", "get" }) : (astring.length == 2 && astring[0].equals("damage") ? getListOfStringsMatchingLastWord(astring, new String[] { "buffer", "amount" }) : (astring.length >= 2 && astring.length <= 3 && astring[0].equals("center") ? func_181043_b(astring, 1, blockpos) : (astring.length == 2 && astring[0].equals("warning") ? getListOfStringsMatchingLastWord(astring, new String[] { "time", "distance" }) : null))); } }