diff --git a/src/main/java/fr/weefle/constructor/hooks/citizens/BuilderTrait.java b/src/main/java/fr/weefle/constructor/hooks/citizens/BuilderTrait.java index 2526d5b..f0b941d 100644 --- a/src/main/java/fr/weefle/constructor/hooks/citizens/BuilderTrait.java +++ b/src/main/java/fr/weefle/constructor/hooks/citizens/BuilderTrait.java @@ -52,6 +52,8 @@ public class BuilderTrait extends Trait implements Toggleable { boolean excavate = false; @Persist("Silent") boolean silent = false; + @Persist("LoadEntities") + boolean loadEntities = false; @Persist("State") BuilderState state = BuilderState.IDLE; @Persist("PatternXY") @@ -127,6 +129,10 @@ public class BuilderTrait extends Trait implements Toggleable { public void setSilent(boolean silent) {this.silent = silent;} + public boolean isLoadEntities() {return loadEntities;} + + public void setLoadEntities(boolean loadEntities) {this.loadEntities = loadEntities;} + @NotNull public BuilderState getState() {return state;} @@ -351,7 +357,7 @@ private boolean StartBuild(CommandSender player) { else {start = npc.getEntity().getLocation().clone();} queue = schematic.buildQueue(this); - entityQueue = schematic.getEntities(); + if (loadEntities) entityQueue = schematic.getEntities(); startingcount = queue.size(); continueLoc = start.clone(); diff --git a/src/main/java/fr/weefle/constructor/menus/BuilderMenu.java b/src/main/java/fr/weefle/constructor/menus/BuilderMenu.java index f2cc300..dda4b0d 100644 --- a/src/main/java/fr/weefle/constructor/menus/BuilderMenu.java +++ b/src/main/java/fr/weefle/constructor/menus/BuilderMenu.java @@ -597,6 +597,17 @@ public void onLeftClick() { } }; } + case "load-entities": { + ItemStack itemStack = this.getItem(function); + ItemUT.replaceLore(itemStack, "%current%", String.valueOf(builder.isLoadEntities())); + return new Slot(itemStack) { + @Override + public void onLeftClick() { + builder.setLoadEntities(!builder.isLoadEntities()); + this.menu.open(); + } + }; + } } return null; } diff --git a/src/main/java/fr/weefle/constructor/schematic/RawSchematic.java b/src/main/java/fr/weefle/constructor/schematic/RawSchematic.java index 4457867..4486a96 100644 --- a/src/main/java/fr/weefle/constructor/schematic/RawSchematic.java +++ b/src/main/java/fr/weefle/constructor/schematic/RawSchematic.java @@ -26,10 +26,10 @@ public class RawSchematic extends Schematic { private int width, height, length; - private Vector absolutePosition; - private EmptyBuildBlock[][][] blocks; - private Map materials; - private final List entities = new ArrayList<>(); + private Vector absolutePosition; + private EmptyBuildBlock[][][] blocks; + private Map materials; + private List entities; public RawSchematic(Path path) { super(path); @@ -57,7 +57,7 @@ public EmptyBuildBlock getBlockAt(int x, int y, int z) { return block == null ? new EmptyBuildBlock(x, y, z) : block; } - private void load(boolean full) { // TODO load entities + private void load(boolean full) { File file = new File(getPath()); if (getPath().endsWith(".schem")) { Object data; @@ -142,12 +142,11 @@ private void load(boolean full) { // TODO load entities index++; } + this.entities = new ArrayList<>(); for (Object object : NMS.getInstance().getNMSProvider().nbtTagCompound_getList(data, "Entities", 10)) { try { this.entities.add(new SchematicEntity(object, absolutePosition)); - } catch (Exception e) { - e.printStackTrace(); - } + } catch (Exception ignored) {} } } else { CompoundTag data; diff --git a/src/main/resources/menus/builder-settings-admin.yml b/src/main/resources/menus/builder-settings-admin.yml index 39856fc..9581c1f 100644 --- a/src/main/resources/menus/builder-settings-admin.yml +++ b/src/main/resources/menus/builder-settings-admin.yml @@ -135,6 +135,13 @@ items: material: "barrel" amount: 1 custom-model-data: 0 + load-entities: + display-name: "&aLoad Entities" + lore: + - "&9Current: &b%current%" + material: "sheep_spawn_egg" + amount: 1 + custom-model-data: 0 slots: 0: "silent" 1: "hold-item" @@ -147,4 +154,4 @@ slots: 10: "ignore-liquid" 11: "needs-materials" 12: "citizens" - + 13: "load-entities"