From 933fdafa0efcfd5548a1feaf8cfb63457fe31832 Mon Sep 17 00:00:00 2001 From: fanta Date: Wed, 27 Dec 2023 06:11:36 +0100 Subject: [PATCH] Convert items... --- pom.xml | 6 ++--- .../de/fanta/fancyfirework/FireWorkWorks.java | 19 +++++++++++--- .../listners/FireworkListener.java | 25 +++++++++++++++++++ 3 files changed, 43 insertions(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index b530595..eba3e96 100644 --- a/pom.xml +++ b/pom.xml @@ -49,9 +49,9 @@ - dev.folia - folia-api - 1.19.4-R0.1-SNAPSHOT + io.papermc.paper + paper-api + 1.20.2-R0.1-SNAPSHOT provided diff --git a/src/main/java/de/fanta/fancyfirework/FireWorkWorks.java b/src/main/java/de/fanta/fancyfirework/FireWorkWorks.java index c4df362..377ed19 100644 --- a/src/main/java/de/fanta/fancyfirework/FireWorkWorks.java +++ b/src/main/java/de/fanta/fancyfirework/FireWorkWorks.java @@ -1,7 +1,7 @@ package de.fanta.fancyfirework; +import de.fanta.fancyfirework.fireworks.AbstractFireWork; import de.fanta.fancyfirework.listners.AFKListener; -import de.fanta.fancyfirework.schedular.CancellableTask; import org.bukkit.Bukkit; import org.bukkit.Color; import org.bukkit.FireworkEffect; @@ -12,13 +12,11 @@ import org.bukkit.entity.EntityType; import org.bukkit.entity.Firework; import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.FireworkMeta; import org.bukkit.util.Vector; -import java.util.HashMap; -import java.util.Map; import java.util.Random; -import java.util.UUID; import java.util.logging.Level; public class FireWorkWorks { @@ -107,5 +105,18 @@ public Color randomColor() { int blue = (int) (Math.random() * 256); return Color.fromRGB(red, green, blue); } + + public ItemStack fixFirework(ItemStack item) { + if (item == null) { + return item; + } + AbstractFireWork fireWork = plugin.getRegistry().getByItemStack(item); + if (fireWork != null) { + ItemStack fireWorkItem = fireWork.getItemStack(); + fireWorkItem.setAmount(item.getAmount()); + return fireWorkItem; + } + return item; + } } diff --git a/src/main/java/de/fanta/fancyfirework/listners/FireworkListener.java b/src/main/java/de/fanta/fancyfirework/listners/FireworkListener.java index b9c1033..67ee0c0 100644 --- a/src/main/java/de/fanta/fancyfirework/listners/FireworkListener.java +++ b/src/main/java/de/fanta/fancyfirework/listners/FireworkListener.java @@ -1,5 +1,6 @@ package de.fanta.fancyfirework.listners; +import com.google.common.base.Objects; import de.fanta.fancyfirework.FancyFirework; import de.fanta.fancyfirework.events.FireworkDeathEvent; import de.fanta.fancyfirework.fireworks.AbstractFireWork; @@ -15,6 +16,7 @@ import org.bukkit.World; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; +import org.bukkit.block.DoubleChest; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.ArmorStand; import org.bukkit.entity.Entity; @@ -35,12 +37,16 @@ import org.bukkit.event.entity.ProjectileLaunchEvent; import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.inventory.InventoryOpenEvent; +import org.bukkit.event.inventory.InventoryType; import org.bukkit.event.player.PlayerDropItemEvent; import org.bukkit.event.player.PlayerEggThrowEvent; import org.bukkit.event.player.PlayerInteractAtEntityEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.inventory.BlockInventoryHolder; import org.bukkit.inventory.EquipmentSlot; +import org.bukkit.inventory.InventoryHolder; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.MerchantRecipe; import org.bukkit.inventory.PlayerInventory; @@ -413,4 +419,23 @@ public void onWanderingTraderSpawn(EntitySpawnEvent e) { recipes.add(random.nextInt(recipes.size() + 1), recipe); trader.setRecipes(recipes); } + + @EventHandler + public void InventoryOpenEvent(InventoryOpenEvent e) { + InventoryHolder holder = e.getInventory().getHolder(); + if (holder instanceof BlockInventoryHolder || holder instanceof DoubleChest || e.getInventory().getType() == InventoryType.ENDER_CHEST) { + int modifyCount = 0; + ItemStack[] storage = e.getInventory().getStorageContents(); + for (int i = 0; i < storage.length; i++) { + ItemStack newStack = plugin.getFireWorkWorks().fixFirework(storage[i]); + if (!Objects.equal(storage[i], newStack)) { + storage[i] = newStack; + modifyCount++; + } + } + if (modifyCount > 0) { + e.getInventory().setStorageContents(storage); + } + } + } }