diff --git a/BauSystem_Main/src/BauSystem.properties b/BauSystem_Main/src/BauSystem.properties index 19b53de7..903ebb5a 100644 --- a/BauSystem_Main/src/BauSystem.properties +++ b/BauSystem_Main/src/BauSystem.properties @@ -918,6 +918,7 @@ MATERIAL_SEARCH_INTERACTEABLE=§eInteractable MATERIAL_SEARCH_FLAMMABLE=§eFlammable MATERIAL_SEARCH_BURNABLE=§eBurnable MATERIAL_SEARCH_WATERLOGGABLE=§eWaterloggable +MATERIAL_SEARCH_UNMOVEABLE=§eUnmoveable MATERIAL_SEARCH_BLASTRESISTANCE=§eBlast resistance MATERIAL_SEARCH_VALUE=§8: §e{0} MATERIAL_BLAST_RESISTANCE=§8- §eBlast resistance§8: §7{0} @@ -932,6 +933,7 @@ MATERIAL_INTERACTABLE=§8- §eInteractable block MATERIAL_FLAMMABLE=§8- §eFlammable block MATERIAL_BURNABLE=§8- §eBurnable block MATERIAL_WATERLOGGABLE=§8- §eWaterloggable block +MATERIAL_UNMOVABLE=§8- §eUnmovable block # Redstonetester RT_HELP=§8/§eredstonetester §8-§7 Gives you the redstone tester RT_GIVEN=§7Measure the time between activation of components diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/util/MaterialCommand.java b/BauSystem_Main/src/de/steamwar/bausystem/features/util/MaterialCommand.java index 3fe740fe..dd221bae 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/util/MaterialCommand.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/util/MaterialCommand.java @@ -63,6 +63,7 @@ public class MaterialCommand extends SWCommand implements Listener { SearchType flammable = SearchType.IGNORE; SearchType burnable = SearchType.IGNORE; SearchType waterloggable = SearchType.IGNORE; + SearchType unmoveable = SearchType.IGNORE; String blastResistance = ">=0"; String name = ""; @@ -110,6 +111,7 @@ public class MaterialCommand extends SWCommand implements Listener { elements.put("-flammable", (search, searchType) -> search.flammable = searchType); elements.put("-burnable", (search, searchType) -> search.burnable = searchType); elements.put("-waterloggable", (search, searchType) -> search.waterloggable = searchType); + elements.put("-unmoveable", (search, searchType) -> search.unmoveable = searchType); } @Register @@ -235,7 +237,11 @@ public class MaterialCommand extends SWCommand implements Listener { search.waterloggable = search.waterloggable.next(); searchGUI(p); })); - swInventory.setItem(30, new SWItem(Material.NETHER_BRICK, BauSystem.MESSAGE.parse("MATERIAL_SEARCH_BLASTRESISTANCE", p) + BauSystem.MESSAGE.parse("MATERIAL_SEARCH_VALUE", p, search.blastResistance), clickType -> { + swInventory.setItem(29, new SWItem(Material.PISTON, BauSystem.MESSAGE.parse("MATERIAL_SEARCH_UNMOVEABLE", p) + BauSystem.MESSAGE.parse("MATERIAL_SEARCH_VALUE", p, BauSystem.MESSAGE.parse(search.unmoveable.getChatValue(), p)), clickType -> { + search.unmoveable = search.unmoveable.next(); + searchGUI(p); + })); + swInventory.setItem(34, new SWItem(Material.NETHER_BRICK, BauSystem.MESSAGE.parse("MATERIAL_SEARCH_BLASTRESISTANCE", p) + BauSystem.MESSAGE.parse("MATERIAL_SEARCH_VALUE", p, search.blastResistance), clickType -> { SWAnvilInv swAnvilInv = new SWAnvilInv(p, BauSystem.MESSAGE.parse("MATERIAL_SEARCH_BLASTRESISTANCE", p), search.blastResistance); swAnvilInv.setCallback(s -> { if (s.isEmpty() || s.matches("((([><]=?)|!|=)\\d+(\\.|,\\d+)?)( ((([><]=?)|!|=)\\d+(\\.|,\\d+)?))*")) { diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/util/MaterialLazyInit.java b/BauSystem_Main/src/de/steamwar/bausystem/features/util/MaterialLazyInit.java index 05732896..8beb38b1 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/util/MaterialLazyInit.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/util/MaterialLazyInit.java @@ -22,7 +22,11 @@ package de.steamwar.bausystem.features.util; import de.steamwar.bausystem.BauSystem; import de.steamwar.inventory.SWItem; import de.steamwar.inventory.SWListInv; +import org.bukkit.Bukkit; import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.block.PistonMoveReaction; +import org.bukkit.block.TileState; import org.bukkit.block.data.BlockData; import org.bukkit.block.data.Waterlogged; import org.bukkit.entity.Player; @@ -62,6 +66,7 @@ public class MaterialLazyInit { private boolean flammable; private boolean burnable; private boolean waterloggable; + private boolean unmoveable; public MaterialData(Material material) { this.originalMaterial = material; @@ -78,6 +83,11 @@ public class MaterialLazyInit { burnable = material.isBurnable(); BlockData blockData = material.createBlockData(); waterloggable = blockData instanceof Waterlogged; + if (material.isBlock()) { + Block block = Bukkit.getWorlds().get(0).getBlockAt(0, 0, 0); + block.setType(material); + unmoveable = block.getPistonMoveReaction() == PistonMoveReaction.BLOCK || block.getPistonMoveReaction() == PistonMoveReaction.IGNORE || block.getState() instanceof TileState; + } if (material.isItem() && material != Material.AIR) { this.material = material; @@ -115,6 +125,9 @@ public class MaterialLazyInit { if (waterloggable) { lore.add(BauSystem.MESSAGE.parse("MATERIAL_WATERLOGGABLE", p)); } + if (unmoveable) { + lore.add(BauSystem.MESSAGE.parse("MATERIAL_UNMOVABLE", p)); + } return new SWListInv.SWListEntry<>(new SWItem(material, "§e" + name, lore, false, clickType -> { }), originalMaterial); } @@ -129,6 +142,7 @@ public class MaterialLazyInit { result &= search.flammable.test(flammable); result &= search.burnable.test(burnable); result &= search.waterloggable.test(waterloggable); + result &= search.unmoveable.test(unmoveable); if (!result) { return false; }