diff --git a/src/main/java/world/bentobox/bentobox/api/commands/admin/blueprints/AdminBlueprintSaveCommand.java b/src/main/java/world/bentobox/bentobox/api/commands/admin/blueprints/AdminBlueprintSaveCommand.java index 7acc25965..316aa2d48 100644 --- a/src/main/java/world/bentobox/bentobox/api/commands/admin/blueprints/AdminBlueprintSaveCommand.java +++ b/src/main/java/world/bentobox/bentobox/api/commands/admin/blueprints/AdminBlueprintSaveCommand.java @@ -37,18 +37,20 @@ public class AdminBlueprintSaveCommand extends ConfirmableCommand { File newFile = new File(parent.getBlueprintsFolder(), args.get(0) + BlueprintsManager.BLUEPRINT_SUFFIX); if (newFile.exists()) { this.askConfirmation(user, user.getTranslation("commands.admin.blueprint.file-exists"), () -> { - parent.hideClipboard(user); - new BlueprintClipboardManager(getPlugin(), parent.getBlueprintsFolder(), clipboard).save(user, args.get(0)); - getPlugin().getBlueprintsManager().addBlueprint((GameModeAddon)getAddon(), clipboard.getBlueprint()); + hideAndSave(user, parent, clipboard, args.get(0)); }); return false; - } else { - parent.hideClipboard(user); - return new BlueprintClipboardManager(getPlugin(), parent.getBlueprintsFolder(), clipboard).save(user, args.get(0)); } + return hideAndSave(user, parent, clipboard, args.get(0)); } else { user.sendMessage("commands.admin.blueprint.copy-first"); return false; } } + + private boolean hideAndSave(User user, AdminBlueprintCommand parent, BlueprintClipboard clipboard, String string) { + parent.hideClipboard(user); + getPlugin().getBlueprintsManager().addBlueprint((GameModeAddon)getAddon(), clipboard.getBlueprint()); + return new BlueprintClipboardManager(getPlugin(), parent.getBlueprintsFolder(), clipboard).save(user, string); + } } diff --git a/src/main/java/world/bentobox/bentobox/blueprints/BlueprintClipboard.java b/src/main/java/world/bentobox/bentobox/blueprints/BlueprintClipboard.java index 4a4bc6de0..eab035094 100644 --- a/src/main/java/world/bentobox/bentobox/blueprints/BlueprintClipboard.java +++ b/src/main/java/world/bentobox/bentobox/blueprints/BlueprintClipboard.java @@ -245,7 +245,14 @@ public class BlueprintClipboard { } if (block.getType().equals(Material.BEDROCK)) { - blueprint.setBedrock(pos); + // Find highest bedrock + if(blueprint.getBedrock() == null) { + blueprint.setBedrock(pos); + } else { + if (pos.getBlockY() > blueprint.getBedrock().getBlockY()) { + blueprint.setBedrock(pos); + } + } } // Chests diff --git a/src/main/java/world/bentobox/bentobox/blueprints/BlueprintPaster.java b/src/main/java/world/bentobox/bentobox/blueprints/BlueprintPaster.java index 130ead97f..27b4737ee 100644 --- a/src/main/java/world/bentobox/bentobox/blueprints/BlueprintPaster.java +++ b/src/main/java/world/bentobox/bentobox/blueprints/BlueprintPaster.java @@ -337,13 +337,12 @@ public class BlueprintPaster { // Sign text must be stored under the addon's name.sign.line0,1,2,3 in the yaml file if (island != null && !lines.isEmpty() && lines.get(0).equalsIgnoreCase(TextVariables.START_TEXT)) { // Get the addon that is operating in this world - plugin.getIWM().getAddon(island.getWorld()).ifPresent(addon -> { - lines.clear(); - for (int i = 0; i < 4; i++) { - lines.add(ChatColor.translateAlternateColorCodes('&', plugin.getLocalesManager().getOrDefault(User.getInstance(island.getOwner()), - addon.getDescription().getName().toLowerCase() + ".sign.line" + i,""))); - } - }); + String addonName = plugin.getIWM().getAddon(island.getWorld()).map(addon -> addon.getDescription().getName().toLowerCase()).orElse(""); + lines.clear(); + for (int i = 0; i < 4; i++) { + lines.add(ChatColor.translateAlternateColorCodes('&', plugin.getLocalesManager().getOrDefault(User.getInstance(island.getOwner()), + addonName + ".sign.line" + i,""))); + } } // Get the name of the player String name = TextVariables.NAME;