From b8f61658f4203f05021b5334d981912aadf30790 Mon Sep 17 00:00:00 2001 From: YoyoNow Date: Sat, 31 Oct 2026 10:12:52 +0100 Subject: [PATCH] Cleanup Laufbau --- .../src/de/steamwar/bausystem/BauSystem.java | 8 +- .../slaves/laufbau/BlockBoundingBox.java | 328 +++++------------ .../slaves/laufbau/BoundingBoxLoader.java | 25 -- .../features/slaves/laufbau/Cuboid.java | 10 + .../features/slaves/laufbau/Laufbau.java | 41 +-- .../slaves/laufbau/LaufbauConfig.java | 13 +- .../slaves/laufbau/LaufbauConfigV1.java | 65 ---- .../slaves/laufbau/LaufbauSettings.java | 110 ++---- .../features/slaves/laufbau/LaufbauUtils.java | 99 ----- .../boundingboxes/AmethystBoundingBox.java | 261 ------------- .../boundingboxes/AzaleaBoundingBox.java | 46 --- .../boundingboxes/BellBoundingBox.java | 149 -------- .../BrewingStandBoundingBox.java | 46 --- .../boundingboxes/CandleBoundingBox.java | 62 ---- .../boundingboxes/ChainBoundingBox.java | 69 ---- .../boundingboxes/ChorusPlantBoundingBox.java | 89 ----- .../boundingboxes/DragonEggBoundingBox.java | 45 --- .../boundingboxes/DripLeafBoundingBox.java | 59 --- .../boundingboxes/FencesBoundingBox.java | 75 ---- .../boundingboxes/GrindstoneBoundingBox.java | 157 -------- .../boundingboxes/HopperBoundingBox.java | 97 ----- .../boundingboxes/IronBarBoundingBox.java | 75 ---- .../boundingboxes/LanternBoundingBox.java | 61 ---- .../boundingboxes/LecternBoundingBox.java | 46 --- .../boundingboxes/StairBoundingBox.java | 343 ------------------ .../boundingboxes/WallBoundingBox.java | 79 ---- .../LaufbauConfigV1ToV2Converter.java | 40 -- .../laufbau/states/CreatingLaufState.java | 1 - 28 files changed, 143 insertions(+), 2356 deletions(-) delete mode 100644 BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/BoundingBoxLoader.java delete mode 100644 BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/LaufbauConfigV1.java delete mode 100644 BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/LaufbauUtils.java delete mode 100644 BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/AmethystBoundingBox.java delete mode 100644 BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/AzaleaBoundingBox.java delete mode 100644 BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/BellBoundingBox.java delete mode 100644 BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/BrewingStandBoundingBox.java delete mode 100644 BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/CandleBoundingBox.java delete mode 100644 BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/ChainBoundingBox.java delete mode 100644 BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/ChorusPlantBoundingBox.java delete mode 100644 BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/DragonEggBoundingBox.java delete mode 100644 BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/DripLeafBoundingBox.java delete mode 100644 BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/FencesBoundingBox.java delete mode 100644 BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/GrindstoneBoundingBox.java delete mode 100644 BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/HopperBoundingBox.java delete mode 100644 BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/IronBarBoundingBox.java delete mode 100644 BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/LanternBoundingBox.java delete mode 100644 BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/LecternBoundingBox.java delete mode 100644 BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/StairBoundingBox.java delete mode 100644 BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/WallBoundingBox.java delete mode 100644 BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/converter/LaufbauConfigV1ToV2Converter.java diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/BauSystem.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/BauSystem.java index 041e4d83..c524c4d0 100644 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/BauSystem.java +++ b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/BauSystem.java @@ -24,7 +24,6 @@ import de.steamwar.bausystem.config.ConfigStore; import de.steamwar.bausystem.features.gui.BauGUI; import de.steamwar.bausystem.features.script.lua.SteamWarLuaPlugin; import de.steamwar.bausystem.features.script.lua.libs.LuaLib; -import de.steamwar.bausystem.features.slaves.laufbau.BoundingBoxLoader; import de.steamwar.bausystem.features.slaves.panzern.Panzern; import de.steamwar.bausystem.features.slaves.panzern.PanzernAlgorithm; import de.steamwar.bausystem.features.tracer.TraceManager; @@ -41,7 +40,6 @@ import de.steamwar.core.CRIUSleepEvent; import de.steamwar.core.Core; import de.steamwar.core.WorldIdentifier; import de.steamwar.core.worldedit.SteamEdit; -import de.steamwar.core.worldedit.WorldEditRendererCUIEditor; import de.steamwar.linkage.AbstractLinker; import de.steamwar.linkage.SpigotLinker; import de.steamwar.message.Message; @@ -110,9 +108,9 @@ public class BauSystem extends JavaPlugin implements Listener { if (any instanceof PanzernAlgorithm) { Panzern.add((PanzernAlgorithm) any); } - if (any instanceof BoundingBoxLoader) { - ((BoundingBoxLoader) any).load(); - } + // if (any instanceof BoundingBoxLoader) { + // ((BoundingBoxLoader) any).load(); + // } } }; try { diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/BlockBoundingBox.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/BlockBoundingBox.java index 0df055af..a9d1cbc4 100644 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/BlockBoundingBox.java +++ b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/BlockBoundingBox.java @@ -19,48 +19,97 @@ package de.steamwar.bausystem.features.slaves.laufbau; -import com.sk89q.worldedit.blocks.SkullBlock; -import com.sk89q.worldedit.world.block.BaseBlock; -import de.steamwar.inventory.SWItem; +import de.steamwar.bausystem.BauSystem; +import de.steamwar.linkage.Linked; +import de.steamwar.linkage.api.Enable; import lombok.Getter; import lombok.ToString; +import net.minecraft.core.BlockPos; +import net.minecraft.locale.Language; +import net.minecraft.world.level.EmptyBlockGetter; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.phys.shapes.CollisionContext; import org.bukkit.Material; -import org.bukkit.block.BlockFace; -import org.bukkit.block.data.Bisected; +import org.bukkit.Registry; import org.bukkit.block.data.BlockData; -import org.bukkit.block.data.Directional; import org.bukkit.block.data.Waterlogged; -import org.bukkit.block.data.type.*; +import org.bukkit.block.data.type.Bed; +import org.bukkit.block.data.type.Door; +import org.bukkit.craftbukkit.block.CraftBlockType; +import org.bukkit.craftbukkit.block.data.CraftBlockData; +import org.bukkit.craftbukkit.util.CraftVoxelShape; +import org.bukkit.util.BoundingBox; +import org.bukkit.util.VoxelShape; import java.util.ArrayList; -import java.util.Arrays; +import java.util.Collection; +import java.util.Comparator; import java.util.List; -import java.util.Random; -import java.util.function.Consumer; - -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.createItem; -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.pixelCuboid; +import java.util.stream.Collectors; @ToString @Getter public class BlockBoundingBox { - private static List randomPlayerHead = new ArrayList<>(); - private static Random random = new Random(); + @Linked + public static class Loader implements Enable { - static { - randomPlayerHead.add("zOnlyKroks"); - randomPlayerHead.add("YoyoNow"); - randomPlayerHead.add("Konstruktix"); - randomPlayerHead.add("Merling03"); - randomPlayerHead.add("Lord_Loading"); - /* - randomPlayerHead.add(UUID.fromString("1623d4b1-b21c-41d3-93c2-eee2845b8497")); - randomPlayerHead.add(UUID.fromString("f75632be-e3ec-4069-9bec-d13ac6891177")); - randomPlayerHead.add(UUID.fromString("80382970-424b-4299-9296-d956beab9e7b")); - randomPlayerHead.add(UUID.fromString("f395ce89-096d-48e9-b796-a2d88722c22b")); - randomPlayerHead.add(UUID.fromString("db516394-d999-4b77-8d13-73cceec77dfe")); - */ + @Override + public void enable() { + long time = System.currentTimeMillis(); + Registry.BLOCK.forEach(blockType -> { + Block block = CraftBlockType.bukkitToMinecraftNew(blockType); + Material material = blockType.asMaterial(); + if (!material.isItem()) return; + if (!material.isBlock()) return; + if (material == Material.WATER) return; + if (material.getBlastResistance() <= 0.0) return; + if (material.getBlastResistance() > 9.0) return; + + block.getStateDefinition().getPossibleStates().forEach(blockState -> { + VoxelShape voxelShape = new CraftVoxelShape(blockState.getCollisionShape(EmptyBlockGetter.INSTANCE, BlockPos.ZERO, CollisionContext.empty())); + Collection boundingBoxes = voxelShape.getBoundingBoxes(); + if (boundingBoxes.isEmpty()) return; + + double minX = Double.MAX_VALUE; + double minY = Double.MAX_VALUE; + double minZ = Double.MAX_VALUE; + double maxX = Double.MIN_VALUE; + double maxY = Double.MIN_VALUE; + double maxZ = Double.MIN_VALUE; + for (BoundingBox boundingBox : boundingBoxes) { + minX = Math.min(minX, boundingBox.getMinX()); + minY = Math.min(minY, boundingBox.getMinY()); + minZ = Math.min(minZ, boundingBox.getMinZ()); + + maxX = Math.max(maxX, boundingBox.getMaxX()); + maxY = Math.max(maxY, boundingBox.getMaxY()); + maxZ = Math.max(maxZ, boundingBox.getMaxZ()); + } + + // Ignore Full Blocks + if (maxX - minX == 1 && maxY - minY == 1 && maxZ - minZ == 1) return; + + BlockData blockData = CraftBlockData.createData(blockState); + if (blockData instanceof Door) return; // Doors dont seem to be 2 blocks tall? + if (blockData instanceof Bed) return; // Beds dont seem to be 2 blocks tall? + if (blockData instanceof Waterlogged waterlogged && waterlogged.isWaterlogged()) return; + + String key = material.isItem() + ? material.getItemTranslationKey() // "item.minecraft.diamond" / "block.minecraft.stone" + : material.getBlockTranslationKey(); // for block-only materials like WATER + + new BlockBoundingBox( + blockData, + boundingBoxes.stream().map(Cuboid::new).collect(Collectors.toList()), + material, + "§f" + Language.getInstance().getOrDefault(key) + ); + }); + }); + BauSystem.getInstance().getLogger().info("Laufbau init > " + (System.currentTimeMillis() - time) + "ms " + elements.size() + " blocks"); + elements.sort(Comparator.comparingDouble(value -> value.material.getBlastResistance()).thenComparing(value -> value.name)); + } } public static List elements = new ArrayList<>(); @@ -68,221 +117,32 @@ public class BlockBoundingBox { public BlockData blockData; public List cuboidList; private double volume; - public SWItem swItem; + public Material material; + public String name; - public Consumer blockConsumer = null; - - public BlockBoundingBox(BlockData blockData, List cuboidList, SWItem swItem) { + public BlockBoundingBox(BlockData blockData, List cuboidList, Material material, String name) { this.blockData = blockData; this.cuboidList = cuboidList; - this.swItem = swItem; + this.material = material; + this.name = name; volume = cuboidList.stream().mapToDouble(Cuboid::volume).sum(); - elements.add(this); - } - public BlockBoundingBox(BlockData blockData, List cuboidList, SWItem swItem, Consumer blockConsumer) { - this.blockData = blockData; - this.cuboidList = cuboidList; - this.swItem = swItem; - volume = cuboidList.stream().mapToDouble(Cuboid::volume).sum(); + // Override/Ignore items with worse/better blast resistance + for (int i = 0; i < elements.size(); i++) { + BlockBoundingBox other = elements.get(i); + if (other.cuboidList.equals(cuboidList)) { + if (other.material.getBlastResistance() < material.getBlastResistance()) { + elements.remove(i); + break; + } else { + return; + } + } + } elements.add(this); - this.blockConsumer = blockConsumer; } public double volume() { return volume; } - - static { - addPixel(Material.AIR.createBlockData(), 0, 0, 0, 0, 0, 0, null); - // addPixel(Material.COBWEB.createBlockData(), 0, 0, 0, 0, 0, 0, createItem("LAUFBAU_BLOCK_COBWEB", Material.COBWEB)); - addPixel(Material.END_STONE.createBlockData(), 0, 0, 0, 16, 16, 16, null); - - addPixel(Material.DIRT_PATH.createBlockData(), 0, 0, 0, 16, 15, 16, createItem("LAUFBAU_BLOCK_GRASS_PATH", Material.DIRT_PATH)); - addPixel(Material.MUD.createBlockData(), 0, 0, 0, 16, 14, 16, createItem("LAUFBAU_BLOCK_SOUL_SAND", Material.SOUL_SAND)); - - Cocoa cocoaNorth = (Cocoa) Material.COCOA.createBlockData(); - cocoaNorth.setAge(2); - cocoaNorth.setFacing(BlockFace.NORTH); - addPixel(cocoaNorth, 4, 3, 1, 8, 9, 8, createItem("LAUFBAU_BLOCK_COCOA", Material.COCOA_BEANS, "LAUFBAU_FACING_NORTH")); - - Cocoa cocoaSouth = (Cocoa) Material.COCOA.createBlockData(); - cocoaSouth.setAge(2); - cocoaSouth.setFacing(BlockFace.SOUTH); - addPixel(cocoaSouth, 4, 3, 7, 8, 9, 8, createItem("LAUFBAU_BLOCK_COCOA", Material.COCOA_BEANS, "LAUFBAU_FACING_SOUTH")); - - Cocoa cocoaWest = (Cocoa) Material.COCOA.createBlockData(); - cocoaWest.setAge(2); - cocoaWest.setFacing(BlockFace.WEST); - addPixel(cocoaWest, 1, 3, 4, 8, 9, 8, createItem("LAUFBAU_BLOCK_COCOA", Material.COCOA_BEANS, "LAUFBAU_FACING_WEST")); - - Cocoa cocoaEast = (Cocoa) Material.COCOA.createBlockData(); - cocoaEast.setAge(2); - cocoaEast.setFacing(BlockFace.EAST); - addPixel(cocoaEast, 7, 3, 4, 8, 9, 8, createItem("LAUFBAU_BLOCK_COCOA", Material.COCOA_BEANS, "LAUFBAU_FACING_EAST")); - - TurtleEgg singleTurtleEgg = (TurtleEgg) Material.TURTLE_EGG.createBlockData(); - singleTurtleEgg.setEggs(1); - singleTurtleEgg.setHatch(0); - addPixel(singleTurtleEgg, 4, 0, 3, 9, 7, 9, createItem("LAUFBAU_BLOCK_TURTLE_EGG", Material.TURTLE_EGG, "LAUFBAU_COUNT_1")); - - TurtleEgg doubleTurtleEgg = (TurtleEgg) Material.TURTLE_EGG.createBlockData(); - doubleTurtleEgg.setEggs(2); - doubleTurtleEgg.setHatch(0); - addPixel(doubleTurtleEgg, 1, 0, 1, 14, 7, 14, createItem("LAUFBAU_BLOCK_TURTLE_EGG", Material.TURTLE_EGG, "LAUFBAU_COUNT_2")); - - addPixel(Material.CHEST.createBlockData(), 1, 0, 1, 14, 14, 14, createItem("LAUFBAU_BLOCK_CHEST", Material.CHEST)); - - Snow snowLayers8 = (Snow) Material.SNOW.createBlockData(); - snowLayers8.setLayers(8); - addPixel(snowLayers8, 0, 0, 0, 16, 14, 16, createItem("LAUFBAU_BLOCK_SNOW", Material.SNOW, "LAUFBAU_LAYERS_8")); - - Directional headNorth = (Directional) Material.PLAYER_WALL_HEAD.createBlockData(); - headNorth.setFacing(BlockFace.NORTH); - addPixel(headNorth, 4, 4, 8, 8, 8, 8, createItem("LAUFBAU_BLOCK_PLAYER_WALL_HEAD", Material.PLAYER_HEAD, "LAUFBAU_FACING_NORTH"), BlockBoundingBox::randomPlayerHead); - - Directional headSouth = (Directional) Material.PLAYER_WALL_HEAD.createBlockData(); - headSouth.setFacing(BlockFace.SOUTH); - addPixel(headSouth, 4, 4, 0, 8, 8, 8, createItem("LAUFBAU_BLOCK_PLAYER_WALL_HEAD", Material.PLAYER_HEAD, "LAUFBAU_FACING_SOUTH"), BlockBoundingBox::randomPlayerHead); - - Directional headWest = (Directional) Material.PLAYER_WALL_HEAD.createBlockData(); - headWest.setFacing(BlockFace.WEST); - addPixel(headWest, 8, 4, 4, 8, 8, 8, createItem("LAUFBAU_BLOCK_PLAYER_WALL_HEAD", Material.PLAYER_HEAD, "LAUFBAU_FACING_WEST"), BlockBoundingBox::randomPlayerHead); - - Directional headEast = (Directional) Material.PLAYER_WALL_HEAD.createBlockData(); - headEast.setFacing(BlockFace.EAST); - addPixel(headEast, 0, 4, 4, 8, 8, 8, createItem("LAUFBAU_BLOCK_PLAYER_WALL_HEAD", Material.PLAYER_HEAD, "LAUFBAU_FACING_EAST"), BlockBoundingBox::randomPlayerHead); - - Snow snowLayers7 = (Snow) Material.SNOW.createBlockData(); - snowLayers7.setLayers(7); - addPixel(snowLayers7, 0, 0, 0, 16, 12, 16, createItem("LAUFBAU_BLOCK_SNOW", Material.SNOW, "LAUFBAU_LAYERS_7")); - - Snow snowLayers6 = (Snow) Material.SNOW.createBlockData(); - snowLayers6.setLayers(6); - addPixel(snowLayers6, 0, 0, 0, 16, 10, 16, createItem("LAUFBAU_BLOCK_SNOW", Material.SNOW, "LAUFBAU_LAYERS_6")); - - addPixel(Material.STONECUTTER.createBlockData(), 0, 0, 0, 16, 9, 16, createItem("LAUFBAU_BLOCK_STONECUTTER", Material.STONECUTTER)); - - addPixel(Material.PLAYER_HEAD.createBlockData(), 4, 0, 4, 8, 8, 8, createItem("LAUFBAU_BLOCK_PLAYER_HEAD", Material.PLAYER_HEAD), BlockBoundingBox::randomPlayerHead); - - addPixel(Material.CAKE.createBlockData(), 1, 0, 1, 14, 8, 14, createItem("LAUFBAU_BLOCK_CAKE", Material.CAKE)); - - Slab bottomSlab = (Slab) Material.END_STONE_BRICK_SLAB.createBlockData(); - bottomSlab.setType(Slab.Type.BOTTOM); - addPixel(bottomSlab, 0, 0, 0, 16, 8, 16, createItem("LAUFBAU_BLOCK_END_STONE_BRICK_SLAB", Material.END_STONE_BRICK_SLAB, "LAUFBAU_TYPE_BOTTOM")); - - Slab topSlab = (Slab) Material.END_STONE_BRICK_SLAB.createBlockData(); - topSlab.setType(Slab.Type.TOP); - addPixel(topSlab, 0, 8, 0, 16, 8, 16, createItem("LAUFBAU_BLOCK_END_STONE_BRICK_SLAB", Material.END_STONE_BRICK_SLAB, "LAUFBAU_TYPE_TOP")); - - SeaPickle quadSeaPickle = (SeaPickle) Material.SEA_PICKLE.createBlockData(); - quadSeaPickle.setWaterlogged(false); - quadSeaPickle.setPickles(4); - addPixel(quadSeaPickle, 2, 0, 2, 12, 7, 12, createItem("LAUFBAU_BLOCK_SEA_PICKLE", Material.SEA_PICKLE, "LAUFBAU_COUNT_4")); - - Campfire campfire = (Campfire) Material.CAMPFIRE.createBlockData(); - campfire.setSignalFire(false); - campfire.setLit(false); - addPixel(campfire, 0, 0, 0, 16, 7, 16, createItem("LAUFBAU_BLOCK_CAMPFIRE", Material.CAMPFIRE)); - - SeaPickle trippleSeaPickle = (SeaPickle) Material.SEA_PICKLE.createBlockData(); - trippleSeaPickle.setWaterlogged(false); - trippleSeaPickle.setPickles(3); - addPixel(trippleSeaPickle, 2, 0, 2, 12, 6, 12, createItem("LAUFBAU_BLOCK_SEA_PICKLE", Material.SEA_PICKLE, "LAUFBAU_COUNT_3")); - - SeaPickle doubleSeaPickle = (SeaPickle) Material.SEA_PICKLE.createBlockData(); - doubleSeaPickle.setWaterlogged(false); - doubleSeaPickle.setPickles(2); - addPixel(doubleSeaPickle, 3, 0, 3, 10, 6, 10, createItem("LAUFBAU_BLOCK_SEA_PICKLE", Material.SEA_PICKLE, "LAUFBAU_COUNT_2")); - - SeaPickle singleSeaPickle = (SeaPickle) Material.SEA_PICKLE.createBlockData(); - singleSeaPickle.setWaterlogged(false); - singleSeaPickle.setPickles(1); - addPixel(singleSeaPickle, 6, 0, 6, 4, 6, 4, createItem("LAUFBAU_BLOCK_SEA_PICKLE", Material.SEA_PICKLE, "LAUFBAU_COUNT_1")); - - addPixel(Material.FLOWER_POT.createBlockData(), 5, 0, 5, 6, 6, 6, createItem("LAUFBAU_BLOCK_FLOWER_POT", Material.FLOWER_POT)); - - Snow snowLayers3 = (Snow) Material.SNOW.createBlockData(); - snowLayers3.setLayers(3); - addPixel(snowLayers3, 0, 0, 0, 16, 4, 16, createItem("LAUFBAU_BLOCK_SNOW", Material.SNOW, "LAUFBAU_LAYERS_3")); - - TrapDoor bottomTrapDoor = (TrapDoor) Material.IRON_TRAPDOOR.createBlockData(); - bottomTrapDoor.setHalf(Bisected.Half.BOTTOM); - addPixel(bottomTrapDoor, 0, 0, 0, 16, 3, 16, createItem("LAUFBAU_BLOCK_IRON_TRAPDOOR", Material.IRON_TRAPDOOR, "LAUFBAU_HALF_BOTTOM")); - - TrapDoor topTrapDoor = (TrapDoor) Material.IRON_TRAPDOOR.createBlockData(); - topTrapDoor.setHalf(Bisected.Half.TOP); - addPixel(topTrapDoor, 0, 13, 0, 16, 3, 16, createItem("LAUFBAU_BLOCK_IRON_TRAPDOOR", Material.IRON_TRAPDOOR, "LAUFBAU_HALF_TOP")); - - Snow snowLayers2 = (Snow) Material.SNOW.createBlockData(); - snowLayers2.setLayers(2); - addPixel(snowLayers2, 0, 0, 0, 16, 2, 16, createItem("LAUFBAU_BLOCK_SNOW", Material.SNOW, "LAUFBAU_LAYERS_2")); - - addPixel(Material.LILY_PAD.createBlockData(), 1, 0, 1, 14, 1.5, 14, createItem("LAUFBAU_BLOCK_LILY_PAD", Material.LILY_PAD)); - addPixel(Material.WHITE_CARPET.createBlockData(), 0, 0, 0, 16, 1, 16, createItem("LAUFBAU_BLOCK_WHITE_CARPET", Material.WHITE_CARPET)); - - Directional endRodBottomTop = (Directional) Material.END_ROD.createBlockData(); - endRodBottomTop.setFacing(BlockFace.UP); - addPixel(endRodBottomTop, 6, 0, 6, 4, 16, 4, createItem("LAUFBAU_BLOCK_END_ROD", Material.END_ROD, "LAUFBAU_FACING_UP", "LAUFBAU_FACING_DOWN")); - - Directional endRodNorthSouth = (Directional) Material.END_ROD.createBlockData(); - endRodNorthSouth.setFacing(BlockFace.NORTH); - addPixel(endRodNorthSouth, 6, 6, 0, 4, 4, 16, createItem("LAUFBAU_BLOCK_END_ROD", Material.END_ROD, "LAUFBAU_FACING_NORTH", "LAUFBAU_FACING_SOUTH")); - - Directional endRodEastWest = (Directional) Material.END_ROD.createBlockData(); - endRodEastWest.setFacing(BlockFace.EAST); - addPixel(endRodEastWest, 0, 6, 6, 16, 4, 4, createItem("LAUFBAU_BLOCK_END_ROD", Material.END_ROD, "LAUFBAU_FACING_EAST", "LAUFBAU_FACING_WEST")); - - Directional lightningRodBottomTop = (Directional) Material.LIGHTNING_ROD.createBlockData(); - lightningRodBottomTop.setFacing(BlockFace.UP); - addPixel(lightningRodBottomTop, 6, 0, 6, 4, 16, 4, createItem("LAUFBAU_BLOCK_LIGHTNING_ROD", Material.LIGHTNING_ROD, "LAUFBAU_FACING_UP", "LAUFBAU_FACING_DOWN")); - - Directional lightningRodNorthSouth = (Directional) Material.LIGHTNING_ROD.createBlockData(); - lightningRodNorthSouth.setFacing(BlockFace.NORTH); - addPixel(lightningRodNorthSouth, 6, 6, 0, 4, 4, 16, createItem("LAUFBAU_BLOCK_LIGHTNING_ROD", Material.LIGHTNING_ROD, "LAUFBAU_FACING_NORTH", "LAUFBAU_FACING_SOUTH")); - - Directional lightningRodEastWest = (Directional) Material.LIGHTNING_ROD.createBlockData(); - lightningRodEastWest.setFacing(BlockFace.EAST); - addPixel(lightningRodEastWest, 0, 6, 6, 16, 4, 4, createItem("LAUFBAU_BLOCK_LIGHTNING_ROD", Material.LIGHTNING_ROD, "LAUFBAU_FACING_EAST", "LAUFBAU_FACING_WEST")); - - Waterlogged conduit = (Waterlogged) Material.CONDUIT.createBlockData(); - conduit.setWaterlogged(false); - addPixel(conduit, 5, 5, 5, 6, 6, 6, createItem("LAUFBAU_BLOCK_CONDUIT", Material.CONDUIT)); - - TrapDoor northTrapDoor = (TrapDoor) Material.IRON_TRAPDOOR.createBlockData(); - northTrapDoor.setFacing(BlockFace.NORTH); - northTrapDoor.setOpen(true); - addPixel(northTrapDoor, 0, 0, 13, 16, 16, 3, createItem("LAUFBAU_BLOCK_IRON_TRAPDOOR", Material.IRON_TRAPDOOR, "LAUFBAU_FACING_NORTH", "LAUFBAU_OPEN")); - - TrapDoor southTrapDoor = (TrapDoor) Material.IRON_TRAPDOOR.createBlockData(); - southTrapDoor.setFacing(BlockFace.SOUTH); - southTrapDoor.setOpen(true); - addPixel(southTrapDoor, 0, 0, 0, 16, 16, 3, createItem("LAUFBAU_BLOCK_IRON_TRAPDOOR", Material.IRON_TRAPDOOR, "LAUFBAU_FACING_SOUTH", "LAUFBAU_OPEN")); - - TrapDoor westTrapDoor = (TrapDoor) Material.IRON_TRAPDOOR.createBlockData(); - westTrapDoor.setFacing(BlockFace.WEST); - westTrapDoor.setOpen(true); - addPixel(westTrapDoor, 13, 0, 0, 3, 16, 16, createItem("LAUFBAU_BLOCK_IRON_TRAPDOOR", Material.IRON_TRAPDOOR, "LAUFBAU_FACING_WEST", "LAUFBAU_OPEN")); - - TrapDoor eastTrapDoor = (TrapDoor) Material.IRON_TRAPDOOR.createBlockData(); - eastTrapDoor.setFacing(BlockFace.EAST); - eastTrapDoor.setOpen(true); - addPixel(eastTrapDoor, 0, 0, 0, 3, 16, 16, createItem("LAUFBAU_BLOCK_IRON_TRAPDOOR", Material.IRON_TRAPDOOR, "LAUFBAU_FACING_EAST", "LAUFBAU_OPEN")); - } - - private static void addPixel(BlockData blockData, double xPixel, double yPixel, double zPixel, double dxPixel, double dyPixel, double dzPixel, SWItem swItem) { - new BlockBoundingBox(blockData, Arrays.asList(pixelCuboid(xPixel, yPixel, zPixel, dxPixel, dyPixel, dzPixel)), swItem); - } - - private static void addPixel(BlockData blockData, double xPixel, double yPixel, double zPixel, double dxPixel, double dyPixel, double dzPixel, SWItem swItem, Consumer blockConsumer) { - new BlockBoundingBox(blockData, Arrays.asList(pixelCuboid(xPixel, yPixel, zPixel, dxPixel, dyPixel, dzPixel)), swItem, blockConsumer); - } - - @SuppressWarnings("deprecation") - private static void randomPlayerHead(BaseBlock block) { - if (block instanceof SkullBlock) { - SkullBlock skullBlock = (SkullBlock) block; - skullBlock.setOwner(randomPlayerHead.get(random.nextInt(randomPlayerHead.size())).toString()); - } - } } diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/BoundingBoxLoader.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/BoundingBoxLoader.java deleted file mode 100644 index 899c951c..00000000 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/BoundingBoxLoader.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * This file is a part of the SteamWar software. - * - * Copyright (C) 2025 SteamWar.de-Serverteam - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package de.steamwar.bausystem.features.slaves.laufbau; - -public interface BoundingBoxLoader { - - void load(); -} diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/Cuboid.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/Cuboid.java index ec959a69..877fef60 100644 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/Cuboid.java +++ b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/Cuboid.java @@ -22,6 +22,7 @@ package de.steamwar.bausystem.features.slaves.laufbau; import de.steamwar.bausystem.region.Point; import lombok.AllArgsConstructor; import lombok.Data; +import org.bukkit.util.BoundingBox; @Data @AllArgsConstructor @@ -33,6 +34,15 @@ public class Cuboid { private double dy; private double dz; + public Cuboid(BoundingBox boundingBox) { + this.x = boundingBox.getMinX(); + this.y = boundingBox.getMinY(); + this.z = boundingBox.getMinZ(); + this.dx = boundingBox.getWidthX(); + this.dy = boundingBox.getHeight(); + this.dz = boundingBox.getWidthZ(); + } + public boolean intersects(Cuboid cuboid) { double minx = x - cuboid.dx; double miny = y - cuboid.dy; diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/Laufbau.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/Laufbau.java index 9a82f3a5..311f907b 100644 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/Laufbau.java +++ b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/Laufbau.java @@ -29,11 +29,15 @@ import org.bukkit.World; import org.bukkit.entity.Player; import org.bukkit.util.Vector; +import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; public class Laufbau { + private static final Comparator BLAST_RESISTANCE = Comparator.comparingDouble(value -> -value.material.getBlastResistance()); + private static final Comparator VOLUME = Comparator.comparingDouble(value -> -value.volume()); + private World world; private Location pos1; private Location pos2; @@ -61,26 +65,10 @@ public class Laufbau { editSession = WorldEditUtils.getEditSession(player); elements = BlockBoundingBox.elements.stream().filter(blockBoundingBox -> { - return !LaufbauUtils.isDeactivated(player, blockBoundingBox); + return !LaufbauConfig.STORE.get(player).getDeactivated().contains(blockBoundingBox.getMaterial()); }).collect(Collectors.toList()); - if (preferingBlastResistance) { - elements.sort((o1, o2) -> { - int compared = Double.compare(o1.blockData.getMaterial().getBlastResistance(), o2.blockData.getMaterial().getBlastResistance()); - if (compared != 0) { - return -compared; - } - return -Double.compare(o1.volume(), o2.volume()); - }); - } else { - elements.sort((o1, o2) -> { - int compared = Double.compare(o1.volume(), o2.volume()); - if (compared != 0) { - return -compared; - } - return -Double.compare(o1.blockData.getMaterial().getBlastResistance(), o2.blockData.getMaterial().getBlastResistance()); - }); - } + elements.sort(preferingBlastResistance ? BLAST_RESISTANCE.thenComparing(VOLUME) : VOLUME.thenComparing(BLAST_RESISTANCE)); active = new ProcessingTracesState(world, this::inRegion, editSession, elements, factor); } @@ -107,19 +95,8 @@ public class Laufbau { } private boolean inRegion(Vector location, int expansion) { - if (location.getBlockX() >= pos1.getBlockX() - expansion) { - if (location.getBlockY() >= pos1.getBlockY() - expansion) { - if (location.getBlockZ() >= pos1.getBlockZ() - expansion) { - if (location.getBlockX() <= pos2.getBlockX() + expansion) { - if (location.getBlockY() <= pos2.getBlockY() + expansion) { - if (location.getBlockZ() <= pos2.getBlockZ() + expansion) { - return true; - } - } - } - } - } - } - return false; + return location.getBlockX() >= pos1.getBlockX() - expansion && location.getBlockX() <= pos2.getBlockX() + expansion + && location.getBlockY() >= pos1.getBlockY() - expansion && location.getBlockY() <= pos2.getBlockY() + expansion + && location.getBlockZ() >= pos1.getBlockZ() - expansion && location.getBlockZ() <= pos2.getBlockZ() + expansion; } } diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/LaufbauConfig.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/LaufbauConfig.java index c422807c..0fe7223e 100644 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/LaufbauConfig.java +++ b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/LaufbauConfig.java @@ -21,10 +21,10 @@ package de.steamwar.bausystem.features.slaves.laufbau; import de.steamwar.bausystem.config.ConfigStore; import de.steamwar.bausystem.config.VersionedConfig; -import de.steamwar.bausystem.features.slaves.laufbau.converter.LaufbauConfigV1ToV2Converter; import lombok.AccessLevel; import lombok.Getter; import lombok.Setter; +import org.bukkit.Material; import java.util.HashSet; import java.util.Set; @@ -43,14 +43,9 @@ import java.util.Set; @Setter public class LaufbauConfig implements VersionedConfig { - public static final int VERSION = 2; + public static final int VERSION = 3; - /** - * LaufbauConfigV1 is stored as Base64 of gzipped YAPION, the current version as JSON - */ public static final ConfigStore STORE = new ConfigStore<>(LaufbauConfig.class, VERSION, LaufbauConfig::new) - .legacy(s -> !s.startsWith("{"), LaufbauConfigV1::parse) - .converter(new LaufbauConfigV1ToV2Converter()) .userConfig("bausystem-laufbau") .removeIf(config -> config.getDeactivated().isEmpty()); @@ -58,7 +53,7 @@ public class LaufbauConfig implements VersionedConfig { protected int version = VERSION; /** - * Identifiers of the deactivated {@link BlockBoundingBox}es, see {@link LaufbauUtils#identifier(BlockBoundingBox)} + * Materials of the deactivated {@link BlockBoundingBox}es */ - protected Set deactivated = new HashSet<>(); + protected Set deactivated = new HashSet<>(); } diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/LaufbauConfigV1.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/LaufbauConfigV1.java deleted file mode 100644 index d372ed5d..00000000 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/LaufbauConfigV1.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * This file is a part of the SteamWar software. - * - * Copyright (C) 2026 SteamWar.de-Serverteam - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package de.steamwar.bausystem.features.slaves.laufbau; - -import de.steamwar.bausystem.config.VersionedConfig; -import de.steamwar.bausystem.config.legacy.YapionReader; -import lombok.AccessLevel; -import lombok.Getter; -import lombok.Setter; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.UncheckedIOException; -import java.nio.charset.StandardCharsets; -import java.util.Base64; -import java.util.HashSet; -import java.util.Set; -import java.util.zip.GZIPInputStream; - -/** - * The legacy laufbau config that was stored as Base64 of the gzipped YAPION, - * an object with the deactivated identifiers as keys. - */ -@Getter -@Setter -@Deprecated -public class LaufbauConfigV1 implements VersionedConfig { - - public static final int VERSION = 1; - - @Setter(AccessLevel.NONE) - protected int version = VERSION; - - protected Set deactivated = new HashSet<>(); - - public static LaufbauConfigV1 parse(String base64) { - String yapion; - try (InputStream inputStream = new GZIPInputStream(new ByteArrayInputStream(Base64.getDecoder().decode(base64)))) { - yapion = new String(inputStream.readAllBytes(), StandardCharsets.UTF_8); - } catch (IOException e) { - throw new UncheckedIOException(e); - } - LaufbauConfigV1 config = new LaufbauConfigV1(); - config.deactivated.addAll(YapionReader.parse(yapion).keySet()); - return config; - } -} diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/LaufbauSettings.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/LaufbauSettings.java index 88c91fc2..b15c51bd 100644 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/LaufbauSettings.java +++ b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/LaufbauSettings.java @@ -21,7 +21,6 @@ package de.steamwar.bausystem.features.slaves.laufbau; import de.steamwar.bausystem.BauSystem; import de.steamwar.bausystem.shared.Pair; -import de.steamwar.data.CMDs; import de.steamwar.inventory.SWItem; import de.steamwar.inventory.SWListInv; import org.bukkit.Material; @@ -32,13 +31,11 @@ import java.util.*; public class LaufbauSettings { - private static Map, List> groupMap = new LinkedHashMap<>(); + private static Set> groups = new LinkedHashSet<>(); static { BlockBoundingBox.elements.forEach(blockBoundingBox -> { - if (blockBoundingBox.getSwItem() == null) return; - String displayName = blockBoundingBox.getSwItem().getItemMeta().getDisplayName(); - groupMap.computeIfAbsent(new Pair<>(blockBoundingBox.getSwItem().getItemStack().getType(), displayName), k -> new ArrayList<>()).add(blockBoundingBox); + groups.add(new Pair<>(blockBoundingBox.getMaterial(), blockBoundingBox.getName())); }); } @@ -50,96 +47,35 @@ public class LaufbauSettings { } public void open() { - List, List>>> list = new ArrayList<>(); - for (Map.Entry, List> entry : groupMap.entrySet()) { - SWItem swItem = createItem(entry.getKey().getKey(), entry.getKey().getValue(), entry.getValue()); - list.add(new SWListInv.SWListEntry<>(swItem, entry)); + List>> list = new ArrayList<>(); + for (Pair group : groups) { + list.add(new SWListInv.SWListEntry<>(createItem(group.getKey(), group.getValue()), group)); } - SWListInv, List>> inv = new SWListInv<>(p, BauSystem.MESSAGE.parse("LAUFBAU_SETTINGS_GUI_NAME", p), false, list, (clickType, entry) -> { - if (entry.getValue().size() == 1) { - LaufbauUtils.toggle(p, entry.getValue().get(0)); - open(); - return; - } - if (clickType.isLeftClick()) { - open(entry.getKey()); - return; - } - toggle(entry.getValue()); + SWListInv> inv = new SWListInv<>(p, BauSystem.MESSAGE.parse("LAUFBAU_SETTINGS_GUI_NAME", p), false, list, (clickType, group) -> { + toggle(group.getKey()); open(); }); inv.open(); } - public void open(Pair key) { - List blockBoundingBoxes = groupMap.get(key); - List> list = new ArrayList<>(); - for (BlockBoundingBox bb : blockBoundingBoxes) { - SWItem swItem = LaufbauUtils.translateItem(bb.getSwItem(), p); - ItemMeta itemMeta = swItem.getItemMeta(); - List lore = new ArrayList<>(); - if (itemMeta.getLore() != null) { - lore = itemMeta.getLore(); - } - lore.add(""); - lore.add(BauSystem.MESSAGE.parse(LaufbauUtils.isDeactivated(p, bb) ? "LAUFBAU_SETTINGS_INACTIVE" : "LAUFBAU_SETTINGS_ACTIVE", p)); - itemMeta.setLore(lore); - swItem.setItemMeta(itemMeta); - list.add(new SWListInv.SWListEntry<>(swItem, bb)); + public SWItem createItem(Material material, String name) { + SWItem swItem = new SWItem(material, name); + ItemMeta itemMeta = swItem.getItemMeta(); + List lore = new ArrayList<>(); + if (itemMeta != null && itemMeta.getLore() != null) { + lore = itemMeta.getLore(); } - SWListInv inv = new SWListInv<>(p, BauSystem.MESSAGE.parse("LAUFBAU_SETTINGS_GUI_NAME", p), false, list, (clickType, blockBoundingBox) -> { - LaufbauUtils.toggle(p, blockBoundingBox); - open(key); - }); - inv.setItem(49, new SWItem(Material.ARROW, BauSystem.MESSAGE.parse("LAUFBAU_SETTINGS_GUI_BACK", p), clickType -> { - open(); - }).setCustomModelData(CMDs.BACK)); - inv.open(); + lore.add(""); + lore.add(BauSystem.MESSAGE.parse(LaufbauConfig.STORE.get(p).getDeactivated().contains(material) ? "LAUFBAU_SETTINGS_INACTIVE" : "LAUFBAU_SETTINGS_ACTIVE", p)); + lore.add(""); + lore.add(BauSystem.MESSAGE.parse("LAUFBAU_SETTINGS_TOGGLE", p)); + if (itemMeta != null) itemMeta.setLore(lore); + swItem.setItemMeta(itemMeta); + return swItem; } - public SWItem createItem(Material material, String group, List blockBoundingBoxes) { - if (blockBoundingBoxes.size() == 1) { - BlockBoundingBox bb = blockBoundingBoxes.get(0); - SWItem swItem = LaufbauUtils.translateItem(bb.getSwItem(), p); - ItemMeta itemMeta = swItem.getItemMeta(); - List lore = new ArrayList<>(); - if (itemMeta.getLore() != null) { - lore = itemMeta.getLore(); - } - lore.add(""); - lore.add(BauSystem.MESSAGE.parse(LaufbauUtils.isDeactivated(p, bb) ? "LAUFBAU_SETTINGS_INACTIVE" : "LAUFBAU_SETTINGS_ACTIVE", p)); - lore.add(""); - lore.add(BauSystem.MESSAGE.parse("LAUFBAU_SETTINGS_TOGGLE", p)); - itemMeta.setLore(lore); - swItem.setItemMeta(itemMeta); - return swItem; - } else { - long count = blockBoundingBoxes.stream().filter(bb -> LaufbauUtils.isDeactivated(p, bb)).count(); - if (count == 0) { - return new SWItem(material, BauSystem.MESSAGE.parse(group, p), Arrays.asList("", BauSystem.MESSAGE.parse("LAUFBAU_SETTINGS_ACTIVE", p), "", BauSystem.MESSAGE.parse("LAUFBAU_SETTINGS_ADVANCED", p), BauSystem.MESSAGE.parse("LAUFBAU_SETTINGS_TOGGLE", p)), false, clickType -> { - }); - } - if (count == blockBoundingBoxes.size()) { - return new SWItem(material, BauSystem.MESSAGE.parse(group, p), Arrays.asList("", BauSystem.MESSAGE.parse("LAUFBAU_SETTINGS_INACTIVE", p), "", BauSystem.MESSAGE.parse("LAUFBAU_SETTINGS_ADVANCED", p), BauSystem.MESSAGE.parse("LAUFBAU_SETTINGS_TOGGLE", p)), false, clickType -> { - }); - } - return new SWItem(material, BauSystem.MESSAGE.parse(group, p), Arrays.asList("", BauSystem.MESSAGE.parse("LAUFBAU_SETTINGS_MIXED", p, blockBoundingBoxes.size() - count, blockBoundingBoxes.size()), "", BauSystem.MESSAGE.parse("LAUFBAU_SETTINGS_ADVANCED", p), BauSystem.MESSAGE.parse("LAUFBAU_SETTINGS_TOGGLE", p)), false, clickType -> { - }); - } - } - - public void toggle(List blockBoundingBoxes) { - long count = blockBoundingBoxes.stream().filter(bb -> LaufbauUtils.isDeactivated(p, bb)).count(); - if (count != blockBoundingBoxes.size()) { - blockBoundingBoxes.forEach(bb -> { - if (!LaufbauUtils.isDeactivated(p, bb)) { - LaufbauUtils.toggle(p, bb); - } - }); - } else { - blockBoundingBoxes.forEach(bb -> { - LaufbauUtils.toggle(p, bb); - }); - } + public void toggle(Material material) { + Set deactivated = LaufbauConfig.STORE.get(p).getDeactivated(); + if (!deactivated.remove(material)) deactivated.add(material); } } diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/LaufbauUtils.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/LaufbauUtils.java deleted file mode 100644 index 45b94482..00000000 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/LaufbauUtils.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * This file is a part of the SteamWar software. - * - * Copyright (C) 2025 SteamWar.de-Serverteam - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package de.steamwar.bausystem.features.slaves.laufbau; - -import de.steamwar.bausystem.BauSystem; -import de.steamwar.inventory.SWItem; -import lombok.SneakyThrows; -import lombok.experimental.UtilityClass; -import org.bukkit.Material; -import org.bukkit.entity.Player; -import org.bukkit.inventory.meta.ItemMeta; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - -@UtilityClass -public class LaufbauUtils { - - public static Cuboid pixelCuboid(double pixelX, double pixelY, double pixelZ, double pixelDX, double pixelDY, double pixelDZ) { - return new Cuboid(pixelToBlock(pixelX), pixelToBlock(pixelY), pixelToBlock(pixelZ), pixelToBlock(pixelDX), pixelToBlock(pixelDY), pixelToBlock(pixelDZ)); - } - - public static double pixelToBlock(double pixel) { - return 1.0 / 16 * pixel; - } - - public static SWItem createItem(String name, Material material, String... lore) { - return new SWItem(material, name, Arrays.asList(lore), false, clickType -> { - }); - } - - public static SWItem translateItem(SWItem item, Player p) { - ItemMeta itemMeta = item.getItemMeta(); - List lore = new ArrayList<>(); - if (itemMeta.getLore() != null) { - lore = itemMeta.getLore().stream().map(s -> BauSystem.MESSAGE.parse(s, p)).collect(Collectors.toList()); - } - return new SWItem(item.getItemStack().getType(), BauSystem.MESSAGE.parse(itemMeta.getDisplayName(), p), lore, false, clickType -> { - }); - } - - public static String identifier(BlockBoundingBox bb) { - if (bb.getSwItem() == null) { - return null; - } - SWItem item = bb.getSwItem(); - ItemMeta itemMeta = item.getItemMeta(); - List lore = new ArrayList<>(); - if (itemMeta.getLore() != null) { - lore = itemMeta.getLore() - .stream() - .map(s -> s.substring(8)) - .collect(Collectors.toList()); - } - String name = itemMeta.getDisplayName().substring(14); - return name + "[" + String.join(",", lore) + "]"; - } - - @SneakyThrows - public static boolean isDeactivated(Player p, BlockBoundingBox bb) { - if (bb.getSwItem() == null) { - return false; - } - String identifier = identifier(bb); - return LaufbauConfig.STORE.get(p).getDeactivated().contains(identifier); - } - - @SneakyThrows - public static void toggle(Player p, BlockBoundingBox bb) { - if (bb.getSwItem() == null) { - return; - } - String identifier = identifier(bb); - Set deactivated = LaufbauConfig.STORE.get(p).getDeactivated(); - if (!deactivated.remove(identifier)) { - deactivated.add(identifier); - } - } -} diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/AmethystBoundingBox.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/AmethystBoundingBox.java deleted file mode 100644 index d7aab7b2..00000000 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/AmethystBoundingBox.java +++ /dev/null @@ -1,261 +0,0 @@ -/* - * This file is a part of the SteamWar software. - * - * Copyright (C) 2025 SteamWar.de-Serverteam - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package de.steamwar.bausystem.features.slaves.laufbau.boundingboxes; - -import de.steamwar.bausystem.features.slaves.laufbau.BlockBoundingBox; -import de.steamwar.bausystem.features.slaves.laufbau.BoundingBoxLoader; -import de.steamwar.bausystem.features.slaves.laufbau.Cuboid; -import de.steamwar.linkage.Linked; -import org.bukkit.Material; -import org.bukkit.block.BlockFace; -import org.bukkit.block.data.type.AmethystCluster; - -import java.util.ArrayList; -import java.util.List; - -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.createItem; -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.pixelCuboid; - -@Linked -public class AmethystBoundingBox implements BoundingBoxLoader { - - @Override - public void load() { - floorSmallAmethystBud(); - ceilingSmallAmethystBud(); - northSmallAmethystBud(); - southSmallAmethystBud(); - eastSmallAmethystBud(); - westSmallAmethystBud(); - - floorMediumAmethystBud(); - ceilingMediumAmethystBud(); - northMediumAmethystBud(); - southMediumAmethystBud(); - eastMediumAmethystBud(); - westMediumAmethystBud(); - - floorLargeAmethystBud(); - ceilingLargeAmethystBud(); - northLargeAmethystBud(); - southLargeAmethystBud(); - eastLargeAmethystBud(); - westLargeAmethystBud(); - - floorAmethystCluster(); - ceilingAmethystCluster(); - northAmethystCluster(); - southAmethystCluster(); - eastAmethystCluster(); - westAmethystCluster(); - } - - private void floorSmallAmethystBud() { - AmethystCluster cluster = (AmethystCluster) Material.SMALL_AMETHYST_BUD.createBlockData(); - cluster.setFacing(BlockFace.UP); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(4, 0, 4, 8, 3, 8)); - new BlockBoundingBox(cluster, cuboidList, createItem("LAUFBAU_BLOCK_SMALL_AMETHYST_BUD", Material.SMALL_AMETHYST_BUD, "LAUFBAU_FACING_UP")); - } - - private void ceilingSmallAmethystBud() { - AmethystCluster cluster = (AmethystCluster) Material.SMALL_AMETHYST_BUD.createBlockData(); - cluster.setFacing(BlockFace.DOWN); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(4, 13, 4, 8, 3, 8)); - new BlockBoundingBox(cluster, cuboidList, createItem("LAUFBAU_BLOCK_SMALL_AMETHYST_BUD", Material.SMALL_AMETHYST_BUD, "LAUFBAU_FACING_DOWN")); - } - - private void northSmallAmethystBud() { - AmethystCluster cluster = (AmethystCluster) Material.SMALL_AMETHYST_BUD.createBlockData(); - cluster.setFacing(BlockFace.NORTH); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(4, 4, 13, 8, 8, 3)); - new BlockBoundingBox(cluster, cuboidList, createItem("LAUFBAU_BLOCK_SMALL_AMETHYST_BUD", Material.SMALL_AMETHYST_BUD, "LAUFBAU_FACING_NORTH")); - } - - private void southSmallAmethystBud() { - AmethystCluster cluster = (AmethystCluster) Material.SMALL_AMETHYST_BUD.createBlockData(); - cluster.setFacing(BlockFace.SOUTH); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(4, 4, 0, 8, 8, 3)); - new BlockBoundingBox(cluster, cuboidList, createItem("LAUFBAU_BLOCK_SMALL_AMETHYST_BUD", Material.SMALL_AMETHYST_BUD, "LAUFBAU_FACING_SOUTH")); - } - - private void eastSmallAmethystBud() { - AmethystCluster cluster = (AmethystCluster) Material.SMALL_AMETHYST_BUD.createBlockData(); - cluster.setFacing(BlockFace.EAST); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 4, 4, 3, 8, 8)); - new BlockBoundingBox(cluster, cuboidList, createItem("LAUFBAU_BLOCK_SMALL_AMETHYST_BUD", Material.SMALL_AMETHYST_BUD, "LAUFBAU_FACING_EAST")); - } - - private void westSmallAmethystBud() { - AmethystCluster cluster = (AmethystCluster) Material.SMALL_AMETHYST_BUD.createBlockData(); - cluster.setFacing(BlockFace.WEST); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(13, 4, 4, 3, 8, 8)); - new BlockBoundingBox(cluster, cuboidList, createItem("LAUFBAU_BLOCK_SMALL_AMETHYST_BUD", Material.SMALL_AMETHYST_BUD, "LAUFBAU_FACING_WEST")); - } - - private void floorMediumAmethystBud() { - AmethystCluster cluster = (AmethystCluster) Material.MEDIUM_AMETHYST_BUD.createBlockData(); - cluster.setFacing(BlockFace.UP); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(3, 0, 3, 10, 4, 10)); - new BlockBoundingBox(cluster, cuboidList, createItem("LAUFBAU_BLOCK_MEDIUM_AMETHYST_BUD", Material.MEDIUM_AMETHYST_BUD, "LAUFBAU_FACING_UP")); - } - - private void ceilingMediumAmethystBud() { - AmethystCluster cluster = (AmethystCluster) Material.MEDIUM_AMETHYST_BUD.createBlockData(); - cluster.setFacing(BlockFace.DOWN); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(3, 12, 3, 10, 4, 10)); - new BlockBoundingBox(cluster, cuboidList, createItem("LAUFBAU_BLOCK_MEDIUM_AMETHYST_BUD", Material.MEDIUM_AMETHYST_BUD, "LAUFBAU_FACING_DOWN")); - } - - private void northMediumAmethystBud() { - AmethystCluster cluster = (AmethystCluster) Material.MEDIUM_AMETHYST_BUD.createBlockData(); - cluster.setFacing(BlockFace.NORTH); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(3, 3, 12, 10, 10, 4)); - new BlockBoundingBox(cluster, cuboidList, createItem("LAUFBAU_BLOCK_MEDIUM_AMETHYST_BUD", Material.MEDIUM_AMETHYST_BUD, "LAUFBAU_FACING_NORTH")); - } - - private void southMediumAmethystBud() { - AmethystCluster cluster = (AmethystCluster) Material.MEDIUM_AMETHYST_BUD.createBlockData(); - cluster.setFacing(BlockFace.SOUTH); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(3, 3, 0, 10, 10, 4)); - new BlockBoundingBox(cluster, cuboidList, createItem("LAUFBAU_BLOCK_MEDIUM_AMETHYST_BUD", Material.MEDIUM_AMETHYST_BUD, "LAUFBAU_FACING_SOUTH")); - } - - private void eastMediumAmethystBud() { - AmethystCluster cluster = (AmethystCluster) Material.MEDIUM_AMETHYST_BUD.createBlockData(); - cluster.setFacing(BlockFace.EAST); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 3, 3, 4, 10, 10)); - new BlockBoundingBox(cluster, cuboidList, createItem("LAUFBAU_BLOCK_MEDIUM_AMETHYST_BUD", Material.MEDIUM_AMETHYST_BUD, "LAUFBAU_FACING_EAST")); - } - - private void westMediumAmethystBud() { - AmethystCluster cluster = (AmethystCluster) Material.MEDIUM_AMETHYST_BUD.createBlockData(); - cluster.setFacing(BlockFace.WEST); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(12, 3, 3, 4, 10, 10)); - new BlockBoundingBox(cluster, cuboidList, createItem("LAUFBAU_BLOCK_MEDIUM_AMETHYST_BUD", Material.MEDIUM_AMETHYST_BUD, "LAUFBAU_FACING_WEST")); - } - - private void floorLargeAmethystBud() { - AmethystCluster cluster = (AmethystCluster) Material.LARGE_AMETHYST_BUD.createBlockData(); - cluster.setFacing(BlockFace.UP); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(3, 0, 3, 10, 5, 10)); - new BlockBoundingBox(cluster, cuboidList, createItem("LAUFBAU_BLOCK_LARGE_AMETHYST_BUD", Material.LARGE_AMETHYST_BUD, "LAUFBAU_FACING_UP")); - } - - private void ceilingLargeAmethystBud() { - AmethystCluster cluster = (AmethystCluster) Material.LARGE_AMETHYST_BUD.createBlockData(); - cluster.setFacing(BlockFace.DOWN); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(3, 11, 3, 10, 5, 10)); - new BlockBoundingBox(cluster, cuboidList, createItem("LAUFBAU_BLOCK_LARGE_AMETHYST_BUD", Material.LARGE_AMETHYST_BUD, "LAUFBAU_FACING_DOWN")); - } - - private void northLargeAmethystBud() { - AmethystCluster cluster = (AmethystCluster) Material.LARGE_AMETHYST_BUD.createBlockData(); - cluster.setFacing(BlockFace.NORTH); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(3, 3, 11, 10, 10, 5)); - new BlockBoundingBox(cluster, cuboidList, createItem("LAUFBAU_BLOCK_LARGE_AMETHYST_BUD", Material.LARGE_AMETHYST_BUD, "LAUFBAU_FACING_NORTH")); - } - - private void southLargeAmethystBud() { - AmethystCluster cluster = (AmethystCluster) Material.LARGE_AMETHYST_BUD.createBlockData(); - cluster.setFacing(BlockFace.SOUTH); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(3, 3, 0, 10, 10, 5)); - new BlockBoundingBox(cluster, cuboidList, createItem("LAUFBAU_BLOCK_LARGE_AMETHYST_BUD", Material.LARGE_AMETHYST_BUD, "LAUFBAU_FACING_SOUTH")); - } - - private void eastLargeAmethystBud() { - AmethystCluster cluster = (AmethystCluster) Material.LARGE_AMETHYST_BUD.createBlockData(); - cluster.setFacing(BlockFace.EAST); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 3, 3, 5, 10, 10)); - new BlockBoundingBox(cluster, cuboidList, createItem("LAUFBAU_BLOCK_LARGE_AMETHYST_BUD", Material.LARGE_AMETHYST_BUD, "LAUFBAU_FACING_EAST")); - } - - private void westLargeAmethystBud() { - AmethystCluster cluster = (AmethystCluster) Material.LARGE_AMETHYST_BUD.createBlockData(); - cluster.setFacing(BlockFace.WEST); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(11, 3, 3, 5, 10, 10)); - new BlockBoundingBox(cluster, cuboidList, createItem("LAUFBAU_BLOCK_LARGE_AMETHYST_BUD", Material.LARGE_AMETHYST_BUD, "LAUFBAU_FACING_WEST")); - } - - private void floorAmethystCluster() { - AmethystCluster cluster = (AmethystCluster) Material.AMETHYST_CLUSTER.createBlockData(); - cluster.setFacing(BlockFace.UP); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(3, 0, 3, 10, 7, 10)); - new BlockBoundingBox(cluster, cuboidList, createItem("LAUFBAU_BLOCK_AMETHYST_CLUSTER", Material.AMETHYST_CLUSTER, "LAUFBAU_FACING_UP")); - } - - private void ceilingAmethystCluster() { - AmethystCluster cluster = (AmethystCluster) Material.AMETHYST_CLUSTER.createBlockData(); - cluster.setFacing(BlockFace.DOWN); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(3, 9, 3, 10, 7, 10)); - new BlockBoundingBox(cluster, cuboidList, createItem("LAUFBAU_BLOCK_AMETHYST_CLUSTER", Material.AMETHYST_CLUSTER, "LAUFBAU_FACING_DOWN")); - } - - private void northAmethystCluster() { - AmethystCluster cluster = (AmethystCluster) Material.AMETHYST_CLUSTER.createBlockData(); - cluster.setFacing(BlockFace.NORTH); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(3, 3, 9, 10, 10, 7)); - new BlockBoundingBox(cluster, cuboidList, createItem("LAUFBAU_BLOCK_AMETHYST_CLUSTER", Material.AMETHYST_CLUSTER, "LAUFBAU_FACING_NORTH")); - } - - private void southAmethystCluster() { - AmethystCluster cluster = (AmethystCluster) Material.AMETHYST_CLUSTER.createBlockData(); - cluster.setFacing(BlockFace.SOUTH); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(3, 3, 0, 10, 10, 7)); - new BlockBoundingBox(cluster, cuboidList, createItem("LAUFBAU_BLOCK_AMETHYST_CLUSTER", Material.AMETHYST_CLUSTER, "LAUFBAU_FACING_SOUTH")); - } - - private void eastAmethystCluster() { - AmethystCluster cluster = (AmethystCluster) Material.AMETHYST_CLUSTER.createBlockData(); - cluster.setFacing(BlockFace.EAST); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 3, 3, 7, 10, 10)); - new BlockBoundingBox(cluster, cuboidList, createItem("LAUFBAU_BLOCK_AMETHYST_CLUSTER", Material.AMETHYST_CLUSTER, "LAUFBAU_FACING_EAST")); - } - - private void westAmethystCluster() { - AmethystCluster cluster = (AmethystCluster) Material.AMETHYST_CLUSTER.createBlockData(); - cluster.setFacing(BlockFace.WEST); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(9, 3, 3, 7, 10, 10)); - new BlockBoundingBox(cluster, cuboidList, createItem("LAUFBAU_BLOCK_AMETHYST_CLUSTER", Material.AMETHYST_CLUSTER, "LAUFBAU_FACING_WEST")); - } -} diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/AzaleaBoundingBox.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/AzaleaBoundingBox.java deleted file mode 100644 index cc2368e7..00000000 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/AzaleaBoundingBox.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * This file is a part of the SteamWar software. - * - * Copyright (C) 2025 SteamWar.de-Serverteam - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package de.steamwar.bausystem.features.slaves.laufbau.boundingboxes; - -import de.steamwar.bausystem.features.slaves.laufbau.BlockBoundingBox; -import de.steamwar.bausystem.features.slaves.laufbau.BoundingBoxLoader; -import de.steamwar.bausystem.features.slaves.laufbau.Cuboid; -import de.steamwar.linkage.Linked; -import org.bukkit.Material; -import org.bukkit.block.data.BlockData; - -import java.util.ArrayList; -import java.util.List; - -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.createItem; -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.pixelCuboid; - -@Linked -public class AzaleaBoundingBox implements BoundingBoxLoader { - - @Override - public void load() { - BlockData blockData = Material.FLOWERING_AZALEA.createBlockData(); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 8, 0, 16, 8, 16)); - cuboidList.add(pixelCuboid(6, 0, 6, 4, 8, 4)); - new BlockBoundingBox(blockData, cuboidList, createItem("LAUFBAU_BLOCK_AZALEA", Material.FLOWERING_AZALEA)); - } -} diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/BellBoundingBox.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/BellBoundingBox.java deleted file mode 100644 index eb202645..00000000 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/BellBoundingBox.java +++ /dev/null @@ -1,149 +0,0 @@ -/* - * This file is a part of the SteamWar software. - * - * Copyright (C) 2025 SteamWar.de-Serverteam - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package de.steamwar.bausystem.features.slaves.laufbau.boundingboxes; - -import de.steamwar.bausystem.features.slaves.laufbau.BlockBoundingBox; -import de.steamwar.bausystem.features.slaves.laufbau.BoundingBoxLoader; -import de.steamwar.bausystem.features.slaves.laufbau.Cuboid; -import de.steamwar.linkage.Linked; -import org.bukkit.Material; -import org.bukkit.block.BlockFace; -import org.bukkit.block.data.type.Bell; - -import java.util.ArrayList; -import java.util.List; - -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.createItem; -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.pixelCuboid; - -@Linked -public class BellBoundingBox implements BoundingBoxLoader { - - @Override - public void load() { - ceilingBell(); - - floorNorthBell(); - floorEastBell(); - - doubleWallNorthBell(); - doubleWallEastBell(); - - singleWallNorthBell(); - singleWallSouthBell(); - singleWallEastBell(); - singleWallWestBell(); - } - - public void ceilingBell() { - Bell bell = (Bell) Material.BELL.createBlockData(); - bell.setAttachment(Bell.Attachment.CEILING); - bell.setFacing(BlockFace.NORTH); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(4, 4, 4, 8, 2, 8)); - cuboidList.add(pixelCuboid(5, 6, 5, 6, 8, 6)); - cuboidList.add(pixelCuboid(7, 13, 7, 2, 3, 2)); - new BlockBoundingBox(bell, cuboidList, createItem("LAUFBAU_BLOCK_BELL", Material.BELL, "LAUFBAU_ATTACHMENT_CEILING")); - } - - public void floorNorthBell() { - Bell bell = (Bell) Material.BELL.createBlockData(); - bell.setAttachment(Bell.Attachment.FLOOR); - bell.setFacing(BlockFace.NORTH); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 0, 4, 16, 16, 8)); - new BlockBoundingBox(bell, cuboidList, createItem("LAUFBAU_BLOCK_BELL", Material.BELL, "LAUFBAU_ATTACHMENT_FLOOR", "LAUFBAU_FACING_NORTH", "LAUFBAU_FACING_SOUTH")); - } - - public void floorEastBell() { - Bell bell = (Bell) Material.BELL.createBlockData(); - bell.setAttachment(Bell.Attachment.FLOOR); - bell.setFacing(BlockFace.EAST); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(4, 0, 0, 8, 16, 16)); - new BlockBoundingBox(bell, cuboidList, createItem("LAUFBAU_BLOCK_BELL", Material.BELL, "LAUFBAU_ATTACHMENT_FLOOR", "LAUFBAU_FACING_EAST", "LAUFBAU_FACING_WEST")); - } - - public void doubleWallNorthBell() { - Bell bell = (Bell) Material.BELL.createBlockData(); - bell.setAttachment(Bell.Attachment.DOUBLE_WALL); - bell.setFacing(BlockFace.NORTH); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(4, 4, 4, 8, 2, 8)); - cuboidList.add(pixelCuboid(5, 6, 5, 6, 8, 6)); - cuboidList.add(pixelCuboid(7, 13, 0, 2, 2, 16)); - new BlockBoundingBox(bell, cuboidList, createItem("LAUFBAU_BLOCK_BELL", Material.BELL, "LAUFBAU_ATTACHMENT_DOUBLE_WALL", "LAUFBAU_FACING_NORTH")); - } - - public void doubleWallEastBell() { - Bell bell = (Bell) Material.BELL.createBlockData(); - bell.setAttachment(Bell.Attachment.DOUBLE_WALL); - bell.setFacing(BlockFace.EAST); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(4, 4, 4, 8, 2, 8)); - cuboidList.add(pixelCuboid(5, 6, 5, 6, 8, 6)); - cuboidList.add(pixelCuboid(0, 13, 7, 16, 2, 2)); - new BlockBoundingBox(bell, cuboidList, createItem("LAUFBAU_BLOCK_BELL", Material.BELL, "LAUFBAU_ATTACHMENT_DOUBLE_WALL", "LAUFBAU_FACING_EAST")); - } - - public void singleWallNorthBell() { - Bell bell = (Bell) Material.BELL.createBlockData(); - bell.setAttachment(Bell.Attachment.SINGLE_WALL); - bell.setFacing(BlockFace.NORTH); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(4, 4, 4, 8, 2, 8)); - cuboidList.add(pixelCuboid(5, 6, 5, 6, 8, 6)); - cuboidList.add(pixelCuboid(7, 13, 0, 2, 2, 13)); - new BlockBoundingBox(bell, cuboidList, createItem("LAUFBAU_BLOCK_BELL", Material.BELL, "LAUFBAU_ATTACHMENT_SINGLE_WALL", "LAUFBAU_FACING_NORTH")); - } - - public void singleWallSouthBell() { - Bell bell = (Bell) Material.BELL.createBlockData(); - bell.setAttachment(Bell.Attachment.SINGLE_WALL); - bell.setFacing(BlockFace.SOUTH); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(4, 4, 4, 8, 2, 8)); - cuboidList.add(pixelCuboid(5, 6, 5, 6, 8, 6)); - cuboidList.add(pixelCuboid(7, 13, 3, 2, 2, 13)); - new BlockBoundingBox(bell, cuboidList, createItem("LAUFBAU_BLOCK_BELL", Material.BELL, "LAUFBAU_ATTACHMENT_SINGLE_WALL", "LAUFBAU_FACING_SOUTH")); - } - - public void singleWallEastBell() { - Bell bell = (Bell) Material.BELL.createBlockData(); - bell.setAttachment(Bell.Attachment.SINGLE_WALL); - bell.setFacing(BlockFace.EAST); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(4, 4, 4, 8, 2, 8)); - cuboidList.add(pixelCuboid(5, 6, 5, 6, 8, 6)); - cuboidList.add(pixelCuboid(3, 13, 7, 13, 2, 2)); - new BlockBoundingBox(bell, cuboidList, createItem("LAUFBAU_BLOCK_BELL", Material.BELL, "LAUFBAU_ATTACHMENT_SINGLE_WALL", "LAUFBAU_FACING_EAST")); - } - - public void singleWallWestBell() { - Bell bell = (Bell) Material.BELL.createBlockData(); - bell.setAttachment(Bell.Attachment.SINGLE_WALL); - bell.setFacing(BlockFace.WEST); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(4, 4, 4, 8, 2, 8)); - cuboidList.add(pixelCuboid(5, 6, 5, 6, 8, 6)); - cuboidList.add(pixelCuboid(0, 13, 7, 13, 2, 2)); - new BlockBoundingBox(bell, cuboidList, createItem("LAUFBAU_BLOCK_BELL", Material.BELL, "LAUFBAU_ATTACHMENT_SINGLE_WALL", "LAUFBAU_FACING_WEST")); - } -} diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/BrewingStandBoundingBox.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/BrewingStandBoundingBox.java deleted file mode 100644 index 8e42712a..00000000 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/BrewingStandBoundingBox.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * This file is a part of the SteamWar software. - * - * Copyright (C) 2025 SteamWar.de-Serverteam - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package de.steamwar.bausystem.features.slaves.laufbau.boundingboxes; - -import de.steamwar.bausystem.features.slaves.laufbau.BlockBoundingBox; -import de.steamwar.bausystem.features.slaves.laufbau.BoundingBoxLoader; -import de.steamwar.bausystem.features.slaves.laufbau.Cuboid; -import de.steamwar.linkage.Linked; -import org.bukkit.Material; -import org.bukkit.block.data.type.BrewingStand; - -import java.util.ArrayList; -import java.util.List; - -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.createItem; -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.pixelCuboid; - -@Linked -public class BrewingStandBoundingBox implements BoundingBoxLoader { - - @Override - public void load() { - BrewingStand brewingStand = (BrewingStand) Material.BREWING_STAND.createBlockData(); - List cuboids = new ArrayList<>(); - cuboids.add(pixelCuboid(1, 0, 1, 14, 2, 14)); - cuboids.add(pixelCuboid(7, 2, 7, 2, 12, 2)); - new BlockBoundingBox(brewingStand, cuboids, createItem("LAUFBAU_BLOCK_BREWING_STAND", Material.BREWING_STAND)); - } -} diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/CandleBoundingBox.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/CandleBoundingBox.java deleted file mode 100644 index e9916f6f..00000000 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/CandleBoundingBox.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * This file is a part of the SteamWar software. - * - * Copyright (C) 2025 SteamWar.de-Serverteam - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package de.steamwar.bausystem.features.slaves.laufbau.boundingboxes; - -import de.steamwar.bausystem.features.slaves.laufbau.BlockBoundingBox; -import de.steamwar.bausystem.features.slaves.laufbau.BoundingBoxLoader; -import de.steamwar.bausystem.features.slaves.laufbau.Cuboid; -import de.steamwar.linkage.Linked; -import org.bukkit.Material; -import org.bukkit.block.data.Lightable; -import org.bukkit.block.data.type.Candle; - -import java.util.ArrayList; -import java.util.List; - -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.createItem; -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.pixelCuboid; - -@Linked -public class CandleBoundingBox implements BoundingBoxLoader { - - @Override - public void load() { - caked(); - - single(); - } - - private void caked() { - Lightable candleCake = (Lightable) Material.CYAN_CANDLE_CAKE.createBlockData(); - candleCake.setLit(true); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 0, 0, 16, 8, 16)); - cuboidList.add(pixelCuboid(7, 8, 7, 2, 6, 2)); - new BlockBoundingBox(candleCake, cuboidList, createItem("LAUFBAU_BLOCK_CANDLE_CAKE", Material.CAKE)); - } - - private void single() { - Candle candle = (Candle) Material.CYAN_CANDLE.createBlockData(); - candle.setCandles(1); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(7, 0, 7, 2, 6, 2)); - new BlockBoundingBox(candle, cuboidList, createItem("LAUFBAU_BLOCK_CANDLE", Material.CYAN_CANDLE, "LAUFBAU_COUNT_1")); - } -} diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/ChainBoundingBox.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/ChainBoundingBox.java deleted file mode 100644 index 6d81b0e5..00000000 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/ChainBoundingBox.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * This file is a part of the SteamWar software. - * - * Copyright (C) 2025 SteamWar.de-Serverteam - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package de.steamwar.bausystem.features.slaves.laufbau.boundingboxes; - -import de.steamwar.bausystem.features.slaves.laufbau.BlockBoundingBox; -import de.steamwar.bausystem.features.slaves.laufbau.BoundingBoxLoader; -import de.steamwar.bausystem.features.slaves.laufbau.Cuboid; -import de.steamwar.linkage.Linked; -import org.bukkit.Axis; -import org.bukkit.Material; -import org.bukkit.block.data.Orientable; - -import java.util.ArrayList; -import java.util.List; - -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.createItem; -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.pixelCuboid; - -@Linked -public class ChainBoundingBox implements BoundingBoxLoader { - - @Override - public void load() { - bottomTopChain(); - northSouthChain(); - eastWestChain(); - } - - private void bottomTopChain() { - Orientable chainBottomTop = (Orientable) Material.CHAIN.createBlockData(); - chainBottomTop.setAxis(Axis.Y); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(6.5, 0, 6.5, 3, 16, 3)); - new BlockBoundingBox(chainBottomTop, cuboidList, createItem("LAUFBAU_BLOCK_CHAIN", Material.CHAIN, "LAUFBAU_FACING_UP", "LAUFBAU_FACING_DOWN")); - } - - private void northSouthChain() { - Orientable chainBottomTop = (Orientable) Material.CHAIN.createBlockData(); - chainBottomTop.setAxis(Axis.Z); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(6.5, 6.5, 0, 3, 3, 16)); - new BlockBoundingBox(chainBottomTop, cuboidList, createItem("LAUFBAU_BLOCK_CHAIN", Material.CHAIN, "LAUFBAU_FACING_NORTH", "LAUFBAU_FACING_SOUTH")); - } - - private void eastWestChain() { - Orientable chainBottomTop = (Orientable) Material.CHAIN.createBlockData(); - chainBottomTop.setAxis(Axis.X); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 6.5, 6.5, 16, 3, 3)); - new BlockBoundingBox(chainBottomTop, cuboidList, createItem("LAUFBAU_BLOCK_CHAIN", Material.CHAIN, "LAUFBAU_FACING_EAST", "LAUFBAU_FACING_WEST")); - } -} diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/ChorusPlantBoundingBox.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/ChorusPlantBoundingBox.java deleted file mode 100644 index e1ace28e..00000000 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/ChorusPlantBoundingBox.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * This file is a part of the SteamWar software. - * - * Copyright (C) 2025 SteamWar.de-Serverteam - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package de.steamwar.bausystem.features.slaves.laufbau.boundingboxes; - -import de.steamwar.bausystem.features.slaves.laufbau.BlockBoundingBox; -import de.steamwar.bausystem.features.slaves.laufbau.BoundingBoxLoader; -import de.steamwar.bausystem.features.slaves.laufbau.Cuboid; -import de.steamwar.linkage.Linked; -import org.bukkit.Material; -import org.bukkit.block.BlockFace; -import org.bukkit.block.data.MultipleFacing; - -import java.util.ArrayList; -import java.util.List; - -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.createItem; -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.pixelCuboid; - -@Linked -public class ChorusPlantBoundingBox implements BoundingBoxLoader { - - @Override - public void load() { - for (int nx = 0; nx < 2; nx++) { - for (int ny = 0; ny < 2; ny++) { - for (int nz = 0; nz < 2; nz++) { - for (int px = 0; px < 2; px++) { - for (int py = 0; py < 2; py++) { - for (int pz = 0; pz < 2; pz++) { - MultipleFacing chorusPlant = (MultipleFacing) Material.CHORUS_PLANT.createBlockData(); - List lore = new ArrayList<>(); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(3, 3, 3, 10, 10, 10)); - if (nx == 1) { - lore.add("LAUFBAU_CONNECTION_WEST"); - chorusPlant.setFace(BlockFace.WEST, true); - cuboidList.add(pixelCuboid(0, 3, 3, 3, 10, 10)); - } - if (ny == 1) { - lore.add("LAUFBAU_CONNECTION_DOWN"); - chorusPlant.setFace(BlockFace.DOWN, true); - cuboidList.add(pixelCuboid(3, 0, 3, 10, 3, 10)); - } - if (nz == 1) { - lore.add("LAUFBAU_CONNECTION_NORTH"); - chorusPlant.setFace(BlockFace.NORTH, true); - cuboidList.add(pixelCuboid(3, 3, 0, 10, 10, 3)); - } - if (px == 1) { - lore.add("LAUFBAU_CONNECTION_EAST"); - chorusPlant.setFace(BlockFace.EAST, true); - cuboidList.add(pixelCuboid(13, 3, 3, 3, 10, 10)); - } - if (py == 1) { - lore.add("LAUFBAU_CONNECTION_UP"); - chorusPlant.setFace(BlockFace.UP, true); - cuboidList.add(pixelCuboid(3, 13, 3, 10, 3, 10)); - } - if (pz == 1) { - lore.add("LAUFBAU_CONNECTION_SOUTH"); - chorusPlant.setFace(BlockFace.SOUTH, true); - cuboidList.add(pixelCuboid(3, 3, 13, 10, 10, 3)); - } - new BlockBoundingBox(chorusPlant, cuboidList, createItem("LAUFBAU_BLOCK_CHORUS_PLANT", Material.CHORUS_PLANT, lore.toArray(new String[0]))); - } - } - } - } - } - } - } -} diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/DragonEggBoundingBox.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/DragonEggBoundingBox.java deleted file mode 100644 index 19a709f5..00000000 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/DragonEggBoundingBox.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * This file is a part of the SteamWar software. - * - * Copyright (C) 2025 SteamWar.de-Serverteam - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package de.steamwar.bausystem.features.slaves.laufbau.boundingboxes; - -import de.steamwar.bausystem.features.slaves.laufbau.BlockBoundingBox; -import de.steamwar.bausystem.features.slaves.laufbau.BoundingBoxLoader; -import de.steamwar.bausystem.features.slaves.laufbau.Cuboid; -import de.steamwar.linkage.Linked; -import org.bukkit.Material; -import org.bukkit.block.data.BlockData; - -import java.util.ArrayList; -import java.util.List; - -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.createItem; -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.pixelCuboid; - -@Linked -public class DragonEggBoundingBox implements BoundingBoxLoader { - - @Override - public void load() { - BlockData blockData = Material.DRAGON_EGG.createBlockData(); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(1, 0, 1, 14, 16, 14)); - new BlockBoundingBox(blockData, cuboidList, createItem("LAUFBAU_BLOCK_DRAGON_EGG", Material.DRAGON_EGG)); - } -} diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/DripLeafBoundingBox.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/DripLeafBoundingBox.java deleted file mode 100644 index dae1eb06..00000000 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/DripLeafBoundingBox.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * This file is a part of the SteamWar software. - * - * Copyright (C) 2025 SteamWar.de-Serverteam - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package de.steamwar.bausystem.features.slaves.laufbau.boundingboxes; - -import de.steamwar.bausystem.features.slaves.laufbau.BlockBoundingBox; -import de.steamwar.bausystem.features.slaves.laufbau.BoundingBoxLoader; -import de.steamwar.bausystem.features.slaves.laufbau.Cuboid; -import de.steamwar.linkage.Linked; -import org.bukkit.Material; -import org.bukkit.block.data.type.BigDripleaf; - -import java.util.ArrayList; -import java.util.List; - -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.createItem; -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.pixelCuboid; - -@Linked -public class DripLeafBoundingBox implements BoundingBoxLoader { - - @Override - public void load() { - tiltNone(); - tiltPartial(); - } - - private void tiltNone() { - BigDripleaf bigDripleaf = (BigDripleaf) Material.BIG_DRIPLEAF.createBlockData(); - bigDripleaf.setTilt(BigDripleaf.Tilt.NONE); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 11, 0, 16, 4, 16)); - new BlockBoundingBox(bigDripleaf, cuboidList, createItem("LAUFBAU_BLOCK_BIG_DRIP_LEAF", Material.BIG_DRIPLEAF, "LAUFBAU_TILT_NONE")); - } - - private void tiltPartial() { - BigDripleaf bigDripleaf = (BigDripleaf) Material.BIG_DRIPLEAF.createBlockData(); - bigDripleaf.setTilt(BigDripleaf.Tilt.PARTIAL); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 11, 0, 16, 2, 16)); - new BlockBoundingBox(bigDripleaf, cuboidList, createItem("LAUFBAU_BLOCK_BIG_DRIP_LEAF", Material.BIG_DRIPLEAF, "LAUFBAU_TILT_PARTIAL")); - } -} diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/FencesBoundingBox.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/FencesBoundingBox.java deleted file mode 100644 index e19a72b5..00000000 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/FencesBoundingBox.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * This file is a part of the SteamWar software. - * - * Copyright (C) 2025 SteamWar.de-Serverteam - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package de.steamwar.bausystem.features.slaves.laufbau.boundingboxes; - -import de.steamwar.bausystem.features.slaves.laufbau.BlockBoundingBox; -import de.steamwar.bausystem.features.slaves.laufbau.BoundingBoxLoader; -import de.steamwar.bausystem.features.slaves.laufbau.Cuboid; -import de.steamwar.linkage.Linked; -import org.bukkit.Material; -import org.bukkit.block.BlockFace; -import org.bukkit.block.data.type.Fence; - -import java.util.ArrayList; -import java.util.List; - -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.createItem; -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.pixelCuboid; - -@Linked -public class FencesBoundingBox implements BoundingBoxLoader { - - @Override - public void load() { - for (int nx = 0; nx < 2; nx++) { - for (int nz = 0; nz < 2; nz++) { - for (int px = 0; px < 2; px++) { - for (int pz = 0; pz < 2; pz++) { - Fence fence = (Fence) Material.NETHER_BRICK_FENCE.createBlockData(); - List lore = new ArrayList<>(); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(6, 0, 6, 4, 24, 4)); - if (nz == 1) { - lore.add("LAUFBAU_CONNECTION_NORTH"); - fence.setFace(BlockFace.NORTH, true); - cuboidList.add(pixelCuboid(6, 0, 0, 4, 24, 6)); - } - if (pz == 1) { - lore.add("LAUFBAU_CONNECTION_SOUTH"); - fence.setFace(BlockFace.SOUTH, true); - cuboidList.add(pixelCuboid(6, 0, 10, 4, 24, 6)); - } - if (nx == 1) { - lore.add("LAUFBAU_CONNECTION_WEST"); - fence.setFace(BlockFace.WEST, true); - cuboidList.add(pixelCuboid(0, 0, 6, 6, 24, 4)); - } - if (px == 1) { - lore.add("LAUFBAU_CONNECTION_EAST"); - fence.setFace(BlockFace.EAST, true); - cuboidList.add(pixelCuboid(10, 0, 6, 6, 24, 4)); - } - new BlockBoundingBox(fence, cuboidList, createItem("LAUFBAU_BLOCK_NETHER_BRICK_FENCE", Material.NETHER_BRICK_FENCE, lore.toArray(new String[0]))); - } - } - } - } - } -} diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/GrindstoneBoundingBox.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/GrindstoneBoundingBox.java deleted file mode 100644 index 59d6310d..00000000 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/GrindstoneBoundingBox.java +++ /dev/null @@ -1,157 +0,0 @@ -/* - * This file is a part of the SteamWar software. - * - * Copyright (C) 2025 SteamWar.de-Serverteam - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package de.steamwar.bausystem.features.slaves.laufbau.boundingboxes; - -import de.steamwar.bausystem.features.slaves.laufbau.BlockBoundingBox; -import de.steamwar.bausystem.features.slaves.laufbau.BoundingBoxLoader; -import de.steamwar.bausystem.features.slaves.laufbau.Cuboid; -import de.steamwar.linkage.Linked; -import org.bukkit.Material; -import org.bukkit.block.BlockFace; -import org.bukkit.block.data.FaceAttachable; -import org.bukkit.block.data.type.Grindstone; - -import java.util.ArrayList; -import java.util.List; - -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.createItem; -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.pixelCuboid; - -@Linked -public class GrindstoneBoundingBox implements BoundingBoxLoader { - - @Override - public void load() { - floorNorthGrindstone(); - floorEastGrindstone(); - - ceilingNorthGrindstone(); - ceilingEastGrindstone(); - - wallNorthGrindstone(); - wallSouthGrindstone(); - wallEastGrindstone(); - wallWestGrindstone(); - } - - public void floorNorthGrindstone() { - Grindstone grindstone = (Grindstone) Material.GRINDSTONE.createBlockData(); - grindstone.setAttachedFace(FaceAttachable.AttachedFace.FLOOR); - grindstone.setFacing(BlockFace.NORTH); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(4, 4, 2, 8, 12, 12)); - cuboidList.add(pixelCuboid(2, 0, 6, 2, 7, 4)); - cuboidList.add(pixelCuboid(12, 0, 6, 2, 7, 4)); - cuboidList.add(pixelCuboid(2, 7, 5, 2, 6, 6)); - cuboidList.add(pixelCuboid(12, 7, 5, 2, 6, 6)); - new BlockBoundingBox(grindstone, cuboidList, createItem("LAUFBAU_BLOCK_GRINDSTONE", Material.GRINDSTONE, "LAUFBAU_ATTACHMENT_FLOOR", "LAUFBAU_FACING_NORTH", "LAUFBAU_FACING_SOUTH")); - } - - public void floorEastGrindstone() { - Grindstone grindstone = (Grindstone) Material.GRINDSTONE.createBlockData(); - grindstone.setAttachedFace(FaceAttachable.AttachedFace.FLOOR); - grindstone.setFacing(BlockFace.EAST); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(2, 4, 4, 12, 12, 8)); - cuboidList.add(pixelCuboid(6, 0, 2, 4, 7, 2)); - cuboidList.add(pixelCuboid(6, 0, 12, 4, 7, 2)); - cuboidList.add(pixelCuboid(5, 7, 2, 6, 6, 2)); - cuboidList.add(pixelCuboid(5, 7, 12, 6, 6, 2)); - new BlockBoundingBox(grindstone, cuboidList, createItem("LAUFBAU_BLOCK_GRINDSTONE", Material.GRINDSTONE, "LAUFBAU_ATTACHMENT_FLOOR", "LAUFBAU_FACING_EAST", "LAUFBAU_FACING_WEST")); - } - - public void ceilingNorthGrindstone() { - Grindstone grindstone = (Grindstone) Material.GRINDSTONE.createBlockData(); - grindstone.setAttachedFace(FaceAttachable.AttachedFace.CEILING); - grindstone.setFacing(BlockFace.NORTH); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(4, 0, 2, 8, 12, 12)); - cuboidList.add(pixelCuboid(2, 9, 6, 2, 7, 4)); - cuboidList.add(pixelCuboid(12, 9, 6, 2, 7, 4)); - cuboidList.add(pixelCuboid(2, 3, 5, 2, 6, 6)); - cuboidList.add(pixelCuboid(12, 3, 5, 2, 6, 6)); - new BlockBoundingBox(grindstone, cuboidList, createItem("LAUFBAU_BLOCK_GRINDSTONE", Material.GRINDSTONE, "LAUFBAU_ATTACHMENT_CEILING", "LAUFBAU_FACING_NORTH", "LAUFBAU_FACING_SOUTH")); - } - - public void ceilingEastGrindstone() { - Grindstone grindstone = (Grindstone) Material.GRINDSTONE.createBlockData(); - grindstone.setAttachedFace(FaceAttachable.AttachedFace.CEILING); - grindstone.setFacing(BlockFace.EAST); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(2, 0, 4, 12, 12, 8)); - cuboidList.add(pixelCuboid(6, 9, 2, 4, 7, 2)); - cuboidList.add(pixelCuboid(6, 9, 12, 4, 7, 2)); - cuboidList.add(pixelCuboid(5, 3, 2, 6, 6, 2)); - cuboidList.add(pixelCuboid(5, 3, 12, 6, 6, 2)); - new BlockBoundingBox(grindstone, cuboidList, createItem("LAUFBAU_BLOCK_GRINDSTONE", Material.GRINDSTONE, "LAUFBAU_ATTACHMENT_CEILING", "LAUFBAU_FACING_EAST", "LAUFBAU_FACING_WEST")); - } - - public void wallNorthGrindstone() { - Grindstone grindstone = (Grindstone) Material.GRINDSTONE.createBlockData(); - grindstone.setAttachedFace(FaceAttachable.AttachedFace.WALL); - grindstone.setFacing(BlockFace.NORTH); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(4, 2, 0, 8, 12, 12)); - cuboidList.add(pixelCuboid(2, 6, 9, 2, 4, 7)); - cuboidList.add(pixelCuboid(12, 6, 9, 2, 4, 7)); - cuboidList.add(pixelCuboid(2, 5, 3, 2, 6, 6)); - cuboidList.add(pixelCuboid(12, 5, 3, 2, 6, 6)); - new BlockBoundingBox(grindstone, cuboidList, createItem("LAUFBAU_BLOCK_GRINDSTONE", Material.GRINDSTONE, "LAUFBAU_ATTACHMENT_WALL", "LAUFBAU_FACING_NORTH")); - } - - public void wallSouthGrindstone() { - Grindstone grindstone = (Grindstone) Material.GRINDSTONE.createBlockData(); - grindstone.setAttachedFace(FaceAttachable.AttachedFace.WALL); - grindstone.setFacing(BlockFace.SOUTH); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(4, 2, 4, 8, 12, 12)); - cuboidList.add(pixelCuboid(2, 6, 0, 2, 4, 7)); - cuboidList.add(pixelCuboid(12, 6, 0, 2, 4, 7)); - cuboidList.add(pixelCuboid(2, 5, 7, 2, 6, 6)); - cuboidList.add(pixelCuboid(12, 5, 7, 2, 6, 6)); - new BlockBoundingBox(grindstone, cuboidList, createItem("LAUFBAU_BLOCK_GRINDSTONE", Material.GRINDSTONE, "LAUFBAU_ATTACHMENT_WALL", "LAUFBAU_FACING_SOUTH")); - } - - public void wallEastGrindstone() { - Grindstone grindstone = (Grindstone) Material.GRINDSTONE.createBlockData(); - grindstone.setAttachedFace(FaceAttachable.AttachedFace.WALL); - grindstone.setFacing(BlockFace.EAST); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(4, 2, 4, 12, 12, 8)); - cuboidList.add(pixelCuboid(0, 6, 2, 7, 4, 2)); - cuboidList.add(pixelCuboid(0, 6, 12, 7, 4, 2)); - cuboidList.add(pixelCuboid(7, 5, 2, 6, 6, 2)); - cuboidList.add(pixelCuboid(7, 5, 12, 6, 6, 2)); - new BlockBoundingBox(grindstone, cuboidList, createItem("LAUFBAU_BLOCK_GRINDSTONE", Material.GRINDSTONE, "LAUFBAU_ATTACHMENT_WALL", "LAUFBAU_FACING_EAST")); - } - - public void wallWestGrindstone() { - Grindstone grindstone = (Grindstone) Material.GRINDSTONE.createBlockData(); - grindstone.setAttachedFace(FaceAttachable.AttachedFace.WALL); - grindstone.setFacing(BlockFace.WEST); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 2, 4, 12, 12, 8)); - cuboidList.add(pixelCuboid(9, 6, 2, 7, 4, 2)); - cuboidList.add(pixelCuboid(9, 6, 12, 7, 4, 2)); - cuboidList.add(pixelCuboid(3, 5, 2, 6, 6, 2)); - cuboidList.add(pixelCuboid(3, 5, 12, 6, 6, 2)); - new BlockBoundingBox(grindstone, cuboidList, createItem("LAUFBAU_BLOCK_GRINDSTONE", Material.GRINDSTONE, "LAUFBAU_ATTACHMENT_WALL", "LAUFBAU_FACING_WEST")); - } -} diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/HopperBoundingBox.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/HopperBoundingBox.java deleted file mode 100644 index 655ad055..00000000 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/HopperBoundingBox.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * This file is a part of the SteamWar software. - * - * Copyright (C) 2025 SteamWar.de-Serverteam - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package de.steamwar.bausystem.features.slaves.laufbau.boundingboxes; - -import de.steamwar.bausystem.features.slaves.laufbau.BlockBoundingBox; -import de.steamwar.bausystem.features.slaves.laufbau.BoundingBoxLoader; -import de.steamwar.bausystem.features.slaves.laufbau.Cuboid; -import de.steamwar.linkage.Linked; -import org.bukkit.Material; -import org.bukkit.block.BlockFace; -import org.bukkit.block.data.type.Hopper; - -import java.util.ArrayList; -import java.util.List; - -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.createItem; -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.pixelCuboid; - -@Linked -public class HopperBoundingBox implements BoundingBoxLoader { - - @Override - public void load() { - downHopper(); - northHopper(); - southHopper(); - eastHopper(); - westHopper(); - } - - public void downHopper() { - Hopper hopper = (Hopper) Material.HOPPER.createBlockData(); - hopper.setFacing(BlockFace.DOWN); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 10, 0, 16, 6, 16)); - cuboidList.add(pixelCuboid(4, 4, 4, 8, 6, 8)); - cuboidList.add(pixelCuboid(6, 0, 6, 4, 4, 4)); - new BlockBoundingBox(hopper, cuboidList, createItem("LAUFBAU_BLOCK_HOPPER", Material.HOPPER, "LAUFBAU_CONNECTION_FLOOR")); - } - - public void northHopper() { - Hopper hopper = (Hopper) Material.HOPPER.createBlockData(); - hopper.setFacing(BlockFace.NORTH); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 10, 0, 16, 6, 16)); - cuboidList.add(pixelCuboid(4, 4, 4, 8, 6, 8)); - cuboidList.add(pixelCuboid(6, 4, 0, 4, 4, 4)); - new BlockBoundingBox(hopper, cuboidList, createItem("LAUFBAU_BLOCK_HOPPER", Material.HOPPER, "LAUFBAU_CONNECTION_NORTH")); - } - - public void southHopper() { - Hopper hopper = (Hopper) Material.HOPPER.createBlockData(); - hopper.setFacing(BlockFace.SOUTH); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 10, 0, 16, 6, 16)); - cuboidList.add(pixelCuboid(4, 4, 4, 8, 6, 8)); - cuboidList.add(pixelCuboid(6, 4, 12, 4, 4, 4)); - new BlockBoundingBox(hopper, cuboidList, createItem("LAUFBAU_BLOCK_HOPPER", Material.HOPPER, "LAUFBAU_CONNECTION_SOUTH")); - } - - public void eastHopper() { - Hopper hopper = (Hopper) Material.HOPPER.createBlockData(); - hopper.setFacing(BlockFace.EAST); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 10, 0, 16, 6, 16)); - cuboidList.add(pixelCuboid(4, 4, 4, 8, 6, 8)); - cuboidList.add(pixelCuboid(12, 4, 6, 4, 4, 4)); - new BlockBoundingBox(hopper, cuboidList, createItem("LAUFBAU_BLOCK_HOPPER", Material.HOPPER, "LAUFBAU_CONNECTION_EAST")); - } - - public void westHopper() { - Hopper hopper = (Hopper) Material.HOPPER.createBlockData(); - hopper.setFacing(BlockFace.WEST); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 10, 0, 16, 6, 16)); - cuboidList.add(pixelCuboid(4, 4, 4, 8, 6, 8)); - cuboidList.add(pixelCuboid(0, 4, 6, 4, 4, 4)); - new BlockBoundingBox(hopper, cuboidList, createItem("LAUFBAU_BLOCK_HOPPER", Material.HOPPER, "LAUFBAU_CONNECTION_WEST")); - } -} diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/IronBarBoundingBox.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/IronBarBoundingBox.java deleted file mode 100644 index e75afb93..00000000 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/IronBarBoundingBox.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * This file is a part of the SteamWar software. - * - * Copyright (C) 2025 SteamWar.de-Serverteam - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package de.steamwar.bausystem.features.slaves.laufbau.boundingboxes; - -import de.steamwar.bausystem.features.slaves.laufbau.BlockBoundingBox; -import de.steamwar.bausystem.features.slaves.laufbau.BoundingBoxLoader; -import de.steamwar.bausystem.features.slaves.laufbau.Cuboid; -import de.steamwar.linkage.Linked; -import org.bukkit.Material; -import org.bukkit.block.BlockFace; -import org.bukkit.block.data.type.Fence; - -import java.util.ArrayList; -import java.util.List; - -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.createItem; -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.pixelCuboid; - -@Linked -public class IronBarBoundingBox implements BoundingBoxLoader { - - @Override - public void load() { - for (int nx = 0; nx < 2; nx++) { - for (int nz = 0; nz < 2; nz++) { - for (int px = 0; px < 2; px++) { - for (int pz = 0; pz < 2; pz++) { - Fence fence = (Fence) Material.IRON_BARS.createBlockData(); - List lore = new ArrayList<>(); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(7, 0, 7, 2, 16, 2)); - if (nz == 1) { - lore.add("LAUFBAU_CONNECTION_NORTH"); - fence.setFace(BlockFace.NORTH, true); - cuboidList.add(pixelCuboid(7, 0, 0, 2, 16, 7)); - } - if (pz == 1) { - lore.add("LAUFBAU_CONNECTION_SOUTH"); - fence.setFace(BlockFace.SOUTH, true); - cuboidList.add(pixelCuboid(7, 0, 9, 2, 16, 7)); - } - if (nx == 1) { - lore.add("LAUFBAU_CONNECTION_WEST"); - fence.setFace(BlockFace.WEST, true); - cuboidList.add(pixelCuboid(0, 0, 7, 7, 16, 2)); - } - if (px == 1) { - lore.add("LAUFBAU_CONNECTION_EAST"); - fence.setFace(BlockFace.EAST, true); - cuboidList.add(pixelCuboid(9, 0, 7, 7, 16, 2)); - } - new BlockBoundingBox(fence, cuboidList, createItem("LAUFBAU_BLOCK_IRON_BARS", Material.IRON_BARS, lore.toArray(new String[0]))); - } - } - } - } - } -} diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/LanternBoundingBox.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/LanternBoundingBox.java deleted file mode 100644 index 2320fbcc..00000000 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/LanternBoundingBox.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * This file is a part of the SteamWar software. - * - * Copyright (C) 2025 SteamWar.de-Serverteam - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package de.steamwar.bausystem.features.slaves.laufbau.boundingboxes; - -import de.steamwar.bausystem.features.slaves.laufbau.BlockBoundingBox; -import de.steamwar.bausystem.features.slaves.laufbau.BoundingBoxLoader; -import de.steamwar.bausystem.features.slaves.laufbau.Cuboid; -import de.steamwar.linkage.Linked; -import org.bukkit.Material; -import org.bukkit.block.data.type.Lantern; - -import java.util.ArrayList; -import java.util.List; - -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.createItem; -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.pixelCuboid; - -@Linked -public class LanternBoundingBox implements BoundingBoxLoader { - - @Override - public void load() { - lantern(); - hangingLantern(); - } - - public void lantern() { - Lantern lantern = (Lantern) Material.LANTERN.createBlockData(); - lantern.setHanging(false); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(5, 0, 5, 6, 7, 6)); - cuboidList.add(pixelCuboid(6, 7, 6, 4, 2, 4)); - new BlockBoundingBox(lantern, cuboidList, createItem("LAUFBAU_BLOCK_LANTERN", Material.LANTERN)); - } - - public void hangingLantern() { - Lantern lantern = (Lantern) Material.LANTERN.createBlockData(); - lantern.setHanging(true); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(5, 1, 5, 6, 7, 6)); - cuboidList.add(pixelCuboid(6, 8, 6, 4, 2, 4)); - new BlockBoundingBox(lantern, cuboidList, createItem("LAUFBAU_BLOCK_LANTERN", Material.LANTERN, "LAUFBAU_HANGING")); - } -} diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/LecternBoundingBox.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/LecternBoundingBox.java deleted file mode 100644 index ab49f3ab..00000000 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/LecternBoundingBox.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * This file is a part of the SteamWar software. - * - * Copyright (C) 2025 SteamWar.de-Serverteam - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package de.steamwar.bausystem.features.slaves.laufbau.boundingboxes; - -import de.steamwar.bausystem.features.slaves.laufbau.BlockBoundingBox; -import de.steamwar.bausystem.features.slaves.laufbau.BoundingBoxLoader; -import de.steamwar.bausystem.features.slaves.laufbau.Cuboid; -import de.steamwar.linkage.Linked; -import org.bukkit.Material; -import org.bukkit.block.data.BlockData; - -import java.util.ArrayList; -import java.util.List; - -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.createItem; -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.pixelCuboid; - -@Linked -public class LecternBoundingBox implements BoundingBoxLoader { - - @Override - public void load() { - BlockData blockData = Material.LECTERN.createBlockData(); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 0, 0, 16, 2, 16)); - cuboidList.add(pixelCuboid(4, 2, 4, 8, 12, 8)); - new BlockBoundingBox(blockData, cuboidList, createItem("LAUFBAU_BLOCK_LECTERN", Material.LECTERN)); - } -} diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/StairBoundingBox.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/StairBoundingBox.java deleted file mode 100644 index ff14d1b8..00000000 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/StairBoundingBox.java +++ /dev/null @@ -1,343 +0,0 @@ -/* - * This file is a part of the SteamWar software. - * - * Copyright (C) 2025 SteamWar.de-Serverteam - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package de.steamwar.bausystem.features.slaves.laufbau.boundingboxes; - -import de.steamwar.bausystem.features.slaves.laufbau.BlockBoundingBox; -import de.steamwar.bausystem.features.slaves.laufbau.BoundingBoxLoader; -import de.steamwar.bausystem.features.slaves.laufbau.Cuboid; -import de.steamwar.linkage.Linked; -import org.bukkit.Material; -import org.bukkit.block.BlockFace; -import org.bukkit.block.data.type.Stairs; - -import java.util.ArrayList; -import java.util.List; - -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.createItem; -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.pixelCuboid; - -@Linked -public class StairBoundingBox implements BoundingBoxLoader { - - @Override - public void load() { - straightBottomNorthStair(); - straightBottomSouthStair(); - straightBottomEastStair(); - straightBottomWestStair(); - - straightTopNorthStair(); - straightTopSouthStair(); - straightTopEastStair(); - straightTopWestStair(); - - outerLeftBottomNorthStair(); - outerLeftBottomSouthStair(); - outerLeftBottomEastStair(); - outerLeftBottomWestStair(); - - outerLeftTopNorthStair(); - outerLeftTopSouthStair(); - outerLeftTopEastStair(); - outerLeftTopWestStair(); - - innerLeftBottomNorthStair(); - innerLeftBottomSouthStair(); - innerLeftBottomEastStair(); - innerLeftBottomWestStair(); - - innerLeftTopNorthStair(); - innerLeftTopSouthStair(); - innerLeftTopEastStair(); - innerLeftTopWestStair(); - } - - public void straightBottomNorthStair() { - Stairs stairs = (Stairs) Material.END_STONE_BRICK_STAIRS.createBlockData(); - stairs.setShape(Stairs.Shape.STRAIGHT); - stairs.setHalf(Stairs.Half.BOTTOM); - stairs.setFacing(BlockFace.NORTH); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 0, 0, 16, 8, 16)); - cuboidList.add(pixelCuboid(0, 8, 0, 16, 8, 8)); - new BlockBoundingBox(stairs, cuboidList, createItem("LAUFBAU_BLOCK_END_STONE_BRICK_STAIRS", Material.END_STONE_BRICK_STAIRS, "LAUFBAU_SHAPE_STRAIGHT", "LAUFBAU_HALF_BOTTOM", "LAUFBAU_FACING_NORTH")); - } - - public void straightBottomSouthStair() { - Stairs stairs = (Stairs) Material.END_STONE_BRICK_STAIRS.createBlockData(); - stairs.setShape(Stairs.Shape.STRAIGHT); - stairs.setHalf(Stairs.Half.BOTTOM); - stairs.setFacing(BlockFace.SOUTH); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 0, 0, 16, 8, 16)); - cuboidList.add(pixelCuboid(0, 8, 8, 16, 8, 8)); - new BlockBoundingBox(stairs, cuboidList, createItem("LAUFBAU_BLOCK_END_STONE_BRICK_STAIRS", Material.END_STONE_BRICK_STAIRS, "LAUFBAU_SHAPE_STRAIGHT", "LAUFBAU_HALF_BOTTOM", "LAUFBAU_FACING_SOUTH")); - } - - public void straightBottomEastStair() { - Stairs stairs = (Stairs) Material.END_STONE_BRICK_STAIRS.createBlockData(); - stairs.setShape(Stairs.Shape.STRAIGHT); - stairs.setHalf(Stairs.Half.BOTTOM); - stairs.setFacing(BlockFace.EAST); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 0, 0, 16, 8, 16)); - cuboidList.add(pixelCuboid(8, 8, 0, 8, 8, 16)); - new BlockBoundingBox(stairs, cuboidList, createItem("LAUFBAU_BLOCK_END_STONE_BRICK_STAIRS", Material.END_STONE_BRICK_STAIRS, "LAUFBAU_SHAPE_STRAIGHT", "LAUFBAU_HALF_BOTTOM", "LAUFBAU_FACING_EAST")); - } - - public void straightBottomWestStair() { - Stairs stairs = (Stairs) Material.END_STONE_BRICK_STAIRS.createBlockData(); - stairs.setShape(Stairs.Shape.STRAIGHT); - stairs.setHalf(Stairs.Half.BOTTOM); - stairs.setFacing(BlockFace.WEST); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 0, 0, 16, 8, 16)); - cuboidList.add(pixelCuboid(0, 8, 0, 8, 8, 16)); - new BlockBoundingBox(stairs, cuboidList, createItem("LAUFBAU_BLOCK_END_STONE_BRICK_STAIRS", Material.END_STONE_BRICK_STAIRS, "LAUFBAU_SHAPE_STRAIGHT", "LAUFBAU_HALF_BOTTOM", "LAUFBAU_FACING_WEST")); - } - - public void straightTopNorthStair() { - Stairs stairs = (Stairs) Material.END_STONE_BRICK_STAIRS.createBlockData(); - stairs.setShape(Stairs.Shape.STRAIGHT); - stairs.setHalf(Stairs.Half.TOP); - stairs.setFacing(BlockFace.NORTH); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 8, 0, 16, 8, 16)); - cuboidList.add(pixelCuboid(0, 0, 0, 16, 8, 8)); - new BlockBoundingBox(stairs, cuboidList, createItem("LAUFBAU_BLOCK_END_STONE_BRICK_STAIRS", Material.END_STONE_BRICK_STAIRS, "LAUFBAU_SHAPE_STRAIGHT", "LAUFBAU_HALF_TOP", "LAUFBAU_FACING_NORTH")); - } - - public void straightTopSouthStair() { - Stairs stairs = (Stairs) Material.END_STONE_BRICK_STAIRS.createBlockData(); - stairs.setShape(Stairs.Shape.STRAIGHT); - stairs.setHalf(Stairs.Half.TOP); - stairs.setFacing(BlockFace.SOUTH); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 8, 0, 16, 8, 16)); - cuboidList.add(pixelCuboid(0, 0, 8, 16, 8, 8)); - new BlockBoundingBox(stairs, cuboidList, createItem("LAUFBAU_BLOCK_END_STONE_BRICK_STAIRS", Material.END_STONE_BRICK_STAIRS, "LAUFBAU_SHAPE_STRAIGHT", "LAUFBAU_HALF_TOP", "LAUFBAU_FACING_SOUTH")); - } - - public void straightTopEastStair() { - Stairs stairs = (Stairs) Material.END_STONE_BRICK_STAIRS.createBlockData(); - stairs.setShape(Stairs.Shape.STRAIGHT); - stairs.setHalf(Stairs.Half.TOP); - stairs.setFacing(BlockFace.EAST); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 8, 0, 16, 8, 16)); - cuboidList.add(pixelCuboid(8, 0, 0, 8, 8, 16)); - new BlockBoundingBox(stairs, cuboidList, createItem("LAUFBAU_BLOCK_END_STONE_BRICK_STAIRS", Material.END_STONE_BRICK_STAIRS, "LAUFBAU_SHAPE_STRAIGHT", "LAUFBAU_HALF_TOP", "LAUFBAU_FACING_EAST")); - } - - public void straightTopWestStair() { - Stairs stairs = (Stairs) Material.END_STONE_BRICK_STAIRS.createBlockData(); - stairs.setShape(Stairs.Shape.STRAIGHT); - stairs.setHalf(Stairs.Half.TOP); - stairs.setFacing(BlockFace.WEST); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 8, 0, 16, 8, 16)); - cuboidList.add(pixelCuboid(0, 0, 0, 8, 8, 16)); - new BlockBoundingBox(stairs, cuboidList, createItem("LAUFBAU_BLOCK_END_STONE_BRICK_STAIRS", Material.END_STONE_BRICK_STAIRS, "LAUFBAU_SHAPE_STRAIGHT", "LAUFBAU_HALF_TOP", "LAUFBAU_FACING_WEST")); - } - - public void outerLeftBottomNorthStair() { - Stairs stairs = (Stairs) Material.END_STONE_BRICK_STAIRS.createBlockData(); - stairs.setShape(Stairs.Shape.OUTER_LEFT); - stairs.setHalf(Stairs.Half.BOTTOM); - stairs.setFacing(BlockFace.NORTH); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 0, 0, 16, 8, 16)); - cuboidList.add(pixelCuboid(0, 8, 0, 8, 8, 8)); - new BlockBoundingBox(stairs, cuboidList, createItem("LAUFBAU_BLOCK_END_STONE_BRICK_STAIRS", Material.END_STONE_BRICK_STAIRS, "LAUFBAU_SHAPE_OUTER_LEFT", "LAUFBAU_HALF_BOTTOM", "LAUFBAU_FACING_NORTH")); - } - - public void outerLeftBottomSouthStair() { - Stairs stairs = (Stairs) Material.END_STONE_BRICK_STAIRS.createBlockData(); - stairs.setShape(Stairs.Shape.OUTER_LEFT); - stairs.setHalf(Stairs.Half.BOTTOM); - stairs.setFacing(BlockFace.SOUTH); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 0, 0, 16, 8, 16)); - cuboidList.add(pixelCuboid(8, 8, 8, 8, 8, 8)); - new BlockBoundingBox(stairs, cuboidList, createItem("LAUFBAU_BLOCK_END_STONE_BRICK_STAIRS", Material.END_STONE_BRICK_STAIRS, "LAUFBAU_SHAPE_OUTER_LEFT", "LAUFBAU_HALF_BOTTOM", "LAUFBAU_FACING_SOUTH")); - } - - public void outerLeftBottomEastStair() { - Stairs stairs = (Stairs) Material.END_STONE_BRICK_STAIRS.createBlockData(); - stairs.setShape(Stairs.Shape.OUTER_LEFT); - stairs.setHalf(Stairs.Half.BOTTOM); - stairs.setFacing(BlockFace.EAST); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 0, 0, 16, 8, 16)); - cuboidList.add(pixelCuboid(8, 8, 0, 8, 8, 8)); - new BlockBoundingBox(stairs, cuboidList, createItem("LAUFBAU_BLOCK_END_STONE_BRICK_STAIRS", Material.END_STONE_BRICK_STAIRS, "LAUFBAU_SHAPE_OUTER_LEFT", "LAUFBAU_HALF_BOTTOM", "LAUFBAU_FACING_EAST")); - } - - public void outerLeftBottomWestStair() { - Stairs stairs = (Stairs) Material.END_STONE_BRICK_STAIRS.createBlockData(); - stairs.setShape(Stairs.Shape.OUTER_LEFT); - stairs.setHalf(Stairs.Half.BOTTOM); - stairs.setFacing(BlockFace.WEST); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 0, 0, 16, 8, 16)); - cuboidList.add(pixelCuboid(0, 8, 8, 8, 8, 8)); - new BlockBoundingBox(stairs, cuboidList, createItem("LAUFBAU_BLOCK_END_STONE_BRICK_STAIRS", Material.END_STONE_BRICK_STAIRS, "LAUFBAU_SHAPE_OUTER_LEFT", "LAUFBAU_HALF_BOTTOM", "LAUFBAU_FACING_WEST")); - } - - public void outerLeftTopNorthStair() { - Stairs stairs = (Stairs) Material.END_STONE_BRICK_STAIRS.createBlockData(); - stairs.setShape(Stairs.Shape.OUTER_LEFT); - stairs.setHalf(Stairs.Half.TOP); - stairs.setFacing(BlockFace.NORTH); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 8, 0, 16, 8, 16)); - cuboidList.add(pixelCuboid(0, 0, 0, 8, 8, 8)); - new BlockBoundingBox(stairs, cuboidList, createItem("LAUFBAU_BLOCK_END_STONE_BRICK_STAIRS", Material.END_STONE_BRICK_STAIRS, "LAUFBAU_SHAPE_OUTER_LEFT", "LAUFBAU_HALF_TOP", "LAUFBAU_FACING_NORTH")); - } - - public void outerLeftTopSouthStair() { - Stairs stairs = (Stairs) Material.END_STONE_BRICK_STAIRS.createBlockData(); - stairs.setShape(Stairs.Shape.OUTER_LEFT); - stairs.setHalf(Stairs.Half.TOP); - stairs.setFacing(BlockFace.SOUTH); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 8, 0, 16, 8, 16)); - cuboidList.add(pixelCuboid(8, 0, 8, 8, 8, 8)); - new BlockBoundingBox(stairs, cuboidList, createItem("LAUFBAU_BLOCK_END_STONE_BRICK_STAIRS", Material.END_STONE_BRICK_STAIRS, "LAUFBAU_SHAPE_OUTER_LEFT", "LAUFBAU_HALF_TOP", "LAUFBAU_FACING_SOUTH")); - } - - public void outerLeftTopEastStair() { - Stairs stairs = (Stairs) Material.END_STONE_BRICK_STAIRS.createBlockData(); - stairs.setShape(Stairs.Shape.OUTER_LEFT); - stairs.setHalf(Stairs.Half.TOP); - stairs.setFacing(BlockFace.EAST); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 8, 0, 16, 8, 16)); - cuboidList.add(pixelCuboid(8, 0, 0, 8, 8, 8)); - new BlockBoundingBox(stairs, cuboidList, createItem("LAUFBAU_BLOCK_END_STONE_BRICK_STAIRS", Material.END_STONE_BRICK_STAIRS, "LAUFBAU_SHAPE_OUTER_LEFT", "LAUFBAU_HALF_TOP", "LAUFBAU_FACING_EAST")); - } - - public void outerLeftTopWestStair() { - Stairs stairs = (Stairs) Material.END_STONE_BRICK_STAIRS.createBlockData(); - stairs.setShape(Stairs.Shape.OUTER_LEFT); - stairs.setHalf(Stairs.Half.TOP); - stairs.setFacing(BlockFace.WEST); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 8, 0, 16, 8, 16)); - cuboidList.add(pixelCuboid(0, 0, 8, 8, 8, 8)); - new BlockBoundingBox(stairs, cuboidList, createItem("LAUFBAU_BLOCK_END_STONE_BRICK_STAIRS", Material.END_STONE_BRICK_STAIRS, "LAUFBAU_SHAPE_OUTER_LEFT", "LAUFBAU_HALF_TOP", "LAUFBAU_FACING_WEST")); - } - - public void innerLeftBottomNorthStair() { - Stairs stairs = (Stairs) Material.END_STONE_BRICK_STAIRS.createBlockData(); - stairs.setShape(Stairs.Shape.INNER_LEFT); - stairs.setHalf(Stairs.Half.BOTTOM); - stairs.setFacing(BlockFace.NORTH); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 0, 0, 16, 8, 16)); - cuboidList.add(pixelCuboid(0, 8, 0, 16, 8, 8)); - cuboidList.add(pixelCuboid(0, 8, 8, 8, 8, 8)); - new BlockBoundingBox(stairs, cuboidList, createItem("LAUFBAU_BLOCK_END_STONE_BRICK_STAIRS", Material.END_STONE_BRICK_STAIRS, "LAUFBAU_SHAPE_INNER_LEFT", "LAUFBAU_HALF_BOTTOM", "LAUFBAU_FACING_NORTH")); - } - - public void innerLeftBottomSouthStair() { - Stairs stairs = (Stairs) Material.END_STONE_BRICK_STAIRS.createBlockData(); - stairs.setShape(Stairs.Shape.INNER_LEFT); - stairs.setHalf(Stairs.Half.BOTTOM); - stairs.setFacing(BlockFace.SOUTH); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 0, 0, 16, 8, 16)); - cuboidList.add(pixelCuboid(0, 8, 8, 16, 8, 8)); - cuboidList.add(pixelCuboid(8, 8, 0, 8, 8, 8)); - new BlockBoundingBox(stairs, cuboidList, createItem("LAUFBAU_BLOCK_END_STONE_BRICK_STAIRS", Material.END_STONE_BRICK_STAIRS, "LAUFBAU_SHAPE_INNER_LEFT", "LAUFBAU_HALF_BOTTOM", "LAUFBAU_FACING_SOUTH")); - } - - public void innerLeftBottomEastStair() { - Stairs stairs = (Stairs) Material.END_STONE_BRICK_STAIRS.createBlockData(); - stairs.setShape(Stairs.Shape.INNER_LEFT); - stairs.setHalf(Stairs.Half.BOTTOM); - stairs.setFacing(BlockFace.EAST); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 0, 0, 16, 8, 16)); - cuboidList.add(pixelCuboid(0, 8, 0, 16, 8, 8)); - cuboidList.add(pixelCuboid(8, 8, 8, 8, 8, 8)); - new BlockBoundingBox(stairs, cuboidList, createItem("LAUFBAU_BLOCK_END_STONE_BRICK_STAIRS", Material.END_STONE_BRICK_STAIRS, "LAUFBAU_SHAPE_INNER_LEFT", "LAUFBAU_HALF_BOTTOM", "LAUFBAU_FACING_EAST")); - } - - public void innerLeftBottomWestStair() { - Stairs stairs = (Stairs) Material.END_STONE_BRICK_STAIRS.createBlockData(); - stairs.setShape(Stairs.Shape.INNER_LEFT); - stairs.setHalf(Stairs.Half.BOTTOM); - stairs.setFacing(BlockFace.WEST); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 0, 0, 16, 8, 16)); - cuboidList.add(pixelCuboid(0, 8, 8, 16, 8, 8)); - cuboidList.add(pixelCuboid(0, 8, 0, 8, 8, 8)); - new BlockBoundingBox(stairs, cuboidList, createItem("LAUFBAU_BLOCK_END_STONE_BRICK_STAIRS", Material.END_STONE_BRICK_STAIRS, "LAUFBAU_SHAPE_INNER_LEFT", "LAUFBAU_HALF_BOTTOM", "LAUFBAU_FACING_WEST")); - } - - public void innerLeftTopNorthStair() { - Stairs stairs = (Stairs) Material.END_STONE_BRICK_STAIRS.createBlockData(); - stairs.setShape(Stairs.Shape.INNER_LEFT); - stairs.setHalf(Stairs.Half.TOP); - stairs.setFacing(BlockFace.NORTH); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 8, 0, 16, 8, 16)); - cuboidList.add(pixelCuboid(0, 0, 0, 16, 8, 8)); - cuboidList.add(pixelCuboid(0, 0, 8, 8, 8, 8)); - new BlockBoundingBox(stairs, cuboidList, createItem("LAUFBAU_BLOCK_END_STONE_BRICK_STAIRS", Material.END_STONE_BRICK_STAIRS, "LAUFBAU_SHAPE_INNER_LEFT", "LAUFBAU_HALF_TOP", "LAUFBAU_FACING_NORTH")); - } - - public void innerLeftTopSouthStair() { - Stairs stairs = (Stairs) Material.END_STONE_BRICK_STAIRS.createBlockData(); - stairs.setShape(Stairs.Shape.INNER_LEFT); - stairs.setHalf(Stairs.Half.TOP); - stairs.setFacing(BlockFace.SOUTH); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 8, 0, 16, 8, 16)); - cuboidList.add(pixelCuboid(0, 0, 8, 16, 8, 8)); - cuboidList.add(pixelCuboid(8, 0, 0, 8, 8, 8)); - new BlockBoundingBox(stairs, cuboidList, createItem("LAUFBAU_BLOCK_END_STONE_BRICK_STAIRS", Material.END_STONE_BRICK_STAIRS, "LAUFBAU_SHAPE_INNER_LEFT", "LAUFBAU_HALF_TOP", "LAUFBAU_FACING_SOUTH")); - } - - public void innerLeftTopEastStair() { - Stairs stairs = (Stairs) Material.END_STONE_BRICK_STAIRS.createBlockData(); - stairs.setShape(Stairs.Shape.INNER_LEFT); - stairs.setHalf(Stairs.Half.TOP); - stairs.setFacing(BlockFace.EAST); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 8, 0, 16, 8, 16)); - cuboidList.add(pixelCuboid(0, 0, 0, 16, 8, 8)); - cuboidList.add(pixelCuboid(8, 0, 8, 8, 8, 8)); - new BlockBoundingBox(stairs, cuboidList, createItem("LAUFBAU_BLOCK_END_STONE_BRICK_STAIRS", Material.END_STONE_BRICK_STAIRS, "LAUFBAU_SHAPE_INNER_LEFT", "LAUFBAU_HALF_TOP", "LAUFBAU_FACING_EAST")); - } - - public void innerLeftTopWestStair() { - Stairs stairs = (Stairs) Material.END_STONE_BRICK_STAIRS.createBlockData(); - stairs.setShape(Stairs.Shape.INNER_LEFT); - stairs.setHalf(Stairs.Half.TOP); - stairs.setFacing(BlockFace.WEST); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(0, 8, 0, 16, 8, 16)); - cuboidList.add(pixelCuboid(0, 0, 8, 16, 8, 8)); - cuboidList.add(pixelCuboid(0, 0, 0, 8, 8, 8)); - new BlockBoundingBox(stairs, cuboidList, createItem("LAUFBAU_BLOCK_END_STONE_BRICK_STAIRS", Material.END_STONE_BRICK_STAIRS, "LAUFBAU_SHAPE_INNER_LEFT", "LAUFBAU_HALF_TOP", "LAUFBAU_FACING_WEST")); - } -} diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/WallBoundingBox.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/WallBoundingBox.java deleted file mode 100644 index dffe873d..00000000 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/WallBoundingBox.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * This file is a part of the SteamWar software. - * - * Copyright (C) 2025 SteamWar.de-Serverteam - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package de.steamwar.bausystem.features.slaves.laufbau.boundingboxes; - -import de.steamwar.bausystem.features.slaves.laufbau.BlockBoundingBox; -import de.steamwar.bausystem.features.slaves.laufbau.BoundingBoxLoader; -import de.steamwar.bausystem.features.slaves.laufbau.Cuboid; -import de.steamwar.linkage.Linked; -import org.bukkit.Material; -import org.bukkit.block.BlockFace; -import org.bukkit.block.data.type.Wall; - -import java.util.ArrayList; -import java.util.List; - -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.createItem; -import static de.steamwar.bausystem.features.slaves.laufbau.LaufbauUtils.pixelCuboid; - -@Linked -public class WallBoundingBox implements BoundingBoxLoader { - - @Override - public void load() { - v18(); - } - - private void v18() { - for (int nx = 0; nx < 2; nx++) { - for (int nz = 0; nz < 2; nz++) { - for (int px = 0; px < 2; px++) { - for (int pz = 0; pz < 2; pz++) { - Wall fence = (Wall) Material.END_STONE_BRICK_WALL.createBlockData(); - List lore = new ArrayList<>(); - List cuboidList = new ArrayList<>(); - cuboidList.add(pixelCuboid(4, 0, 4, 8, 24, 8)); - if (nz == 1) { - lore.add("LAUFBAU_CONNECTION_NORTH"); - fence.setHeight(BlockFace.NORTH, Wall.Height.LOW); - cuboidList.add(pixelCuboid(5, 0, 0, 6, 24, 4)); - } - if (pz == 1) { - lore.add("LAUFBAU_CONNECTION_SOUTH"); - fence.setHeight(BlockFace.SOUTH, Wall.Height.LOW); - cuboidList.add(pixelCuboid(5, 0, 12, 6, 24, 4)); - } - if (nx == 1) { - lore.add("LAUFBAU_CONNECTION_WEST"); - fence.setHeight(BlockFace.WEST, Wall.Height.LOW); - cuboidList.add(pixelCuboid(0, 0, 5, 4, 24, 6)); - } - if (px == 1) { - lore.add("LAUFBAU_CONNECTION_EAST"); - fence.setHeight(BlockFace.EAST, Wall.Height.LOW); - cuboidList.add(pixelCuboid(12, 0, 5, 4, 24, 6)); - } - new BlockBoundingBox(fence, cuboidList, createItem("LAUFBAU_BLOCK_END_STONE_BRICK_WALL", Material.END_STONE_BRICK_WALL, lore.toArray(new String[0]))); - } - } - } - } - } -} diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/converter/LaufbauConfigV1ToV2Converter.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/converter/LaufbauConfigV1ToV2Converter.java deleted file mode 100644 index 6e1c7aac..00000000 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/converter/LaufbauConfigV1ToV2Converter.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * This file is a part of the SteamWar software. - * - * Copyright (C) 2026 SteamWar.de-Serverteam - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package de.steamwar.bausystem.features.slaves.laufbau.converter; - -import de.steamwar.bausystem.config.ConfigConverter; -import de.steamwar.bausystem.features.slaves.laufbau.LaufbauConfig; -import de.steamwar.bausystem.features.slaves.laufbau.LaufbauConfigV1; - -@Deprecated -public class LaufbauConfigV1ToV2Converter implements ConfigConverter { - - @Override - public int version() { - return LaufbauConfigV1.VERSION; - } - - @Override - public LaufbauConfig convert(LaufbauConfigV1 old) { - LaufbauConfig config = new LaufbauConfig(); - config.getDeactivated().addAll(old.getDeactivated()); - return config; - } -} diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/states/CreatingLaufState.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/states/CreatingLaufState.java index 82b0f5f7..ff2b6d3b 100644 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/states/CreatingLaufState.java +++ b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/states/CreatingLaufState.java @@ -145,7 +145,6 @@ public class CreatingLaufState implements LaufbauState { } try { BaseBlock block = BukkitAdapter.adapt(highestBlockBoundingBox.blockData).toBaseBlock(); - if (highestBlockBoundingBox.blockConsumer != null) highestBlockBoundingBox.blockConsumer.accept(block); editSession.setBlock(BukkitAdapter.asBlockVector(location), block); } catch (MaxChangedBlocksException e) { e.printStackTrace();