Update to 1.13.2
This commit is contained in:
@@ -1,231 +1,89 @@
|
||||
package exopandora.worldhandler.command;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import com.mojang.brigadier.CommandDispatcher;
|
||||
import com.mojang.brigadier.arguments.StringArgumentType;
|
||||
import com.mojang.brigadier.exceptions.CommandSyntaxException;
|
||||
|
||||
import exopandora.worldhandler.WorldHandler;
|
||||
import exopandora.worldhandler.builder.impl.BuilderClone;
|
||||
import exopandora.worldhandler.builder.impl.BuilderClone.EnumMask;
|
||||
import exopandora.worldhandler.builder.impl.BuilderFill;
|
||||
import exopandora.worldhandler.builder.impl.BuilderWH;
|
||||
import exopandora.worldhandler.helper.BlockHelper;
|
||||
import exopandora.worldhandler.helper.EnumHelper;
|
||||
import exopandora.worldhandler.helper.ResourceHelper;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.command.CommandBase;
|
||||
import net.minecraft.command.CommandException;
|
||||
import net.minecraft.command.ICommandSender;
|
||||
import net.minecraft.command.NumberInvalidException;
|
||||
import net.minecraft.command.WrongUsageException;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import exopandora.worldhandler.helper.CommandHelper;
|
||||
import net.minecraft.command.CommandSource;
|
||||
import net.minecraft.command.Commands;
|
||||
import net.minecraft.command.arguments.BlockStateArgument;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.text.TextComponentString;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
import net.minecraftforge.registries.ForgeRegistries;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class CommandWH extends CommandBase
|
||||
public class CommandWH
|
||||
{
|
||||
@Override
|
||||
public String getName()
|
||||
public static void register(CommandDispatcher<CommandSource> dispatcher)
|
||||
{
|
||||
return "wh";
|
||||
dispatcher.register(Commands.literal("wh")
|
||||
.then(Commands.literal("pos1")
|
||||
.executes(context -> pos1(context.getSource())))
|
||||
.then(Commands.literal("pos2")
|
||||
.executes(context -> pos2(context.getSource())))
|
||||
.then(Commands.literal("fill")
|
||||
.then(Commands.argument("block", BlockStateArgument.blockState())
|
||||
.executes(context -> fill(context.getSource(), StringArgumentType.getString(context, "block")))))
|
||||
.then(Commands.literal("replace")
|
||||
.then(Commands.argument("block", BlockStateArgument.blockState())
|
||||
.then(Commands.argument("replace", BlockStateArgument.blockState())
|
||||
.executes(context -> replace(context.getSource(), StringArgumentType.getString(context, "block"), StringArgumentType.getString(context, "replace"))))))
|
||||
.then(Commands.literal("clone")
|
||||
.then(Commands.literal("replace")
|
||||
.executes(context -> clone(context.getSource(), EnumMask.REPLACE)))
|
||||
.then(Commands.literal("masked")
|
||||
.executes(context -> clone(context.getSource(), EnumMask.MASKED)))
|
||||
.then(Commands.literal("filtered")
|
||||
.executes(context -> clone(context.getSource(), EnumMask.FILTERED)))));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRequiredPermissionLevel()
|
||||
private static int pos1(CommandSource source) throws CommandSyntaxException
|
||||
{
|
||||
return 0;
|
||||
BlockHelper.setPos1(BlockHelper.getFocusedBlockPos());
|
||||
BlockPos pos = BlockHelper.getPos1();
|
||||
ResourceLocation block = ForgeRegistries.BLOCKS.getKey(BlockHelper.getBlock(pos));
|
||||
CommandHelper.sendFeedback(source, "Set first position to " + pos.getX() + ", " + pos.getY() + ", " + pos.getZ() + " (" + block + ")");
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException
|
||||
private static int pos2(CommandSource source) throws CommandSyntaxException
|
||||
{
|
||||
if(args.length > 0)
|
||||
{
|
||||
if(args[0].equals("pos1"))
|
||||
{
|
||||
BlockHelper.setPos1(BlockHelper.getFocusedBlockPos());
|
||||
sender.sendMessage(new TextComponentString("Set first position to " + BlockHelper.getPos1().getX() + ", " + BlockHelper.getPos1().getY() + ", " + BlockHelper.getPos1().getZ() + " (" + Block.REGISTRY.getNameForObject(BlockHelper.getFocusedBlock()) + ")"));
|
||||
}
|
||||
else if(args[0].equals("pos2"))
|
||||
{
|
||||
BlockHelper.setPos2(BlockHelper.getFocusedBlockPos());
|
||||
sender.sendMessage(new TextComponentString("Set second position to " + BlockHelper.getPos2().getX() + ", " + BlockHelper.getPos2().getY() + ", " + BlockHelper.getPos2().getZ() + " (" + Block.REGISTRY.getNameForObject(BlockHelper.getFocusedBlock()) + ")"));
|
||||
}
|
||||
else if(args[0].equals("fill"))
|
||||
{
|
||||
final String usage = "/wh fill <block> [meta]";
|
||||
|
||||
if(args.length > 1)
|
||||
{
|
||||
ResourceLocation id = new ResourceLocation(args[1]);
|
||||
int meta = 0;
|
||||
|
||||
if(args.length > 2)
|
||||
{
|
||||
try
|
||||
{
|
||||
meta = Integer.parseInt(args[2]);
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
throw new WrongUsageException(usage);
|
||||
}
|
||||
}
|
||||
|
||||
if(!ResourceHelper.isRegisteredBlock(id.toString()))
|
||||
{
|
||||
throw new NumberInvalidException(usage);
|
||||
}
|
||||
|
||||
BuilderFill builder = new BuilderFill();
|
||||
builder.setBlock1(id);
|
||||
builder.setMeta1(meta);
|
||||
|
||||
WorldHandler.sendCommand(builder);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new WrongUsageException(usage);
|
||||
}
|
||||
}
|
||||
else if(args[0].equals("replace"))
|
||||
{
|
||||
final String usage = "/wh replace <block1> <meta1> <block2> [meta2]";
|
||||
|
||||
if(args.length > 1)
|
||||
{
|
||||
ResourceLocation id1 = new ResourceLocation(args[1]);
|
||||
|
||||
if(args.length > 2)
|
||||
{
|
||||
ResourceLocation id2 = new ResourceLocation(args[3]);
|
||||
int meta1 = 0;
|
||||
int meta2 = 0;
|
||||
|
||||
try
|
||||
{
|
||||
meta1 = Integer.parseInt(args[2]);
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
throw new WrongUsageException(usage);
|
||||
}
|
||||
|
||||
if(args.length > 4)
|
||||
{
|
||||
try
|
||||
{
|
||||
meta2 = Integer.parseInt(args[4]);
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
throw new WrongUsageException(usage);
|
||||
}
|
||||
}
|
||||
|
||||
if(!ResourceHelper.isRegisteredBlock(id1.toString()) || !ResourceHelper.isRegisteredBlock(id2.toString()))
|
||||
{
|
||||
throw new WrongUsageException(usage);
|
||||
}
|
||||
|
||||
BuilderFill builder = new BuilderFill();
|
||||
builder.setPosition1(BlockHelper.getPos1());
|
||||
builder.setPosition2(BlockHelper.getPos2());
|
||||
builder.setBlock1(id1);
|
||||
builder.setMeta1(meta1);
|
||||
builder.setBlock2(id2);
|
||||
builder.setMeta2(meta2);
|
||||
|
||||
Minecraft.getMinecraft().player.sendChatMessage(builder.getBuilderForReplace().toActualCommand());
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new WrongUsageException(usage);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new WrongUsageException(usage);
|
||||
}
|
||||
}
|
||||
else if(args[0].equals("clone"))
|
||||
{
|
||||
final String usage = "/wh clone [" + String.join("|", Arrays.stream(EnumMask.MASKED.values()).map(EnumMask::toString).collect(Collectors.toList())) + "]";
|
||||
EnumMask mask = EnumMask.MASKED;
|
||||
|
||||
if(args.length > 1)
|
||||
{
|
||||
mask = EnumHelper.valueOf(EnumMask.class, args[1]);
|
||||
}
|
||||
|
||||
if(mask == null)
|
||||
{
|
||||
throw new WrongUsageException(usage);
|
||||
}
|
||||
|
||||
BuilderClone builder = new BuilderClone();
|
||||
builder.setPosition1(BlockHelper.getPos1());
|
||||
builder.setPosition2(BlockHelper.getPos2());
|
||||
builder.setMask(mask);
|
||||
|
||||
Minecraft.getMinecraft().player.sendChatMessage(builder.toActualCommand());
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new WrongUsageException(new BuilderWH().toCommand());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new WrongUsageException(new BuilderWH().toCommand());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getTabCompletions(MinecraftServer server, ICommandSender sender, String[] args, BlockPos pos)
|
||||
{
|
||||
if(args.length == 1)
|
||||
{
|
||||
return this.getListOfStringsMatchingLastWord(args, new String[]{"pos1", "pos2", "fill", "replace", "clone"});
|
||||
}
|
||||
else if(args.length == 2)
|
||||
{
|
||||
if(args[0].equals("fill") || args[0].equals("replace"))
|
||||
{
|
||||
return this.getListOfStringsMatchingLastWord(args, Block.REGISTRY.getKeys());
|
||||
}
|
||||
else if(args[0].equals("clone"))
|
||||
{
|
||||
return this.getListOfStringsMatchingLastWord(args, new String[]{"replace", "masked", "filtered"});
|
||||
}
|
||||
}
|
||||
else if(args.length == 3)
|
||||
{
|
||||
if(args[0].equals("fill") || args[0].equals("replace"))
|
||||
{
|
||||
return this.getListOfStringsMatchingLastWord(args, new String[] {"0"});
|
||||
}
|
||||
}
|
||||
else if(args.length == 4)
|
||||
{
|
||||
if(args[0].equals("replace"))
|
||||
{
|
||||
return this.getListOfStringsMatchingLastWord(args, Block.REGISTRY.getKeys());
|
||||
}
|
||||
}
|
||||
|
||||
return Collections.<String>emptyList();
|
||||
BlockHelper.setPos2(BlockHelper.getFocusedBlockPos());
|
||||
BlockPos pos = BlockHelper.getPos2();
|
||||
ResourceLocation block = ForgeRegistries.BLOCKS.getKey(BlockHelper.getBlock(pos));
|
||||
CommandHelper.sendFeedback(source, "Set second position to " + pos.getX() + ", " + pos.getY() + ", " + pos.getZ() + " (" + block + ")");
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUsage(ICommandSender sender)
|
||||
private static int fill(CommandSource source, String block)
|
||||
{
|
||||
return new BuilderWH().toCommand();
|
||||
BuilderFill builder = new BuilderFill();
|
||||
builder.setBlock1(block);
|
||||
CommandHelper.sendCommand(builder);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
private static int replace(CommandSource source, String block, String replace)
|
||||
{
|
||||
BuilderFill builder = new BuilderFill();
|
||||
builder.setPosition1(BlockHelper.getPos1());
|
||||
builder.setPosition2(BlockHelper.getPos2());
|
||||
builder.setBlock1(block);
|
||||
builder.setBlock2(replace);
|
||||
CommandHelper.sendCommand(builder);
|
||||
return 1;
|
||||
}
|
||||
|
||||
private static int clone(CommandSource source, EnumMask mask)
|
||||
{
|
||||
BuilderClone builder = new BuilderClone();
|
||||
builder.setPosition1(BlockHelper.getPos1());
|
||||
builder.setPosition2(BlockHelper.getPos2());
|
||||
builder.setMask(mask);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,100 +1,51 @@
|
||||
package exopandora.worldhandler.command;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import org.apache.maven.artifact.versioning.ComparableVersion;
|
||||
|
||||
import com.mojang.realmsclient.gui.ChatFormatting;
|
||||
import com.mojang.brigadier.CommandDispatcher;
|
||||
import com.mojang.brigadier.exceptions.CommandSyntaxException;
|
||||
|
||||
import exopandora.worldhandler.Main;
|
||||
import exopandora.worldhandler.WorldHandler;
|
||||
import exopandora.worldhandler.builder.impl.BuilderWorldHandler;
|
||||
import exopandora.worldhandler.event.EventListener;
|
||||
import exopandora.worldhandler.helper.ActionHelper;
|
||||
import exopandora.worldhandler.helper.CommandHelper;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.command.CommandBase;
|
||||
import net.minecraft.command.CommandException;
|
||||
import net.minecraft.command.ICommandSender;
|
||||
import net.minecraft.command.WrongUsageException;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.text.TextComponentString;
|
||||
import net.minecraftforge.common.ForgeVersion;
|
||||
import net.minecraftforge.fml.common.Loader;
|
||||
import net.minecraftforge.fml.common.versioning.ComparableVersion;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
import net.minecraft.command.CommandSource;
|
||||
import net.minecraft.command.Commands;
|
||||
import net.minecraftforge.fml.ModList;
|
||||
import net.minecraftforge.fml.VersionChecker;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class CommandWorldHandler extends CommandBase
|
||||
public class CommandWorldHandler
|
||||
{
|
||||
@Override
|
||||
public String getName()
|
||||
public static void register(CommandDispatcher<CommandSource> dispatcher)
|
||||
{
|
||||
return "worldhandler";
|
||||
dispatcher.register(Commands.literal("worldhandler")
|
||||
.then(Commands.literal("help")
|
||||
.executes(context -> help(context.getSource())))
|
||||
.then(Commands.literal("display")
|
||||
.executes(context -> display()))
|
||||
.then(Commands.literal("version")
|
||||
.executes(context -> version(context.getSource()))));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRequiredPermissionLevel()
|
||||
private static int help(CommandSource source) throws CommandSyntaxException
|
||||
{
|
||||
return 0;
|
||||
CommandHelper.sendFeedback(source, "/worldhandler help");
|
||||
CommandHelper.sendFeedback(source, "/worldhandler display");
|
||||
CommandHelper.sendFeedback(source, "/worldhandler version");
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException
|
||||
private static int display() throws CommandSyntaxException
|
||||
{
|
||||
if(args.length > 0)
|
||||
{
|
||||
if(args[0].equalsIgnoreCase("help"))
|
||||
{
|
||||
this.printHelp(sender);
|
||||
}
|
||||
else if(args[0].equalsIgnoreCase("display"))
|
||||
{
|
||||
Minecraft.getMinecraft().addScheduledTask(EventListener::displayGui);
|
||||
}
|
||||
else if(args[0].equalsIgnoreCase("version"))
|
||||
{
|
||||
sender.sendMessage(new TextComponentString("Installed: $mcversion-$version"));
|
||||
ComparableVersion target = ForgeVersion.getResult(Loader.instance().getIndexedModList().get(Main.MODID)).target;
|
||||
sender.sendMessage(new TextComponentString("Latest: $mcversion-" + (target != null ? target : "$version")));
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new WrongUsageException(this.getUsage(sender));
|
||||
}
|
||||
}
|
||||
else if(args.length == 0)
|
||||
{
|
||||
this.printHelp(sender);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new WrongUsageException(this.getUsage(sender));
|
||||
}
|
||||
Minecraft.getInstance().addScheduledTask(ActionHelper::displayGui);
|
||||
return 1;
|
||||
}
|
||||
|
||||
private void printHelp(ICommandSender player)
|
||||
private static int version(CommandSource source) throws CommandSyntaxException
|
||||
{
|
||||
player.sendMessage(new TextComponentString(ChatFormatting.DARK_GREEN + "--- Showing help page 1 of 1 (/worldhandler help) ---"));
|
||||
player.sendMessage(new TextComponentString("/worldhandler help"));
|
||||
player.sendMessage(new TextComponentString("/worldhandler display"));
|
||||
player.sendMessage(new TextComponentString("/worldhandler version"));
|
||||
player.sendMessage(new TextComponentString(ChatFormatting.GREEN + "Tip: Press '" + WorldHandler.KEY_WORLD_HANDLER.getDisplayName() + "' to open the World Handler"));
|
||||
CommandHelper.sendFeedback(source, "Installed: $mcversion-$version");
|
||||
ComparableVersion target = VersionChecker.getResult(ModList.get().getModContainerById(Main.MODID).get().getModInfo()).target;
|
||||
CommandHelper.sendFeedback(source, "Latest: " + Main.MC_VERSION + "-" + (target != null ? target : Main.MOD_VERSION));
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getTabCompletions(MinecraftServer server, ICommandSender sender, String[] args, BlockPos pos)
|
||||
{
|
||||
if(args.length == 1)
|
||||
{
|
||||
return this.getListOfStringsMatchingLastWord(args, new String[]{"help", "display", "version"});
|
||||
}
|
||||
|
||||
return Collections.<String>emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUsage(ICommandSender sender)
|
||||
{
|
||||
return new BuilderWorldHandler().toCommand();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
package exopandora.worldhandler.command;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.command.CommandHandler;
|
||||
import net.minecraft.command.ICommand;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraftforge.client.event.ClientChatEvent;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class FakeCommandHandler extends CommandHandler
|
||||
{
|
||||
@Override
|
||||
protected MinecraftServer getServer()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
private void fakeCommand(ICommand command, ClientChatEvent event)
|
||||
{
|
||||
Minecraft.getMinecraft().ingameGUI.getChatGUI().addToSentMessages(event.getMessage());
|
||||
this.tryExecute(Minecraft.getMinecraft().player, dropFirstString(event.getMessage().split(" ")), command, event.getMessage());
|
||||
|
||||
if(event != null && event.isCancelable())
|
||||
{
|
||||
event.setCanceled(true);
|
||||
}
|
||||
}
|
||||
|
||||
private static String[] dropFirstString(String[] input)
|
||||
{
|
||||
String[] string = new String[input.length - 1];
|
||||
System.arraycopy(input, 1, string, 0, input.length - 1);
|
||||
return string;
|
||||
}
|
||||
|
||||
public void tryCommand(ICommand command, ClientChatEvent event)
|
||||
{
|
||||
if(event.getMessage().equals("/" + command.getName()) || event.getMessage().startsWith("/" + command.getName() + " "))
|
||||
{
|
||||
this.fakeCommand(command, event);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user