From abfe37dbb9b234893cf65519e3e03340ef24d506 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Mon, 19 Sep 2022 17:06:30 +0200 Subject: [PATCH] Add 1.19 blocks and sizes to laufbau Signed-off-by: yoyosource --- BauSystem_Main/src/BauSystem.properties | 16 ++ BauSystem_Main/src/BauSystem_de.properties | 12 + .../slaves/laufbau/BlockBoundingBox.java | 18 ++ .../slaves/laufbau/LaufbauLazyInit.java | 11 + .../boundingboxes/AmethystBoundingBox.java | 259 ++++++++++++++++++ .../boundingboxes/AzaleaBoundingBox.java | 44 +++ .../boundingboxes/CandleBoundingBox.java | 60 ++++ .../boundingboxes/ChainBoundingBox.java | 67 +++++ .../boundingboxes/DragonEggBoundingBox.java | 43 +++ .../boundingboxes/DripLeafBoundingBox.java | 57 ++++ .../boundingboxes/LecternBoundingBox.java | 44 +++ 11 files changed, 631 insertions(+) create mode 100644 BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/AmethystBoundingBox.java create mode 100644 BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/AzaleaBoundingBox.java create mode 100644 BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/CandleBoundingBox.java create mode 100644 BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/ChainBoundingBox.java create mode 100644 BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/DragonEggBoundingBox.java create mode 100644 BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/DripLeafBoundingBox.java create mode 100644 BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/LecternBoundingBox.java diff --git a/BauSystem_Main/src/BauSystem.properties b/BauSystem_Main/src/BauSystem.properties index f6d05410..d0ded149 100644 --- a/BauSystem_Main/src/BauSystem.properties +++ b/BauSystem_Main/src/BauSystem.properties @@ -1127,6 +1127,7 @@ LAUFBAU_SETTINGS_GUI_BACK = §eBack LAUFBAU_SETTINGS_TOGGLE = §eClick §8-§7 Toggle LAUFBAU_SETTINGS_ADVANCED = §eMiddle-Click §8-§7 Advanced settings +LAUFBAU_BLOCK_COBWEB §eCobweb LAUFBAU_BLOCK_GRASS_PATH = §eGrass Path LAUFBAU_BLOCK_SOUL_SAND = §eSoul Sand LAUFBAU_BLOCK_COCOA = §eCocoa @@ -1145,6 +1146,7 @@ LAUFBAU_BLOCK_IRON_TRAPDOOR = §eIron Trapdoor LAUFBAU_BLOCK_LILY_PAD = §eLily Pad LAUFBAU_BLOCK_WHITE_CARPET = §eCarpet LAUFBAU_BLOCK_END_ROD = §eEnd Rod +LAUFBAU_BLOCK_LIGHTNING_ROD = §eLightning Rod LAUFBAU_BLOCK_CONDUIT = §eConduit LAUFBAU_BLOCK_BREWING_STAND = §eBrewing Stand LAUFBAU_BLOCK_BELL = §eBell @@ -1156,6 +1158,17 @@ LAUFBAU_BLOCK_CHORUS_PLANT = §eChorus Plant LAUFBAU_BLOCK_NETHER_BRICK_FENCE = §eNether Brick Fence LAUFBAU_BLOCK_IRON_BARS = §eIron Bars LAUFBAU_BLOCK_END_STONE_BRICK_WALL = §eEndstone Brick Walls +LAUFBAU_BLOCK_SMALL_AMETHYST_BUD = §eSmall Amethyst Bud +LAUFBAU_BLOCK_MEDIUM_AMETHYST_BUD = §eMedium Amethyst Bud +LAUFBAU_BLOCK_LARGE_AMETHYST_BUD = §eLarge Amethyst Bud +LAUFBAU_BLOCK_AMETHYST_CLUSTER = §eAmethyst Cluster +LAUFBAU_BLOCK_CHAIN = §eChain +LAUFBAU_BLOCK_BIG_DRIP_LEAF = §eBig Drip Leaf +LAUFBAU_BLOCK_DRAGON_EGG = §eDragon Egg +LAUFBAU_BLOCK_AZALEA = §eAzalea +LAUFBAU_BLOCK_CANDLE = §eCandle +LAUFBAU_BLOCK_CANDLE_CAKE = §eCake with Candle +LAUFBAU_BLOCK_LECTERN = §eLectern LAUFBAU_FACING_NORTH = §8-§7 Facing North LAUFBAU_FACING_SOUTH = §8-§7 Facing South @@ -1203,6 +1216,9 @@ LAUFBAU_SHAPE_STRAIGHT = §8-§7 Shape straight LAUFBAU_SHAPE_OUTER_LEFT = §8-§7 Shape outer links LAUFBAU_SHAPE_INNER_LEFT = §8-§7 Shape inner left +LAUFBAU_TILT_NONE = §8-§7 Tilt none +LAUFBAU_TILT_PARTIAL = §8-§7 Tilt partial + # UTILS SELECT_HELP = §8/§eselect §8[§7RegionsTyp§8] §8- §7Select a region type SELECT_EXTENSION_HELP = §8/§eselect §8[§7RegionsTyp§8] §8[§7Extension§8] §8- §7Select a region type with or without extension diff --git a/BauSystem_Main/src/BauSystem_de.properties b/BauSystem_Main/src/BauSystem_de.properties index 77efe0ee..e549660d 100644 --- a/BauSystem_Main/src/BauSystem_de.properties +++ b/BauSystem_Main/src/BauSystem_de.properties @@ -1106,6 +1106,7 @@ LAUFBAU_SETTINGS_GUI_BACK = §eBack LAUFBAU_SETTINGS_TOGGLE = §eClick §8-§7 Toggle LAUFBAU_SETTINGS_ADVANCED = §eMiddle-Click §8-§7 Erweiterte Einstellung +LAUFBAU_BLOCK_COBWEB §eCobweb LAUFBAU_BLOCK_GRASS_PATH = §eGrass Path LAUFBAU_BLOCK_SOUL_SAND = §eSoul Sand LAUFBAU_BLOCK_COCOA = §eCocoa @@ -1124,6 +1125,7 @@ LAUFBAU_BLOCK_IRON_TRAPDOOR = §eIron Trapdoor LAUFBAU_BLOCK_LILY_PAD = §eLily Pad LAUFBAU_BLOCK_WHITE_CARPET = §eCarpet LAUFBAU_BLOCK_END_ROD = §eEnd Rod +LAUFBAU_BLOCK_LIGHTNING_ROD = §eLightning Rod LAUFBAU_BLOCK_CONDUIT = §eConduit LAUFBAU_BLOCK_BREWING_STAND = §eBrewing Stand LAUFBAU_BLOCK_BELL = §eBell @@ -1135,6 +1137,13 @@ LAUFBAU_BLOCK_CHORUS_PLANT = §eChorus Plant LAUFBAU_BLOCK_NETHER_BRICK_FENCE = §eNether Brick Fence LAUFBAU_BLOCK_IRON_BARS = §eIron Bars LAUFBAU_BLOCK_END_STONE_BRICK_WALL = §eEndstone Brick Walls +LAUFBAU_BLOCK_CHAIN = §eChain +LAUFBAU_BLOCK_BIG_DRIP_LEAF = §eBig Drip Leaf +LAUFBAU_BLOCK_DRAGON_EGG = §eDragon Egg +LAUFBAU_BLOCK_AZALEA = §eAzalea +LAUFBAU_BLOCK_CANDLE = §eKerze +LAUFBAU_BLOCK_CANDLE_CAKE = §eKuchen mit Kerze +LAUFBAU_BLOCK_LECTERN = §eLectern LAUFBAU_FACING_NORTH = §8-§7 Richtung Norden LAUFBAU_FACING_SOUTH = §8-§7 Richtung Süden @@ -1182,6 +1191,9 @@ LAUFBAU_SHAPE_STRAIGHT = §8-§7 Form gerade LAUFBAU_SHAPE_OUTER_LEFT = §8-§7 Form äußere links LAUFBAU_SHAPE_INNER_LEFT = §8-§7 Form innere links +LAUFBAU_TILT_NONE = §8-§7 Neigung keine +LAUFBAU_TILT_PARTIAL = §8-§7 Neigung teilweise + # UTILS SELECT_HELP = §8/§eselect §8[§7RegionsTyp§8] §8- §7Wähle einen RegionsTyp aus SELECT_EXTENSION_HELP = §8/§eselect §8[§7RegionsTyp§8] §8[§7Extension§8] §8- §7Wähle einen RegionsTyp aus mit oder ohne Extension diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/BlockBoundingBox.java b/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/BlockBoundingBox.java index 0573e253..315b3c4b 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/BlockBoundingBox.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/BlockBoundingBox.java @@ -20,6 +20,7 @@ package de.steamwar.bausystem.features.slaves.laufbau; import de.steamwar.bausystem.utils.NMSWrapper; +import de.steamwar.core.Core; import de.steamwar.inventory.SWItem; import lombok.Getter; import lombok.ToString; @@ -51,6 +52,8 @@ public class BlockBoundingBox { 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")); } public static List elements = new ArrayList<>(); @@ -85,6 +88,7 @@ public class BlockBoundingBox { 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(NMSWrapper.impl.pathMaterial().createBlockData(), 0, 0, 0, 16, 15, 16, createItem("LAUFBAU_BLOCK_GRASS_PATH", NMSWrapper.impl.pathMaterial())); @@ -222,6 +226,20 @@ public class BlockBoundingBox { 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")); + if (Core.getVersion() >= 19) { + Directional lightningRodBottomTop = (Directional) Material.LIGHTNING_ROD.createBlockData(); + endRodBottomTop.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(); + endRodNorthSouth.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(); + endRodEastWest.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)); diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/LaufbauLazyInit.java b/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/LaufbauLazyInit.java index a4ac08ab..d81655a1 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/LaufbauLazyInit.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/LaufbauLazyInit.java @@ -1,6 +1,7 @@ package de.steamwar.bausystem.features.slaves.laufbau; import de.steamwar.bausystem.features.slaves.laufbau.boundingboxes.*; +import de.steamwar.core.Core; import lombok.experimental.UtilityClass; @UtilityClass @@ -20,5 +21,15 @@ public class LaufbauLazyInit { new LanternBoundingBox().enable(); new StairBoundingBox().enable(); new WallBoundingBox().enable(); + new LecternBoundingBox().enable(); + + if (Core.getVersion() >= 19) { + new AmethystBoundingBox().enable(); + new ChainBoundingBox().enable(); + new DripLeafBoundingBox().enable(); + new DragonEggBoundingBox().enable(); + new AzaleaBoundingBox().enable(); + new CandleBoundingBox().enable(); + } } } diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/AmethystBoundingBox.java b/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/AmethystBoundingBox.java new file mode 100644 index 00000000..824c103f --- /dev/null +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/AmethystBoundingBox.java @@ -0,0 +1,259 @@ +/* + * This file is a part of the SteamWar software. + * + * Copyright (C) 2022 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.Cuboid; +import de.steamwar.bausystem.linkage.Enable; +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; + +public class AmethystBoundingBox implements Enable { + + @Override + public void enable() { + 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_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/AzaleaBoundingBox.java b/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/AzaleaBoundingBox.java new file mode 100644 index 00000000..f9ceda2d --- /dev/null +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/AzaleaBoundingBox.java @@ -0,0 +1,44 @@ +/* + * This file is a part of the SteamWar software. + * + * Copyright (C) 2022 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.Cuboid; +import de.steamwar.bausystem.linkage.Enable; +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; + +public class AzaleaBoundingBox implements Enable { + + @Override + public void enable() { + 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_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/CandleBoundingBox.java b/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/CandleBoundingBox.java new file mode 100644 index 00000000..9642ab32 --- /dev/null +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/CandleBoundingBox.java @@ -0,0 +1,60 @@ +/* + * This file is a part of the SteamWar software. + * + * Copyright (C) 2022 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.Cuboid; +import de.steamwar.bausystem.linkage.Enable; +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; + +public class CandleBoundingBox implements Enable { + + @Override + public void enable() { + 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_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/ChainBoundingBox.java b/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/ChainBoundingBox.java new file mode 100644 index 00000000..bcc6032b --- /dev/null +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/ChainBoundingBox.java @@ -0,0 +1,67 @@ +/* + * This file is a part of the SteamWar software. + * + * Copyright (C) 2022 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.Cuboid; +import de.steamwar.bausystem.linkage.Enable; +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; + +public class ChainBoundingBox implements Enable { + + @Override + public void enable() { + 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_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/DragonEggBoundingBox.java b/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/DragonEggBoundingBox.java new file mode 100644 index 00000000..ab3668ad --- /dev/null +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/DragonEggBoundingBox.java @@ -0,0 +1,43 @@ +/* + * This file is a part of the SteamWar software. + * + * Copyright (C) 2022 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.Cuboid; +import de.steamwar.bausystem.linkage.Enable; +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; + +public class DragonEggBoundingBox implements Enable { + + @Override + public void enable() { + 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_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/DripLeafBoundingBox.java b/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/DripLeafBoundingBox.java new file mode 100644 index 00000000..488476bb --- /dev/null +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/DripLeafBoundingBox.java @@ -0,0 +1,57 @@ +/* + * This file is a part of the SteamWar software. + * + * Copyright (C) 2022 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.Cuboid; +import de.steamwar.bausystem.linkage.Enable; +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; + +public class DripLeafBoundingBox implements Enable { + + @Override + public void enable() { + 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_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/LecternBoundingBox.java b/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/LecternBoundingBox.java new file mode 100644 index 00000000..aa886b36 --- /dev/null +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/slaves/laufbau/boundingboxes/LecternBoundingBox.java @@ -0,0 +1,44 @@ +/* + * This file is a part of the SteamWar software. + * + * Copyright (C) 2022 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.Cuboid; +import de.steamwar.bausystem.linkage.Enable; +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; + +public class LecternBoundingBox implements Enable { + + @Override + public void enable() { + 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)); + } +}