60 lines
3.0 KiB
Diff
60 lines
3.0 KiB
Diff
--- a/net/minecraft/world/entity/animal/EntityMushroomCow.java
|
|
+++ b/net/minecraft/world/entity/animal/EntityMushroomCow.java
|
|
@@ -43,6 +43,13 @@
|
|
import net.minecraft.world.level.gameevent.GameEvent;
|
|
import net.minecraft.world.level.storage.loot.LootTables;
|
|
|
|
+// CraftBukkit start
|
|
+import org.bukkit.Bukkit;
|
|
+import org.bukkit.craftbukkit.event.CraftEventFactory;
|
|
+import org.bukkit.event.entity.EntityDropItemEvent;
|
|
+import org.bukkit.event.entity.EntityTransformEvent;
|
|
+// CraftBukkit end
|
|
+
|
|
public class EntityMushroomCow extends EntityCow implements IShearable, VariantHolder<EntityMushroomCow.Type> {
|
|
|
|
private static final DataWatcherObject<String> DATA_TYPE = DataWatcher.defineId(EntityMushroomCow.class, DataWatcherRegistry.STRING);
|
|
@@ -120,6 +127,11 @@
|
|
if (world instanceof WorldServer) {
|
|
WorldServer worldserver = (WorldServer) world;
|
|
|
|
+ // CraftBukkit start
|
|
+ if (!CraftEventFactory.handlePlayerShearEntityEvent(entityhuman, this, itemstack, enumhand)) {
|
|
+ return EnumInteractionResult.PASS;
|
|
+ }
|
|
+ // CraftBukkit end
|
|
this.shear(worldserver, SoundCategory.PLAYERS, itemstack);
|
|
this.gameEvent(GameEvent.SHEAR, entityhuman);
|
|
itemstack.hurtAndBreak(1, entityhuman, getSlotForHand(enumhand));
|
|
@@ -163,11 +175,19 @@
|
|
worldserver.sendParticles(Particles.EXPLOSION, this.getX(), this.getY(0.5D), this.getZ(), 1, 0.0D, 0.0D, 0.0D, 0.0D);
|
|
this.dropFromShearingLootTable(worldserver, LootTables.SHEAR_MOOSHROOM, itemstack, (worldserver1, itemstack1) -> {
|
|
for (int i = 0; i < itemstack1.getCount(); ++i) {
|
|
- worldserver1.addFreshEntity(new EntityItem(this.level(), this.getX(), this.getY(1.0D), this.getZ(), itemstack1.copyWithCount(1)));
|
|
+ // CraftBukkit start
|
|
+ EntityItem entityitem = new EntityItem(this.level(), this.getX(), this.getY(1.0D), this.getZ(), itemstack1.copyWithCount(1));
|
|
+ EntityDropItemEvent event = new EntityDropItemEvent(this.getBukkitEntity(), (org.bukkit.entity.Item) entityitem.getBukkitEntity());
|
|
+ Bukkit.getPluginManager().callEvent(event);
|
|
+ if (event.isCancelled()) {
|
|
+ continue;
|
|
+ }
|
|
+ worldserver1.addFreshEntity(entityitem);
|
|
+ // CraftBukkit end
|
|
}
|
|
|
|
});
|
|
- });
|
|
+ }, EntityTransformEvent.TransformReason.SHEARED, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.SHEARED); // CraftBukkit
|
|
}
|
|
|
|
@Override
|
|
@@ -263,7 +283,7 @@
|
|
}
|
|
|
|
static EntityMushroomCow.Type byName(String s) {
|
|
- return (EntityMushroomCow.Type) EntityMushroomCow.Type.CODEC.byName(s, (Enum) EntityMushroomCow.Type.RED);
|
|
+ return (EntityMushroomCow.Type) EntityMushroomCow.Type.CODEC.byName(s, EntityMushroomCow.Type.RED); // CraftBukkit - decompile error
|
|
}
|
|
}
|
|
}
|