Update to 1.13.2

This commit is contained in:
Marcel Konrad
2019-04-02 18:17:54 +02:00
parent eafef4ae54
commit e86d4f5c0c
204 changed files with 10130 additions and 9348 deletions

View File

@@ -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;
}
}

View File

@@ -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();
}
}
}

View File

@@ -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);
}
}
}