geforkt von Mirrors/Paper
107 Zeilen
5.6 KiB
Diff
107 Zeilen
5.6 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
|
Date: Tue, 20 Jul 2021 21:25:35 -0700
|
|
Subject: [PATCH] Add a bunch of missing forceDrop toggles
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/WorkAtComposter.java b/src/main/java/net/minecraft/world/entity/ai/behavior/WorkAtComposter.java
|
|
index e47f3092b6bd6b86b577de705db1a575d0952348..490212cfe4e5cea7219eaf4304e14bfac0e6472d 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/ai/behavior/WorkAtComposter.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/ai/behavior/WorkAtComposter.java
|
|
@@ -100,7 +100,9 @@ public class WorkAtComposter extends WorkAtPoi {
|
|
ItemStack itemstack = inventorysubcontainer.addItem(new ItemStack(Items.BREAD, j));
|
|
|
|
if (!itemstack.isEmpty()) {
|
|
+ entity.forceDrops = true; // Paper
|
|
entity.spawnAtLocation(itemstack, 0.5F);
|
|
+ entity.forceDrops = false; // Paper
|
|
}
|
|
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java
|
|
index 9c07e3f5554b3b9cf2a2c4d9239a72342567d7f1..a5633cb6824e801732f5ca2dbc01691794a6975b 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/animal/Panda.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java
|
|
@@ -522,7 +522,9 @@ public class Panda extends Animal {
|
|
}
|
|
|
|
if (!this.level.isClientSide() && this.random.nextInt(700) == 0 && this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) {
|
|
+ this.forceDrops = true; // Paper
|
|
this.spawnAtLocation((ItemLike) Items.SLIME_BALL);
|
|
+ this.forceDrops = false; // Paper
|
|
}
|
|
|
|
}
|
|
@@ -646,7 +648,9 @@ public class Panda extends Animal {
|
|
ItemStack itemstack1 = this.getItemBySlot(EquipmentSlot.MAINHAND);
|
|
|
|
if (!itemstack1.isEmpty() && !player.getAbilities().instabuild) {
|
|
+ this.forceDrops = true; // Paper
|
|
this.spawnAtLocation(itemstack1);
|
|
+ this.forceDrops = false; // Paper
|
|
}
|
|
|
|
this.setItemSlot(EquipmentSlot.MAINHAND, new ItemStack(itemstack.getItem(), 1));
|
|
@@ -938,7 +942,9 @@ public class Panda extends Animal {
|
|
ItemStack itemstack = Panda.this.getItemBySlot(EquipmentSlot.MAINHAND);
|
|
|
|
if (!itemstack.isEmpty()) {
|
|
+ Panda.this.forceDrops = true; // Paper
|
|
Panda.this.spawnAtLocation(itemstack);
|
|
+ Panda.this.forceDrops = false; // Paper
|
|
Panda.this.setItemSlot(EquipmentSlot.MAINHAND, ItemStack.EMPTY);
|
|
int i = Panda.this.isLazy() ? Panda.this.random.nextInt(50) + 10 : Panda.this.random.nextInt(150) + 10;
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java
|
|
index d733bcf1049a21009c2548679a51563c15f79523..793576928dad6752dddd86e62d4c0800d8515fc4 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java
|
|
@@ -306,7 +306,9 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
|
|
@Override
|
|
protected void finishConversion(ServerLevel world) {
|
|
PiglinAi.cancelAdmiring(this);
|
|
+ this.forceDrops = true; // Paper
|
|
this.inventory.removeAllItems().forEach(this::spawnAtLocation);
|
|
+ this.forceDrops = false; // Paper
|
|
super.finishConversion(world);
|
|
}
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java
|
|
index 8aecd15cfb915f44bc6208b656e7db309270c132..5c6b4676c2020b358f8057e9a583eb176c826cb3 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinAi.java
|
|
@@ -260,7 +260,9 @@ public class PiglinAi {
|
|
|
|
private static void holdInOffhand(Piglin piglin, ItemStack stack) {
|
|
if (PiglinAi.isHoldingItemInOffHand(piglin)) {
|
|
+ piglin.forceDrops = true; // Paper
|
|
piglin.spawnAtLocation(piglin.getItemInHand(InteractionHand.OFF_HAND));
|
|
+ piglin.forceDrops = false; // Paper
|
|
}
|
|
|
|
piglin.holdInOffHand(stack);
|
|
@@ -320,7 +322,9 @@ public class PiglinAi {
|
|
|
|
protected static void cancelAdmiring(Piglin piglin) {
|
|
if (PiglinAi.isAdmiringItem(piglin) && !piglin.getOffhandItem().isEmpty()) {
|
|
+ piglin.forceDrops = true; // Paper
|
|
piglin.spawnAtLocation(piglin.getOffhandItem());
|
|
+ piglin.forceDrops = false; // Paper
|
|
piglin.setItemInHand(InteractionHand.OFF_HAND, ItemStack.EMPTY);
|
|
}
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/entity/raid/Raider.java b/src/main/java/net/minecraft/world/entity/raid/Raider.java
|
|
index 4bb9730b6a42702e91467f980b9f045585039db3..5f68945264d138ae04d6bcbd5bde310b42e30713 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/raid/Raider.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/raid/Raider.java
|
|
@@ -250,7 +250,9 @@ public abstract class Raider extends PatrollingMonster {
|
|
double d0 = (double) this.getEquipmentDropChance(enumitemslot);
|
|
|
|
if (!itemstack1.isEmpty() && (double) Math.max(this.random.nextFloat() - 0.1F, 0.0F) < d0) {
|
|
+ this.forceDrops = true; // Paper
|
|
this.spawnAtLocation(itemstack1);
|
|
+ this.forceDrops = false; // Paper
|
|
}
|
|
|
|
this.onItemPickup(item);
|