Commits

md_5 authored 8abf4c480ea
SPIGOT-7996: Cancelling EntityTransformEvent does not keep equipment
No tags

nms-patches/net/minecraft/world/entity/ConversionType.patch

Modified
14 14 SINGLE(true) {
15 15 @@ -31,7 +36,7 @@
16 16 while (iterator.hasNext()) {
17 17 entity1 = (Entity) iterator.next();
18 18 entity1.stopRiding();
19 19 - entity1.remove(Entity.RemovalReason.DISCARDED);
20 20 + entity1.remove(Entity.RemovalReason.DISCARDED, EntityRemoveEvent.Cause.TRANSFORMATION); // CraftBukkit - add Bukkit remove cause
21 21 }
22 22
23 23 entity.startRiding(entityinsentient1);
24 +@@ -52,7 +57,7 @@
25 + ItemStack itemstack = entityinsentient.getItemBySlot(enumitemslot);
26 +
27 + if (!itemstack.isEmpty()) {
28 +- entityinsentient1.setItemSlot(enumitemslot, itemstack.copyAndClear());
29 ++ entityinsentient1.setItemSlot(enumitemslot, itemstack.copy()); // CraftBukkit - SPIGOT-7996: don't clear yet
30 + entityinsentient1.setDropChance(enumitemslot, entityinsentient.getEquipmentDropChance(enumitemslot));
31 + }
32 + }
24 33 @@ -64,7 +69,7 @@
25 34 entityinsentient1.hurtTime = entityinsentient.hurtTime;
26 35 entityinsentient1.yBodyRot = entityinsentient.yBodyRot;
27 36 entityinsentient1.setOnGround(entityinsentient.onGround());
28 37 - Optional optional = entityinsentient.getSleepingPos();
29 38 + Optional<BlockPosition> optional = entityinsentient.getSleepingPos(); // CraftBukkit - decompile error
30 39
31 40 Objects.requireNonNull(entityinsentient1);
32 41 optional.ifPresent(entityinsentient1::setSleepingPos);
33 -@@ -156,7 +161,7 @@
42 +@@ -75,6 +80,21 @@
43 +
44 + this.convertCommon(entityinsentient, entityinsentient1, conversionparams);
45 + }
46 ++
47 ++ // CraftBukkit start
48 ++ @Override
49 ++ void postConvert(EntityInsentient entityinsentient, EntityInsentient entityinsentient1, ConversionParams conversionparams) {
50 ++ if (conversionparams.keepEquipment()) {
51 ++ for (EnumItemSlot enumitemslot : EnumItemSlot.VALUES) {
52 ++ ItemStack itemstack = entityinsentient.getItemBySlot(enumitemslot);
53 ++
54 ++ if (!itemstack.isEmpty()) {
55 ++ itemstack.setCount(0); // SPIGOT-7996: clear after conversion
56 ++ }
57 ++ }
58 ++ }
59 ++ }
60 ++ // CraftBukkit end
61 + },
62 + SPLIT_ON_DEATH(false) {
63 + @Override
64 +@@ -106,6 +126,8 @@
65 + }
66 +
67 + abstract void convert(EntityInsentient entityinsentient, EntityInsentient entityinsentient1, ConversionParams conversionparams);
68 ++
69 ++ void postConvert(EntityInsentient entityinsentient, EntityInsentient entityinsentient1, ConversionParams conversionparams) {} // CraftBukkit
70 +
71 + void convertCommon(EntityInsentient entityinsentient, EntityInsentient entityinsentient1, ConversionParams conversionparams) {
72 + entityinsentient1.setAbsorptionAmount(entityinsentient.getAbsorptionAmount());
73 +@@ -156,7 +178,7 @@
34 74 entityinsentient1.setNoGravity(entityinsentient.isNoGravity());
35 75 entityinsentient1.setPortalCooldown(entityinsentient.getPortalCooldown());
36 76 entityinsentient1.setSilent(entityinsentient.isSilent());
37 77 - Set set = entityinsentient.getTags();
38 78 + Set<String> set = entityinsentient.getTags(); // CraftBukkit - decompile error
39 79
40 80 Objects.requireNonNull(entityinsentient1);
41 81 set.forEach(entityinsentient1::addTag);

Everything looks good. We'll let you know here if there's anything you should know about.

Add shortcut