aboutsummaryrefslogtreecommitdiffhomepage
path: root/patch-remap/og/net/minecraft/world/entity/animal/EntitySheep.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patch-remap/og/net/minecraft/world/entity/animal/EntitySheep.patch')
-rw-r--r--patch-remap/og/net/minecraft/world/entity/animal/EntitySheep.patch80
1 files changed, 80 insertions, 0 deletions
diff --git a/patch-remap/og/net/minecraft/world/entity/animal/EntitySheep.patch b/patch-remap/og/net/minecraft/world/entity/animal/EntitySheep.patch
new file mode 100644
index 0000000000..efda17bf77
--- /dev/null
+++ b/patch-remap/og/net/minecraft/world/entity/animal/EntitySheep.patch
@@ -0,0 +1,80 @@
+--- a/net/minecraft/world/entity/animal/EntitySheep.java
++++ b/net/minecraft/world/entity/animal/EntitySheep.java
+@@ -66,6 +66,14 @@
+ import net.minecraft.world.level.storage.loot.LootTables;
+ import org.joml.Vector3f;
+
++// CraftBukkit start
++import net.minecraft.world.inventory.InventoryCraftResult;
++import net.minecraft.world.item.Item;
++import org.bukkit.craftbukkit.event.CraftEventFactory;
++import org.bukkit.event.entity.SheepRegrowWoolEvent;
++import org.bukkit.inventory.InventoryView;
++// CraftBukkit end
++
+ public class EntitySheep extends EntityAnimal implements IShearable {
+
+ private static final int EAT_ANIMATION_TICKS = 40;
+@@ -246,6 +254,11 @@
+
+ if (itemstack.is(Items.SHEARS)) {
+ if (!this.level().isClientSide && this.readyForShearing()) {
++ // CraftBukkit start
++ if (!CraftEventFactory.handlePlayerShearEntityEvent(entityhuman, this, itemstack, enumhand)) {
++ return EnumInteractionResult.PASS;
++ }
++ // CraftBukkit end
+ this.shear(SoundCategory.PLAYERS);
+ this.gameEvent(GameEvent.SHEAR, entityhuman);
+ itemstack.hurtAndBreak(1, entityhuman, (entityhuman1) -> {
+@@ -267,7 +280,9 @@
+ int i = 1 + this.random.nextInt(3);
+
+ for (int j = 0; j < i; ++j) {
++ this.forceDrops = true; // CraftBukkit
+ EntityItem entityitem = this.spawnAtLocation((IMaterial) EntitySheep.ITEM_BY_DYE.get(this.getColor()), 1);
++ this.forceDrops = false; // CraftBukkit
+
+ if (entityitem != null) {
+ entityitem.setDeltaMovement(entityitem.getDeltaMovement().add((double) ((this.random.nextFloat() - this.random.nextFloat()) * 0.1F), (double) (this.random.nextFloat() * 0.05F), (double) ((this.random.nextFloat() - this.random.nextFloat()) * 0.1F)));
+@@ -360,6 +375,12 @@
+
+ @Override
+ public void ate() {
++ // CraftBukkit start
++ SheepRegrowWoolEvent event = new SheepRegrowWoolEvent((org.bukkit.entity.Sheep) this.getBukkitEntity());
++ this.level().getCraftServer().getPluginManager().callEvent(event);
++
++ if (event.isCancelled()) return;
++ // CraftBukkit end
+ super.ate();
+ this.setSheared(false);
+ if (this.isBaby()) {
+@@ -379,7 +400,7 @@
+ EnumColor enumcolor = ((EntitySheep) entityanimal).getColor();
+ EnumColor enumcolor1 = ((EntitySheep) entityanimal1).getColor();
+ InventoryCrafting inventorycrafting = makeContainer(enumcolor, enumcolor1);
+- Optional optional = this.level().getRecipeManager().getRecipeFor(Recipes.CRAFTING, inventorycrafting, this.level()).map((recipeholder) -> {
++ Optional<Item> optional = this.level().getRecipeManager().getRecipeFor(Recipes.CRAFTING, inventorycrafting, this.level()).map((recipeholder) -> { // CraftBukkit - decompile error
+ return ((RecipeCrafting) recipeholder.value()).assemble(inventorycrafting, this.level().registryAccess());
+ }).map(ItemStack::getItem);
+
+@@ -402,10 +423,18 @@
+ public boolean stillValid(EntityHuman entityhuman) {
+ return false;
+ }
++
++ // CraftBukkit start
++ @Override
++ public InventoryView getBukkitView() {
++ return null; // TODO: O.O
++ }
++ // CraftBukkit end
+ }, 2, 1);
+
+ transientcraftingcontainer.setItem(0, new ItemStack(ItemDye.byColor(enumcolor)));
+ transientcraftingcontainer.setItem(1, new ItemStack(ItemDye.byColor(enumcolor1)));
++ transientcraftingcontainer.resultInventory = new InventoryCraftResult(); // CraftBukkit - add result slot for event
+ return transientcraftingcontainer;
+ }
+