|
| 1 | +package me.xginko.aef.modules.lagpreventions; |
| 2 | + |
| 3 | +import com.cryptomorin.xseries.XEntityType; |
| 4 | +import com.cryptomorin.xseries.XMaterial; |
| 5 | +import com.destroystokyo.paper.MaterialTags; |
| 6 | +import me.xginko.aef.modules.AEFModule; |
| 7 | +import org.bukkit.entity.Item; |
| 8 | +import org.bukkit.event.EventHandler; |
| 9 | +import org.bukkit.event.EventPriority; |
| 10 | +import org.bukkit.event.HandlerList; |
| 11 | +import org.bukkit.event.Listener; |
| 12 | +import org.bukkit.event.entity.EntityDamageEvent; |
| 13 | +import org.bukkit.inventory.ItemStack; |
| 14 | + |
| 15 | +public class NoBundleDrops extends AEFModule implements Listener { |
| 16 | + |
| 17 | + public NoBundleDrops() { |
| 18 | + super("lag-preventions.anti-bundle-drops", false, """ |
| 19 | + This feature only effective on server versions that have bundles. |
| 20 | + Disables bundles dropping stored items when blown up.\s |
| 21 | + This helps fix client- and serverside lag when done often and fast."""); |
| 22 | + } |
| 23 | + |
| 24 | + @Override |
| 25 | + public void enable() { |
| 26 | + plugin.getServer().getPluginManager().registerEvents(this, plugin); |
| 27 | + } |
| 28 | + |
| 29 | + @Override |
| 30 | + public void disable() { |
| 31 | + HandlerList.unregisterAll(this); |
| 32 | + } |
| 33 | + |
| 34 | + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) |
| 35 | + private void onEntityDamage(EntityDamageEvent event) { |
| 36 | + if (event.getEntityType() != XEntityType.ITEM.get()) return; |
| 37 | + |
| 38 | + if (event.getCause() == EntityDamageEvent.DamageCause.BLOCK_EXPLOSION || event.getCause() == EntityDamageEvent.DamageCause.ENTITY_EXPLOSION) { |
| 39 | + Item item = (Item) event.getEntity(); |
| 40 | + if (!XMaterial.matchXMaterial(item.getItemStack()).name().endsWith("BUNDLE")) return; |
| 41 | + if (event.getFinalDamage() >= item.getHealth()) { |
| 42 | + event.setCancelled(true); // Cancel damage so the drop logic doesn't happen |
| 43 | + item.remove(); // remove entity |
| 44 | + } |
| 45 | + } |
| 46 | + } |
| 47 | +} |
0 commit comments