Updated Upstream (Paper)

Upstream has released updates that appear to apply and compile correctly

Paper Changes:
98a702c7d [CI-SKIP] [Auto] Rebuild Patches
cab361600 Expose LivingEntity hurt direction
7ef05fbd8 Do not perform neighbour updates when using debug stick (Fixes #2134)
This commit is contained in:
BillyGalbreath
2020-12-23 00:10:08 -06:00
parent 8cabaaeced
commit 4e8a150377
125 changed files with 784 additions and 121 deletions

2
Paper

Submodule Paper updated: a70924789b...98a702c7d5

View File

@@ -0,0 +1,731 @@
package net.minecraft.server;
import java.util.Iterator;
import java.util.List;
import java.util.function.Supplier;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import javax.annotation.Nullable;
// CraftBukkit start
import org.bukkit.craftbukkit.entity.CraftHumanEntity;
import org.bukkit.craftbukkit.inventory.CraftItemStack;
import org.bukkit.entity.HumanEntity;
import org.bukkit.event.inventory.InventoryMoveItemEvent;
import org.bukkit.event.inventory.InventoryPickupItemEvent;
import org.bukkit.inventory.Inventory;
// CraftBukkit end
public class TileEntityHopper extends TileEntityLootable implements IHopper, ITickable {
private NonNullList<ItemStack> items;
private int j;
private long k;
// CraftBukkit start - add fields and methods
public List<HumanEntity> transaction = new java.util.ArrayList<HumanEntity>();
private int maxStack = MAX_STACK;
public List<ItemStack> getContents() {
return this.items;
}
public void onOpen(CraftHumanEntity who) {
transaction.add(who);
}
public void onClose(CraftHumanEntity who) {
transaction.remove(who);
}
public List<HumanEntity> getViewers() {
return transaction;
}
@Override
public int getMaxStackSize() {
return maxStack;
}
public void setMaxStackSize(int size) {
maxStack = size;
}
// CraftBukkit end
public TileEntityHopper() {
super(TileEntityTypes.HOPPER);
this.items = NonNullList.a(5, ItemStack.b);
this.j = -1;
}
@Override
public void load(IBlockData iblockdata, NBTTagCompound nbttagcompound) {
super.load(iblockdata, nbttagcompound);
this.items = NonNullList.a(this.getSize(), ItemStack.b);
if (!this.b(nbttagcompound)) {
ContainerUtil.b(nbttagcompound, this.items);
}
this.j = nbttagcompound.getInt("TransferCooldown");
}
@Override
public NBTTagCompound save(NBTTagCompound nbttagcompound) {
super.save(nbttagcompound);
if (!this.c(nbttagcompound)) {
ContainerUtil.a(nbttagcompound, this.items);
}
nbttagcompound.setInt("TransferCooldown", this.j);
return nbttagcompound;
}
@Override
public int getSize() {
return this.items.size();
}
@Override
public ItemStack splitStack(int i, int j) {
this.d((EntityHuman) null);
return ContainerUtil.a(this.f(), i, j);
}
@Override
public void setItem(int i, ItemStack itemstack) {
this.d((EntityHuman) null);
this.f().set(i, itemstack);
if (itemstack.getCount() > this.getMaxStackSize()) {
itemstack.setCount(this.getMaxStackSize());
}
}
@Override
protected IChatBaseComponent getContainerName() {
return new ChatMessage("container.hopper");
}
@Override
public void tick() {
if (this.world != null && !this.world.isClientSide) {
--this.j;
this.k = this.world.getTime();
if (!this.m()) {
this.setCooldown(0);
// Spigot start
boolean result = this.a(() -> {
return a((IHopper) this);
});
if (!result && this.world.spigotConfig.hopperCheck > 1) {
this.setCooldown(this.world.spigotConfig.hopperCheck);
}
// Spigot end
}
}
}
private boolean a(Supplier<Boolean> supplier) {
if (this.world != null && !this.world.isClientSide) {
if (!this.m() && (Boolean) this.getBlock().get(BlockHopper.ENABLED)) {
boolean flag = false;
if (!this.isEmpty()) {
flag = this.k();
}
if (!this.j()) {
flag |= (Boolean) supplier.get();
}
if (flag) {
this.setCooldown(world.spigotConfig.hopperTransfer); // Spigot
this.update();
return true;
}
}
return false;
} else {
return false;
}
}
private boolean j() {
Iterator iterator = this.items.iterator();
ItemStack itemstack;
do {
if (!iterator.hasNext()) {
return true;
}
itemstack = (ItemStack) iterator.next();
} while (!itemstack.isEmpty() && itemstack.getCount() == itemstack.getMaxStackSize());
return false;
}
// Paper start - Optimize Hoppers
private static boolean skipPullModeEventFire = false;
private static boolean skipPushModeEventFire = false;
static boolean skipHopperEvents = false;
private boolean hopperPush(IInventory iinventory, EnumDirection enumdirection) {
skipPushModeEventFire = skipHopperEvents;
boolean foundItem = false;
for (int i = 0; i < this.getSize(); ++i) {
ItemStack item = this.getItem(i);
if (!item.isEmpty()) {
foundItem = true;
ItemStack origItemStack = item;
ItemStack itemstack = origItemStack;
final int origCount = origItemStack.getCount();
final int moved = Math.min(world.spigotConfig.hopperAmount, origCount);
origItemStack.setCount(moved);
// We only need to fire the event once to give protection plugins a chance to cancel this event
// Because nothing uses getItem, every event call should end up the same result.
if (!skipPushModeEventFire) {
itemstack = callPushMoveEvent(iinventory, itemstack);
if (itemstack == null) { // cancelled
origItemStack.setCount(origCount);
return false;
}
}
final ItemStack itemstack2 = addItem(this, iinventory, itemstack, enumdirection);
final int remaining = itemstack2.getCount();
if (remaining != moved) {
origItemStack = origItemStack.cloneItemStack(true);
origItemStack.setCount(origCount);
if (!origItemStack.isEmpty()) {
origItemStack.setCount(origCount - moved + remaining);
}
this.setItem(i, origItemStack);
iinventory.update();
return true;
}
origItemStack.setCount(origCount);
}
}
if (foundItem && world.paperConfig.cooldownHopperWhenFull) { // Inventory was full - cooldown
this.setCooldown(world.spigotConfig.hopperTransfer);
}
return false;
}
private static boolean hopperPull(IHopper ihopper, IInventory iinventory, ItemStack origItemStack, int i) {
ItemStack itemstack = origItemStack;
final int origCount = origItemStack.getCount();
final World world = ihopper.getWorld();
final int moved = Math.min(world.spigotConfig.hopperAmount, origCount);
itemstack.setCount(moved);
if (!skipPullModeEventFire) {
itemstack = callPullMoveEvent(ihopper, iinventory, itemstack);
if (itemstack == null) { // cancelled
origItemStack.setCount(origCount);
// Drastically improve performance by returning true.
// No plugin could of relied on the behavior of false as the other call
// site for IMIE did not exhibit the same behavior
return true;
}
}
final ItemStack itemstack2 = addItem(iinventory, ihopper, itemstack, null);
final int remaining = itemstack2.getCount();
if (remaining != moved) {
origItemStack = origItemStack.cloneItemStack(true);
origItemStack.setCount(origCount);
if (!origItemStack.isEmpty()) {
origItemStack.setCount(origCount - moved + remaining);
}
IGNORE_TILE_UPDATES = true;
iinventory.setItem(i, origItemStack);
IGNORE_TILE_UPDATES = false;
iinventory.update();
return true;
}
origItemStack.setCount(origCount);
if (world.paperConfig.cooldownHopperWhenFull) {
cooldownHopper(ihopper);
}
return false;
}
private ItemStack callPushMoveEvent(IInventory iinventory, ItemStack itemstack) {
Inventory destinationInventory = getInventory(iinventory);
InventoryMoveItemEvent event = new InventoryMoveItemEvent(this.getOwner(false).getInventory(),
CraftItemStack.asCraftMirror(itemstack), destinationInventory, true);
boolean result = event.callEvent();
if (!event.calledGetItem && !event.calledSetItem) {
skipPushModeEventFire = true;
}
if (!result) {
cooldownHopper(this);
return null;
}
if (event.calledSetItem) {
return CraftItemStack.asNMSCopy(event.getItem());
} else {
return itemstack;
}
}
private static ItemStack callPullMoveEvent(IHopper hopper, IInventory iinventory, ItemStack itemstack) {
Inventory sourceInventory = getInventory(iinventory);
Inventory destination = getInventory(hopper);
InventoryMoveItemEvent event = new InventoryMoveItemEvent(sourceInventory,
// Mirror is safe as we no plugins ever use this item
CraftItemStack.asCraftMirror(itemstack), destination, false);
boolean result = event.callEvent();
if (!event.calledGetItem && !event.calledSetItem) {
skipPullModeEventFire = true;
}
if (!result) {
cooldownHopper(hopper);
return null;
}
if (event.calledSetItem) {
return CraftItemStack.asNMSCopy(event.getItem());
} else {
return itemstack;
}
}
private static Inventory getInventory(IInventory iinventory) {
Inventory sourceInventory;// Have to special case large chests as they work oddly
if (iinventory instanceof InventoryLargeChest) {
sourceInventory = new org.bukkit.craftbukkit.inventory.CraftInventoryDoubleChest((InventoryLargeChest) iinventory);
} else if (iinventory instanceof TileEntity) {
sourceInventory = ((TileEntity) iinventory).getOwner(false).getInventory();
} else {
sourceInventory = iinventory.getOwner().getInventory();
}
return sourceInventory;
}
private static void cooldownHopper(IHopper hopper) {
if (hopper instanceof TileEntityHopper) {
((TileEntityHopper) hopper).setCooldown(hopper.getWorld().spigotConfig.hopperTransfer);
} else if (hopper instanceof EntityMinecartHopper) {
((EntityMinecartHopper) hopper).setCooldown(hopper.getWorld().spigotConfig.hopperTransfer / 2);
}
}
// Paper end
private boolean k() {
IInventory iinventory = this.l();
if (iinventory == null) {
return false;
} else {
EnumDirection enumdirection = ((EnumDirection) this.getBlock().get(BlockHopper.FACING)).opposite();
if (this.b(iinventory, enumdirection)) {
return false;
} else {
return hopperPush(iinventory, enumdirection); /* // Paper - disable rest
for (int i = 0; i < this.getSize(); ++i) {
if (!this.getItem(i).isEmpty()) {
ItemStack itemstack = this.getItem(i).cloneItemStack();
// ItemStack itemstack1 = addItem(this, iinventory, this.splitStack(i, 1), enumdirection);
// CraftBukkit start - Call event when pushing items into other inventories
CraftItemStack oitemstack = CraftItemStack.asCraftMirror(this.splitStack(i, world.spigotConfig.hopperAmount)); // Spigot
Inventory destinationInventory;
// Have to special case large chests as they work oddly
if (iinventory instanceof InventoryLargeChest) {
destinationInventory = new org.bukkit.craftbukkit.inventory.CraftInventoryDoubleChest((InventoryLargeChest) iinventory);
} else {
destinationInventory = iinventory.getOwner().getInventory();
}
InventoryMoveItemEvent event = new InventoryMoveItemEvent(this.getOwner().getInventory(), oitemstack.clone(), destinationInventory, true);
this.getWorld().getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) {
this.setItem(i, itemstack);
this.setCooldown(world.spigotConfig.hopperTransfer); // Spigot
return false;
}
int origCount = event.getItem().getAmount(); // Spigot
ItemStack itemstack1 = addItem(this, iinventory, CraftItemStack.asNMSCopy(event.getItem()), enumdirection);
// CraftBukkit end
if (itemstack1.isEmpty()) {
iinventory.update();
return true;
}
itemstack.subtract(origCount - itemstack1.getCount()); // Spigot
this.setItem(i, itemstack);
}
}
return false;*/ // Paper - end commenting out replaced block for Hopper Optimizations
}
}
}
private static IntStream a(IInventory iinventory, EnumDirection enumdirection) {
return iinventory instanceof IWorldInventory ? IntStream.of(((IWorldInventory) iinventory).getSlotsForFace(enumdirection)) : IntStream.range(0, iinventory.getSize());
}
private static boolean allMatch(IInventory iinventory, EnumDirection enumdirection, java.util.function.BiPredicate<ItemStack, Integer> test) {
if (iinventory instanceof IWorldInventory) {
for (int i : ((IWorldInventory) iinventory).getSlotsForFace(enumdirection)) {
if (!test.test(iinventory.getItem(i), i)) {
return false;
}
}
} else {
int size = iinventory.getSize();
for (int i = 0; i < size; i++) {
if (!test.test(iinventory.getItem(i), i)) {
return false;
}
}
}
return true;
}
private static boolean anyMatch(IInventory iinventory, EnumDirection enumdirection, java.util.function.BiPredicate<ItemStack, Integer> test) {
if (iinventory instanceof IWorldInventory) {
for (int i : ((IWorldInventory) iinventory).getSlotsForFace(enumdirection)) {
if (test.test(iinventory.getItem(i), i)) {
return true;
}
}
} else {
int size = iinventory.getSize();
for (int i = 0; i < size; i++) {
if (test.test(iinventory.getItem(i), i)) {
return true;
}
}
}
return true;
}
private static final java.util.function.BiPredicate<ItemStack, Integer> STACK_SIZE_TEST = (itemstack, i) -> itemstack.getCount() >= itemstack.getMaxStackSize();
private static final java.util.function.BiPredicate<ItemStack, Integer> IS_EMPTY_TEST = (itemstack, i) -> itemstack.isEmpty();
// Paper end
private boolean b(IInventory iinventory, EnumDirection enumdirection) {
// Paper start - no streams
return allMatch(iinventory, enumdirection, STACK_SIZE_TEST);
// Paper end
}
private static boolean c(IInventory iinventory, EnumDirection enumdirection) {
return allMatch(iinventory, enumdirection, IS_EMPTY_TEST);
}
public static boolean a(IHopper ihopper) {
IInventory iinventory = b(ihopper);
if (iinventory != null) {
EnumDirection enumdirection = EnumDirection.DOWN;
// Paper start - optimize hoppers and remove streams
skipPullModeEventFire = skipHopperEvents;
return !c(iinventory, enumdirection) && anyMatch(iinventory, enumdirection, (item, i) -> {
// Logic copied from below to avoid extra getItem calls
if (!item.isEmpty() && canTakeItem(iinventory, item, i, enumdirection)) {
return hopperPull(ihopper, iinventory, item, i);
} else {
return false;
}
});
// Paper end
} else {
Iterator iterator = c(ihopper).iterator();
EntityItem entityitem;
do {
if (!iterator.hasNext()) {
return false;
}
entityitem = (EntityItem) iterator.next();
} while (!a((IInventory) ihopper, entityitem));
return true;
}
}
private static boolean a(IHopper ihopper, IInventory iinventory, int i, EnumDirection enumdirection) {// Paper - method unused as logic is inlined above
ItemStack itemstack = iinventory.getItem(i);
if (!itemstack.isEmpty() && b(iinventory, itemstack, i, enumdirection)) { // If this logic changes, update above. this is left inused incase reflective plugins
return hopperPull(ihopper, iinventory, itemstack, i); /* // Paper - disable rest
ItemStack itemstack1 = itemstack.cloneItemStack();
// ItemStack itemstack2 = addItem(iinventory, ihopper, iinventory.splitStack(i, 1), (EnumDirection) null);
// CraftBukkit start - Call event on collection of items from inventories into the hopper
CraftItemStack oitemstack = CraftItemStack.asCraftMirror(iinventory.splitStack(i, ihopper.getWorld().spigotConfig.hopperAmount)); // Spigot
Inventory sourceInventory;
// Have to special case large chests as they work oddly
if (iinventory instanceof InventoryLargeChest) {
sourceInventory = new org.bukkit.craftbukkit.inventory.CraftInventoryDoubleChest((InventoryLargeChest) iinventory);
} else {
sourceInventory = iinventory.getOwner().getInventory();
}
InventoryMoveItemEvent event = new InventoryMoveItemEvent(sourceInventory, oitemstack.clone(), ihopper.getOwner().getInventory(), false);
ihopper.getWorld().getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) {
iinventory.setItem(i, itemstack1);
if (ihopper instanceof TileEntityHopper) {
((TileEntityHopper) ihopper).setCooldown(ihopper.getWorld().spigotConfig.hopperTransfer); // Spigot
} else if (ihopper instanceof EntityMinecartHopper) {
((EntityMinecartHopper) ihopper).setCooldown(ihopper.getWorld().spigotConfig.hopperTransfer / 2); // Spigot
}
return false;
}
int origCount = event.getItem().getAmount(); // Spigot
ItemStack itemstack2 = addItem(iinventory, ihopper, CraftItemStack.asNMSCopy(event.getItem()), null);
// CraftBukkit end
if (itemstack2.isEmpty()) {
iinventory.update();
return true;
}
itemstack1.subtract(origCount - itemstack2.getCount()); // Spigot
iinventory.setItem(i, itemstack1);*/ // Paper - end commenting out replaced block for Hopper Optimizations
}
return false;
}
public static boolean a(IInventory iinventory, EntityItem entityitem) {
boolean flag = false;
// CraftBukkit start
InventoryPickupItemEvent event = new InventoryPickupItemEvent(getInventory(iinventory), (org.bukkit.entity.Item) entityitem.getBukkitEntity()); // Paper - use getInventory() to avoid snapshot creation
entityitem.world.getServer().getPluginManager().callEvent(event);
if (event.isCancelled()) {
return false;
}
// CraftBukkit end
ItemStack itemstack = entityitem.getItemStack().cloneItemStack();
ItemStack itemstack1 = addItem((IInventory) null, iinventory, itemstack, (EnumDirection) null);
if (itemstack1.isEmpty()) {
flag = true;
entityitem.die();
} else {
entityitem.setItemStack(itemstack1);
}
return flag;
}
public static ItemStack addItem(@Nullable IInventory iinventory, IInventory iinventory1, ItemStack itemstack, @Nullable EnumDirection enumdirection) {
if (iinventory1 instanceof IWorldInventory && enumdirection != null) {
IWorldInventory iworldinventory = (IWorldInventory) iinventory1;
int[] aint = iworldinventory.getSlotsForFace(enumdirection);
for (int i = 0; i < aint.length && !itemstack.isEmpty(); ++i) {
itemstack = a(iinventory, iinventory1, itemstack, aint[i], enumdirection);
}
} else {
int j = iinventory1.getSize();
for (int k = 0; k < j && !itemstack.isEmpty(); ++k) {
itemstack = a(iinventory, iinventory1, itemstack, k, enumdirection);
}
}
return itemstack;
}
private static boolean a(IInventory iinventory, ItemStack itemstack, int i, @Nullable EnumDirection enumdirection) {
return !iinventory.b(i, itemstack) ? false : !(iinventory instanceof IWorldInventory) || ((IWorldInventory) iinventory).canPlaceItemThroughFace(i, itemstack, enumdirection);
}
private static boolean canTakeItem(IInventory iinventory, ItemStack itemstack, int i, EnumDirection enumdirection) { return b(iinventory, itemstack, i, enumdirection); } // Paper - OBFHELPER
private static boolean b(IInventory iinventory, ItemStack itemstack, int i, EnumDirection enumdirection) {
return !(iinventory instanceof IWorldInventory) || ((IWorldInventory) iinventory).canTakeItemThroughFace(i, itemstack, enumdirection);
}
private static ItemStack a(@Nullable IInventory iinventory, IInventory iinventory1, ItemStack itemstack, int i, @Nullable EnumDirection enumdirection) {
ItemStack itemstack1 = iinventory1.getItem(i);
if (a(iinventory1, itemstack, i, enumdirection)) {
boolean flag = false;
boolean flag1 = iinventory1.isEmpty();
if (itemstack1.isEmpty()) {
IGNORE_TILE_UPDATES = true; // Paper
iinventory1.setItem(i, itemstack);
IGNORE_TILE_UPDATES = false; // Paper
itemstack = ItemStack.b;
flag = true;
} else if (a(itemstack1, itemstack)) {
int j = itemstack.getMaxStackSize() - itemstack1.getCount();
int k = Math.min(itemstack.getCount(), j);
itemstack.subtract(k);
itemstack1.add(k);
flag = k > 0;
}
if (flag) {
if (flag1 && iinventory1 instanceof TileEntityHopper) {
TileEntityHopper tileentityhopper = (TileEntityHopper) iinventory1;
if (!tileentityhopper.y()) {
byte b0 = 0;
if (iinventory instanceof TileEntityHopper) {
TileEntityHopper tileentityhopper1 = (TileEntityHopper) iinventory;
if (tileentityhopper.k >= tileentityhopper1.k) {
b0 = 1;
}
}
tileentityhopper.setCooldown(tileentityhopper.world.spigotConfig.hopperTransfer - b0); // Spigot
}
}
iinventory1.update();
}
}
return itemstack;
}
@Nullable
private IInventory l() {
EnumDirection enumdirection = (EnumDirection) this.getBlock().get(BlockHopper.FACING);
return b(this.getWorld(), this.position.shift(enumdirection));
}
@Nullable
public static IInventory b(IHopper ihopper) {
return a(ihopper.getWorld(), ihopper.x(), ihopper.z() + 1.0D, ihopper.A());
}
public static List<EntityItem> c(IHopper ihopper) {
// Paper start - Optimize item suck in. remove streams, restore 1.12 checks. Seriously checking the bowl?!
World world = ihopper.getWorld();
double d0 = ihopper.getX();
double d1 = ihopper.getY();
double d2 = ihopper.getZ();
AxisAlignedBB bb = new AxisAlignedBB(d0 - 0.5D, d1, d2 - 0.5D, d0 + 0.5D, d1 + 1.5D, d2 + 0.5D);
return world.getEntities(EntityItem.class, bb, Entity::isAlive);
// Paper end
}
@Nullable
public static IInventory b(World world, BlockPosition blockposition) {
return a(world, (double) blockposition.getX() + 0.5D, (double) blockposition.getY() + 0.5D, (double) blockposition.getZ() + 0.5D, true); // Paper
}
@Nullable
public static IInventory a(World world, double d0, double d1, double d2) { return a(world, d0, d1, d2, false); } // Paper - overload to default false
public static IInventory a(World world, double d0, double d1, double d2, boolean optimizeEntities) { // Paper
Object object = null;
BlockPosition blockposition = new BlockPosition(d0, d1, d2);
if ( !world.isLoaded( blockposition ) ) return null; // Spigot
IBlockData iblockdata = world.getType(blockposition);
Block block = iblockdata.getBlock();
if (block instanceof IInventoryHolder) {
object = ((IInventoryHolder) block).a(iblockdata, world, blockposition);
} else if (block.isTileEntity()) {
TileEntity tileentity = world.getTileEntity(blockposition);
if (tileentity instanceof IInventory) {
object = (IInventory) tileentity;
if (object instanceof TileEntityChest && block instanceof BlockChest) {
object = BlockChest.getInventory((BlockChest) block, iblockdata, world, blockposition, true);
}
}
}
if (object == null && (!optimizeEntities || !org.bukkit.craftbukkit.util.CraftMagicNumbers.getMaterial(block).isOccluding())) { // Paper
List<Entity> list = world.getEntities((Entity) null, new AxisAlignedBB(d0 - 0.5D, d1 - 0.5D, d2 - 0.5D, d0 + 0.5D, d1 + 0.5D, d2 + 0.5D), IEntitySelector.d);
if (!list.isEmpty()) {
object = (IInventory) list.get(world.random.nextInt(list.size()));
}
}
return (IInventory) object;
}
private static boolean a(ItemStack itemstack, ItemStack itemstack1) {
return itemstack.getItem() != itemstack1.getItem() ? false : (itemstack.getDamage() != itemstack1.getDamage() ? false : (itemstack.getCount() > itemstack.getMaxStackSize() ? false : ItemStack.equals(itemstack, itemstack1)));
}
@Override
public double x() {
return (double) this.position.getX() + 0.5D;
}
@Override
public double z() {
return (double) this.position.getY() + 0.5D;
}
@Override
public double A() {
return (double) this.position.getZ() + 0.5D;
}
private void setCooldown(int i) {
this.j = i;
}
private boolean m() {
return this.j > 0;
}
private boolean y() {
return this.j > 8;
}
@Override
protected NonNullList<ItemStack> f() {
return this.items;
}
@Override
protected void a(NonNullList<ItemStack> nonnulllist) {
this.items = nonnulllist;
}
public void a(Entity entity) {
if (entity instanceof EntityItem) {
BlockPosition blockposition = this.getPosition();
if (VoxelShapes.c(VoxelShapes.a(entity.getBoundingBox().d((double) (-blockposition.getX()), (double) (-blockposition.getY()), (double) (-blockposition.getZ()))), this.aa_(), OperatorBoolean.AND)) {
this.a(() -> {
return a((IInventory) this, (EntityItem) entity);
});
}
}
}
@Override
protected Container createContainer(int i, PlayerInventory playerinventory) {
return new ContainerHopper(i, playerinventory, this);
}
}

View File

@@ -5,12 +5,12 @@ Subject: [PATCH] LivingEntity safeFallDistance
diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java
index e535750d01a6c1bf4b1fe94df518166213da9b08..156df8cf25d1ee07988623fe0a8d87b652390b3b 100644 index 9f0645dc5f76ee9ef73d88f768025429e5a9edf7..4ccbb3ef3c597ef9da2c6744f410283a1dc2538c 100644
--- a/src/main/java/org/bukkit/entity/LivingEntity.java --- a/src/main/java/org/bukkit/entity/LivingEntity.java
+++ b/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java
@@ -836,4 +836,20 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource @@ -850,4 +850,20 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource
*/ */
void playPickupItemAnimation(@NotNull Item item, int quantity); void setHurtDirection(float hurtDirection);
// Paper end // Paper end
+ +
+ // Purpur start + // Purpur start

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] LivingEntity#broadcastItemBreak
diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java
index 156df8cf25d1ee07988623fe0a8d87b652390b3b..d3adc23bb34d108d2afa9903988606d2d53f6513 100644 index 4ccbb3ef3c597ef9da2c6744f410283a1dc2538c..50c26609aadf8d4a51cd81cc0c8952e4cfeee738 100644
--- a/src/main/java/org/bukkit/entity/LivingEntity.java --- a/src/main/java/org/bukkit/entity/LivingEntity.java
+++ b/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java
@@ -851,5 +851,12 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource @@ -865,5 +865,12 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource
* @param safeFallDistance Safe fall distance * @param safeFallDistance Safe fall distance
*/ */
void setSafeFallDistance(float safeFallDistance); void setSafeFallDistance(float safeFallDistance);

View File

@@ -362,15 +362,6 @@ Copy passenger list in enderTeleportTo
Fixes https://github.com/Spottedleaf/Tuinity/issues/208 Fixes https://github.com/Spottedleaf/Tuinity/issues/208
Apply more strict limitations to books
For reference is the vanilla limits, this must be checked
on update
- Max book pages: 50
- Max Length: 256
Currently, patch limits to 50 pages and 512 characters.
Rewrite the light engine Rewrite the light engine
The standard vanilla light engine is plagued by The standard vanilla light engine is plagued by
@@ -8406,7 +8397,7 @@ index dcc5b098bfe36ef7ee8536b3da65c4ce1748c9d8..7b32a1fb79dcae355a8d95f3a8aa4284
if (entityhuman != null) { if (entityhuman != null) {
double d0 = entityhuman.h((Entity) this); // CraftBukkit - decompile error double d0 = entityhuman.h((Entity) this); // CraftBukkit - decompile error
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index dd3287f953a1a24d2406816b3c0ae176476b6452..43a4b474273a58ac3995407e72e5b830696b9ba0 100644 index 0294ff10dc8edb24aabfbe1589048a405c356ef0..9737c8b31482de140e14e58aa9baa8618d1c3fb4 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java --- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -2858,7 +2858,11 @@ public abstract class EntityLiving extends Entity { @@ -2858,7 +2858,11 @@ public abstract class EntityLiving extends Entity {
@@ -11213,7 +11204,7 @@ index 6c399bcea03e839bf2f21e92b5d76d46b7088667..d3bf356ea768a32a5684eb851a2a0add
} }
// Paper end - optimised tracker // Paper end - optimised tracker
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index 3e1f88bce8e0ba95f73bca204549db0c65b1465e..df01083f826463cce714eccd5317791c781f04ed 100644 index 4d3a427b16e1e0d6889faf4b913b212f8a6e938d..acaaf78c13f379f9b076d615c8a77ebc4bc8d2be 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java --- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -419,7 +419,9 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -419,7 +419,9 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -11227,44 +11218,7 @@ index 3e1f88bce8e0ba95f73bca204549db0c65b1465e..df01083f826463cce714eccd5317791c
this.networkManager.sendPacket(new PacketPlayOutVehicleMove(entity)); this.networkManager.sendPacket(new PacketPlayOutVehicleMove(entity));
return; return;
} }
@@ -898,6 +900,36 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -1068,7 +1070,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
@Override
public void a(PacketPlayInBEdit packetplayinbedit) {
+ // Tuinity start - apply strict vanilla limits to books
+ ItemStack bookStack = packetplayinbedit.b();
+ if (!bookStack.isEmpty() && bookStack.getTag() != null) {
+ NBTTagList pages = bookStack.getTag().getList("pages", 8);
+ if (pages != null && !pages.isEmpty()) {
+ if (pages.size() > 50) {
+ this.minecraftServer.scheduleOnMain(() -> this.disconnect("Book too large!"));
+ return;
+ }
+ for (int i = 0, len = pages.size(); i < len; ++i) {
+ NBTBase base = pages.get(i);
+ if (!(base instanceof NBTTagString)) {
+ this.minecraftServer.scheduleOnMain(() -> this.disconnect("Book too large!"));
+ return;
+ }
+ String string = ((NBTTagString)base).asString();
+ if (string.length() <= 256) {
+ continue;
+ }
+
+ if (string.length() > (256*2)) {
+ this.minecraftServer.scheduleOnMain(() -> this.disconnect("Book too large!"));
+ return;
+ }
+
+ // Don't check the full length of the string, it's too expensive, could be exploited.
+ }
+ }
+ }
+ // Tuinity end - apply strict vanilla limits to books
// Paper start
ItemStack testStack = packetplayinbedit.b(); // TODO(Proximyst): Add obfhelper here
if (!server.isPrimaryThread() && !testStack.isEmpty() && testStack.getTag() != null) {
@@ -1058,7 +1090,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
} }
if (this.teleportPos != null) { if (this.teleportPos != null) {
@@ -11273,7 +11227,7 @@ index 3e1f88bce8e0ba95f73bca204549db0c65b1465e..df01083f826463cce714eccd5317791c
this.A = this.e; this.A = this.e;
this.a(this.teleportPos.x, this.teleportPos.y, this.teleportPos.z, this.player.yaw, this.player.pitch); this.a(this.teleportPos.x, this.teleportPos.y, this.teleportPos.z, this.player.yaw, this.player.pitch);
} }
@@ -1128,7 +1160,7 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -1138,7 +1140,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
speed = player.abilities.walkSpeed * 10f; speed = player.abilities.walkSpeed * 10f;
} }
// Paper start - Prevent moving into unloaded chunks // Paper start - Prevent moving into unloaded chunks
@@ -11282,7 +11236,7 @@ index 3e1f88bce8e0ba95f73bca204549db0c65b1465e..df01083f826463cce714eccd5317791c
this.internalTeleport(this.player.locX(), this.player.locY(), this.player.locZ(), this.player.yaw, this.player.pitch, Collections.emptySet()); this.internalTeleport(this.player.locX(), this.player.locY(), this.player.locZ(), this.player.yaw, this.player.pitch, Collections.emptySet());
return; return;
} }
@@ -1184,6 +1216,7 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -1194,6 +1196,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
} }
this.player.move(EnumMoveType.PLAYER, new Vec3D(d7, d8, d9)); this.player.move(EnumMoveType.PLAYER, new Vec3D(d7, d8, d9));
@@ -11290,7 +11244,7 @@ index 3e1f88bce8e0ba95f73bca204549db0c65b1465e..df01083f826463cce714eccd5317791c
this.player.setOnGround(packetplayinflying.b()); // CraftBukkit - SPIGOT-5810, SPIGOT-5835: reset by this.player.move this.player.setOnGround(packetplayinflying.b()); // CraftBukkit - SPIGOT-5810, SPIGOT-5835: reset by this.player.move
// Paper start - prevent position desync // Paper start - prevent position desync
if (this.teleportPos != null) { if (this.teleportPos != null) {
@@ -1208,7 +1241,7 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -1218,7 +1221,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
} }
this.player.setLocation(d4, d5, d6, f, f1); this.player.setLocation(d4, d5, d6, f, f1);

View File

@@ -149,7 +149,7 @@ index b5e1a860a2569d7668330827614d221b60f3fc78..5f85a1d513f4fdc21b64e1a2b6882e33
// Paper start // Paper start
public static final Predicate<Entity> affectsSpawning = (entity) -> { public static final Predicate<Entity> affectsSpawning = (entity) -> {
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index df01083f826463cce714eccd5317791c781f04ed..d27124959e4527cc7bfa1b38b8d9f5c56894a617 100644 index acaaf78c13f379f9b076d615c8a77ebc4bc8d2be..c709ff1b228008a45c789903a535a0c95f26948f 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java --- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -250,6 +250,12 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -250,6 +250,12 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -174,7 +174,7 @@ index df01083f826463cce714eccd5317791c781f04ed..d27124959e4527cc7bfa1b38b8d9f5c5
// Skip the first time we do this // Skip the first time we do this
if (true) { // Spigot - don't skip any move events if (true) { // Spigot - don't skip any move events
Location oldTo = to.clone(); Location oldTo = to.clone();
@@ -1237,7 +1245,7 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -1217,7 +1225,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
if (!this.player.H() && d11 > org.spigotmc.SpigotConfig.movedWronglyThreshold && !this.player.isSleeping() && !this.player.playerInteractManager.isCreative() && this.player.playerInteractManager.getGameMode() != EnumGamemode.SPECTATOR) { // Spigot if (!this.player.H() && d11 > org.spigotmc.SpigotConfig.movedWronglyThreshold && !this.player.isSleeping() && !this.player.playerInteractManager.isCreative() && this.player.playerInteractManager.getGameMode() != EnumGamemode.SPECTATOR) { // Spigot
flag1 = true; flag1 = true;
@@ -183,7 +183,7 @@ index df01083f826463cce714eccd5317791c781f04ed..d27124959e4527cc7bfa1b38b8d9f5c5
} }
this.player.setLocation(d4, d5, d6, f, f1); this.player.setLocation(d4, d5, d6, f, f1);
@@ -1276,6 +1284,8 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -1256,6 +1264,8 @@ public class PlayerConnection implements PacketListenerPlayIn {
this.lastYaw = to.getYaw(); this.lastYaw = to.getYaw();
this.lastPitch = to.getPitch(); this.lastPitch = to.getPitch();

View File

@@ -30,7 +30,7 @@ index fcb31147622b4b81934be05ffc8de5e821ce69b7..ce26e65aaf25a41663ecd8c935967c33
protected int getChestSlots() { protected int getChestSlots() {
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index 43a4b474273a58ac3995407e72e5b830696b9ba0..876288defab03457555709fabaa0bc07ba58707b 100644 index 9737c8b31482de140e14e58aa9baa8618d1c3fb4..e98e0ca17dbb683fad97be6b9f226e1ce579431f 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java --- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -132,6 +132,7 @@ public abstract class EntityLiving extends Entity { @@ -132,6 +132,7 @@ public abstract class EntityLiving extends Entity {
@@ -62,11 +62,11 @@ index 43a4b474273a58ac3995407e72e5b830696b9ba0..876288defab03457555709fabaa0bc07
protected void playBlockStepSound() { protected void playBlockStepSound() {
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
index 1fc356d0b74c1cbb19bf7527088f1f61b6da5422..66447231244dbe3d6fadaa0d00710f9ec7f72445 100644 index 16e69cfd4994fd6850ee3635ea819379412351c9..0292cae6225ae2ee156f436c8827a018e8ffa723 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
@@ -816,4 +816,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { @@ -826,4 +826,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
getHandle().receive(((CraftItem) item).getHandle(), quantity); getHandle().setHurtDirection(hurtDirection);
} }
// Paper end // Paper end
+ +

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] EntityMoveEvent
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index 876288defab03457555709fabaa0bc07ba58707b..1af01a6b8a2ea0912d552880f69e7f0dfd5ec991 100644 index e98e0ca17dbb683fad97be6b9f226e1ce579431f..4bbfb21d13c7e2f3ffcaaa31bd9ceee3755aa7cc 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java --- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -2813,6 +2813,20 @@ public abstract class EntityLiving extends Entity { @@ -2813,6 +2813,20 @@ public abstract class EntityLiving extends Entity {

View File

@@ -67,10 +67,10 @@ index 08a3875d7a6b8a003ba133a835dcdd75849383ae..5c4d9b1f4e926909439b9c290d7cc572
public Scoreboard getScoreboard() { public Scoreboard getScoreboard() {
return getBukkitEntity().getScoreboard().getHandle(); return getBukkitEntity().getScoreboard().getHandle();
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index d27124959e4527cc7bfa1b38b8d9f5c56894a617..ed86e0b82682ae445c2430115e39588c0a77028d 100644 index c709ff1b228008a45c789903a535a0c95f26948f..69feeaf08a37f30707aee19c955cd8ab0b3c3112 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java --- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -1686,6 +1686,7 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -1666,6 +1666,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
PlayerConnectionUtils.ensureMainThread(packetplayinresourcepackstatus, this, this.player.getWorldServer()); PlayerConnectionUtils.ensureMainThread(packetplayinresourcepackstatus, this, this.player.getWorldServer());
// Paper start // Paper start
PlayerResourcePackStatusEvent.Status packStatus = PlayerResourcePackStatusEvent.Status.values()[packetplayinresourcepackstatus.status.ordinal()]; PlayerResourcePackStatusEvent.Status packStatus = PlayerResourcePackStatusEvent.Status.values()[packetplayinresourcepackstatus.status.ordinal()];

View File

@@ -17,7 +17,7 @@ index 8e93f1540ba5f995489c1fbcec70d10b011cd9c3..470f92c4fb0919d052b19acff8dff533
return this.a; return this.a;
} }
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index ed86e0b82682ae445c2430115e39588c0a77028d..529aa684e410762182f972be250be151e52b7003 100644 index 69feeaf08a37f30707aee19c955cd8ab0b3c3112..db0c2886be026d8a833736bec3396bc0019c16fd 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java --- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -84,6 +84,7 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -84,6 +84,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
@@ -50,7 +50,7 @@ index ed86e0b82682ae445c2430115e39588c0a77028d..529aa684e410762182f972be250be151
if (this.isPendingPing()) { if (this.isPendingPing()) {
if (!this.processedDisconnect && elapsedTime >= KEEPALIVE_LIMIT) { // check keepalive limit, don't fire if already disconnected if (!this.processedDisconnect && elapsedTime >= KEEPALIVE_LIMIT) { // check keepalive limit, don't fire if already disconnected
PlayerConnection.LOGGER.warn("{} was kicked due to keepalive timeout!", this.player.getName()); // more info PlayerConnection.LOGGER.warn("{} was kicked due to keepalive timeout!", this.player.getName()); // more info
@@ -2860,6 +2876,16 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -2840,6 +2856,16 @@ public class PlayerConnection implements PacketListenerPlayIn {
@Override @Override
public void a(PacketPlayInKeepAlive packetplayinkeepalive) { public void a(PacketPlayInKeepAlive packetplayinkeepalive) {

View File

@@ -147,7 +147,7 @@ index 7b32a1fb79dcae355a8d95f3a8aa4284ec5d10db..b281ca841b2b7b51add3409318e2b92d
return false; return false;
} }
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index 1af01a6b8a2ea0912d552880f69e7f0dfd5ec991..1f408592d2af7b3b34f4a70506d1ffcd941c44e0 100644 index 4bbfb21d13c7e2f3ffcaaa31bd9ceee3755aa7cc..9af491260a586d322796f8419d6aa1fffae10140 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java --- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -2171,7 +2171,7 @@ public abstract class EntityLiving extends Entity { @@ -2171,7 +2171,7 @@ public abstract class EntityLiving extends Entity {

View File

@@ -110,7 +110,7 @@ index 42e6761c8b18b79ffd3f4d5e853ea87a2c153c23..cfb009c811bd2908d38da1b0007cb7aa
public EntityCow createChild(WorldServer worldserver, EntityAgeable entityageable) { public EntityCow createChild(WorldServer worldserver, EntityAgeable entityageable) {
return (EntityCow) EntityTypes.COW.a((World) worldserver); return (EntityCow) EntityTypes.COW.a((World) worldserver);
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index 1f408592d2af7b3b34f4a70506d1ffcd941c44e0..8192cbe48cef4e856dd9b5f1e4e4f4ced7c89824 100644 index 9af491260a586d322796f8419d6aa1fffae10140..594e2735cd58a0a19446369b34ba8282f2af2130 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java --- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -80,7 +80,7 @@ public abstract class EntityLiving extends Entity { @@ -80,7 +80,7 @@ public abstract class EntityLiving extends Entity {

View File

@@ -17,10 +17,10 @@ index 5c4d9b1f4e926909439b9c290d7cc5726cb8822e..32d1ca467fd80de220c5bdefd23c1f84
this.playerConnection.sendPacket(new PacketPlayOutOpenSignEditor(tileentitysign.getPosition())); this.playerConnection.sendPacket(new PacketPlayOutOpenSignEditor(tileentitysign.getPosition()));
} }
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index 529aa684e410762182f972be250be151e52b7003..0ef30ff92bb9e86b624c4988c00e3be6d95e554a 100644 index db0c2886be026d8a833736bec3396bc0019c16fd..edac7a57c6c0612e87e836becbe59fc242e21b45 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java --- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -2857,6 +2857,14 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -2837,6 +2837,14 @@ public class PlayerConnection implements PacketListenerPlayIn {
} }
} }
// Paper end // Paper end

View File

@@ -22,7 +22,7 @@ index 2291135eaef64c403183724cb6e413cd7e472672..bc61aaff65a7dc1e7534452b285953b8
super(i, j, k); super(i, j, k);
} }
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index 8192cbe48cef4e856dd9b5f1e4e4f4ced7c89824..3138ca1cf56b7c89461b00a9e59c0a983d0fca77 100644 index 594e2735cd58a0a19446369b34ba8282f2af2130..b9af6b392d4c7e83263d763eb86e77a407ca5ebf 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java --- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -98,9 +98,9 @@ public abstract class EntityLiving extends Entity { @@ -98,9 +98,9 @@ public abstract class EntityLiving extends Entity {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Disable loot drops on death by cramming
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index 3138ca1cf56b7c89461b00a9e59c0a983d0fca77..65639d3485f5dad566a3f709eceffedc0848ccaf 100644 index b9af6b392d4c7e83263d763eb86e77a407ca5ebf..9373b7123eb4f108a96638c3814d50a47426a049 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java --- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -1490,8 +1490,10 @@ public abstract class EntityLiving extends Entity { @@ -1490,8 +1490,10 @@ public abstract class EntityLiving extends Entity {

View File

@@ -1,22 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
Date: Sat, 4 Apr 2020 17:16:30 -0500
Subject: [PATCH] Debug stick should not update neighbors
diff --git a/src/main/java/net/minecraft/server/ItemStack.java b/src/main/java/net/minecraft/server/ItemStack.java
index 3adb29f004d2fee36f3ee9b21ee5417e84b64837..e7759f24819ea7c62d3ae52ed1cc5c00f994a836 100644
--- a/src/main/java/net/minecraft/server/ItemStack.java
+++ b/src/main/java/net/minecraft/server/ItemStack.java
@@ -229,6 +229,11 @@ public final class ItemStack {
if (this.getItem() == Items.BONE_MEAL) {
world.captureTreeGeneration = true;
}
+ // Purpur start
+ else if (this.getItem() == Items.DEBUG_STICK) {
+ world.captureBlockStates = false;
+ }
+ // Purpur end
}
Item item = this.getItem();
EnumInteractionResult enuminteractionresult = item.a(itemactioncontext);

View File

@@ -17,7 +17,7 @@ index bcd70f3d871ef8ef957fde3bb86c5ae29dce3d2f..01cb91589912e1d3e4b1edf9cdc8fabf
public void f(double d0, double d1, double d2) { public void f(double d0, double d1, double d2) {
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index 65639d3485f5dad566a3f709eceffedc0848ccaf..5bde43be4294f0b55d699b2bf2bb598e9ef29fea 100644 index 9373b7123eb4f108a96638c3814d50a47426a049..d774548cf872296384b1fd6317cedbd9a73f87d0 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java --- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -2489,7 +2489,7 @@ public abstract class EntityLiving extends Entity { @@ -2489,7 +2489,7 @@ public abstract class EntityLiving extends Entity {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Add obfhelpers for plugin use
diff --git a/src/main/java/net/minecraft/server/ItemStack.java b/src/main/java/net/minecraft/server/ItemStack.java diff --git a/src/main/java/net/minecraft/server/ItemStack.java b/src/main/java/net/minecraft/server/ItemStack.java
index e7759f24819ea7c62d3ae52ed1cc5c00f994a836..2c908a60401e851e56ec26e444d3c075cb256f24 100644 index 5a62ac72edc49cd032cd02fa8d007959517d063b..fcdb82a4e54810a7da9f5d4e6a0d975c23a24884 100644
--- a/src/main/java/net/minecraft/server/ItemStack.java --- a/src/main/java/net/minecraft/server/ItemStack.java
+++ b/src/main/java/net/minecraft/server/ItemStack.java +++ b/src/main/java/net/minecraft/server/ItemStack.java
@@ -644,6 +644,7 @@ public final class ItemStack { @@ -644,6 +644,7 @@ public final class ItemStack {

View File

@@ -54,7 +54,7 @@ index c2be0c2bc315876f120cff207e5516dda2bd55d7..358d6d660581686a2e8d49e13e8c2ade
if (entry != null) { if (entry != null) {
ItemStack itemstack = (ItemStack) entry.getValue(); ItemStack itemstack = (ItemStack) entry.getValue();
diff --git a/src/main/java/net/minecraft/server/ItemStack.java b/src/main/java/net/minecraft/server/ItemStack.java diff --git a/src/main/java/net/minecraft/server/ItemStack.java b/src/main/java/net/minecraft/server/ItemStack.java
index 2c908a60401e851e56ec26e444d3c075cb256f24..6a9b7e609489244c4d239895de77033f58632d9d 100644 index fcdb82a4e54810a7da9f5d4e6a0d975c23a24884..0d011a1aae667f473f1ad2ec60d8506cd32dff6d 100644
--- a/src/main/java/net/minecraft/server/ItemStack.java --- a/src/main/java/net/minecraft/server/ItemStack.java
+++ b/src/main/java/net/minecraft/server/ItemStack.java +++ b/src/main/java/net/minecraft/server/ItemStack.java
@@ -418,10 +418,19 @@ public final class ItemStack { @@ -418,10 +418,19 @@ public final class ItemStack {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Implement elytra settings
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index 5bde43be4294f0b55d699b2bf2bb598e9ef29fea..1e32658dc3dada926767c35ebf618e1b493d5607 100644 index d774548cf872296384b1fd6317cedbd9a73f87d0..92095d28bfdcf309585b5684be3b880591b7d18c 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java --- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -2848,7 +2848,16 @@ public abstract class EntityLiving extends Entity { @@ -2848,7 +2848,16 @@ public abstract class EntityLiving extends Entity {
@@ -46,7 +46,7 @@ index e775fe69ee7e555721bc73e7cb0dd3136736bc9c..990eb656699d9ead26b42fbb305530b7
itemstack.subtract(1); itemstack.subtract(1);
} else ((EntityPlayer) entityhuman).getBukkitEntity().updateInventory(); } else ((EntityPlayer) entityhuman).getBukkitEntity().updateInventory();
diff --git a/src/main/java/net/minecraft/server/ItemStack.java b/src/main/java/net/minecraft/server/ItemStack.java diff --git a/src/main/java/net/minecraft/server/ItemStack.java b/src/main/java/net/minecraft/server/ItemStack.java
index 6a9b7e609489244c4d239895de77033f58632d9d..40f553e3950318f5a1940e3dccd0018653770fdb 100644 index 0d011a1aae667f473f1ad2ec60d8506cd32dff6d..623bcb93cbdf0f67ee999104936f9d60c5228037 100644
--- a/src/main/java/net/minecraft/server/ItemStack.java --- a/src/main/java/net/minecraft/server/ItemStack.java
+++ b/src/main/java/net/minecraft/server/ItemStack.java +++ b/src/main/java/net/minecraft/server/ItemStack.java
@@ -450,7 +450,7 @@ public final class ItemStack { @@ -450,7 +450,7 @@ public final class ItemStack {

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] Allow color codes in books
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index 0ef30ff92bb9e86b624c4988c00e3be6d95e554a..01f7de31ac2ba2807edd90fd87acd2afac7b34e4 100644 index edac7a57c6c0612e87e836becbe59fc242e21b45..b74ca27ed9fe341b65443bdf954b6c1419c77dd4 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java --- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -1038,7 +1038,8 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -1018,7 +1018,8 @@ public class PlayerConnection implements PacketListenerPlayIn {
if (itemstack.getItem() == Items.WRITABLE_BOOK) { if (itemstack.getItem() == Items.WRITABLE_BOOK) {
NBTTagList nbttaglist = new NBTTagList(); NBTTagList nbttaglist = new NBTTagList();
@@ -18,7 +18,7 @@ index 0ef30ff92bb9e86b624c4988c00e3be6d95e554a..01f7de31ac2ba2807edd90fd87acd2af
ItemStack old = itemstack.cloneItemStack(); // CraftBukkit ItemStack old = itemstack.cloneItemStack(); // CraftBukkit
itemstack.a("pages", (NBTBase) nbttaglist); itemstack.a("pages", (NBTBase) nbttaglist);
CraftEventFactory.handleEditBookEvent(player, i, old, itemstack); // CraftBukkit CraftEventFactory.handleEditBookEvent(player, i, old, itemstack); // CraftBukkit
@@ -1056,13 +1057,14 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -1036,13 +1037,14 @@ public class PlayerConnection implements PacketListenerPlayIn {
itemstack1.setTag(nbttagcompound.clone()); itemstack1.setTag(nbttagcompound.clone());
} }
@@ -35,7 +35,7 @@ index 0ef30ff92bb9e86b624c4988c00e3be6d95e554a..01f7de31ac2ba2807edd90fd87acd2af
ChatComponentText chatcomponenttext = new ChatComponentText(s1); ChatComponentText chatcomponenttext = new ChatComponentText(s1);
String s2 = IChatBaseComponent.ChatSerializer.a((IChatBaseComponent) chatcomponenttext); String s2 = IChatBaseComponent.ChatSerializer.a((IChatBaseComponent) chatcomponenttext);
@@ -1074,6 +1076,16 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -1054,6 +1056,16 @@ public class PlayerConnection implements PacketListenerPlayIn {
} }
} }

View File

@@ -92,10 +92,10 @@ index 7a40f0864677e54c3a0eca6dcb9a115864edfbbd..1d5d87e61946c674f61541455cf54018
} }
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index 01f7de31ac2ba2807edd90fd87acd2afac7b34e4..a1a215dbf6fa050177d15ea6d7adcff1e6887e6e 100644 index b74ca27ed9fe341b65443bdf954b6c1419c77dd4..c3fb79195021452c0e2ab41b56e67dc5b37f53be 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java --- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -2249,6 +2249,7 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -2229,6 +2229,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
boolean triggerLeashUpdate = itemInHand != null && itemInHand.getItem() == Items.LEAD && entity instanceof EntityInsentient; boolean triggerLeashUpdate = itemInHand != null && itemInHand.getItem() == Items.LEAD && entity instanceof EntityInsentient;
Item origItem = this.player.inventory.getItemInHand() == null ? null : this.player.inventory.getItemInHand().getItem(); Item origItem = this.player.inventory.getItemInHand() == null ? null : this.player.inventory.getItemInHand().getItem();
PlayerInteractEntityEvent event; PlayerInteractEntityEvent event;

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Add option to teleport to spawn if outside world border
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index 1e32658dc3dada926767c35ebf618e1b493d5607..c2a1e9679f9c18d29e060709e1b7818057ab12d2 100644 index 92095d28bfdcf309585b5684be3b880591b7d18c..e2635413da43f4afc412c0443ab99bc3aaa0ca33 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java --- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -277,6 +277,7 @@ public abstract class EntityLiving extends Entity { @@ -277,6 +277,7 @@ public abstract class EntityLiving extends Entity {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Totems work in inventory
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index c2a1e9679f9c18d29e060709e1b7818057ab12d2..3ef4e807bd75748ec786cfa84f899896b0c7da58 100644 index e2635413da43f4afc412c0443ab99bc3aaa0ca33..e37f37412b6bc24fa7a64823c30bd697731294d9 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java --- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -1324,6 +1324,19 @@ public abstract class EntityLiving extends Entity { @@ -1324,6 +1324,19 @@ public abstract class EntityLiving extends Entity {

View File

@@ -6,10 +6,10 @@ Subject: [PATCH] Duplicate paper's vanilla scoreboard colors patch to sync
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index a1a215dbf6fa050177d15ea6d7adcff1e6887e6e..a4c7f0a86fb5542d85b81ca3bda2fc475a03a8c0 100644 index c3fb79195021452c0e2ab41b56e67dc5b37f53be..ef8cf33431994dfee767514a20ecaceeda9854f9 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java --- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -2008,7 +2008,15 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -1988,7 +1988,15 @@ public class PlayerConnection implements PacketListenerPlayIn {
return null; return null;
} }
@@ -26,7 +26,7 @@ index a1a215dbf6fa050177d15ea6d7adcff1e6887e6e..a4c7f0a86fb5542d85b81ca3bda2fc47
PlayerConnection.this.minecraftServer.console.sendMessage(message); PlayerConnection.this.minecraftServer.console.sendMessage(message);
if (((LazyPlayerSet) queueEvent.getRecipients()).isLazy()) { if (((LazyPlayerSet) queueEvent.getRecipients()).isLazy()) {
for (Object player : PlayerConnection.this.minecraftServer.getPlayerList().players) { for (Object player : PlayerConnection.this.minecraftServer.getPlayerList().players) {
@@ -2041,7 +2049,7 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -2021,7 +2029,7 @@ public class PlayerConnection implements PacketListenerPlayIn {
// Paper Start - (Meh) Support for vanilla world scoreboard name coloring // Paper Start - (Meh) Support for vanilla world scoreboard name coloring
String displayName = event.getPlayer().getDisplayName(); String displayName = event.getPlayer().getDisplayName();
if (this.player.getWorld().paperConfig.useVanillaScoreboardColoring) { if (this.player.getWorld().paperConfig.useVanillaScoreboardColoring) {

View File

@@ -2372,7 +2372,7 @@ index bdff2368836dca230a6622a205d5772834afc6ee..9ee03b233b71d1b4b85a9a5e1f0ea9fe
float f1 = 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F; float f1 = 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F;
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index 3ef4e807bd75748ec786cfa84f899896b0c7da58..0da305798ed17b57d4100b526c49a222c90346a7 100644 index e37f37412b6bc24fa7a64823c30bd697731294d9..84e37e38026e1fd5ec626c7c8b81972cd5ed2ea4 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java --- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -459,7 +459,7 @@ public abstract class EntityLiving extends Entity { @@ -459,7 +459,7 @@ public abstract class EntityLiving extends Entity {
@@ -4973,10 +4973,10 @@ index 0000000000000000000000000000000000000000..44929182dfd7ad847d9657c324f440cb
+ } + }
+} +}
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
index a4c7f0a86fb5542d85b81ca3bda2fc475a03a8c0..8132180f9fff6e298a0efe00dee88f78210a1f6a 100644 index ef8cf33431994dfee767514a20ecaceeda9854f9..f16109a08804e0942f2f41d9637bd9b88c1c8893 100644
--- a/src/main/java/net/minecraft/server/PlayerConnection.java --- a/src/main/java/net/minecraft/server/PlayerConnection.java
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java +++ b/src/main/java/net/minecraft/server/PlayerConnection.java
@@ -2266,6 +2266,8 @@ public class PlayerConnection implements PacketListenerPlayIn { @@ -2246,6 +2246,8 @@ public class PlayerConnection implements PacketListenerPlayIn {
} }
this.server.getPluginManager().callEvent(event); this.server.getPluginManager().callEvent(event);

View File

@@ -5,10 +5,10 @@ Subject: [PATCH] LivingEntity#broadcastItemBreak
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
index 66447231244dbe3d6fadaa0d00710f9ec7f72445..62bdc1abe3355d1c730bcacab29b72d89f843b97 100644 index 0292cae6225ae2ee156f436c8827a018e8ffa723..9f5802364d4098173be2d08893efa697033407e9 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
@@ -827,5 +827,11 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { @@ -837,5 +837,11 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
public void setSafeFallDistance(float safeFallDistance) { public void setSafeFallDistance(float safeFallDistance) {
getHandle().safeFallDistance = safeFallDistance; getHandle().safeFallDistance = safeFallDistance;
} }

View File

@@ -184,7 +184,7 @@ index a3eaeeda875d96fe4b047bd6bf993018722c96b9..f2f800087adb0238b4b672b9f6f4c8c4
if (((EntityHanging) object).survives()) { if (((EntityHanging) object).survives()) {
diff --git a/src/main/java/net/minecraft/server/ItemStack.java b/src/main/java/net/minecraft/server/ItemStack.java diff --git a/src/main/java/net/minecraft/server/ItemStack.java b/src/main/java/net/minecraft/server/ItemStack.java
index 40f553e3950318f5a1940e3dccd0018653770fdb..7161eba52ece2b4d9ed982598642f486fd314965 100644 index 623bcb93cbdf0f67ee999104936f9d60c5228037..eb115a9c2aac9abe28d36f6284ca84f694a4898d 100644
--- a/src/main/java/net/minecraft/server/ItemStack.java --- a/src/main/java/net/minecraft/server/ItemStack.java
+++ b/src/main/java/net/minecraft/server/ItemStack.java +++ b/src/main/java/net/minecraft/server/ItemStack.java
@@ -738,6 +738,7 @@ public final class ItemStack { @@ -738,6 +738,7 @@ public final class ItemStack {

Some files were not shown because too many files have changed in this diff Show More