diff --git a/src/main/java/de/jeff_media/customblocks/CustomBlock.java b/src/main/java/de/jeff_media/customblocks/CustomBlock.java index 3374913..6d91c4a 100644 --- a/src/main/java/de/jeff_media/customblocks/CustomBlock.java +++ b/src/main/java/de/jeff_media/customblocks/CustomBlock.java @@ -9,16 +9,18 @@ import org.bukkit.block.Block; import org.bukkit.block.data.BlockData; import org.bukkit.entity.Entity; +import org.bukkit.inventory.ItemStack; import org.bukkit.plugin.Plugin; import java.util.*; import java.util.stream.Collectors; +@Getter public abstract class CustomBlock /*implements ConfigurationSerializable */{ - @Getter @Setter protected Block block; - @Getter @Setter protected BlockData originalBlockData; - @Getter protected List entities = new ArrayList<>(); + @Setter protected Block block; + @Setter protected BlockData originalBlockData; + protected List entities = new ArrayList<>(); public static CustomBlock fromStringOrDefault(String fullId, Material fallback) { try { @@ -103,13 +105,17 @@ public void remove(boolean unsetBlock) { entities.clear(); } + public ItemStack toItemStack(){ + return null; + } + public CustomBlock(String id) { this.id = id; - }; + } public abstract String getNamespace(); - @Getter protected final String id; + protected final String id; public abstract Material getMaterial(); diff --git a/src/main/java/de/jeff_media/customblocks/implentation/ItemsAdderBlock.java b/src/main/java/de/jeff_media/customblocks/implentation/ItemsAdderBlock.java index 4a2d9c5..2da7035 100644 --- a/src/main/java/de/jeff_media/customblocks/implentation/ItemsAdderBlock.java +++ b/src/main/java/de/jeff_media/customblocks/implentation/ItemsAdderBlock.java @@ -10,7 +10,7 @@ import org.bukkit.OfflinePlayer; import org.bukkit.block.Block; import org.bukkit.entity.ArmorStand; - +import org.bukkit.inventory.ItemStack; public class ItemsAdderBlock extends CustomBlock { @@ -112,4 +112,12 @@ public Material getMaterial() { } } + @Override + public ItemStack toItemStack() { + + CustomStack customStack = CustomFurniture.getInstance(getId()); + if(customStack == null) return null; + return customStack.getItemStack(); + } + } diff --git a/src/main/java/de/jeff_media/customblocks/implentation/NexoBlock.java b/src/main/java/de/jeff_media/customblocks/implentation/NexoBlock.java index 9f83a68..710b7bd 100644 --- a/src/main/java/de/jeff_media/customblocks/implentation/NexoBlock.java +++ b/src/main/java/de/jeff_media/customblocks/implentation/NexoBlock.java @@ -3,6 +3,8 @@ import com.jeff_media.jefflib.exceptions.InvalidBlockDataException; import com.nexomc.nexo.api.NexoBlocks; import com.nexomc.nexo.api.NexoFurniture; +import com.nexomc.nexo.api.NexoItems; +import com.nexomc.nexo.items.ItemBuilder; import com.nexomc.nexo.mechanics.custom_block.noteblock.NoteBlockMechanicFactory; import com.nexomc.nexo.mechanics.furniture.FurnitureMechanic; import de.jeff_media.customblocks.CustomBlock; @@ -13,6 +15,7 @@ import org.bukkit.block.BlockFace; import org.bukkit.entity.Entity; import org.bukkit.entity.ItemDisplay; +import org.bukkit.inventory.ItemStack; import java.util.Objects; @@ -103,6 +106,14 @@ public Material getMaterial() { } } + @Override + public ItemStack toItemStack() { + + ItemBuilder itemBuilder = NexoItems.itemFromId(getId()); + if(itemBuilder == null) return null; + return itemBuilder.build(); + } + private enum ItemType { NOTE_BLOCK, FURNITURE } diff --git a/src/main/java/de/jeff_media/customblocks/implentation/OraxenBlock.java b/src/main/java/de/jeff_media/customblocks/implentation/OraxenBlock.java index bd011f5..14a93f4 100644 --- a/src/main/java/de/jeff_media/customblocks/implentation/OraxenBlock.java +++ b/src/main/java/de/jeff_media/customblocks/implentation/OraxenBlock.java @@ -3,6 +3,8 @@ import com.jeff_media.jefflib.exceptions.InvalidBlockDataException; import de.jeff_media.customblocks.CustomBlock; import de.jeff_media.customblocks.CustomBlockUtils; +import io.th0rgal.oraxen.api.OraxenItems; +import io.th0rgal.oraxen.items.ItemBuilder; import io.th0rgal.oraxen.mechanics.Mechanic; import io.th0rgal.oraxen.mechanics.MechanicFactory; import io.th0rgal.oraxen.mechanics.MechanicsManager; @@ -105,6 +107,14 @@ public String getNamespace() { return "oraxen"; } + @Override + public ItemStack toItemStack() { + + ItemBuilder itemBuilder = OraxenItems.getItemById(getId()); + if(itemBuilder == null) return null; + return itemBuilder.build(); + } + @Override public void remove() { if (furnitureMechanic != null) { diff --git a/src/main/java/de/jeff_media/customblocks/implentation/VanillaBlock.java b/src/main/java/de/jeff_media/customblocks/implentation/VanillaBlock.java index 3411d46..8e01f5b 100644 --- a/src/main/java/de/jeff_media/customblocks/implentation/VanillaBlock.java +++ b/src/main/java/de/jeff_media/customblocks/implentation/VanillaBlock.java @@ -10,13 +10,14 @@ import org.bukkit.OfflinePlayer; import org.bukkit.block.Block; import org.bukkit.block.data.BlockData; +import org.bukkit.inventory.ItemStack; import java.util.Locale; +@Setter +@Getter public class VanillaBlock extends CustomBlock { - @Getter - @Setter private final BlockData blockData; public VanillaBlock(Material mat) { @@ -61,6 +62,11 @@ public void place(Block block, OfflinePlayer player) { block.setBlockData(blockData); } + @Override + public ItemStack toItemStack() { + return new ItemStack(getMaterial()); + } + @Override public String toString() { return "VanillaBlock{" + "blockData=" + blockData + "} " + super.toString();