Skip to content

Commit bec973c

Browse files
committed
this should (it needs testing) implement the request from @jriwanek for being able to do extra data for specifying parameters such as size, Y-range and similar
1 parent 752ca2f commit bec973c

File tree

1 file changed

+44
-11
lines changed

1 file changed

+44
-11
lines changed

src/main/java/com/mcmoddev/orespawn/commands/AddOreCommand.java

Lines changed: 44 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
import java.util.ArrayList;
2626
import java.util.List;
27+
import java.util.Map.Entry;
2728

2829
public class AddOreCommand extends CommandBase {
2930
private static final String ALL = "all";
@@ -35,7 +36,7 @@ public String getName() {
3536

3637
@Override
3738
public String getUsage(ICommandSender sender) {
38-
return "/addore <file> <dimension|all>";
39+
return "/addore <file> <dimension|all> <options>";
3940
}
4041

4142
@Override
@@ -46,13 +47,16 @@ public void execute(MinecraftServer server, ICommandSender sender, String[] args
4647

4748
EntityPlayer player = (EntityPlayer) sender;
4849
ItemStack stack = player.getHeldItem(EnumHand.MAIN_HAND);
49-
50+
String jsonArgs = null;
51+
5052
if (stack == null) {
5153
throw new CommandException("You have no item in your main hand");
5254
} else if (!(stack.getItem() instanceof ItemBlock)) {
5355
throw new CommandException("The item in your main hand isn't a block");
54-
} else if (args.length != 2) {
56+
} else if (args.length <= 2) {
5557
throw new CommandException(this.getUsage(sender));
58+
} else {
59+
jsonArgs = getChatComponentFromNthArg(sender, args, 2).getUnformattedText();
5660
}
5761

5862
String file = args[0];
@@ -69,21 +73,50 @@ public void execute(MinecraftServer server, ICommandSender sender, String[] args
6973
throw new CommandException(args[1] + " isn't a valid dimension");
7074
}
7175

76+
7277
JsonObject ore = new JsonObject();
73-
ore.addProperty(ConfigNames.BLOCK, state.getBlock().getRegistryName().toString());
74-
ore.addProperty(ConfigNames.STATE, StateUtil.serializeState(state));
75-
ore.addProperty(ConfigNames.DefaultFeatureProperties.SIZE, 25);
76-
ore.addProperty(ConfigNames.DefaultFeatureProperties.VARIATION, 12);
77-
ore.addProperty(ConfigNames.DefaultFeatureProperties.FREQUENCY, 20);
78-
ore.addProperty(ConfigNames.DefaultFeatureProperties.MINHEIGHT, 0);
79-
ore.addProperty(ConfigNames.DefaultFeatureProperties.MAXHEIGHT, 128);
78+
JsonObject oreArgs = null;
79+
int size = 25;
80+
int variation = 12;
81+
int frequency = 20;
82+
int minHeight = 0;
83+
int maxHeight = 128;
8084

85+
oreArgs = new JsonObject();
86+
oreArgs.addProperty(ConfigNames.DefaultFeatureProperties.SIZE, size);
87+
oreArgs.addProperty(ConfigNames.DefaultFeatureProperties.VARIATION, variation);
88+
oreArgs.addProperty(ConfigNames.DefaultFeatureProperties.FREQUENCY, frequency);
89+
oreArgs.addProperty(ConfigNames.DefaultFeatureProperties.MINHEIGHT, minHeight);
90+
oreArgs.addProperty(ConfigNames.DefaultFeatureProperties.MAXHEIGHT, maxHeight);
91+
ore.addProperty(ConfigNames.BLOCK, state.getBlock().getRegistryName().toString());
92+
ore.addProperty(ConfigNames.STATE, StateUtil.serializeState(state));
93+
94+
if( jsonArgs != null ) {
95+
JsonObject newOreArgs = (new JsonParser()).parse(jsonArgs).getAsJsonObject();
96+
setProperties(oreArgs,newOreArgs);
97+
}
98+
99+
setOre(ore,oreArgs);
100+
81101
this.putFile(file, ore, dimension);
82102

83103
player.sendStatusMessage(new TextComponentString("Added " + state.getBlock().getRegistryName().toString() + " to the json"), true);
84104
}
85105

86-
private void putFile(String file, JsonObject ore, int id) {
106+
private void setProperties(JsonObject oreArgs, JsonObject newOreArgs) {
107+
for( Entry<String, JsonElement> ent : newOreArgs.entrySet() ) {
108+
oreArgs.remove(ent.getKey());
109+
oreArgs.add(ent.getKey(), ent.getValue());
110+
}
111+
}
112+
113+
private void setOre(JsonObject ore, JsonObject oreArgs) {
114+
for( Entry<String, JsonElement> ent : oreArgs.entrySet() ) {
115+
ore.add(ent.getKey(), ent.getValue());
116+
}
117+
}
118+
119+
private void putFile(String file, JsonObject ore, int id) {
87120
DimensionBuilder db = OreSpawn.API.getLogic(file).newDimensionBuilder(id);
88121
SpawnBuilder sb = db.newSpawnBuilder(null);
89122
OreBuilder ob = sb.newOreBuilder();

0 commit comments

Comments
 (0)