mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-13 18:31:20 +01:00
89d51d5f29
Because this exploit has been widely known for years and has not been fixed by Mojang, we decided that it was worth allowing people to toggle it on/off due to how easy it is to make it configurable. It should be noted that this decision does not promise all future exploits will be configurable.
106 lines
6.2 KiB
Diff
106 lines
6.2 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 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 012586360a48369dad243dbb8892579a1dbcca90..edeb1899996e53d276d7481e8eddee65249a07d3 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
|
|
@@ -87,7 +87,9 @@ public class WorkAtComposter extends WorkAtPoi {
|
|
simpleContainer.removeItemType(Items.WHEAT, m);
|
|
ItemStack itemStack = simpleContainer.addItem(new ItemStack(Items.BREAD, l));
|
|
if (!itemStack.isEmpty()) {
|
|
+ entity.forceDrops = true; // Paper - Add missing forceDrop toggles
|
|
entity.spawnAtLocation(itemStack, 0.5F);
|
|
+ entity.forceDrops = false; // Paper - Add missing forceDrop toggles
|
|
}
|
|
|
|
}
|
|
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 4224e8e75613b6ec0228b2757cb98140d83bc2e2..4abd26c7baf8f198f13dd41a3146f9ece13a4164 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/animal/Panda.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java
|
|
@@ -535,7 +535,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 - Add missing forceDrop toggles
|
|
this.spawnAtLocation((ItemLike) Items.SLIME_BALL);
|
|
+ this.forceDrops = false; // Paper - Add missing forceDrop toggles
|
|
}
|
|
|
|
}
|
|
@@ -659,7 +661,9 @@ public class Panda extends Animal {
|
|
ItemStack itemstack1 = this.getItemBySlot(EquipmentSlot.MAINHAND);
|
|
|
|
if (!itemstack1.isEmpty() && !player.getAbilities().instabuild) {
|
|
+ this.forceDrops = true; // Paper - Add missing forceDrop toggles
|
|
this.spawnAtLocation(itemstack1);
|
|
+ this.forceDrops = false; // Paper - Add missing forceDrop toggles
|
|
}
|
|
|
|
this.setItemSlot(EquipmentSlot.MAINHAND, new ItemStack(itemstack.getItem(), 1));
|
|
@@ -941,7 +945,9 @@ public class Panda extends Animal {
|
|
ItemStack itemstack = Panda.this.getItemBySlot(EquipmentSlot.MAINHAND);
|
|
|
|
if (!itemstack.isEmpty()) {
|
|
+ Panda.this.forceDrops = true; // Paper - Add missing forceDrop toggles
|
|
Panda.this.spawnAtLocation(itemstack);
|
|
+ Panda.this.forceDrops = false; // Paper - Add missing forceDrop toggles
|
|
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 8231b48a9e88adb2a1ca3441ee81e3d653c9ae78..ea0902b4ba68a89b1f51281b10c1dfd1bfb42833 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
|
|
@@ -317,7 +317,9 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento
|
|
@Override
|
|
protected void finishConversion(ServerLevel world) {
|
|
PiglinAi.cancelAdmiring(this);
|
|
+ this.forceDrops = true; // Paper - Add missing forceDrop toggles
|
|
this.inventory.removeAllItems().forEach(this::spawnAtLocation);
|
|
+ this.forceDrops = false; // Paper - Add missing forceDrop toggles
|
|
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 deabb58c4562b22d27e450c97812e18e30cbfde7..4a071dea48e86a962fd41a6ebecc5dfdaf9df78a 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
|
|
@@ -271,7 +271,9 @@ public class PiglinAi {
|
|
|
|
private static void holdInOffhand(Piglin piglin, ItemStack stack) {
|
|
if (PiglinAi.isHoldingItemInOffHand(piglin)) {
|
|
+ piglin.forceDrops = true; // Paper - Add missing forceDrop toggles
|
|
piglin.spawnAtLocation(piglin.getItemInHand(InteractionHand.OFF_HAND));
|
|
+ piglin.forceDrops = false; // Paper - Add missing forceDrop toggles
|
|
}
|
|
|
|
piglin.holdInOffHand(stack);
|
|
@@ -331,7 +333,9 @@ public class PiglinAi {
|
|
|
|
protected static void cancelAdmiring(Piglin piglin) {
|
|
if (PiglinAi.isAdmiringItem(piglin) && !piglin.getOffhandItem().isEmpty()) {
|
|
+ piglin.forceDrops = true; // Paper - Add missing forceDrop toggles
|
|
piglin.spawnAtLocation(piglin.getOffhandItem());
|
|
+ piglin.forceDrops = false; // Paper - Add missing forceDrop toggles
|
|
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 f696ae53bf1192b2ebfcd6406adfdb494ab2521c..d783b4d561e252af8928e4b1ea13c4e61598f8bf 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/raid/Raider.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/raid/Raider.java
|
|
@@ -253,7 +253,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 - Add missing forceDrop toggles
|
|
this.spawnAtLocation(itemstack1);
|
|
+ this.forceDrops = false; // Paper - Add missing forceDrop toggles
|
|
}
|
|
|
|
this.onItemPickup(item);
|