Skip to content

Commit 04600bb

Browse files
committed
feat:some patches
1 parent 0895abe commit 04600bb

8 files changed

Lines changed: 255 additions & 254 deletions

File tree

nms-patches/net/minecraft/world/entity/item/EntityItem.patch

Lines changed: 0 additions & 171 deletions
This file was deleted.

nms-patches/net/minecraft/world/level/block/BlockPressurePlateAbstract.patch

Lines changed: 0 additions & 48 deletions
This file was deleted.

nms-patches/net/minecraft/world/level/block/BlockSign.patch

Lines changed: 0 additions & 35 deletions
This file was deleted.

src/main/java/org/teneted/neotenet/eventhandler/EntityEventDispatcher.java

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,19 @@
33
import net.minecraft.world.InteractionResult;
44
import net.minecraft.world.entity.monster.Bogged;
55
import net.minecraft.world.entity.monster.Vex;
6+
import net.minecraft.world.item.ItemStack;
67
import net.minecraft.world.item.Items;
78
import net.neoforged.bus.api.SubscribeEvent;
89
import net.neoforged.fml.common.EventBusSubscriber;
10+
import net.neoforged.neoforge.event.entity.item.ItemExpireEvent;
911
import net.neoforged.neoforge.event.entity.living.LivingChangeTargetEvent;
12+
import net.neoforged.neoforge.event.entity.player.ItemEntityPickupEvent;
1013
import net.neoforged.neoforge.event.entity.player.PlayerInteractEvent;
1114
import net.neoforged.neoforge.internal.versions.neoforge.NeoForgeVersion;
15+
import org.bukkit.craftbukkit.event.CraftEventFactory;
16+
import org.bukkit.event.entity.EntityPickupItemEvent;
1217
import org.bukkit.event.entity.EntityTargetEvent;
18+
import org.bukkit.event.player.PlayerPickupItemEvent;
1319

1420
@EventBusSubscriber(modid = NeoForgeVersion.MOD_ID)
1521
public class EntityEventDispatcher {
@@ -39,4 +45,63 @@ public static void onEntityTarget(LivingChangeTargetEvent event) {
3945
vex.bridge$pushGoalTargetReason(EntityTargetEvent.TargetReason.OWNER_ATTACKED_TARGET, true);
4046
}
4147
}
48+
49+
@SubscribeEvent
50+
public static void onItemExpire(ItemExpireEvent event) {
51+
var entity = event.getEntity();
52+
// CraftBukkit start - fire ItemDespawnEvent
53+
if (CraftEventFactory.callItemDespawnEvent(entity).isCancelled()) {
54+
entity.age = 0;
55+
return;
56+
}
57+
// CraftBukkit end
58+
}
59+
60+
@SubscribeEvent
61+
public static void onItemPickup(ItemEntityPickupEvent.Post event) {
62+
var itemEntity = event.getItemEntity();
63+
var player = event.getPlayer();
64+
var itemstack = event.getOriginalStack();
65+
int i = itemstack.getCount();
66+
// CraftBukkit start - fire PlayerPickupItemEvent
67+
int canHold = player.getInventory().canHold(itemstack);
68+
int remaining = i - canHold;
69+
70+
if (itemEntity.pickupDelay <= 0 && canHold > 0) {
71+
itemstack.setCount(canHold);
72+
// Call legacy event
73+
PlayerPickupItemEvent playerEvent = new PlayerPickupItemEvent((org.bukkit.entity.Player) player.getBukkitEntity(), (org.bukkit.entity.Item) itemEntity.getBukkitEntity(), remaining);
74+
playerEvent.setCancelled(!playerEvent.getPlayer().getCanPickupItems());
75+
itemEntity.level().getCraftServer().getPluginManager().callEvent(playerEvent);
76+
if (playerEvent.isCancelled()) {
77+
itemstack.setCount(i); // SPIGOT-5294 - restore count
78+
return;
79+
}
80+
81+
// Call newer event afterwards
82+
EntityPickupItemEvent entityEvent = new EntityPickupItemEvent((org.bukkit.entity.Player) player.getBukkitEntity(), (org.bukkit.entity.Item) itemEntity.getBukkitEntity(), remaining);
83+
entityEvent.setCancelled(!entityEvent.getEntity().getCanPickupItems());
84+
itemEntity.level().getCraftServer().getPluginManager().callEvent(entityEvent);
85+
if (entityEvent.isCancelled()) {
86+
itemstack.setCount(i); // SPIGOT-5294 - restore count
87+
return;
88+
}
89+
90+
// Update the ItemStack if it was changed in the event
91+
ItemStack current = itemEntity.getItem();
92+
if (!itemstack.equals(current)) {
93+
itemstack = current;
94+
} else {
95+
itemstack.setCount(canHold + remaining); // = i
96+
}
97+
98+
// Possibly < 0; fix here so we do not have to modify code below
99+
itemEntity.pickupDelay = 0;
100+
} else if (itemEntity.pickupDelay == 0) {
101+
// ensure that the code below isn't triggered if canHold says we can't pick the items up
102+
itemEntity.pickupDelay = -1;
103+
}
104+
// CraftBukkit end
105+
}
106+
42107
}

0 commit comments

Comments
 (0)