Updated Upstream (Tuinity & Airplane)

Upstream has released updates that appear to apply and compile correctly

Tuinity Changes:
f7c42491a Fix dangerous end portal logic

Airplane Changes:
8c5012517 Switch bitset to long storage
617dfe27a Patch Paper to use fast item merge raytracing
16104e8a0 Update Upstream (Tuinity)
This commit is contained in:
BillyGalbreath
2021-06-01 19:45:44 -05:00
parent d2204a3dac
commit ff09f9e62d
26 changed files with 1250 additions and 360 deletions

View File

@@ -1564,7 +1564,7 @@ index 0000000000000000000000000000000000000000..aa8467b9dda1f7707e41f50ac7b3e9d7
+}
diff --git a/src/main/java/gg/airplane/structs/ItemListWithBitset.java b/src/main/java/gg/airplane/structs/ItemListWithBitset.java
new file mode 100644
index 0000000000000000000000000000000000000000..bd3b58cb1a48da2f5259b0c64290b2be2ff1fdf7
index 0000000000000000000000000000000000000000..7103aa120d3a27d5579d54bd6f4018dc20cca95c
--- /dev/null
+++ b/src/main/java/gg/airplane/structs/ItemListWithBitset.java
@@ -0,0 +1,105 @@
@@ -1593,8 +1593,8 @@ index 0000000000000000000000000000000000000000..bd3b58cb1a48da2f5259b0c64290b2be
+
+ private final ItemStack[] items;
+
+ private int bitSet = 0;
+ private final int allBits;
+ private long bitSet = 0;
+ private final long allBits;
+
+ private ItemListWithBitset(NonNullList<ItemStack> list) {
+ this(list.size());
@@ -1607,10 +1607,10 @@ index 0000000000000000000000000000000000000000..bd3b58cb1a48da2f5259b0c64290b2be
+ public ItemListWithBitset(int size) {
+ super(null, ItemStack.NULL_ITEM);
+
+ Validate.isTrue(size < Integer.BYTES * 8, "size is too large");
+ Validate.isTrue(size < Long.BYTES * 8, "size is too large");
+
+ this.items = createArray(size);
+ this.allBits = ((1 << size) - 1);
+ this.allBits = ((1L << size) - 1);
+ }
+
+ public boolean isCompletelyEmpty() {
@@ -1628,9 +1628,9 @@ index 0000000000000000000000000000000000000000..bd3b58cb1a48da2f5259b0c64290b2be
+ this.items[index] = itemStack;
+
+ if (itemStack == ItemStack.NULL_ITEM) {
+ this.bitSet &= ~(1 << index);
+ this.bitSet &= ~(1L << index);
+ } else {
+ this.bitSet |= 1 << index;
+ this.bitSet |= 1L << index;
+ }
+
+ return existing;
@@ -2231,7 +2231,7 @@ index 92818df3689e35b921eb04678c84d2dd4b21ddbe..f6b723062a9cd0667efcc0171df71e9d
public ItemStack splitStack(int i, int j) {
return i >= this.left.getSize() ? this.right.splitStack(i - this.left.getSize(), j) : this.left.splitStack(i, j);
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 6b6abf401cc7c7c79ffb472c35550596fc8e55b5..2a779f1219de2eb1d2ba7d28110bed4824b1d5c5 100644
index c3d4eda866016c4ac08d4c5d771e39dcac5a3a60..1ea76604a375b60aa2b93af6c562151030907b1c 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -289,6 +289,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, ne
@@ -2612,6 +2612,27 @@ index 61ebb278cf4ef57ae7a86c6c6ef1fa14559f21e2..341b95f73a839a548b202e7bf97fd187
@Override
protected float b(EntityPose entitypose, EntitySize entitysize) {
diff --git a/src/main/java/net/minecraft/world/entity/item/EntityItem.java b/src/main/java/net/minecraft/world/entity/item/EntityItem.java
index 077990f1d95ded2c8b89c38978ec25a56df3a984..e1581f0616748da885f457c7fa0f1515490c53f4 100644
--- a/src/main/java/net/minecraft/world/entity/item/EntityItem.java
+++ b/src/main/java/net/minecraft/world/entity/item/EntityItem.java
@@ -230,10 +230,16 @@ public class EntityItem extends Entity {
if (entityitem.z()) {
// Paper Start - Fix items merging through walls
if (this.world.paperConfig.fixItemsMergingThroughWalls) {
+ // Airplane start - fast merging!
+ /*
net.minecraft.world.level.RayTrace rayTrace = new net.minecraft.world.level.RayTrace(this.getPositionVector(), entityitem.getPositionVector(),
net.minecraft.world.level.RayTrace.BlockCollisionOption.COLLIDER, net.minecraft.world.level.RayTrace.FluidCollisionOption.NONE, this);
net.minecraft.world.phys.MovingObjectPositionBlock rayTraceResult = world.rayTrace(rayTrace);
if (rayTraceResult.getType() == net.minecraft.world.phys.MovingObjectPosition.EnumMovingObjectType.BLOCK) continue;
+ */
+ if (world.rayTraceDirect(this.getPositionVector(), entityitem.getPositionVector(), net.minecraft.world.phys.shapes.VoxelShapeCollision.a(this)) ==
+ net.minecraft.world.phys.MovingObjectPosition.EnumMovingObjectType.BLOCK) continue;
+ // Airplane end
}
// Paper End
this.a(entityitem);
diff --git a/src/main/java/net/minecraft/world/entity/monster/EntityEnderman.java b/src/main/java/net/minecraft/world/entity/monster/EntityEnderman.java
index e993b1849beb60515c51ee4f37617faab63ca223..4d7b5d47ab6bd3b1408811c3b9c157b1eb5c30ae 100644
--- a/src/main/java/net/minecraft/world/entity/monster/EntityEnderman.java