Skip to content

Commit 6892dc3

Browse files
committed
Fix mixin issues with forgified fabric (lambda moment)
1 parent f9b14e6 commit 6892dc3

File tree

2 files changed

+16
-16
lines changed

2 files changed

+16
-16
lines changed

patches/minecraft/net/minecraft/world/entity/LivingEntity.java.patch

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -742,7 +742,7 @@
742742

743743
boolean flag = this.lastHurtByPlayerTime > 0;
744744
if (this.shouldDropLoot() && this.level().getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) {
745-
@@ -1349,15 +_,80 @@
745+
@@ -1349,15 +_,76 @@
746746
}
747747

748748
this.dropEquipment();
@@ -767,7 +767,9 @@
767767
+ if (handlePlayerDeath$swap) s.level().getGameRules().getRule(GameRules.RULE_KEEPINVENTORY).set(handlePlayerDeath$originalKeepInv, s.getServer());
768768
+ if (handlePlayerDeath$cbKeepInv) {
769769
+ if (!drops.isEmpty()) dropAllDeathLoot$dropsCopy.addAll(drops); //Plugins can still add items
770-
+ dropAllDeathLoot$dropsCopy.forEach(e -> s.getInventory().add(e.getItem()));
770+
+ for (ItemEntity itemEntity : dropAllDeathLoot$dropsCopy) {
771+
+ s.getInventory().add(itemEntity.getItem());
772+
+ }
771773
+ }
772774
+ }
773775
+ //Ketting end
@@ -781,13 +783,7 @@
781783
+ private boolean handlePlayerDeath$swap;
782784
+ protected org.bukkit.event.entity.PlayerDeathEvent handlePlayerDeath$event;
783785
+ private void handlePlayerDeath(ServerPlayer cast, Collection<ItemEntity> drops) {
784-
+ List<org.bukkit.inventory.ItemStack> bukkitDrops = io.izzel.tools.collection.XmapList.create((List<ItemEntity>) drops, org.bukkit.inventory.ItemStack.class,
785-
+ (ItemEntity e) -> org.bukkit.craftbukkit.v1_20_R1.inventory.CraftItemStack.asCraftMirror(e.getItem()),
786-
+ itemStack -> {
787-
+ ItemEntity itemEntity = new ItemEntity(cast.level(), cast.getX(), cast.getY(), cast.getZ(), org.bukkit.craftbukkit.v1_20_R1.inventory.CraftItemStack.asNMSCopy(itemStack));
788-
+ itemEntity.setDefaultPickUpDelay();
789-
+ return itemEntity;
790-
+ });
786+
+ List<org.bukkit.inventory.ItemStack> bukkitDrops = org.kettingpowered.ketting.craftbukkit.EventConverter.createXmapList(drops, cast);
791787
+
792788
+ handlePlayerDeath$originalKeepInv = cast.level().getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY);
793789
+

src/main/java/org/kettingpowered/ketting/craftbukkit/EventConverter.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,24 @@
1818

1919
public class EventConverter {
2020

21+
public static List<ItemStack> createXmapList(Collection<ItemEntity> drops, LivingEntity entity) {
22+
return XmapList.create((List<ItemEntity>) drops, ItemStack.class,
23+
(ItemEntity e) -> CraftItemStack.asCraftMirror(e.getItem()),
24+
itemStack -> {
25+
ItemEntity itemEntity = new ItemEntity(entity.level(), entity.getX(), entity.getY(), entity.getZ(), CraftItemStack.asNMSCopy(itemStack));
26+
itemEntity.setDefaultPickUpDelay();
27+
return itemEntity;
28+
});
29+
}
30+
2131
public static LivingDropsEvent callLivingDropsEvent(LivingEntity entity, DamageSource source, Collection<ItemEntity> drops, int lootingLevel, boolean recentlyHit) {
2232
LivingDropsEvent event = new LivingDropsEvent(entity, source, drops, lootingLevel, recentlyHit);
2333
if (entity instanceof ServerPlayer) return event;
2434

2535
if (!(drops instanceof ArrayList))
2636
drops = new ArrayList<>(drops);
2737

28-
List<ItemStack> bukkitDrops = XmapList.create((List<ItemEntity>) drops, ItemStack.class,
29-
(ItemEntity e) -> CraftItemStack.asCraftMirror(e.getItem()),
30-
itemStack -> {
31-
ItemEntity itemEntity = new ItemEntity(entity.level(), entity.getX(), entity.getY(), entity.getZ(), CraftItemStack.asNMSCopy(itemStack));
32-
itemEntity.setDefaultPickUpDelay();
33-
return itemEntity;
34-
});
38+
List<ItemStack> bukkitDrops = createXmapList(drops, entity);
3539

3640
CraftLivingEntity craftLivingEntity = ((CraftLivingEntity) entity.getBukkitEntity());
3741
EntityDeathEvent bukkitEvent = new EntityDeathEvent(craftLivingEntity, bukkitDrops, entity.getExpReward());

0 commit comments

Comments
 (0)