SPIGOT-7996: Cancelling EntityTransformEvent does not keep equipment
This commit is contained in:
parent
442838fdae
commit
8abf4c480e
@ -21,6 +21,15 @@
|
||||
}
|
||||
|
||||
entity.startRiding(entityinsentient1);
|
||||
@@ -52,7 +57,7 @@
|
||||
ItemStack itemstack = entityinsentient.getItemBySlot(enumitemslot);
|
||||
|
||||
if (!itemstack.isEmpty()) {
|
||||
- entityinsentient1.setItemSlot(enumitemslot, itemstack.copyAndClear());
|
||||
+ entityinsentient1.setItemSlot(enumitemslot, itemstack.copy()); // CraftBukkit - SPIGOT-7996: don't clear yet
|
||||
entityinsentient1.setDropChance(enumitemslot, entityinsentient.getEquipmentDropChance(enumitemslot));
|
||||
}
|
||||
}
|
||||
@@ -64,7 +69,7 @@
|
||||
entityinsentient1.hurtTime = entityinsentient.hurtTime;
|
||||
entityinsentient1.yBodyRot = entityinsentient.yBodyRot;
|
||||
@ -30,7 +39,38 @@
|
||||
|
||||
Objects.requireNonNull(entityinsentient1);
|
||||
optional.ifPresent(entityinsentient1::setSleepingPos);
|
||||
@@ -156,7 +161,7 @@
|
||||
@@ -75,6 +80,21 @@
|
||||
|
||||
this.convertCommon(entityinsentient, entityinsentient1, conversionparams);
|
||||
}
|
||||
+
|
||||
+ // CraftBukkit start
|
||||
+ @Override
|
||||
+ void postConvert(EntityInsentient entityinsentient, EntityInsentient entityinsentient1, ConversionParams conversionparams) {
|
||||
+ if (conversionparams.keepEquipment()) {
|
||||
+ for (EnumItemSlot enumitemslot : EnumItemSlot.VALUES) {
|
||||
+ ItemStack itemstack = entityinsentient.getItemBySlot(enumitemslot);
|
||||
+
|
||||
+ if (!itemstack.isEmpty()) {
|
||||
+ itemstack.setCount(0); // SPIGOT-7996: clear after conversion
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ // CraftBukkit end
|
||||
},
|
||||
SPLIT_ON_DEATH(false) {
|
||||
@Override
|
||||
@@ -106,6 +126,8 @@
|
||||
}
|
||||
|
||||
abstract void convert(EntityInsentient entityinsentient, EntityInsentient entityinsentient1, ConversionParams conversionparams);
|
||||
+
|
||||
+ void postConvert(EntityInsentient entityinsentient, EntityInsentient entityinsentient1, ConversionParams conversionparams) {} // CraftBukkit
|
||||
|
||||
void convertCommon(EntityInsentient entityinsentient, EntityInsentient entityinsentient1, ConversionParams conversionparams) {
|
||||
entityinsentient1.setAbsorptionAmount(entityinsentient.getAbsorptionAmount());
|
||||
@@ -156,7 +178,7 @@
|
||||
entityinsentient1.setNoGravity(entityinsentient.isNoGravity());
|
||||
entityinsentient1.setPortalCooldown(entityinsentient.getPortalCooldown());
|
||||
entityinsentient1.setSilent(entityinsentient.isSilent());
|
||||
|
@ -252,7 +252,7 @@
|
||||
|
||||
if (t0 == null) {
|
||||
return null;
|
||||
@@ -1403,14 +1499,24 @@
|
||||
@@ -1403,14 +1499,26 @@
|
||||
conversionparams_a.finalizeConversion(t0);
|
||||
World world = this.level();
|
||||
|
||||
@ -265,6 +265,8 @@
|
||||
+ if (CraftEventFactory.callEntityTransformEvent(this, t0, transformReason).isCancelled()) {
|
||||
+ return null;
|
||||
+ }
|
||||
+
|
||||
+ conversionparams.type().postConvert(this, t0, conversionparams);
|
||||
+ // CraftBukkit end
|
||||
if (world instanceof WorldServer) {
|
||||
WorldServer worldserver = (WorldServer) world;
|
||||
@ -279,7 +281,7 @@
|
||||
}
|
||||
|
||||
return t0;
|
||||
@@ -1420,7 +1526,14 @@
|
||||
@@ -1420,7 +1528,14 @@
|
||||
|
||||
@Nullable
|
||||
public <T extends EntityInsentient> T convertTo(EntityTypes<T> entitytypes, ConversionParams conversionparams, ConversionParams.a<T> conversionparams_a) {
|
||||
@ -295,7 +297,7 @@
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -1458,6 +1571,7 @@
|
||||
@@ -1458,6 +1573,7 @@
|
||||
boolean flag1 = super.startRiding(entity, flag);
|
||||
|
||||
if (flag1 && this.isLeashed()) {
|
||||
@ -303,7 +305,7 @@
|
||||
this.dropLeash();
|
||||
}
|
||||
|
||||
@@ -1542,7 +1656,7 @@
|
||||
@@ -1542,7 +1658,7 @@
|
||||
|
||||
if (f1 > 0.0F && entity instanceof EntityLiving) {
|
||||
entityliving = (EntityLiving) entity;
|
||||
|
Loading…
x
Reference in New Issue
Block a user