diff --git a/PlotSquared/src/com/intellectualcrafters/plot/PlotWorld.java b/PlotSquared/src/com/intellectualcrafters/plot/PlotWorld.java
index 86aec60cb..4be44e08a 100644
--- a/PlotSquared/src/com/intellectualcrafters/plot/PlotWorld.java
+++ b/PlotSquared/src/com/intellectualcrafters/plot/PlotWorld.java
@@ -1,9 +1,10 @@
package com.intellectualcrafters.plot;
-import java.util.ArrayList;
-
import org.bukkit.Material;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* This is the PlotWorld class (obviously)
*
- All existing PlotWorld instances should be kept in PlotMain (worlds variable)
@@ -190,6 +191,9 @@ public class PlotWorld {
* Default schematic on claim: false
*/
public static boolean SCHEMATIC_ON_CLAIM_DEFAULT = false;
+ public boolean SCHEMATIC_CLAIM_SPECIFY = false;
+ public List SCHEMATICS = new ArrayList<>();
+
/**
* schematic file
*/
diff --git a/PlotSquared/src/com/intellectualcrafters/plot/WorldGenerator.java b/PlotSquared/src/com/intellectualcrafters/plot/WorldGenerator.java
index 4dcaf7242..5b13b7d6e 100644
--- a/PlotSquared/src/com/intellectualcrafters/plot/WorldGenerator.java
+++ b/PlotSquared/src/com/intellectualcrafters/plot/WorldGenerator.java
@@ -89,7 +89,8 @@ public class WorldGenerator extends ChunkGenerator {
options.put("worlds." + world + ".schematic.on_claim", SCHEMATIC_ON_CLAIM_DEFAULT);
options.put("worlds." + world + ".schematic.file", SCHEMATIC_FILE_DEFAULT);
options.put("worlds." + world + ".flags.default", DEFAULT_FLAGS_DEFAULT);
-
+ options.put("worlds." + world + ".schematic.schematics", plotworld.SCHEMATICS);
+ options.put("worlds." + world + ".schematic.specify_on_claim", plotworld.SCHEMATIC_CLAIM_SPECIFY);
for (Entry node : options.entrySet()) {
if (!config.contains(node.getKey())) {
config.set(node.getKey(), node.getValue());
@@ -116,6 +117,8 @@ public class WorldGenerator extends ChunkGenerator {
this.plotworld.PLOT_CHAT = config.getBoolean("worlds." + world + ".plot_chat");
this.plotworld.SCHEMATIC_ON_CLAIM = config.getBoolean("worlds." + world + ".schematic.on_claim");
this.plotworld.SCHEMATIC_FILE = config.getString("worlds." + world + ".schematic.file");
+ this.plotworld.SCHEMATIC_CLAIM_SPECIFY = config.getBoolean("worlds." + world + ".schematic.specify_on_claim");
+ this.plotworld.SCHEMATICS = config.getStringList("worlds." + world + ".schematic.schematics");
String[] default_flags_string = config.getStringList("worlds." + world + ".flags.default").toArray(new String[0]);
Flag[] default_flags = new Flag[default_flags_string.length];
diff --git a/PlotSquared/src/com/intellectualcrafters/plot/commands/Claim.java b/PlotSquared/src/com/intellectualcrafters/plot/commands/Claim.java
index 259f0cf14..54d209f7a 100644
--- a/PlotSquared/src/com/intellectualcrafters/plot/commands/Claim.java
+++ b/PlotSquared/src/com/intellectualcrafters/plot/commands/Claim.java
@@ -52,13 +52,16 @@ public class Claim extends SubCommand {
return false;
}
if(!schematic.equals("")) {
- if(!plr.hasPermission("plots.claim." + schematic) && !plr.hasPermission("plots.admin")) {
- PlayerFunctions.sendMessage(plr, C.NO_SCHEMATIC_PERMISSION, schematic);
- return true;
- }
- if(new SchematicHandler().getSchematic(schematic) == null) {
- sendMessage(plr, C.SCHEMATIC_INVALID, "non-existent");
- return true;
+ PlotWorld world = PlotMain.getWorldSettings(plot.getWorld());
+ if(world.SCHEMATIC_CLAIM_SPECIFY) {
+ if(!world.SCHEMATICS.contains(schematic.toLowerCase())) {
+ sendMessage(plr, C.SCHEMATIC_INVALID, "non-existent");
+ return true;
+ }
+ if(!plr.hasPermission("plots.claim." + schematic) && !plr.hasPermission("plots.admin")) {
+ PlayerFunctions.sendMessage(plr, C.NO_SCHEMATIC_PERMISSION, schematic);
+ return true;
+ }
}
}
boolean result = claimPlot(plr, plot, false, schematic);