Add custom usercontent loading from json and javascript files alongside bugfixes for page list, refactorings and documentation

This commit is contained in:
Marcel Konrad
2019-11-02 18:41:15 +01:00
parent 677f899661
commit fc70c82545
126 changed files with 3664 additions and 656 deletions

View File

@@ -8,14 +8,14 @@ import java.util.stream.Collectors;
import javax.annotation.Nullable;
import exopandora.worldhandler.WorldHandler;
import exopandora.worldhandler.builder.Syntax.SyntaxEntry;
import exopandora.worldhandler.builder.CommandSyntax.Argument;
import exopandora.worldhandler.builder.types.ArgumentType;
import exopandora.worldhandler.builder.types.BlockResourceLocation;
import exopandora.worldhandler.builder.types.CoordinateDouble;
import exopandora.worldhandler.builder.types.CoordinateInt;
import exopandora.worldhandler.builder.types.GreedyString;
import exopandora.worldhandler.builder.types.ItemResourceLocation;
import exopandora.worldhandler.builder.types.TargetSelector;
import exopandora.worldhandler.builder.types.Type;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.api.distmarker.Dist;
@@ -24,7 +24,7 @@ import net.minecraftforge.api.distmarker.OnlyIn;
@OnlyIn(Dist.CLIENT)
public abstract class CommandBuilder implements ICommandBuilderSyntax
{
private List<Entry<SyntaxEntry, String>> command;
private List<Entry<Argument, String>> command;
public CommandBuilder()
{
@@ -33,93 +33,98 @@ public abstract class CommandBuilder implements ICommandBuilderSyntax
protected void setNode(int index, String node)
{
this.set(index, node != null ? (node.isEmpty() ? null : node) : null, Type.STRING);
this.set(index, node != null ? (node.isEmpty() ? null : node) : null, ArgumentType.STRING);
}
protected void setNode(int index, GreedyString node)
{
this.set(index, node != null ? (node.isEmpty() ? null : node) : null, Type.GREEDY_STRING);
this.set(index, node != null ? (node.isEmpty() ? null : node) : null, ArgumentType.GREEDY_STRING);
}
protected void setNode(int index, boolean node)
{
this.set(index, node, Type.BOOLEAN);
this.set(index, node, ArgumentType.BOOLEAN);
}
protected void setNode(int index, short node)
{
this.set(index, node, Type.SHORT);
this.set(index, node, ArgumentType.SHORT);
}
protected void setNode(int index, byte node)
{
this.set(index, node, Type.BYTE);
this.set(index, node, ArgumentType.BYTE);
}
protected void setNode(int index, int node)
{
this.set(index, node, Type.INT);
this.set(index, node, ArgumentType.INT);
}
protected void setNode(int index, float node)
{
this.set(index, node, Type.FLOAT);
this.set(index, node, ArgumentType.FLOAT);
}
protected void setNode(int index, double node)
{
this.set(index, node, Type.DOUBLE);
this.set(index, node, ArgumentType.DOUBLE);
}
protected void setNode(int index, long node)
{
this.set(index, node, Type.LONG);
this.set(index, node, ArgumentType.LONG);
}
protected void setNode(int index, ResourceLocation node)
{
this.set(index, node, Type.RESOURCE_LOCATION);
this.set(index, node, ArgumentType.RESOURCE_LOCATION);
}
protected void setNode(int index, CoordinateInt coordinate)
{
this.set(index, coordinate, Type.COORDINATE_INT);
this.set(index, coordinate, ArgumentType.COORDINATE_INT);
}
protected void setNode(int index, CoordinateDouble coordinate)
{
this.set(index, coordinate, Type.COORDINATE_DOUBLE);
this.set(index, coordinate, ArgumentType.COORDINATE_DOUBLE);
}
protected void setNode(int index, TargetSelector target)
{
this.set(index, target, Type.TARGET_SELECTOR);
this.set(index, target, ArgumentType.TARGET_SELECTOR);
}
protected void setNode(int index, ItemResourceLocation resource)
{
this.set(index, resource != null ? resource.get() : null, Type.ITEM_RESOURCE_LOCATION);
this.set(index, resource != null ? resource.get() : null, ArgumentType.ITEM_RESOURCE_LOCATION);
}
protected void setNode(int index, BlockResourceLocation resource)
{
this.set(index, resource != null ? resource.get() : null, Type.BLOCK_RESOURCE_LOCATION);
this.set(index, resource != null ? resource.get() : null, ArgumentType.BLOCK_RESOURCE_LOCATION);
}
protected void setNode(int index, CompoundNBT nbt)
{
this.set(index, nbt, Type.NBT);
this.set(index, nbt, ArgumentType.NBT);
}
private void set(int index, Object value, Type type)
protected void setPlayerName(int index, String username)
{
this.set(index, username, ArgumentType.PLAYER);
}
private void set(int index, Object value, ArgumentType type)
{
if(index < this.command.size())
{
SyntaxEntry entry = this.command.get(index).getKey();
Type expected = entry.getType();
boolean flag = expected.equals(type);
Argument entry = this.command.get(index).getKey();
ArgumentType expectedType = entry.getType();
boolean typeMatch = expectedType.equals(type);
if(value != null && flag)
if(value != null && typeMatch)
{
this.command.get(index).setValue(value.toString());
}
@@ -127,9 +132,9 @@ public abstract class CommandBuilder implements ICommandBuilderSyntax
{
this.command.get(index).setValue(entry.toString());
if(!flag)
if(!typeMatch)
{
this.warn("set", expected, type, index);
this.warn("set", expectedType, type, index);
}
}
}
@@ -142,96 +147,96 @@ public abstract class CommandBuilder implements ICommandBuilderSyntax
@Nullable
protected String getNodeAsString(int index)
{
return this.get(index, Type.STRING);
return this.get(index, ArgumentType.STRING);
}
@Nullable
protected String getNodeAsGreedyString(int index)
{
return this.get(index, Type.GREEDY_STRING);
return this.get(index, ArgumentType.GREEDY_STRING);
}
protected boolean getNodeAsBoolean(int index)
{
return this.get(index, Type.BOOLEAN);
return this.get(index, ArgumentType.BOOLEAN);
}
protected short getNodeAsShort(int index)
{
return this.get(index, Type.SHORT);
return this.get(index, ArgumentType.SHORT);
}
protected byte getNodeAsByte(int index)
{
return this.get(index, Type.BYTE);
return this.get(index, ArgumentType.BYTE);
}
protected int getNodeAsInt(int index)
{
return this.get(index, Type.INT);
return this.get(index, ArgumentType.INT);
}
protected float getNodeAsFloat(int index)
{
return this.get(index, Type.FLOAT);
return this.get(index, ArgumentType.FLOAT);
}
protected double getNodeAsDouble(int index)
{
return this.get(index, Type.DOUBLE);
return this.get(index, ArgumentType.DOUBLE);
}
protected long getNodeAsLong(int index)
{
return this.get(index, Type.LONG);
return this.get(index, ArgumentType.LONG);
}
protected CoordinateInt getNodeAsCoordinateInt(int index)
{
return this.get(index, Type.COORDINATE_INT);
return this.get(index, ArgumentType.COORDINATE_INT);
}
protected CoordinateDouble getNodeAsCoordinateDouble(int index)
{
return this.get(index, Type.COORDINATE_DOUBLE);
return this.get(index, ArgumentType.COORDINATE_DOUBLE);
}
@Nullable
protected ResourceLocation getNodeAsResourceLocation(int index)
{
return this.get(index, Type.RESOURCE_LOCATION);
return this.get(index, ArgumentType.RESOURCE_LOCATION);
}
protected TargetSelector getNodeAsTargetSelector(int index)
{
return this.get(index, Type.TARGET_SELECTOR);
return this.get(index, ArgumentType.TARGET_SELECTOR);
}
@Nullable
protected ItemResourceLocation getNodeAsItemResourceLocation(int index)
{
return this.get(index, Type.ITEM_RESOURCE_LOCATION);
return this.get(index, ArgumentType.ITEM_RESOURCE_LOCATION);
}
@Nullable
protected BlockResourceLocation getNodeAsBlockResourceLocation(int index)
{
return this.get(index, Type.BLOCK_RESOURCE_LOCATION);
return this.get(index, ArgumentType.BLOCK_RESOURCE_LOCATION);
}
@Nullable
protected CompoundNBT getNodeAsNBT(int index)
{
return this.get(index, Type.NBT);
return this.get(index, ArgumentType.NBT);
}
@Nullable
private <T> T get(int index, Type type)
private <T> T get(int index, ArgumentType type)
{
if(index < this.command.size())
{
Entry<SyntaxEntry, String> entry = this.command.get(index);
Type expected = entry.getKey().getType();
Entry<Argument, String> entry = this.command.get(index);
ArgumentType expected = entry.getKey().getType();
String value = entry.getValue();
if(expected.equals(type))
@@ -252,21 +257,21 @@ public abstract class CommandBuilder implements ICommandBuilderSyntax
return null;
}
private void warn(String function, Type expected, Type type, int index)
private void warn(String function, ArgumentType expected, ArgumentType type, int index)
{
WorldHandler.LOGGER.warn("[" + function.toUpperCase() + "] Expected \"" + expected + "\" instead of \"" + type + "\" at index \"" + index + "\" for command \"" + this.getCommandName() + "\"");
}
private boolean isDefaultEntry(Entry<SyntaxEntry, String> entry)
private boolean isDefaultEntry(Entry<Argument, String> entry)
{
return entry.getKey().getDefault() != null ? entry.getValue().equals(entry.getKey().getDefault().toString()) : false;
}
protected void updateSyntax(Syntax syntax)
protected void updateSyntax(CommandSyntax syntax)
{
if(syntax != null)
{
this.command = syntax.getSyntaxEntries().stream().map(entry -> new SimpleEntry<SyntaxEntry, String>(entry, entry.toString())).collect(Collectors.toList());
this.command = syntax.getArguments().stream().map(entry -> new SimpleEntry<Argument, String>(entry, entry.toString())).collect(Collectors.toList());
}
}
@@ -275,7 +280,7 @@ public abstract class CommandBuilder implements ICommandBuilderSyntax
{
CommandString command = new CommandString(this.getCommandName());
for(Entry<SyntaxEntry, String> entry : this.command)
for(Entry<Argument, String> entry : this.command)
{
if(this.isDefaultEntry(entry))
{
@@ -295,14 +300,21 @@ public abstract class CommandBuilder implements ICommandBuilderSyntax
{
CommandString command = new CommandString(this.getCommandName());
for(Entry<SyntaxEntry, String> entry : this.command)
for(Entry<Argument, String> entry : this.command)
{
if(!entry.getKey().isRequired() && (entry.getKey().toString().equals(entry.getValue()) || this.isDefaultEntry(entry)))
{
break;
}
command.append(entry.getValue());
if(entry.getKey().isRequired() && entry.getKey().toString().equals(entry.getValue()) && entry.getKey().getDefault() != null)
{
command.append(entry.getKey().getDefault().toString());
}
else
{
command.append(entry.getValue());
}
}
return command.toString();

View File

@@ -0,0 +1,112 @@
package exopandora.worldhandler.builder;
import java.util.ArrayList;
import java.util.List;
import com.google.gson.annotations.SerializedName;
import exopandora.worldhandler.builder.types.ArgumentType;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@OnlyIn(Dist.CLIENT)
public class CommandSyntax
{
private List<Argument> syntax = new ArrayList<Argument>();
public CommandSyntax()
{
}
public CommandSyntax(List<Argument> syntax)
{
this.syntax = syntax;
}
public CommandSyntax addRequired(String key, ArgumentType type)
{
this.syntax.add(new Argument(key, type, true, null));
return this;
}
public CommandSyntax addRequired(String key, ArgumentType type, Object def)
{
this.syntax.add(new Argument(key, type, true, def));
return this;
}
public CommandSyntax addOptional(String key, ArgumentType type)
{
this.syntax.add(new Argument(key, type, false, null));
return this;
}
public CommandSyntax addOptional(String key, ArgumentType type, Object def)
{
this.syntax.add(new Argument(key, type, false, def));
return this;
}
public List<Argument> getArguments()
{
return this.syntax;
}
@OnlyIn(Dist.CLIENT)
public static class Argument
{
@SerializedName("name")
private final String key;
@SerializedName("type")
private final ArgumentType type;
@SerializedName("required")
private final boolean required;
@SerializedName("default")
private final Object def;
public Argument(String key, ArgumentType type, boolean required, Object def)
{
this.key = key;
this.type = type;
this.required = required;
this.def = def;
}
public String getKey()
{
return this.key;
}
public ArgumentType getType()
{
return this.type;
}
public boolean isRequired()
{
return this.required;
}
public Object getDefault()
{
return this.def;
}
@Override
public String toString()
{
if(this.required)
{
return "<" + this.key + ">";
}
else
{
return "[" + this.key + "]";
}
}
}
}

View File

@@ -4,7 +4,7 @@ public interface ICommandBuilderSyntax extends ICommandBuilder
{
String getCommandName();
String toActualCommand();
Syntax getSyntax();
CommandSyntax getSyntax();
@Override
default boolean needsCommandBlock()

View File

@@ -1,93 +0,0 @@
package exopandora.worldhandler.builder;
import java.util.ArrayList;
import java.util.List;
import exopandora.worldhandler.builder.types.Type;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@OnlyIn(Dist.CLIENT)
public class Syntax
{
private List<SyntaxEntry> syntax = new ArrayList<SyntaxEntry>();
public Syntax addRequired(String key, Type type)
{
this.syntax.add(new SyntaxEntry(key, type, true, null));
return this;
}
public Syntax addRequired(String key, Type type, Object def)
{
this.syntax.add(new SyntaxEntry(key, type, true, def));
return this;
}
public Syntax addOptional(String key, Type type)
{
this.syntax.add(new SyntaxEntry(key, type, false, null));
return this;
}
public Syntax addOptional(String key, Type type, Object def)
{
this.syntax.add(new SyntaxEntry(key, type, false, def));
return this;
}
public List<SyntaxEntry> getSyntaxEntries()
{
return this.syntax;
}
@OnlyIn(Dist.CLIENT)
public static class SyntaxEntry
{
private final String key;
private final Type type;
private final boolean required;
private final Object def;
public SyntaxEntry(String key, Type type, boolean required, Object def)
{
this.key = key;
this.type = type;
this.required = required;
this.def = def;
}
public String getKey()
{
return this.key;
}
public Type getType()
{
return this.type;
}
public boolean isRequired()
{
return this.required;
}
public Object getDefault()
{
return this.def;
}
@Override
public String toString()
{
if(this.required)
{
return "<" + this.key + ">";
}
else
{
return "[" + this.key + "]";
}
}
}
}

View File

@@ -1,4 +1,4 @@
package exopandora.worldhandler.builder.component.abstr;
package exopandora.worldhandler.builder.component.impl;
import java.util.HashMap;
import java.util.Map;
@@ -6,7 +6,7 @@ import java.util.Set;
import java.util.function.Function;
import exopandora.worldhandler.builder.component.IBuilderComponent;
import exopandora.worldhandler.builder.impl.abstr.EnumAttributes;
import exopandora.worldhandler.builder.impl.EnumAttributes;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;

View File

@@ -6,8 +6,7 @@ import java.util.function.Function;
import javax.annotation.Nullable;
import exopandora.worldhandler.builder.component.abstr.ComponentAttribute;
import exopandora.worldhandler.builder.impl.abstr.EnumAttributes;
import exopandora.worldhandler.builder.impl.EnumAttributes;
import net.minecraft.nbt.INBT;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.nbt.ListNBT;

View File

@@ -5,8 +5,7 @@ import java.util.function.Function;
import javax.annotation.Nullable;
import exopandora.worldhandler.builder.component.abstr.ComponentAttribute;
import exopandora.worldhandler.builder.impl.abstr.EnumAttributes;
import exopandora.worldhandler.builder.impl.EnumAttributes;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.nbt.INBT;
import net.minecraft.nbt.ListNBT;

View File

@@ -1,7 +1,7 @@
package exopandora.worldhandler.builder.component.impl;
import exopandora.worldhandler.builder.component.IBuilderComponent;
import exopandora.worldhandler.text.MutableStringTextComponent;
import exopandora.worldhandler.util.MutableStringTextComponent;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.nbt.INBT;
import net.minecraft.nbt.ListNBT;

View File

@@ -1,4 +1,4 @@
package exopandora.worldhandler.builder.component.abstr;
package exopandora.worldhandler.builder.component.impl;
import java.util.HashMap;
import java.util.Map;

View File

@@ -1,6 +1,5 @@
package exopandora.worldhandler.builder.component.impl;
import exopandora.worldhandler.builder.component.abstr.ComponentPotion;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;

View File

@@ -1,6 +1,5 @@
package exopandora.worldhandler.builder.component.impl;
import exopandora.worldhandler.builder.component.abstr.ComponentPotion;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;

View File

@@ -1,4 +1,4 @@
package exopandora.worldhandler.builder.component.abstr;
package exopandora.worldhandler.builder.component.impl;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;

View File

@@ -3,8 +3,8 @@ package exopandora.worldhandler.builder.impl;
import javax.annotation.Nullable;
import exopandora.worldhandler.builder.CommandBuilder;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.types.Type;
import exopandora.worldhandler.builder.CommandSyntax;
import exopandora.worldhandler.builder.types.ArgumentType;
import exopandora.worldhandler.helper.EnumHelper;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.api.distmarker.Dist;
@@ -87,14 +87,14 @@ public class BuilderAdvancement extends CommandBuilder
}
@Override
public final Syntax getSyntax()
public final CommandSyntax getSyntax()
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
syntax.addRequired("grant|revoke|test", Type.STRING);
syntax.addRequired("player", Type.STRING);
syntax.addRequired("only|until|from|through|everything", Type.STRING);
syntax.addOptional("advancement", Type.RESOURCE_LOCATION);
syntax.addRequired("grant|revoke|test", ArgumentType.STRING);
syntax.addRequired("player", ArgumentType.STRING);
syntax.addRequired("only|until|from|through|everything", ArgumentType.STRING);
syntax.addOptional("advancement", ArgumentType.RESOURCE_LOCATION);
return syntax;
}

View File

@@ -1,4 +1,4 @@
package exopandora.worldhandler.builder.impl.abstr;
package exopandora.worldhandler.builder.impl;
import exopandora.worldhandler.builder.CommandBuilderNBT;
import exopandora.worldhandler.builder.types.CoordinateInt;

View File

@@ -3,9 +3,9 @@ package exopandora.worldhandler.builder.impl;
import javax.annotation.Nonnull;
import exopandora.worldhandler.builder.CommandBuilder;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.CommandSyntax;
import exopandora.worldhandler.builder.types.TargetSelector;
import exopandora.worldhandler.builder.types.Type;
import exopandora.worldhandler.builder.types.ArgumentType;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@@ -70,11 +70,11 @@ public class BuilderButcher extends CommandBuilder
}
@Override
public Syntax getSyntax()
public CommandSyntax getSyntax()
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
syntax.addRequired("entity_name", Type.TARGET_SELECTOR);
syntax.addRequired("entity_name", ArgumentType.TARGET_SELECTOR);
return syntax;
}

View File

@@ -2,11 +2,10 @@ package exopandora.worldhandler.builder.impl;
import javax.annotation.Nullable;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.impl.abstr.BuilderDoubleBlockPos;
import exopandora.worldhandler.builder.CommandSyntax;
import exopandora.worldhandler.builder.types.Coordinate.CoordinateType;
import exopandora.worldhandler.builder.types.CoordinateInt;
import exopandora.worldhandler.builder.types.Type;
import exopandora.worldhandler.builder.types.ArgumentType;
import exopandora.worldhandler.helper.EnumHelper;
import net.minecraft.util.math.BlockPos;
import net.minecraftforge.api.distmarker.Dist;
@@ -133,21 +132,21 @@ public class BuilderClone extends BuilderDoubleBlockPos
}
@Override
public final Syntax getSyntax()
public final CommandSyntax getSyntax()
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
syntax.addRequired("x1", Type.COORDINATE_INT);
syntax.addRequired("y1", Type.COORDINATE_INT);
syntax.addRequired("z1", Type.COORDINATE_INT);
syntax.addRequired("x2", Type.COORDINATE_INT);
syntax.addRequired("y2", Type.COORDINATE_INT);
syntax.addRequired("z2", Type.COORDINATE_INT);
syntax.addRequired("x", Type.COORDINATE_INT);
syntax.addRequired("y", Type.COORDINATE_INT);
syntax.addRequired("z", Type.COORDINATE_INT);
syntax.addOptional("mask", Type.STRING);
syntax.addOptional("filter", Type.STRING);
syntax.addRequired("x1", ArgumentType.COORDINATE_INT);
syntax.addRequired("y1", ArgumentType.COORDINATE_INT);
syntax.addRequired("z1", ArgumentType.COORDINATE_INT);
syntax.addRequired("x2", ArgumentType.COORDINATE_INT);
syntax.addRequired("y2", ArgumentType.COORDINATE_INT);
syntax.addRequired("z2", ArgumentType.COORDINATE_INT);
syntax.addRequired("x", ArgumentType.COORDINATE_INT);
syntax.addRequired("y", ArgumentType.COORDINATE_INT);
syntax.addRequired("z", ArgumentType.COORDINATE_INT);
syntax.addOptional("mask", ArgumentType.STRING);
syntax.addOptional("filter", ArgumentType.STRING);
return syntax;
}

View File

@@ -5,9 +5,8 @@ import java.util.Set;
import exopandora.worldhandler.builder.component.impl.ComponentAttributeItem;
import exopandora.worldhandler.builder.component.impl.ComponentDisplay;
import exopandora.worldhandler.builder.component.impl.ComponentEnchantment;
import exopandora.worldhandler.builder.impl.abstr.EnumAttributes;
import exopandora.worldhandler.builder.impl.abstr.EnumAttributes.Applyable;
import exopandora.worldhandler.text.MutableStringTextComponent;
import exopandora.worldhandler.builder.impl.EnumAttributes.Applyable;
import exopandora.worldhandler.util.MutableStringTextComponent;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.api.distmarker.Dist;

View File

@@ -3,11 +3,10 @@ package exopandora.worldhandler.builder.impl;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.impl.abstr.BuilderBlockPos;
import exopandora.worldhandler.builder.CommandSyntax;
import exopandora.worldhandler.builder.types.CoordinateInt;
import exopandora.worldhandler.builder.types.TargetSelector;
import exopandora.worldhandler.builder.types.Type;
import exopandora.worldhandler.builder.types.ArgumentType;
import exopandora.worldhandler.helper.EnumHelper;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.util.ResourceLocation;
@@ -180,24 +179,24 @@ public class BuilderData extends BuilderBlockPos
}
@Nullable
private final Syntax getSyntax(EnumMode mode, EnumTarget target)
private final CommandSyntax getSyntax(EnumMode mode, EnumTarget target)
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
syntax.addRequired(mode != null ? mode.toString() : "mode", Type.STRING);
syntax.addRequired(target != null ? target.toString() : "target", Type.STRING);
syntax.addRequired(mode != null ? mode.toString() : "mode", ArgumentType.STRING);
syntax.addRequired(target != null ? target.toString() : "target", ArgumentType.STRING);
if(target != null)
{
switch(target)
{
case BLOCK:
syntax.addRequired("x", Type.COORDINATE_INT);
syntax.addRequired("y", Type.COORDINATE_INT);
syntax.addRequired("z", Type.COORDINATE_INT);
syntax.addRequired("x", ArgumentType.COORDINATE_INT);
syntax.addRequired("y", ArgumentType.COORDINATE_INT);
syntax.addRequired("z", ArgumentType.COORDINATE_INT);
break;
case ENTITY:
syntax.addRequired("entity", Type.TARGET_SELECTOR);
syntax.addRequired("entity", ArgumentType.TARGET_SELECTOR);
break;
default:
break;
@@ -208,10 +207,10 @@ public class BuilderData extends BuilderBlockPos
case GET:
break;
case MERGE:
syntax.addRequired("nbt", Type.NBT);
syntax.addRequired("nbt", ArgumentType.NBT);
break;
case REMOVE:
syntax.addRequired("path", Type.STRING);
syntax.addRequired("path", ArgumentType.STRING);
break;
default:
break;
@@ -219,7 +218,7 @@ public class BuilderData extends BuilderBlockPos
}
else
{
syntax.addOptional("...", Type.STRING);
syntax.addOptional("...", ArgumentType.STRING);
}
return syntax;
@@ -283,13 +282,13 @@ public class BuilderData extends BuilderBlockPos
}
@Override
public final Syntax getSyntax()
public final CommandSyntax getSyntax()
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
syntax.addRequired("get|merge|remove", Type.STRING);
syntax.addRequired("block|entity", Type.STRING);
syntax.addOptional("...", Type.STRING);
syntax.addRequired("get|merge|remove", ArgumentType.STRING);
syntax.addRequired("block|entity", ArgumentType.STRING);
syntax.addOptional("...", ArgumentType.STRING);
return syntax;
}

View File

@@ -1,8 +1,8 @@
package exopandora.worldhandler.builder.impl;
import exopandora.worldhandler.builder.CommandBuilder;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.types.Type;
import exopandora.worldhandler.builder.CommandSyntax;
import exopandora.worldhandler.builder.types.ArgumentType;
import net.minecraft.world.Difficulty;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@@ -35,11 +35,11 @@ public class BuilderDifficulty extends CommandBuilder
}
@Override
public final Syntax getSyntax()
public final CommandSyntax getSyntax()
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
syntax.addRequired("peaceful|easy|normal|hard", Type.STRING);
syntax.addRequired("peaceful|easy|normal|hard", ArgumentType.STRING);
return syntax;
}

View File

@@ -1,4 +1,4 @@
package exopandora.worldhandler.builder.impl.abstr;
package exopandora.worldhandler.builder.impl;
import exopandora.worldhandler.builder.CommandBuilder;
import exopandora.worldhandler.builder.types.CoordinateInt;

View File

@@ -1,8 +1,8 @@
package exopandora.worldhandler.builder.impl;
import exopandora.worldhandler.builder.CommandBuilder;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.types.Type;
import exopandora.worldhandler.builder.CommandSyntax;
import exopandora.worldhandler.builder.types.ArgumentType;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.api.distmarker.Dist;
@@ -53,13 +53,13 @@ public class BuilderEnchantment extends CommandBuilder
}
@Override
public Syntax getSyntax()
public CommandSyntax getSyntax()
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
syntax.addRequired("player", Type.STRING);
syntax.addRequired("enchantment", Type.RESOURCE_LOCATION);
syntax.addOptional("level", Type.INT, 1);
syntax.addRequired("player", ArgumentType.STRING);
syntax.addRequired("enchantment", ArgumentType.RESOURCE_LOCATION);
syntax.addOptional("level", ArgumentType.INT, 1);
return syntax;
}

View File

@@ -3,8 +3,8 @@ package exopandora.worldhandler.builder.impl;
import javax.annotation.Nullable;
import exopandora.worldhandler.builder.CommandBuilder;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.types.Type;
import exopandora.worldhandler.builder.CommandSyntax;
import exopandora.worldhandler.builder.types.ArgumentType;
import exopandora.worldhandler.helper.EnumHelper;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@@ -74,14 +74,14 @@ public class BuilderExperience extends CommandBuilder
}
@Override
public Syntax getSyntax()
public CommandSyntax getSyntax()
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
syntax.addRequired("add|set|query", Type.STRING);
syntax.addRequired("player", Type.STRING);
syntax.addRequired("amount", Type.INT);
syntax.addOptional("levels|points", Type.STRING);
syntax.addRequired("add|set|query", ArgumentType.STRING);
syntax.addRequired("player", ArgumentType.STRING);
syntax.addRequired("amount", ArgumentType.INT);
syntax.addOptional("levels|points", ArgumentType.STRING);
return syntax;
}

View File

@@ -2,11 +2,10 @@ package exopandora.worldhandler.builder.impl;
import javax.annotation.Nullable;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.impl.abstr.BuilderDoubleBlockPos;
import exopandora.worldhandler.builder.CommandSyntax;
import exopandora.worldhandler.builder.types.BlockResourceLocation;
import exopandora.worldhandler.builder.types.CoordinateInt;
import exopandora.worldhandler.builder.types.Type;
import exopandora.worldhandler.builder.types.ArgumentType;
import exopandora.worldhandler.helper.BlockHelper;
import exopandora.worldhandler.helper.EnumHelper;
import net.minecraft.util.math.BlockPos;
@@ -106,19 +105,19 @@ public class BuilderFill extends BuilderDoubleBlockPos
}
@Override
public final Syntax getSyntax()
public final CommandSyntax getSyntax()
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
syntax.addRequired("x1", Type.COORDINATE_INT);
syntax.addRequired("y1", Type.COORDINATE_INT);
syntax.addRequired("z1", Type.COORDINATE_INT);
syntax.addRequired("x2", Type.COORDINATE_INT);
syntax.addRequired("y2", Type.COORDINATE_INT);
syntax.addRequired("z2", Type.COORDINATE_INT);
syntax.addRequired("block", Type.BLOCK_RESOURCE_LOCATION);
syntax.addOptional("filter", Type.STRING);
syntax.addOptional("block", Type.BLOCK_RESOURCE_LOCATION, "block");
syntax.addRequired("x1", ArgumentType.COORDINATE_INT);
syntax.addRequired("y1", ArgumentType.COORDINATE_INT);
syntax.addRequired("z1", ArgumentType.COORDINATE_INT);
syntax.addRequired("x2", ArgumentType.COORDINATE_INT);
syntax.addRequired("y2", ArgumentType.COORDINATE_INT);
syntax.addRequired("z2", ArgumentType.COORDINATE_INT);
syntax.addRequired("block", ArgumentType.BLOCK_RESOURCE_LOCATION);
syntax.addOptional("filter", ArgumentType.STRING);
syntax.addOptional("block", ArgumentType.BLOCK_RESOURCE_LOCATION, "block");
return syntax;
}

View File

@@ -1,8 +1,8 @@
package exopandora.worldhandler.builder.impl;
import exopandora.worldhandler.builder.CommandBuilder;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.types.Type;
import exopandora.worldhandler.builder.CommandSyntax;
import exopandora.worldhandler.builder.types.ArgumentType;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@@ -42,12 +42,12 @@ public class BuilderGamemode extends CommandBuilder
}
@Override
public final Syntax getSyntax()
public final CommandSyntax getSyntax()
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
syntax.addRequired("mode", Type.STRING);
syntax.addOptional("player", Type.STRING);
syntax.addRequired("mode", ArgumentType.STRING);
syntax.addOptional("player", ArgumentType.STRING);
return syntax;
}

View File

@@ -1,8 +1,8 @@
package exopandora.worldhandler.builder.impl;
import exopandora.worldhandler.builder.CommandBuilder;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.types.Type;
import exopandora.worldhandler.builder.CommandSyntax;
import exopandora.worldhandler.builder.types.ArgumentType;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@@ -52,12 +52,12 @@ public class BuilderGamerule extends CommandBuilder
}
@Override
public final Syntax getSyntax()
public final CommandSyntax getSyntax()
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
syntax.addOptional("rule", Type.STRING);
syntax.addOptional("true|false|value", Type.STRING);
syntax.addOptional("rule", ArgumentType.STRING);
syntax.addOptional("true|false|value", ArgumentType.STRING);
return syntax;
}

View File

@@ -3,9 +3,9 @@ package exopandora.worldhandler.builder.impl;
import javax.annotation.Nullable;
import exopandora.worldhandler.builder.CommandBuilderNBT;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.CommandSyntax;
import exopandora.worldhandler.builder.types.ItemResourceLocation;
import exopandora.worldhandler.builder.types.Type;
import exopandora.worldhandler.builder.types.ArgumentType;
import exopandora.worldhandler.helper.ResourceHelper;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.util.ResourceLocation;
@@ -86,13 +86,13 @@ public class BuilderGive extends CommandBuilderNBT
}
@Override
public final Syntax getSyntax()
public final CommandSyntax getSyntax()
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
syntax.addRequired("player", Type.STRING);
syntax.addRequired("item", Type.ITEM_RESOURCE_LOCATION);
syntax.addRequired("count", Type.INT);
syntax.addRequired("player", ArgumentType.STRING);
syntax.addRequired("item", ArgumentType.ITEM_RESOURCE_LOCATION);
syntax.addRequired("count", ArgumentType.INT);
return syntax;
}

View File

@@ -11,9 +11,9 @@ public class BuilderMultiCommand implements ICommandBuilder
{
private final ICommandBuilder[] builders;
public BuilderMultiCommand(ICommandBuilder... builder)
public BuilderMultiCommand(ICommandBuilder... builders)
{
this.builders = builder;
this.builders = builders;
}
@Override

View File

@@ -1,8 +1,8 @@
package exopandora.worldhandler.builder.impl;
import exopandora.worldhandler.builder.CommandBuilder;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.types.Type;
import exopandora.worldhandler.builder.CommandSyntax;
import exopandora.worldhandler.builder.types.ArgumentType;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@@ -33,11 +33,11 @@ public class BuilderPlayer extends CommandBuilder
}
@Override
public final Syntax getSyntax()
public final CommandSyntax getSyntax()
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
syntax.addRequired("player", Type.STRING);
syntax.addRequired("player", ArgumentType.STRING);
return syntax;
}

View File

@@ -1,8 +1,8 @@
package exopandora.worldhandler.builder.impl;
import exopandora.worldhandler.builder.CommandBuilder;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.types.Type;
import exopandora.worldhandler.builder.CommandSyntax;
import exopandora.worldhandler.builder.types.ArgumentType;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@@ -43,12 +43,12 @@ public class BuilderPlayerReason extends CommandBuilder
}
@Override
public final Syntax getSyntax()
public final CommandSyntax getSyntax()
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
syntax.addRequired("player", Type.STRING);
syntax.addOptional("reason", Type.STRING);
syntax.addRequired("player", ArgumentType.STRING);
syntax.addOptional("reason", ArgumentType.STRING);
return syntax;
}

View File

@@ -3,9 +3,9 @@ package exopandora.worldhandler.builder.impl;
import javax.annotation.Nullable;
import exopandora.worldhandler.builder.CommandBuilder;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.component.abstr.EffectData;
import exopandora.worldhandler.builder.types.Type;
import exopandora.worldhandler.builder.CommandSyntax;
import exopandora.worldhandler.builder.component.impl.EffectData;
import exopandora.worldhandler.builder.types.ArgumentType;
import net.minecraft.potion.Effect;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.api.distmarker.Dist;
@@ -170,16 +170,16 @@ public class BuilderPotionEffect extends CommandBuilder
}
@Override
public final Syntax getSyntax()
public final CommandSyntax getSyntax()
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
syntax.addRequired("give|clear", Type.STRING);
syntax.addRequired("player", Type.STRING);
syntax.addRequired("effect", Type.RESOURCE_LOCATION);
syntax.addOptional("seconds", Type.INT, 0);
syntax.addOptional("amplifier", Type.BYTE, (byte) -1);
syntax.addOptional("hideParticles", Type.BOOLEAN, false);
syntax.addRequired("give|clear", ArgumentType.STRING);
syntax.addRequired("player", ArgumentType.STRING);
syntax.addRequired("effect", ArgumentType.RESOURCE_LOCATION);
syntax.addOptional("seconds", ArgumentType.INT, 0);
syntax.addOptional("amplifier", ArgumentType.BYTE, (byte) -1);
syntax.addOptional("hideParticles", ArgumentType.BOOLEAN, false);
return syntax;
}

View File

@@ -3,8 +3,8 @@ package exopandora.worldhandler.builder.impl;
import javax.annotation.Nullable;
import exopandora.worldhandler.builder.CommandBuilder;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.types.Type;
import exopandora.worldhandler.builder.CommandSyntax;
import exopandora.worldhandler.builder.types.ArgumentType;
import exopandora.worldhandler.helper.EnumHelper;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.util.ResourceLocation;
@@ -76,13 +76,13 @@ public class BuilderRecipe extends CommandBuilder
}
@Override
public Syntax getSyntax()
public CommandSyntax getSyntax()
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
syntax.addRequired("give|take", Type.STRING);
syntax.addOptional("player", Type.STRING);
syntax.addOptional("recipe", Type.RESOURCE_LOCATION);
syntax.addRequired("give|take", ArgumentType.STRING);
syntax.addOptional("player", ArgumentType.STRING);
syntax.addOptional("recipe", ArgumentType.RESOURCE_LOCATION);
return syntax;
}

View File

@@ -1,4 +1,4 @@
package exopandora.worldhandler.builder.impl.abstr;
package exopandora.worldhandler.builder.impl;
import exopandora.worldhandler.builder.CommandBuilder;
import net.minecraftforge.api.distmarker.Dist;

View File

@@ -2,10 +2,9 @@ package exopandora.worldhandler.builder.impl;
import javax.annotation.Nullable;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.impl.abstr.BuilderScoreboard;
import exopandora.worldhandler.builder.CommandSyntax;
import exopandora.worldhandler.builder.types.GreedyString;
import exopandora.worldhandler.builder.types.Type;
import exopandora.worldhandler.builder.types.ArgumentType;
import exopandora.worldhandler.helper.EnumHelper;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@@ -120,29 +119,29 @@ public class BuilderScoreboardObjectives extends BuilderScoreboard
}
@Nullable
private Syntax getSyntax(EnumMode mode)
private CommandSyntax getSyntax(EnumMode mode)
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
switch(mode)
{
case ADD:
syntax.addRequired("objectives", Type.STRING);
syntax.addRequired("add", Type.STRING);
syntax.addRequired("name", Type.STRING);
syntax.addRequired("criteria_type", Type.STRING);
syntax.addOptional("display_name...", Type.GREEDY_STRING);
syntax.addRequired("objectives", ArgumentType.STRING);
syntax.addRequired("add", ArgumentType.STRING);
syntax.addRequired("name", ArgumentType.STRING);
syntax.addRequired("criteria_type", ArgumentType.STRING);
syntax.addOptional("display_name...", ArgumentType.GREEDY_STRING);
return syntax;
case REMOVE:
syntax.addRequired("objectives", Type.STRING);
syntax.addRequired("remove", Type.STRING);
syntax.addRequired("name", Type.STRING);
syntax.addRequired("objectives", ArgumentType.STRING);
syntax.addRequired("remove", ArgumentType.STRING);
syntax.addRequired("name", ArgumentType.STRING);
return syntax;
case SETDISPLAY:
syntax.addRequired("objectives", Type.STRING);
syntax.addRequired("setdisplay", Type.STRING);
syntax.addRequired("slot", Type.STRING);
syntax.addOptional("objective", Type.STRING);
syntax.addRequired("objectives", ArgumentType.STRING);
syntax.addRequired("setdisplay", ArgumentType.STRING);
syntax.addRequired("slot", ArgumentType.STRING);
syntax.addOptional("objective", ArgumentType.STRING);
return syntax;
default:
return null;
@@ -150,13 +149,13 @@ public class BuilderScoreboardObjectives extends BuilderScoreboard
}
@Override
public final Syntax getSyntax()
public final CommandSyntax getSyntax()
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
syntax.addRequired("objectives", Type.STRING);
syntax.addRequired("list|add|remove|setdisplay", Type.STRING);
syntax.addOptional("...", Type.STRING);
syntax.addRequired("objectives", ArgumentType.STRING);
syntax.addRequired("list|add|remove|setdisplay", ArgumentType.STRING);
syntax.addOptional("...", ArgumentType.STRING);
return syntax;
}

View File

@@ -1,8 +1,7 @@
package exopandora.worldhandler.builder.impl;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.impl.abstr.BuilderScoreboard;
import exopandora.worldhandler.builder.types.Type;
import exopandora.worldhandler.builder.CommandSyntax;
import exopandora.worldhandler.builder.types.ArgumentType;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@@ -91,25 +90,25 @@ public class BuilderScoreboardPlayers extends BuilderScoreboard
return 0;
}
private Syntax getSyntax(String mode)
private CommandSyntax getSyntax(String mode)
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
if(mode.equals("enable"))
{
syntax.addRequired("players", Type.STRING);
syntax.addRequired("enable", Type.STRING);
syntax.addRequired("player", Type.STRING);
syntax.addRequired("objective", Type.STRING);
syntax.addRequired("players", ArgumentType.STRING);
syntax.addRequired("enable", ArgumentType.STRING);
syntax.addRequired("player", ArgumentType.STRING);
syntax.addRequired("objective", ArgumentType.STRING);
return syntax;
}
syntax.addRequired("players", Type.STRING);
syntax.addRequired("add|set|remove", Type.STRING, "add|set|remove");
syntax.addRequired("player", Type.STRING);
syntax.addRequired("objective", Type.STRING);
syntax.addRequired("score", Type.INT, 0);
syntax.addRequired("players", ArgumentType.STRING);
syntax.addRequired("add|set|remove", ArgumentType.STRING, "add|set|remove");
syntax.addRequired("player", ArgumentType.STRING);
syntax.addRequired("objective", ArgumentType.STRING);
syntax.addRequired("score", ArgumentType.INT, 0);
return syntax;
@@ -144,13 +143,13 @@ public class BuilderScoreboardPlayers extends BuilderScoreboard
}
@Override
public final Syntax getSyntax()
public final CommandSyntax getSyntax()
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
syntax.addRequired("players", Type.STRING);
syntax.addRequired("add|enable|get|list|operation|remove|reset|set", Type.STRING);
syntax.addOptional("...", Type.STRING);
syntax.addRequired("players", ArgumentType.STRING);
syntax.addRequired("add|enable|get|list|operation|remove|reset|set", ArgumentType.STRING);
syntax.addOptional("...", ArgumentType.STRING);
return syntax;
}

View File

@@ -1,10 +1,9 @@
package exopandora.worldhandler.builder.impl;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.impl.abstr.BuilderBlockPos;
import exopandora.worldhandler.builder.CommandSyntax;
import exopandora.worldhandler.builder.types.BlockResourceLocation;
import exopandora.worldhandler.builder.types.CoordinateInt;
import exopandora.worldhandler.builder.types.Type;
import exopandora.worldhandler.builder.types.ArgumentType;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.state.IProperty;
import net.minecraft.util.ResourceLocation;
@@ -71,15 +70,15 @@ public class BuilderSetBlock extends BuilderBlockPos
}
@Override
public final Syntax getSyntax()
public final CommandSyntax getSyntax()
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
syntax.addRequired("x", Type.COORDINATE_INT);
syntax.addRequired("y", Type.COORDINATE_INT);
syntax.addRequired("z", Type.COORDINATE_INT);
syntax.addRequired("block", Type.BLOCK_RESOURCE_LOCATION);
syntax.addOptional("mode", Type.STRING);
syntax.addRequired("x", ArgumentType.COORDINATE_INT);
syntax.addRequired("y", ArgumentType.COORDINATE_INT);
syntax.addRequired("z", ArgumentType.COORDINATE_INT);
syntax.addRequired("block", ArgumentType.BLOCK_RESOURCE_LOCATION);
syntax.addOptional("mode", ArgumentType.STRING);
return syntax;
}

View File

@@ -3,8 +3,8 @@ package exopandora.worldhandler.builder.impl;
import javax.annotation.Nullable;
import exopandora.worldhandler.builder.component.impl.ComponentTag;
import exopandora.worldhandler.text.MutableStringTextComponent;
import exopandora.worldhandler.text.SignText;
import exopandora.worldhandler.util.MutableStringTextComponent;
import exopandora.worldhandler.util.SignText;
import net.minecraft.nbt.StringNBT;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;

View File

@@ -1,10 +1,10 @@
package exopandora.worldhandler.builder.impl;
import exopandora.worldhandler.builder.CommandBuilder;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.CommandSyntax;
import exopandora.worldhandler.builder.types.Coordinate.CoordinateType;
import exopandora.worldhandler.builder.types.CoordinateInt;
import exopandora.worldhandler.builder.types.Type;
import exopandora.worldhandler.builder.types.ArgumentType;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@@ -45,14 +45,14 @@ public class BuilderSpawnpoint extends CommandBuilder
}
@Override
public final Syntax getSyntax()
public final CommandSyntax getSyntax()
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
syntax.addRequired("player", Type.STRING);
syntax.addRequired("x", Type.COORDINATE_INT);
syntax.addRequired("y", Type.COORDINATE_INT);
syntax.addRequired("z", Type.COORDINATE_INT);
syntax.addRequired("player", ArgumentType.STRING);
syntax.addRequired("x", ArgumentType.COORDINATE_INT);
syntax.addRequired("y", ArgumentType.COORDINATE_INT);
syntax.addRequired("z", ArgumentType.COORDINATE_INT);
return syntax;
}

View File

@@ -7,17 +7,16 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import exopandora.worldhandler.builder.CommandBuilderNBT;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.CommandSyntax;
import exopandora.worldhandler.builder.component.impl.ComponentAttributeMob;
import exopandora.worldhandler.builder.component.impl.ComponentPotionMob;
import exopandora.worldhandler.builder.component.impl.ComponentSummon;
import exopandora.worldhandler.builder.component.impl.ComponentTag;
import exopandora.worldhandler.builder.impl.abstr.EnumAttributes;
import exopandora.worldhandler.builder.impl.abstr.EnumAttributes.Applyable;
import exopandora.worldhandler.builder.impl.EnumAttributes.Applyable;
import exopandora.worldhandler.builder.types.Coordinate.CoordinateType;
import exopandora.worldhandler.text.MutableStringTextComponent;
import exopandora.worldhandler.util.MutableStringTextComponent;
import exopandora.worldhandler.builder.types.CoordinateDouble;
import exopandora.worldhandler.builder.types.Type;
import exopandora.worldhandler.builder.types.ArgumentType;
import net.minecraft.block.Block;
import net.minecraft.block.Blocks;
import net.minecraft.item.Item;
@@ -369,15 +368,15 @@ public class BuilderSummon extends CommandBuilderNBT
}
@Override
public Syntax getSyntax()
public CommandSyntax getSyntax()
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
syntax.addRequired("entity_name", Type.RESOURCE_LOCATION);
syntax.addOptional("x", Type.COORDINATE_DOUBLE);
syntax.addOptional("y", Type.COORDINATE_DOUBLE);
syntax.addOptional("z", Type.COORDINATE_DOUBLE);
syntax.addOptional("nbt", Type.NBT);
syntax.addRequired("entity_name", ArgumentType.RESOURCE_LOCATION);
syntax.addOptional("x", ArgumentType.COORDINATE_DOUBLE);
syntax.addOptional("y", ArgumentType.COORDINATE_DOUBLE);
syntax.addOptional("z", ArgumentType.COORDINATE_DOUBLE);
syntax.addOptional("nbt", ArgumentType.NBT);
return syntax;
}

View File

@@ -1,8 +1,8 @@
package exopandora.worldhandler.builder.impl;
import exopandora.worldhandler.builder.CommandBuilder;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.types.Type;
import exopandora.worldhandler.builder.CommandSyntax;
import exopandora.worldhandler.builder.types.ArgumentType;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@@ -56,13 +56,13 @@ public class BuilderTag extends CommandBuilder
}
@Override
public Syntax getSyntax()
public CommandSyntax getSyntax()
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
syntax.addRequired("player", Type.STRING);
syntax.addRequired("add|list|remove", Type.STRING);
syntax.addRequired("name", Type.STRING);
syntax.addRequired("player", ArgumentType.STRING);
syntax.addRequired("add|list|remove", ArgumentType.STRING);
syntax.addRequired("name", ArgumentType.STRING);
return syntax;
}

View File

@@ -3,9 +3,9 @@ package exopandora.worldhandler.builder.impl;
import javax.annotation.Nullable;
import exopandora.worldhandler.builder.CommandBuilder;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.CommandSyntax;
import exopandora.worldhandler.builder.types.GreedyString;
import exopandora.worldhandler.builder.types.Type;
import exopandora.worldhandler.builder.types.ArgumentType;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@@ -131,45 +131,45 @@ public class BuilderTeams extends CommandBuilder
}
@Nullable
private Syntax getSyntax(String mode)
private CommandSyntax getSyntax(String mode)
{
if(mode.equals("add"))
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
syntax.addRequired("add", Type.STRING);
syntax.addRequired("name", Type.STRING);
syntax.addOptional("display_name...", Type.GREEDY_STRING);
syntax.addRequired("add", ArgumentType.STRING);
syntax.addRequired("name", ArgumentType.STRING);
syntax.addOptional("display_name...", ArgumentType.GREEDY_STRING);
return syntax;
}
else if(mode.equals("remove|empty"))
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
syntax.addRequired("remove|empty", Type.STRING, "remove|empty");
syntax.addRequired("name", Type.STRING);
syntax.addRequired("remove|empty", ArgumentType.STRING, "remove|empty");
syntax.addRequired("name", ArgumentType.STRING);
return syntax;
}
else if(mode.equals("join|leave"))
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
syntax.addRequired("join|leave", Type.STRING, "join|leave");
syntax.addRequired("name", Type.STRING);
syntax.addOptional("player", Type.STRING);
syntax.addRequired("join|leave", ArgumentType.STRING, "join|leave");
syntax.addRequired("name", ArgumentType.STRING);
syntax.addOptional("player", ArgumentType.STRING);
return syntax;
}
else if(mode.equals("modify"))
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
syntax.addRequired("modify", Type.STRING);
syntax.addRequired("team", Type.STRING);
syntax.addRequired("friendlyfire|color|seeFriendlyInvisibles|nametagVisibility|deathMessageVisibility|collisionRule", Type.STRING);
syntax.addRequired("value", Type.STRING);
syntax.addRequired("modify", ArgumentType.STRING);
syntax.addRequired("team", ArgumentType.STRING);
syntax.addRequired("friendlyfire|color|seeFriendlyInvisibles|nametagVisibility|deathMessageVisibility|collisionRule", ArgumentType.STRING);
syntax.addRequired("value", ArgumentType.STRING);
return syntax;
}
@@ -212,12 +212,12 @@ public class BuilderTeams extends CommandBuilder
}
@Override
public final Syntax getSyntax()
public final CommandSyntax getSyntax()
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
syntax.addRequired("list|add|remove|empty|join|leave|modify", Type.STRING);
syntax.addOptional("...", Type.STRING);
syntax.addRequired("list|add|remove|empty|join|leave|modify", ArgumentType.STRING);
syntax.addOptional("...", ArgumentType.STRING);
return syntax;
}

View File

@@ -1,8 +1,8 @@
package exopandora.worldhandler.builder.impl;
import exopandora.worldhandler.builder.CommandBuilder;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.types.Type;
import exopandora.worldhandler.builder.CommandSyntax;
import exopandora.worldhandler.builder.types.ArgumentType;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@@ -42,12 +42,12 @@ public class BuilderTime extends CommandBuilder
}
@Override
public final Syntax getSyntax()
public final CommandSyntax getSyntax()
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
syntax.addRequired("set|add|query", Type.STRING);
syntax.addOptional("value", Type.INT);
syntax.addRequired("set|add|query", ArgumentType.STRING);
syntax.addOptional("value", ArgumentType.INT);
return syntax;
}

View File

@@ -1,8 +1,8 @@
package exopandora.worldhandler.builder.impl;
import exopandora.worldhandler.builder.CommandBuilder;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.types.Type;
import exopandora.worldhandler.builder.CommandSyntax;
import exopandora.worldhandler.builder.types.ArgumentType;
import exopandora.worldhandler.helper.EnumHelper;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@@ -62,13 +62,13 @@ public class BuilderTrigger extends CommandBuilder
}
@Override
public Syntax getSyntax()
public CommandSyntax getSyntax()
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
syntax.addRequired("objective", Type.STRING);
syntax.addRequired("add|set", Type.STRING);
syntax.addRequired("value", Type.INT);
syntax.addRequired("objective", ArgumentType.STRING);
syntax.addRequired("add|set", ArgumentType.STRING);
syntax.addRequired("value", ArgumentType.INT);
return syntax;
}

View File

@@ -0,0 +1,164 @@
package exopandora.worldhandler.builder.impl;
import exopandora.worldhandler.builder.CommandBuilder;
import exopandora.worldhandler.builder.CommandSyntax;
import exopandora.worldhandler.builder.CommandSyntax.Argument;
import exopandora.worldhandler.builder.types.ArgumentType;
import exopandora.worldhandler.builder.types.BlockResourceLocation;
import exopandora.worldhandler.builder.types.CoordinateDouble;
import exopandora.worldhandler.builder.types.CoordinateInt;
import exopandora.worldhandler.builder.types.GreedyString;
import exopandora.worldhandler.builder.types.ItemResourceLocation;
import exopandora.worldhandler.builder.types.TargetSelector;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@OnlyIn(Dist.CLIENT)
public class BuilderUsercontent extends CommandBuilder
{
private final String name;
private final CommandSyntax syntax;
public BuilderUsercontent(String name, CommandSyntax syntax)
{
this.name = name;
this.syntax = syntax;
this.updateSyntax(this.syntax);
}
public void set(int index, String object)
{
if(index < this.syntax.getArguments().size() && index >= 0)
{
Argument argument = this.syntax.getArguments().get(index);
ArgumentType type = argument.getType();
switch(type)
{
case STRING:
this.setNode(index, type.<String>parseOfDefault(object, (String) argument.getDefault()));
break;
case BLOCK_RESOURCE_LOCATION:
this.setNode(index, type.<BlockResourceLocation>parseOfDefault(object, type.parse((String) argument.getDefault())));
break;
case BOOLEAN:
this.setNode(index, type.<Boolean>parseOfDefault(object, (Boolean) argument.getDefault()));
break;
case BYTE:
this.setNode(index, type.<Byte>parseOfDefault(object, ((Double) argument.getDefault()).byteValue()));
break;
case COORDINATE_DOUBLE:
this.setNode(index, type.<CoordinateDouble>parseOfDefault(object, type.parse((String) argument.getDefault())));
break;
case COORDINATE_INT:
this.setNode(index, type.<CoordinateInt>parseOfDefault(object, type.parse((String) argument.getDefault())));
break;
case DOUBLE:
this.setNode(index, type.<Double>parseOfDefault(object, (Double) argument.getDefault()));
break;
case FLOAT:
this.setNode(index, type.<Float>parseOfDefault(object, ((Double) argument.getDefault()).floatValue()));
break;
case GREEDY_STRING:
this.setNode(index, type.<GreedyString>parseOfDefault(object, type.parse((String) argument.getDefault())));
break;
case INT:
this.setNode(index, type.<Integer>parseOfDefault(object, ((Double) argument.getDefault()).intValue()));
break;
case ITEM_RESOURCE_LOCATION:
this.setNode(index, type.<ItemResourceLocation>parseOfDefault(object, type.parse((String) argument.getDefault())));
break;
case LONG:
this.setNode(index, type.<Long>parseOfDefault(object, ((Double) argument.getDefault()).longValue()));
break;
case NBT:
this.setNode(index, type.<CompoundNBT>parseOfDefault(object, type.parse((String) argument.getDefault())));
break;
case RESOURCE_LOCATION:
this.setNode(index, type.<ResourceLocation>parseOfDefault(object, type.parse((String) argument.getDefault())));
break;
case SHORT:
this.setNode(index, type.<Short>parseOfDefault(object, ((Double) argument.getDefault()).shortValue()));
break;
case TARGET_SELECTOR:
this.setNode(index, type.<TargetSelector>parseOfDefault(object, type.<TargetSelector>parse((String) argument.getDefault())));
break;
default:
break;
}
}
}
public String get(int index)
{
if(index < this.syntax.getArguments().size() && index >= 0)
{
Argument argument = this.syntax.getArguments().get(index);
switch(argument.getType())
{
case BLOCK_RESOURCE_LOCATION:
return this.getNodeAsBlockResourceLocation(index).toString();
case BOOLEAN:
return String.valueOf(this.getNodeAsBoolean(index));
case BYTE:
return String.valueOf(this.getNodeAsByte(index));
case COORDINATE_DOUBLE:
return this.getNodeAsCoordinateDouble(index).toString();
case COORDINATE_INT:
return this.getNodeAsCoordinateInt(index).toString();
case DOUBLE:
return String.valueOf(this.getNodeAsDouble(index));
case FLOAT:
return String.valueOf(this.getNodeAsFloat(index));
case GREEDY_STRING:
return this.getNodeAsGreedyString(index);
case INT:
return String.valueOf(this.getNodeAsInt(index));
case ITEM_RESOURCE_LOCATION:
return this.getNodeAsItemResourceLocation(index).toString();
case LONG:
return String.valueOf(this.getNodeAsLong(index));
case NBT:
return this.getNodeAsNBT(index).toString();
case RESOURCE_LOCATION:
return this.getNodeAsResourceLocation(index).toString();
case SHORT:
return String.valueOf(this.getNodeAsShort(index));
case STRING:
return this.getNodeAsString(index);
case TARGET_SELECTOR:
return this.getNodeAsTargetSelector(index).toString();
default:
break;
}
}
return null;
}
public void setPlayerName(String username)
{
for(int x = 0; x < this.syntax.getArguments().size(); x++)
{
if(ArgumentType.PLAYER.equals(this.syntax.getArguments().get(x).getType()))
{
this.setPlayerName(x, username);
}
}
}
@Override
public String getCommandName()
{
return this.name;
}
@Override
public CommandSyntax getSyntax()
{
return this.syntax;
}
}

View File

@@ -1,8 +1,8 @@
package exopandora.worldhandler.builder.impl;
import exopandora.worldhandler.builder.CommandBuilder;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.types.Type;
import exopandora.worldhandler.builder.CommandSyntax;
import exopandora.worldhandler.builder.types.ArgumentType;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@@ -16,11 +16,11 @@ public class BuilderWH extends CommandBuilder
}
@Override
public Syntax getSyntax()
public CommandSyntax getSyntax()
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
syntax.addRequired("pos1|pos2|fill|replace", Type.STRING);
syntax.addRequired("pos1|pos2|fill|replace", ArgumentType.STRING);
return syntax;
}

View File

@@ -1,8 +1,8 @@
package exopandora.worldhandler.builder.impl;
import exopandora.worldhandler.builder.CommandBuilder;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.types.Type;
import exopandora.worldhandler.builder.CommandSyntax;
import exopandora.worldhandler.builder.types.ArgumentType;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@@ -42,12 +42,12 @@ public class BuilderWeather extends CommandBuilder
}
@Override
public final Syntax getSyntax()
public final CommandSyntax getSyntax()
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
syntax.addRequired("clear|rain|thunde", Type.STRING);
syntax.addOptional("duration", Type.INT);
syntax.addRequired("clear|rain|thunde", ArgumentType.STRING);
syntax.addOptional("duration", ArgumentType.INT);
return syntax;
}

View File

@@ -3,8 +3,8 @@ package exopandora.worldhandler.builder.impl;
import javax.annotation.Nullable;
import exopandora.worldhandler.builder.CommandBuilder;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.types.Type;
import exopandora.worldhandler.builder.CommandSyntax;
import exopandora.worldhandler.builder.types.ArgumentType;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@@ -66,12 +66,12 @@ public class BuilderWhitelist extends CommandBuilder
}
@Override
public final Syntax getSyntax()
public final CommandSyntax getSyntax()
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
syntax.addRequired("add|remove|reload|on|off", Type.STRING);
syntax.addOptional("player", Type.STRING);
syntax.addRequired("add|remove|reload|on|off", ArgumentType.STRING);
syntax.addOptional("player", ArgumentType.STRING);
return syntax;
}

View File

@@ -1,8 +1,8 @@
package exopandora.worldhandler.builder.impl;
import exopandora.worldhandler.builder.CommandBuilder;
import exopandora.worldhandler.builder.Syntax;
import exopandora.worldhandler.builder.types.Type;
import exopandora.worldhandler.builder.CommandSyntax;
import exopandora.worldhandler.builder.types.ArgumentType;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@@ -16,11 +16,11 @@ public class BuilderWorldHandler extends CommandBuilder
}
@Override
public final Syntax getSyntax()
public final CommandSyntax getSyntax()
{
Syntax syntax = new Syntax();
CommandSyntax syntax = new CommandSyntax();
syntax.addRequired("help|display|version", Type.STRING);
syntax.addRequired("help|display|version", ArgumentType.STRING);
return syntax;
}

View File

@@ -1,4 +1,4 @@
package exopandora.worldhandler.builder.impl.abstr;
package exopandora.worldhandler.builder.impl;
import java.util.Arrays;
import java.util.List;

View File

@@ -2,6 +2,7 @@ package exopandora.worldhandler.builder.types;
import java.util.function.Function;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import com.mojang.brigadier.exceptions.CommandSyntaxException;
@@ -13,7 +14,7 @@ import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
@OnlyIn(Dist.CLIENT)
public enum Type
public enum ArgumentType
{
SHORT(Short::valueOf),
BYTE(Byte::valueOf),
@@ -24,17 +25,18 @@ public enum Type
BOOLEAN(Boolean::valueOf),
STRING(String::valueOf),
GREEDY_STRING(GreedyString::valueOf),
RESOURCE_LOCATION(Type::parseResourceLocation),
RESOURCE_LOCATION(ArgumentType::parseResourceLocation),
ITEM_RESOURCE_LOCATION(ItemResourceLocation::valueOf),
BLOCK_RESOURCE_LOCATION(BlockResourceLocation::valueOf),
NBT(Type::parseCompoundNBT),
NBT(ArgumentType::parseCompoundNBT),
COORDINATE_INT(CoordinateInt::valueOf),
COORDINATE_DOUBLE(CoordinateDouble::valueOf),
TARGET_SELECTOR(TargetSelector::valueOf);
TARGET_SELECTOR(TargetSelector::valueOf),
PLAYER(String::valueOf);
private final Function<String, Object> parser;
private Type(Function<String, Object> parser)
private ArgumentType(Function<String, Object> parser)
{
this.parser = parser;
}
@@ -46,10 +48,23 @@ public enum Type
return (T) this.parser.apply(object);
}
@Nonnull
public <T> T parseOfDefault(String object, T def)
{
try
{
return this.<T>parse(object);
}
catch(Exception e)
{
return def;
}
}
@Nullable
public static ResourceLocation parseResourceLocation(String value)
{
return value != null ? new ResourceLocation(value) : null;
return value != null && !value.isEmpty() ? new ResourceLocation(value) : null;
}
@Nullable