diff --git a/gradle.properties b/gradle.properties index b28ec9b5..d0634c3a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = cn.dreeam.leaf mcVersion = 1.21.1 version = 1.21.1-R0.1-SNAPSHOT -galeCommit = 1169c4fdffa0b1c455612c157695a24b4f399d9d +galeCommit = 0f495ae698c486fa65e434be705b24699c739bd0 org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0105-Change-max-stack-count.patch b/patches/server/0105-Change-max-stack-count.patch index a799e418..24e558ea 100644 --- a/patches/server/0105-Change-max-stack-count.patch +++ b/patches/server/0105-Change-max-stack-count.patch @@ -68,27 +68,45 @@ index 1fe41abcdc28013e2dae4b5c3ee727759fc3890c..18773f975b70f4d871808aa0eb1f7313 targetEntity.setItem(itemstack2); } diff --git a/src/main/java/net/minecraft/world/item/ItemUtils.java b/src/main/java/net/minecraft/world/item/ItemUtils.java -index 66f88f44eb74dfbdafe0d6257dc1ef46238aaa92..e0a5d485989dd9e9c9d33f57929aa3dd79294bc9 100644 +index 4901f0d89ae2472bce7f242d9529236674f5d134..1a3af765b120cf6eab62ce53b06432c04476deb3 100644 --- a/src/main/java/net/minecraft/world/item/ItemUtils.java +++ b/src/main/java/net/minecraft/world/item/ItemUtils.java -@@ -41,7 +41,17 @@ public class ItemUtils { - public static void onContainerDestroyed(ItemEntity itemEntity, Iterable contents) { +@@ -42,13 +42,29 @@ public class ItemUtils { Level level = itemEntity.level(); if (!level.isClientSide) { + // Paper start - call EntityDropItemEvent +- contents.forEach(stack -> { +- ItemEntity droppedItem = new ItemEntity(level, itemEntity.getX(), itemEntity.getY(), itemEntity.getZ(), stack); +- org.bukkit.event.entity.EntityDropItemEvent event = new org.bukkit.event.entity.EntityDropItemEvent(itemEntity.getBukkitEntity(), (org.bukkit.entity.Item) droppedItem.getBukkitEntity()); +- if (event.callEvent()) { +- level.addFreshEntity(droppedItem); + // Leaf start - Change max stack count -+ if (org.dreeam.leaf.config.modules.gameplay.MaxItemsStackCount.maxContainerDestroyCount == 0) - contents.forEach(stack -> level.addFreshEntity(new ItemEntity(level, itemEntity.getX(), itemEntity.getY(), itemEntity.getZ(), stack))); -+ else ++ if (org.dreeam.leaf.config.modules.gameplay.MaxItemsStackCount.maxContainerDestroyCount == 0) { ++ contents.forEach(stack -> { ++ ItemEntity droppedItem = new ItemEntity(level, itemEntity.getX(), itemEntity.getY(), itemEntity.getZ(), stack); ++ org.bukkit.event.entity.EntityDropItemEvent event = new org.bukkit.event.entity.EntityDropItemEvent(itemEntity.getBukkitEntity(), (org.bukkit.entity.Item) droppedItem.getBukkitEntity()); ++ if (event.callEvent()) { ++ level.addFreshEntity(droppedItem); ++ } ++ }); ++ } else { ++ java.util.Iterator iterator = contents.iterator(); + for (int count = Math.min(itemEntity.getItem().getCount(), org.dreeam.leaf.config.modules.gameplay.MaxItemsStackCount.maxContainerDestroyCount); count > 0; count--) { -+ if (!contents.iterator().hasNext()) break; ++ if (!iterator.hasNext()) break; + -+ ItemStack stack = contents.iterator().next(); -+ level.addFreshEntity(new ItemEntity(level, itemEntity.getX(), itemEntity.getY(), itemEntity.getZ(), stack)); -+ } ++ ItemStack stack = iterator.next(); ++ ItemEntity droppedItem = new ItemEntity(level, itemEntity.getX(), itemEntity.getY(), itemEntity.getZ(), stack); ++ org.bukkit.event.entity.EntityDropItemEvent event = new org.bukkit.event.entity.EntityDropItemEvent(itemEntity.getBukkitEntity(), (org.bukkit.entity.Item) droppedItem.getBukkitEntity()); ++ if (event.callEvent()) { ++ level.addFreshEntity(droppedItem); ++ } + } +- }); ++ } + // Leaf end - Change max stack count + // Paper end - call EntityDropItemEvent } } - } diff --git a/src/main/java/org/dreeam/leaf/config/modules/gameplay/MaxItemsStackCount.java b/src/main/java/org/dreeam/leaf/config/modules/gameplay/MaxItemsStackCount.java new file mode 100644 index 0000000000000000000000000000000000000000..4a895897111454dc3558aa491b9d81cf610b5bbf