Skip to content

Commit be65e78

Browse files
authored
Merge pull request #285 from Leleawa/master
NoBundleDrops
2 parents 881bc91 + 8a698d6 commit be65e78

File tree

1 file changed

+47
-0
lines changed
  • AnarchyExploitFixesFolia/src/main/java/me/xginko/aef/modules/lagpreventions

1 file changed

+47
-0
lines changed
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
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

Comments
 (0)