mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
Updated Upstream (Paper & Tuinity)
Upstream has released updates that appear to apply and compile correctly Paper Changes: d6f730655 Do not add passengers of entities that were above save limit (#5073) cb99288a5 Try to get a new 1.16.5 build on website now we hopefully fixed site bug 946cdd2d2 [CI-SKIP] [Auto] Rebuild Patches 8f805412b Remove class 13 from netty preload - Fixes #5066 f6d3c6811 Make ProjectileHitEvent Cancellable 97b020f13 make schedule command per world aac07a271 Return chat component with empty text instead of throwing exception. Fixes #3328 f27bc0659 Collision option for requiring a player participant 193f80148 Add StructureLocateEvent 59222b5ba Add sendOpLevel API f792973c2 [CI-SKIP] Update API to 1.16.5 (#5067) Tuinity Changes: db82b6c Update to starlight 0.0.3 b97e87f Merge branch 'master' into dev/lighting 1d169e7 Updated Upstream (Paper) 09997a6 Merge branch 'master' into dev/lighting 8954b61 Updated Upstream (Paper) 8753f47 Merge branch 'master' into dev/lighting 4743c34 Updated Upstream (Paper)
This commit is contained in:
2
Paper
2
Paper
Submodule Paper updated: ce979b29be...d6f730655a
@@ -81,10 +81,10 @@ index 0000000000000000000000000000000000000000..0c8b3e5e4ba412624357ea5662a78862
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
|
||||
index ea5257cc94d084fe4e0b9d9685e51d8f70cb84cb..183333a7468100271676b74709dcbb26d2b2b363 100644
|
||||
index cb6464c89e02d29484554a9a2184996a256925d2..7fd2085fa24779df1eab354532611d3642b37a27 100644
|
||||
--- a/src/main/java/org/bukkit/entity/Player.java
|
||||
+++ b/src/main/java/org/bukkit/entity/Player.java
|
||||
@@ -1927,4 +1927,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
@@ -1938,4 +1938,25 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
@Override
|
||||
Spigot spigot();
|
||||
// Spigot end
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Player invulnerabilities
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
|
||||
index 183333a7468100271676b74709dcbb26d2b2b363..e0ceb4d285ef977398a083bc4f4295ebd0c91277 100644
|
||||
index 7fd2085fa24779df1eab354532611d3642b37a27..c3288513f240daf412d106e7d8cea1823b17a2d7 100644
|
||||
--- a/src/main/java/org/bukkit/entity/Player.java
|
||||
+++ b/src/main/java/org/bukkit/entity/Player.java
|
||||
@@ -1947,5 +1947,26 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
@@ -1958,5 +1958,26 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
* Reset the idle timer back to 0
|
||||
*/
|
||||
void resetIdleTimer();
|
||||
|
||||
@@ -932,7 +932,7 @@ index a6a7429ed2e1eefb2b12b7480ed74fcc3963a864..e8027e1d505dda6effbb1698550016e8
|
||||
|
||||
NORMAL(false),
|
||||
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
|
||||
index e0ceb4d285ef977398a083bc4f4295ebd0c91277..8da3ce6d1ba6911cb1a4be2e425266bd4760c052 100644
|
||||
index c3288513f240daf412d106e7d8cea1823b17a2d7..40394eeb64c8dac9d88d8b243ea0aad4da46936d 100644
|
||||
--- a/src/main/java/org/bukkit/entity/Player.java
|
||||
+++ b/src/main/java/org/bukkit/entity/Player.java
|
||||
@@ -1776,6 +1776,8 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
@@ -944,7 +944,7 @@ index e0ceb4d285ef977398a083bc4f4295ebd0c91277..8da3ce6d1ba6911cb1a4be2e425266bd
|
||||
* @return the client option value of the player
|
||||
*/
|
||||
@NotNull
|
||||
@@ -1796,6 +1798,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
@@ -1807,6 +1809,9 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM
|
||||
// Paper end
|
||||
|
||||
// Spigot start
|
||||
|
||||
@@ -367,6 +367,11 @@ Prevent light queue overfill when no players are online
|
||||
|
||||
block changes don't queue light updates (and they shouldn't)
|
||||
|
||||
Do not add passengers of entities that were were above save limit
|
||||
|
||||
Given that the root entity isn't added to the world, this is
|
||||
pretty unsafe to do.
|
||||
|
||||
Rewrite the light engine
|
||||
|
||||
The standard vanilla light engine is plagued by
|
||||
@@ -1535,10 +1540,10 @@ index 0000000000000000000000000000000000000000..cae06962d80cdd00962236891472ba81
|
||||
\ No newline at end of file
|
||||
diff --git a/src/main/java/com/tuinity/tuinity/chunk/light/BlockStarLightEngine.java b/src/main/java/com/tuinity/tuinity/chunk/light/BlockStarLightEngine.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..297ba951a5bdef70312d1dc2f243f0716760d04c
|
||||
index 0000000000000000000000000000000000000000..eb330a40d7345336ded670d631a9fd66da19f2e7
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/com/tuinity/tuinity/chunk/light/BlockStarLightEngine.java
|
||||
@@ -0,0 +1,185 @@
|
||||
@@ -0,0 +1,263 @@
|
||||
+package com.tuinity.tuinity.chunk.light;
|
||||
+
|
||||
+import net.minecraft.server.BlockPosition;
|
||||
@@ -1550,6 +1555,8 @@ index 0000000000000000000000000000000000000000..297ba951a5bdef70312d1dc2f243f071
|
||||
+import net.minecraft.server.IChunkAccess;
|
||||
+import net.minecraft.server.ILightAccess;
|
||||
+import net.minecraft.server.ProtoChunkExtension;
|
||||
+import net.minecraft.server.VoxelShape;
|
||||
+import net.minecraft.server.VoxelShapes;
|
||||
+import net.minecraft.server.World;
|
||||
+import net.minecraft.server.WorldServer;
|
||||
+import java.util.ArrayList;
|
||||
@@ -1632,6 +1639,82 @@ index 0000000000000000000000000000000000000000..297ba951a5bdef70312d1dc2f243f071
|
||||
+ // re-propagating neighbours (done by the decrease queue) will also account for opacity changes in this block
|
||||
+ }
|
||||
+
|
||||
+ protected final BlockPosition.MutableBlockPosition recalcCenterPos = new BlockPosition.MutableBlockPosition();
|
||||
+ protected final BlockPosition.MutableBlockPosition recalcNeighbourPos = new BlockPosition.MutableBlockPosition();
|
||||
+
|
||||
+ @Override
|
||||
+ protected int calculateLightValue(final ILightAccess lightAccess, final int worldX, final int worldY, final int worldZ,
|
||||
+ final int expect, final VariableBlockLightHandler customBlockLight) {
|
||||
+ final IBlockData centerState = this.getBlockState(worldX, worldY, worldZ);
|
||||
+ int level = centerState.getEmittedLight() & 0xFF;
|
||||
+ if (customBlockLight != null) {
|
||||
+ level = this.getCustomLightLevel(customBlockLight, worldX, worldY, worldZ, level);
|
||||
+ }
|
||||
+
|
||||
+ if (level >= (15 - 1) || level > expect) {
|
||||
+ return level;
|
||||
+ }
|
||||
+
|
||||
+ final int sectionOffset = this.chunkSectionIndexOffset;
|
||||
+ final IBlockData conditionallyOpaqueState;
|
||||
+ int opacity = centerState.getOpacityIfCached();
|
||||
+
|
||||
+ if (opacity == -1) {
|
||||
+ this.recalcCenterPos.setValues(worldX, worldY, worldZ);
|
||||
+ opacity = centerState.getOpacity(lightAccess.getWorld(), this.recalcCenterPos);
|
||||
+ if (centerState.isConditionallyFullOpaque()) {
|
||||
+ conditionallyOpaqueState = centerState;
|
||||
+ } else {
|
||||
+ conditionallyOpaqueState = null;
|
||||
+ }
|
||||
+ } else if (opacity >= 15) {
|
||||
+ return level;
|
||||
+ } else {
|
||||
+ conditionallyOpaqueState = null;
|
||||
+ }
|
||||
+ opacity = Math.max(1, opacity);
|
||||
+
|
||||
+ for (final AxisDirection direction : AXIS_DIRECTIONS) {
|
||||
+ final int offX = worldX + direction.x;
|
||||
+ final int offY = worldY + direction.y;
|
||||
+ final int offZ = worldZ + direction.z;
|
||||
+
|
||||
+ final int sectionIndex = (offX >> 4) + 5 * (offZ >> 4) + (5 * 5) * (offY >> 4) + sectionOffset;
|
||||
+
|
||||
+ final int neighbourLevel = this.getLightLevel(sectionIndex, (offX & 15) | ((offZ & 15) << 4) | ((offY & 15) << 8));
|
||||
+
|
||||
+ if ((neighbourLevel - 1) <= level) {
|
||||
+ // don't need to test transparency, we know it wont affect the result.
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ final IBlockData neighbourState = this.getBlockState(offX, offY ,offZ);
|
||||
+
|
||||
+ if (neighbourState.isConditionallyFullOpaque()) {
|
||||
+ // here the block can be conditionally opaque (i.e light cannot propagate from it), so we need to test that
|
||||
+ // we don't read the blockstate because most of the time this is false, so using the faster
|
||||
+ // known transparency lookup results in a net win
|
||||
+ this.recalcNeighbourPos.setValues(offX, offY, offZ);
|
||||
+ final VoxelShape neighbourFace = neighbourState.getCullingFace(lightAccess.getWorld(), this.recalcNeighbourPos, direction.opposite.nms);
|
||||
+ final VoxelShape thisFace = conditionallyOpaqueState == null ? VoxelShapes.empty() : conditionallyOpaqueState.getCullingFace(lightAccess.getWorld(), this.recalcCenterPos, direction.nms);
|
||||
+ if (VoxelShapes.combinationOccludes(thisFace, neighbourFace)) {
|
||||
+ // not allowed to propagate
|
||||
+ continue;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ // passed transparency,
|
||||
+
|
||||
+ final int calculated = neighbourLevel - opacity;
|
||||
+ level = Math.max(calculated, level);
|
||||
+ if (level > expect) {
|
||||
+ return level;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return level;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ protected void propagateBlockChanges(final ILightAccess lightAccess, final IChunkAccess atChunk, final Set<BlockPosition> positions) {
|
||||
+ for (final BlockPosition pos : positions) {
|
||||
@@ -1726,10 +1809,10 @@ index 0000000000000000000000000000000000000000..297ba951a5bdef70312d1dc2f243f071
|
||||
+}
|
||||
diff --git a/src/main/java/com/tuinity/tuinity/chunk/light/SWMRNibbleArray.java b/src/main/java/com/tuinity/tuinity/chunk/light/SWMRNibbleArray.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..9910dc9f1a087f5baf404a5b8ebb5a9f1f97f3f4
|
||||
index 0000000000000000000000000000000000000000..051e2db5349b6f20887841efad7fbc183b190f68
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/com/tuinity/tuinity/chunk/light/SWMRNibbleArray.java
|
||||
@@ -0,0 +1,317 @@
|
||||
@@ -0,0 +1,325 @@
|
||||
+package com.tuinity.tuinity.chunk.light;
|
||||
+
|
||||
+import net.minecraft.server.NibbleArray;
|
||||
@@ -1799,13 +1882,21 @@ index 0000000000000000000000000000000000000000..9910dc9f1a087f5baf404a5b8ebb5a9f
|
||||
+
|
||||
+ // operation type: visible
|
||||
+ public boolean isAllZero() {
|
||||
+ final byte[] bytes = this.storageVisible;
|
||||
+ final int state = this.stateVisible;
|
||||
+
|
||||
+ if (this.storageVisible == null) {
|
||||
+ if (state == INIT_STATE_NULL) {
|
||||
+ return false;
|
||||
+ } else if (state == INIT_STATE_UNINIT) {
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ synchronized (this) {
|
||||
+ final byte[] bytes = this.storageVisible;
|
||||
+
|
||||
+ if (bytes == null) {
|
||||
+ return this.stateVisible == INIT_STATE_UNINIT;
|
||||
+ }
|
||||
+
|
||||
+ for (int i = 0; i < (ARRAY_SIZE >>> 4); ++i) {
|
||||
+ byte whole = bytes[i << 4];
|
||||
+
|
||||
@@ -2049,14 +2140,15 @@ index 0000000000000000000000000000000000000000..9910dc9f1a087f5baf404a5b8ebb5a9f
|
||||
+}
|
||||
diff --git a/src/main/java/com/tuinity/tuinity/chunk/light/SkyStarLightEngine.java b/src/main/java/com/tuinity/tuinity/chunk/light/SkyStarLightEngine.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..0cd48bd4032092fe1a9f12082e85195a125f0f87
|
||||
index 0000000000000000000000000000000000000000..64c68f3be9f9f97ec3f9fd5c7fd0221ceb333b1a
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/com/tuinity/tuinity/chunk/light/SkyStarLightEngine.java
|
||||
@@ -0,0 +1,738 @@
|
||||
@@ -0,0 +1,828 @@
|
||||
+package com.tuinity.tuinity.chunk.light;
|
||||
+
|
||||
+import com.tuinity.tuinity.util.WorldUtil;
|
||||
+import it.unimi.dsi.fastutil.shorts.ShortCollection;
|
||||
+import it.unimi.dsi.fastutil.shorts.ShortIterator;
|
||||
+import net.minecraft.server.BlockPosition;
|
||||
+import net.minecraft.server.ChunkCoordIntPair;
|
||||
+import net.minecraft.server.ChunkSection;
|
||||
@@ -2398,16 +2490,104 @@ index 0000000000000000000000000000000000000000..0cd48bd4032092fe1a9f12082e85195a
|
||||
+ @Override
|
||||
+ protected void checkChunkEdges(final ILightAccess lightAccess, final IChunkAccess chunk, final int fromSection,
|
||||
+ final int toSection) {
|
||||
+ Arrays.fill(this.nullPropagationCheckCache, false);
|
||||
+ this.rewriteNibbleCacheForSkylight(chunk);
|
||||
+ final int chunkX = chunk.getPos().x;
|
||||
+ final int chunkZ = chunk.getPos().z;
|
||||
+ for (int y = toSection; y >= fromSection; --y) {
|
||||
+ this.checkNullSection(chunkX, y, chunkZ, true);
|
||||
+ }
|
||||
+
|
||||
+ super.checkChunkEdges(lightAccess, chunk, fromSection, toSection);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ protected void checkChunkEdges(final ILightAccess lightAccess, final IChunkAccess chunk, final ShortCollection sections) {
|
||||
+ Arrays.fill(this.nullPropagationCheckCache, false);
|
||||
+ this.rewriteNibbleCacheForSkylight(chunk);
|
||||
+ final int chunkX = chunk.getPos().x;
|
||||
+ final int chunkZ = chunk.getPos().z;
|
||||
+ for (final ShortIterator iterator = sections.iterator(); iterator.hasNext();) {
|
||||
+ final int y = (int)iterator.nextShort();
|
||||
+ this.checkNullSection(chunkX, y, chunkZ, true);
|
||||
+ }
|
||||
+
|
||||
+ super.checkChunkEdges(lightAccess, chunk, sections);
|
||||
+ }
|
||||
+
|
||||
+
|
||||
+ protected final BlockPosition.MutableBlockPosition recalcCenterPos = new BlockPosition.MutableBlockPosition();
|
||||
+ protected final BlockPosition.MutableBlockPosition recalcNeighbourPos = new BlockPosition.MutableBlockPosition();
|
||||
+
|
||||
+ @Override
|
||||
+ protected int calculateLightValue(final ILightAccess lightAccess, final int worldX, final int worldY, final int worldZ,
|
||||
+ final int expect, final VariableBlockLightHandler customBlockLight) {
|
||||
+ if (expect == 15) {
|
||||
+ return expect;
|
||||
+ }
|
||||
+
|
||||
+ final int sectionOffset = this.chunkSectionIndexOffset;
|
||||
+ final IBlockData centerState = this.getBlockState(worldX, worldY, worldZ);
|
||||
+ int opacity = centerState.getOpacityIfCached();
|
||||
+
|
||||
+
|
||||
+ final IBlockData conditionallyOpaqueState;
|
||||
+ if (opacity < 0) {
|
||||
+ this.recalcCenterPos.setValues(worldX, worldY, worldZ);
|
||||
+ opacity = Math.max(1, centerState.getOpacity(lightAccess.getWorld(), this.recalcCenterPos));
|
||||
+ if (centerState.isConditionallyFullOpaque()) {
|
||||
+ conditionallyOpaqueState = centerState;
|
||||
+ } else {
|
||||
+ conditionallyOpaqueState = null;
|
||||
+ }
|
||||
+ } else {
|
||||
+ conditionallyOpaqueState = null;
|
||||
+ opacity = Math.max(1, opacity);
|
||||
+ }
|
||||
+
|
||||
+ int level = 0;
|
||||
+
|
||||
+ for (final AxisDirection direction : AXIS_DIRECTIONS) {
|
||||
+ final int offX = worldX + direction.x;
|
||||
+ final int offY = worldY + direction.y;
|
||||
+ final int offZ = worldZ + direction.z;
|
||||
+
|
||||
+ final int sectionIndex = (offX >> 4) + 5 * (offZ >> 4) + (5 * 5) * (offY >> 4) + sectionOffset;
|
||||
+
|
||||
+ final int neighbourLevel = this.getLightLevel(sectionIndex, (offX & 15) | ((offZ & 15) << 4) | ((offY & 15) << 8));
|
||||
+
|
||||
+ if ((neighbourLevel - 1) <= level) {
|
||||
+ // don't need to test transparency, we know it wont affect the result.
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ final IBlockData neighbourState = this.getBlockState(offX, offY ,offZ);
|
||||
+
|
||||
+ if (neighbourState.isConditionallyFullOpaque()) {
|
||||
+ // here the block can be conditionally opaque (i.e light cannot propagate from it), so we need to test that
|
||||
+ // we don't read the blockstate because most of the time this is false, so using the faster
|
||||
+ // known transparency lookup results in a net win
|
||||
+ this.recalcNeighbourPos.setValues(offX, offY, offZ);
|
||||
+ final VoxelShape neighbourFace = neighbourState.getCullingFace(lightAccess.getWorld(), this.recalcNeighbourPos, direction.opposite.nms);
|
||||
+ final VoxelShape thisFace = conditionallyOpaqueState == null ? VoxelShapes.empty() : conditionallyOpaqueState.getCullingFace(lightAccess.getWorld(), this.recalcCenterPos, direction.nms);
|
||||
+ if (VoxelShapes.combinationOccludes(thisFace, neighbourFace)) {
|
||||
+ // not allowed to propagate
|
||||
+ continue;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ // passed transparency,
|
||||
+
|
||||
+ final int calculated = neighbourLevel - opacity;
|
||||
+ level = Math.max(calculated, level);
|
||||
+ if (level > expect) {
|
||||
+ return level;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return level;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ protected void checkBlock(final ILightAccess lightAccess, final int worldX, final int worldY, final int worldZ) {
|
||||
+ // blocks can change opacity
|
||||
@@ -2630,10 +2810,11 @@ index 0000000000000000000000000000000000000000..0cd48bd4032092fe1a9f12082e85195a
|
||||
+ // not required to propagate here, but this will reduce the hit of the edge checks
|
||||
+ this.performLightIncrease(lightAccess);
|
||||
+
|
||||
+ for (int y = this.maxLightSection; y >= this.minLightSection; --y) {
|
||||
+ for (int y = highestNonEmptySection; y >= this.minLightSection; --y) {
|
||||
+ this.checkNullSection(chunkX, y, chunkZ, false);
|
||||
+ }
|
||||
+ this.checkChunkEdges(lightAccess, chunk, this.minLightSection, this.maxLightSection);
|
||||
+ // no need to rewrite the nibble cache again
|
||||
+ super.checkChunkEdges(lightAccess, chunk, this.minLightSection, highestNonEmptySection);
|
||||
+ } else {
|
||||
+ for (int y = highestNonEmptySection; y >= this.minLightSection; --y) {
|
||||
+ this.checkNullSection(chunkX, y, chunkZ, false);
|
||||
@@ -2793,10 +2974,10 @@ index 0000000000000000000000000000000000000000..0cd48bd4032092fe1a9f12082e85195a
|
||||
+}
|
||||
diff --git a/src/main/java/com/tuinity/tuinity/chunk/light/StarLightEngine.java b/src/main/java/com/tuinity/tuinity/chunk/light/StarLightEngine.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..976b1ba5f7d85f7170fa1c714d4d281afeb41d80
|
||||
index 0000000000000000000000000000000000000000..f20fd2126a21b9c7c45fc420b67c645af875f929
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/com/tuinity/tuinity/chunk/light/StarLightEngine.java
|
||||
@@ -0,0 +1,1426 @@
|
||||
@@ -0,0 +1,1491 @@
|
||||
+package com.tuinity.tuinity.chunk.light;
|
||||
+
|
||||
+import com.tuinity.tuinity.util.CoordinateUtils;
|
||||
@@ -3191,6 +3372,17 @@ index 0000000000000000000000000000000000000000..976b1ba5f7d85f7170fa1c714d4d281a
|
||||
+ return ret == -1 ? dfl : ret;
|
||||
+ }
|
||||
+
|
||||
+ // :(
|
||||
+
|
||||
+ protected final long getKnownTransparency(final int worldX, final int worldY, final int worldZ) {
|
||||
+ throw new UnsupportedOperationException();
|
||||
+ }
|
||||
+
|
||||
+ // warn: localIndex = y | (x << 4) | (z << 8)
|
||||
+ protected final long getKnownTransparency(final int sectionIndex, final int localIndex) {
|
||||
+ throw new UnsupportedOperationException();
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * @deprecated To be removed in 1.17 due to variable section count
|
||||
+ */
|
||||
@@ -3225,7 +3417,7 @@ index 0000000000000000000000000000000000000000..976b1ba5f7d85f7170fa1c714d4d281a
|
||||
+
|
||||
+ public final void blocksChangedInChunk(final ILightAccess lightAccess, final int chunkX, final int chunkZ,
|
||||
+ final Set<BlockPosition> positions, final Boolean[] changedSections) {
|
||||
+ this.setupCaches(lightAccess, chunkX * 16 + 7, 128, chunkZ * 16 + 7, this.isClientSide, true);
|
||||
+ this.setupCaches(lightAccess, chunkX * 16 + 7, 128, chunkZ * 16 + 7, true, true);
|
||||
+ try {
|
||||
+ final IChunkAccess chunk = this.getChunkInCache(chunkX, chunkZ);
|
||||
+ if (this.isClientSide && chunk == null) {
|
||||
@@ -3252,6 +3444,15 @@ index 0000000000000000000000000000000000000000..976b1ba5f7d85f7170fa1c714d4d281a
|
||||
+
|
||||
+ protected abstract void checkBlock(final ILightAccess lightAccess, final int worldX, final int worldY, final int worldZ);
|
||||
+
|
||||
+ // if ret > expect, then the real value is at least ret (early returns if ret > expect, rather than calculating actual)
|
||||
+ // if ret == expect, then expect is the correct light value for pos
|
||||
+ // if ret < expect, then ret is the real light value
|
||||
+ protected abstract int calculateLightValue(final ILightAccess lightAccess, final int worldX, final int worldY, final int worldZ,
|
||||
+ final int expect, final VariableBlockLightHandler customBlockLight);
|
||||
+
|
||||
+ protected final int[] chunkCheckDelayedUpdatesCenter = new int[16 * 16];
|
||||
+ protected final int[] chunkCheckDelayedUpdatesNeighbour = new int[16 * 16];
|
||||
+
|
||||
+ protected void checkChunkEdge(final ILightAccess lightAccess, final IChunkAccess chunk,
|
||||
+ final int chunkX, final int chunkY, final int chunkZ) {
|
||||
+ final SWMRNibbleArray currNibble = this.getNibbleFromCache(chunkX, chunkY, chunkZ);
|
||||
@@ -3275,6 +3476,7 @@ index 0000000000000000000000000000000000000000..976b1ba5f7d85f7170fa1c714d4d281a
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ // this chunk
|
||||
+ final int incX;
|
||||
+ final int incZ;
|
||||
+ final int startX;
|
||||
@@ -3306,41 +3508,58 @@ index 0000000000000000000000000000000000000000..976b1ba5f7d85f7170fa1c714d4d281a
|
||||
+ startX = chunkX << 4;
|
||||
+ }
|
||||
+
|
||||
+ final VariableBlockLightHandler customLightHandler = ((WorldServer)lightAccess.getWorld()).customBlockLightHandlers;
|
||||
+ int centerDelayedChecks = 0;
|
||||
+ int neighbourDelayedChecks = 0;
|
||||
+ for (int currY = chunkY << 4, maxY = currY | 15; currY <= maxY; ++currY) {
|
||||
+ for (int i = 0, currX = startX, currZ = startZ; i < 16; ++i, currX += incX, currZ += incZ) {
|
||||
+ final int neighbourX = currX + neighbourOffX;
|
||||
+ final int neighbourZ = currZ + neighbourOffZ;
|
||||
+
|
||||
+ final int currentLevel = currNibble.getUpdating((currX & 15) |
|
||||
+ final int currentIndex = (currX & 15) |
|
||||
+ ((currZ & 15)) << 4 |
|
||||
+ ((currY & 15) << 8)
|
||||
+ );
|
||||
+ final int neighbourLevel = neighbourNibble.getUpdating((neighbourX & 15) |
|
||||
+ ((neighbourZ & 15)) << 4 |
|
||||
+ ((currY & 15) << 8)
|
||||
+ );
|
||||
+ ((currY & 15) << 8);
|
||||
+ final int currentLevel = currNibble.getUpdating(currentIndex);
|
||||
+
|
||||
+ if (currentLevel == neighbourLevel && (currentLevel == 0 || currentLevel == 15)) {
|
||||
+ // nothing to check here
|
||||
+ continue;
|
||||
+ final int neighbourIndex =
|
||||
+ (neighbourX & 15) |
|
||||
+ ((neighbourZ & 15)) << 4 |
|
||||
+ ((currY & 15) << 8);
|
||||
+ final int neighbourLevel = neighbourNibble.getUpdating(neighbourIndex);
|
||||
+
|
||||
+ // the checks are delayed because the checkBlock method clobbers light values - which then
|
||||
+ // affect later calculate light value operations. While they don't affect it in a behaviourly significant
|
||||
+ // way, they do have a negative performance impact due to simply queueing more values
|
||||
+
|
||||
+ if (this.calculateLightValue(lightAccess, currX, currY, currZ, currentLevel, customLightHandler) != currentLevel) {
|
||||
+ this.chunkCheckDelayedUpdatesCenter[centerDelayedChecks++] = currentIndex;
|
||||
+ }
|
||||
+
|
||||
+ if (Math.abs(currentLevel - neighbourLevel) == 1) {
|
||||
+ final IBlockData currentBlock = this.getBlockState(currX, currY, currZ);
|
||||
+ final IBlockData neighbourBlock = this.getBlockState(neighbourX, currY, neighbourZ);
|
||||
+
|
||||
+ final int currentOpacity = currentBlock.getOpacityIfCached();
|
||||
+ final int neighbourOpacity = neighbourBlock.getOpacityIfCached();
|
||||
+ if (currentOpacity == 0 || currentOpacity == 1 ||
|
||||
+ neighbourOpacity == 0 || neighbourOpacity == 1) {
|
||||
+ // looks good
|
||||
+ continue;
|
||||
+ }
|
||||
+ if (this.calculateLightValue(lightAccess, neighbourX, currY, neighbourZ, neighbourLevel, customLightHandler) != neighbourLevel) {
|
||||
+ this.chunkCheckDelayedUpdatesNeighbour[neighbourDelayedChecks++] = neighbourIndex;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ // setup queue, it looks like something could be inconsistent
|
||||
+ this.checkBlock(lightAccess, currX, currY, currZ);
|
||||
+ this.checkBlock(lightAccess, neighbourX, currY, neighbourZ);
|
||||
+ final int currentChunkOffX = chunkX << 4;
|
||||
+ final int currentChunkOffZ = chunkZ << 4;
|
||||
+ final int neighbourChunkOffX = (chunkX + direction.x) << 4;
|
||||
+ final int neighbourChunkOffZ = (chunkZ + direction.z) << 4;
|
||||
+ final int chunkOffY = chunkY << 4;
|
||||
+ for (int i = 0, len = Math.max(centerDelayedChecks, neighbourDelayedChecks); i < len; ++i) {
|
||||
+ // try to queue neighbouring data together
|
||||
+ // index = x | (z << 4) | (y << 8)
|
||||
+ if (i < centerDelayedChecks) {
|
||||
+ final int value = this.chunkCheckDelayedUpdatesCenter[i];
|
||||
+ this.checkBlock(lightAccess, currentChunkOffX | (value & 15),
|
||||
+ chunkOffY | (value >>> 8),
|
||||
+ currentChunkOffZ | ((value >>> 4) & 0xF));
|
||||
+ }
|
||||
+ if (i < neighbourDelayedChecks) {
|
||||
+ final int value = this.chunkCheckDelayedUpdatesNeighbour[i];
|
||||
+ this.checkBlock(lightAccess, neighbourChunkOffX | (value & 15),
|
||||
+ chunkOffY | (value >>> 8),
|
||||
+ neighbourChunkOffZ | ((value >>> 4) & 0xF));
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
@@ -3398,6 +3617,7 @@ index 0000000000000000000000000000000000000000..976b1ba5f7d85f7170fa1c714d4d281a
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ // neighbour chunk
|
||||
+ final int incX;
|
||||
+ final int incZ;
|
||||
+ final int startX;
|
||||
@@ -3472,22 +3692,44 @@ index 0000000000000000000000000000000000000000..976b1ba5f7d85f7170fa1c714d4d281a
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ public final void handleEmptySectionChanges(final ILightAccess lightAccess, final int chunkX, final int chunkZ,
|
||||
+ final Boolean[] emptinessChanges) {
|
||||
+ this.setupCaches(lightAccess, chunkX * 16 + 7, 128, chunkZ * 16 + 7, this.isClientSide, true);
|
||||
+ if (this.isClientSide) {
|
||||
+ public final void forceHandleEmptySectionChanges(final ILightAccess lightAccess, final IChunkAccess chunk,
|
||||
+ final Boolean[] emptinessChanges) {
|
||||
+ final int chunkX = chunk.getPos().x;
|
||||
+ final int chunkZ = chunk.getPos().z;
|
||||
+ this.setupCaches(lightAccess, chunkX * 16 + 7, 128, chunkZ * 16 + 7, true, true);
|
||||
+ try {
|
||||
+ // force current chunk into cache
|
||||
+ final IChunkAccess chunk = (IChunkAccess)lightAccess.getFeaturesReadyChunk(chunkX, chunkZ);
|
||||
+ if (chunk == null) {
|
||||
+ // unloaded this frame (or last), and we were still queued
|
||||
+ return;
|
||||
+ }
|
||||
+ this.setChunkInCache(chunkX, chunkZ, chunk);
|
||||
+ this.setBlocksForChunkInCache(chunkX, chunkZ, chunk.getSections());
|
||||
+ this.setNibblesForChunkInCache(chunkX, chunkZ, this.getNibblesOnChunk(chunk));
|
||||
+ this.setEmptinessMapCache(chunkX, chunkZ, this.getEmptinessMap(chunk));
|
||||
+
|
||||
+ final boolean[] ret = this.handleEmptySectionChanges(lightAccess, chunk, emptinessChanges, false);
|
||||
+ if (ret != null) {
|
||||
+ this.setEmptinessMap(chunk, ret);
|
||||
+ }
|
||||
+ this.updateVisible(lightAccess);
|
||||
+ } finally {
|
||||
+ this.destroyCaches();
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ public final void handleEmptySectionChanges(final ILightAccess lightAccess, final int chunkX, final int chunkZ,
|
||||
+ final Boolean[] emptinessChanges) {
|
||||
+ this.setupCaches(lightAccess, chunkX * 16 + 7, 128, chunkZ * 16 + 7, true, true);
|
||||
+ try {
|
||||
+ if (this.isClientSide) {
|
||||
+ // force current chunk into cache
|
||||
+ final IChunkAccess chunk = (IChunkAccess)lightAccess.getFeaturesReadyChunk(chunkX, chunkZ);
|
||||
+ if (chunk == null) {
|
||||
+ // unloaded this frame (or last), and we were still queued
|
||||
+ return;
|
||||
+ }
|
||||
+ this.setChunkInCache(chunkX, chunkZ, chunk);
|
||||
+ this.setBlocksForChunkInCache(chunkX, chunkZ, chunk.getSections());
|
||||
+ this.setNibblesForChunkInCache(chunkX, chunkZ, this.getNibblesOnChunk(chunk));
|
||||
+ this.setEmptinessMapCache(chunkX, chunkZ, this.getEmptinessMap(chunk));
|
||||
+ }
|
||||
+ final IChunkAccess chunk = this.getChunkInCache(chunkX, chunkZ);
|
||||
+ if (chunk == null) {
|
||||
+ return;
|
||||
@@ -3517,7 +3759,7 @@ index 0000000000000000000000000000000000000000..976b1ba5f7d85f7170fa1c714d4d281a
|
||||
+ if (chunk == null) {
|
||||
+ return;
|
||||
+ }
|
||||
+ this.checkChunkEdges(lightAccess, chunk, -1, 16);
|
||||
+ this.checkChunkEdges(lightAccess, chunk, this.minLightSection, this.maxLightSection);
|
||||
+ this.updateVisible(lightAccess);
|
||||
+ } finally {
|
||||
+ this.destroyCaches();
|
||||
@@ -3546,21 +3788,25 @@ index 0000000000000000000000000000000000000000..976b1ba5f7d85f7170fa1c714d4d281a
|
||||
+ // does not need to detect empty chunks itself (and it should do no handling for them either!)
|
||||
+ protected abstract void lightChunk(final ILightAccess lightAccess, final IChunkAccess chunk, final boolean needsEdgeChecks);
|
||||
+
|
||||
+ public final void light(final ILightAccess lightAccess, final int chunkX, final int chunkZ, final Boolean[] emptySections) {
|
||||
+ this.setupCaches(lightAccess, chunkX * 16 + 7, 128, chunkZ * 16 + 7, false, true);
|
||||
+ // force current chunk into cache
|
||||
+ final IChunkAccess chunk = (IChunkAccess)lightAccess.getFeaturesReadyChunk(chunkX, chunkZ);
|
||||
+ this.setChunkInCache(chunkX, chunkZ, chunk);
|
||||
+ this.setBlocksForChunkInCache(chunkX, chunkZ, chunk.getSections());
|
||||
+ this.setNibblesForChunkInCache(chunkX, chunkZ, this.getNibblesOnChunk(chunk));
|
||||
+ this.setEmptinessMapCache(chunkX, chunkZ, this.getEmptinessMap(chunk));
|
||||
+ public final void light(final ILightAccess lightAccess, final IChunkAccess chunk, final Boolean[] emptySections) {
|
||||
+ final int chunkX = chunk.getPos().x;
|
||||
+ final int chunkZ = chunk.getPos().z;
|
||||
+ this.setupCaches(lightAccess, chunkX * 16 + 7, 128, chunkZ * 16 + 7, true, true);
|
||||
+
|
||||
+ try {
|
||||
+ final SWMRNibbleArray[] nibbles = getFilledEmptyLight(this.maxLightSection - this.minLightSection + 1);
|
||||
+ // force current chunk into cache
|
||||
+ this.setChunkInCache(chunkX, chunkZ, chunk);
|
||||
+ this.setBlocksForChunkInCache(chunkX, chunkZ, chunk.getSections());
|
||||
+ this.setNibblesForChunkInCache(chunkX, chunkZ, nibbles);
|
||||
+ this.setEmptinessMapCache(chunkX, chunkZ, this.getEmptinessMap(chunk));
|
||||
+
|
||||
+ final boolean[] ret = this.handleEmptySectionChanges(lightAccess, chunk, emptySections, true);
|
||||
+ if (ret != null) {
|
||||
+ this.setEmptinessMap(chunk, ret);
|
||||
+ }
|
||||
+ this.lightChunk(lightAccess, chunk, false);
|
||||
+ this.lightChunk(lightAccess, chunk, true); // TODO
|
||||
+ this.setNibbles(chunk, nibbles);
|
||||
+ this.updateVisible(lightAccess);
|
||||
+ } finally {
|
||||
+ this.destroyCaches();
|
||||
@@ -4225,10 +4471,10 @@ index 0000000000000000000000000000000000000000..976b1ba5f7d85f7170fa1c714d4d281a
|
||||
+}
|
||||
diff --git a/src/main/java/com/tuinity/tuinity/chunk/light/StarLightInterface.java b/src/main/java/com/tuinity/tuinity/chunk/light/StarLightInterface.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..eb3662a0084d4f1f62d339ac11d2aaced092e28e
|
||||
index 0000000000000000000000000000000000000000..518c21b96947cb87bcc3b5fc3f6210bcb0944e33
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/com/tuinity/tuinity/chunk/light/StarLightInterface.java
|
||||
@@ -0,0 +1,473 @@
|
||||
@@ -0,0 +1,490 @@
|
||||
+package com.tuinity.tuinity.chunk.light;
|
||||
+
|
||||
+import com.tuinity.tuinity.util.CoordinateUtils;
|
||||
@@ -4547,6 +4793,23 @@ index 0000000000000000000000000000000000000000..eb3662a0084d4f1f62d339ac11d2aace
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ public void forceLoadInChunk(final IChunkAccess chunk, final Boolean[] emptySections) {
|
||||
+ final SkyStarLightEngine skyEngine = this.getSkyLightEngine();
|
||||
+ final BlockStarLightEngine blockEngine = this.getBlockLightEngine();
|
||||
+
|
||||
+ try {
|
||||
+ if (skyEngine != null) {
|
||||
+ skyEngine.forceHandleEmptySectionChanges(this.lightAccess, chunk, emptySections);
|
||||
+ }
|
||||
+ if (blockEngine != null) {
|
||||
+ blockEngine.forceHandleEmptySectionChanges(this.lightAccess, chunk, emptySections);
|
||||
+ }
|
||||
+ } finally {
|
||||
+ this.releaseSkyLightEngine(skyEngine);
|
||||
+ this.releaseBlockLightEngine(blockEngine);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ public void loadInChunk(final int chunkX, final int chunkZ, final Boolean[] emptySections) {
|
||||
+ final SkyStarLightEngine skyEngine = this.getSkyLightEngine();
|
||||
+ final BlockStarLightEngine blockEngine = this.getBlockLightEngine();
|
||||
@@ -4564,16 +4827,16 @@ index 0000000000000000000000000000000000000000..eb3662a0084d4f1f62d339ac11d2aace
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ public void lightChunk(final int chunkX, final int chunkZ, final Boolean[] emptySections) {
|
||||
+ public void lightChunk(final IChunkAccess chunk, final Boolean[] emptySections) {
|
||||
+ final SkyStarLightEngine skyEngine = this.getSkyLightEngine();
|
||||
+ final BlockStarLightEngine blockEngine = this.getBlockLightEngine();
|
||||
+
|
||||
+ try {
|
||||
+ if (skyEngine != null) {
|
||||
+ skyEngine.light(this.lightAccess, chunkX, chunkZ, emptySections);
|
||||
+ skyEngine.light(this.lightAccess, chunk, emptySections);
|
||||
+ }
|
||||
+ if (blockEngine != null) {
|
||||
+ blockEngine.light(this.lightAccess, chunkX, chunkZ, emptySections);
|
||||
+ blockEngine.light(this.lightAccess, chunk, emptySections);
|
||||
+ }
|
||||
+ } finally {
|
||||
+ this.releaseSkyLightEngine(skyEngine);
|
||||
@@ -9373,7 +9636,7 @@ index 75d25576d68ec95a14372f8530f4916f2bd7c3c5..38ca1c042afd41a1f660f88e398fedde
|
||||
}
|
||||
} finally {
|
||||
diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
|
||||
index 060ef42bc8f22688071fa375bd4dbab8dd2c1e9e..090e5eafeb35c60fb470b74863d59ed4a4f66be8 100644
|
||||
index f51bf71c8d6eef3c054ac64765709794fcfad5ee..076d6c1e1cc049dd312ecb30518e7b25fc2d7371 100644
|
||||
--- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java
|
||||
+++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
|
||||
@@ -24,6 +24,14 @@ public class ChunkRegionLoader {
|
||||
@@ -9396,7 +9659,7 @@ index 060ef42bc8f22688071fa375bd4dbab8dd2c1e9e..090e5eafeb35c60fb470b74863d59ed4
|
||||
// Paper end
|
||||
|
||||
+ // Tuinity start - rewrite light engine
|
||||
+ private static final int STARLIGHT_LIGHT_VERSION = 3;
|
||||
+ private static final int STARLIGHT_LIGHT_VERSION = 4;
|
||||
+
|
||||
+ private static final String UNINITIALISED_SKYLIGHT_TAG = "starlight.skylight_uninit";
|
||||
+ private static final String STARLIGHT_VERSION_TAG = "starlight.light_version";
|
||||
@@ -9634,7 +9897,7 @@ index 550232cb3819138b3bae0fa1c51429485e8bc593..229c3b0f0c650b501f31147adaa17194
|
||||
throwable = throwable1;
|
||||
throw throwable1;
|
||||
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
|
||||
index f9d7419e376268b00db2eb98a3db4116bdb72bd8..a125489d6a3b202d7e2b3d7df26fd72b81f2bd98 100644
|
||||
index f307a6361144c7e315b2e0ea45df27527cdb26ca..f292e15746a947c580aa93e0a23dbc032eccb561 100644
|
||||
--- a/src/main/java/net/minecraft/server/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/server/Entity.java
|
||||
@@ -136,7 +136,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
@@ -10001,7 +10264,7 @@ index f9d7419e376268b00db2eb98a3db4116bdb72bd8..a125489d6a3b202d7e2b3d7df26fd72b
|
||||
public double h(Entity entity) {
|
||||
return this.e(entity.getPositionVector());
|
||||
}
|
||||
@@ -1944,9 +2185,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
@@ -1945,9 +2186,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
float f1 = this.size.width * 0.8F;
|
||||
AxisAlignedBB axisalignedbb = AxisAlignedBB.g((double) f1, 0.10000000149011612D, (double) f1).d(this.locX(), this.getHeadY(), this.locZ());
|
||||
|
||||
@@ -10013,7 +10276,7 @@ index f9d7419e376268b00db2eb98a3db4116bdb72bd8..a125489d6a3b202d7e2b3d7df26fd72b
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1954,11 +2195,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
@@ -1955,11 +2196,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
return EnumInteractionResult.PASS;
|
||||
}
|
||||
|
||||
@@ -10029,7 +10292,7 @@ index f9d7419e376268b00db2eb98a3db4116bdb72bd8..a125489d6a3b202d7e2b3d7df26fd72b
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -2849,7 +3092,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
@@ -2850,7 +3093,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
this.recursiveStream().forEach((entity) -> {
|
||||
worldserver.chunkCheck(entity);
|
||||
entity.az = true;
|
||||
@@ -10038,7 +10301,7 @@ index f9d7419e376268b00db2eb98a3db4116bdb72bd8..a125489d6a3b202d7e2b3d7df26fd72b
|
||||
|
||||
while (iterator.hasNext()) {
|
||||
Entity entity1 = (Entity) iterator.next();
|
||||
@@ -3307,12 +3550,16 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
@@ -3308,12 +3551,16 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
return this.locBlock;
|
||||
}
|
||||
|
||||
@@ -10055,7 +10318,7 @@ index f9d7419e376268b00db2eb98a3db4116bdb72bd8..a125489d6a3b202d7e2b3d7df26fd72b
|
||||
}
|
||||
|
||||
public void setMot(double d0, double d1, double d2) {
|
||||
@@ -3367,7 +3614,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
@@ -3368,7 +3615,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
}
|
||||
// Paper end
|
||||
if (this.loc.x != d0 || this.loc.y != d1 || this.loc.z != d2) {
|
||||
@@ -10609,7 +10872,7 @@ index b98e60772bad7e06845b50fdc11e98c0ea775d3d..e0bbfe1422cbad811ecb43d7436380d8
|
||||
while (objectiterator.hasNext()) {
|
||||
entry = (Entry) objectiterator.next();
|
||||
diff --git a/src/main/java/net/minecraft/server/LightEngineThreaded.java b/src/main/java/net/minecraft/server/LightEngineThreaded.java
|
||||
index 2f9c97dd4e1d705a87772d18c7ab4883a876af08..4d6663b3b4118f1b7f655c7b4a31d89a98e0d18f 100644
|
||||
index 2f9c97dd4e1d705a87772d18c7ab4883a876af08..168fe23177dfaa401396c1e460f56273ee0a59e4 100644
|
||||
--- a/src/main/java/net/minecraft/server/LightEngineThreaded.java
|
||||
+++ b/src/main/java/net/minecraft/server/LightEngineThreaded.java
|
||||
@@ -2,6 +2,11 @@ package net.minecraft.server;
|
||||
@@ -10624,7 +10887,7 @@ index 2f9c97dd4e1d705a87772d18c7ab4883a876af08..4d6663b3b4118f1b7f655c7b4a31d89a
|
||||
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
|
||||
import it.unimi.dsi.fastutil.objects.ObjectList;
|
||||
import it.unimi.dsi.fastutil.objects.ObjectListIterator;
|
||||
@@ -15,7 +20,7 @@ import org.apache.logging.log4j.Logger;
|
||||
@@ -15,11 +20,12 @@ import org.apache.logging.log4j.Logger;
|
||||
public class LightEngineThreaded extends LightEngine implements AutoCloseable {
|
||||
|
||||
private static final Logger LOGGER = LogManager.getLogger();
|
||||
@@ -10633,7 +10896,12 @@ index 2f9c97dd4e1d705a87772d18c7ab4883a876af08..4d6663b3b4118f1b7f655c7b4a31d89a
|
||||
// Paper start
|
||||
private static final int MAX_PRIORITIES = PlayerChunkMap.GOLDEN_TICKET + 2;
|
||||
|
||||
@@ -156,13 +161,218 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable {
|
||||
private boolean isChunkLightStatus(long pair) {
|
||||
+ if (true) return true; // Tuinity - viewing ticket levels async can result in the viewing of transient levels, and LIGHT ticket isn't guaranteed to exist for all loading chunks thanks to really dumb unloading behaviors with the chunk system
|
||||
PlayerChunk playerChunk = playerChunkMap.getVisibleChunk(pair);
|
||||
if (playerChunk == null) {
|
||||
return false;
|
||||
@@ -156,13 +162,218 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable {
|
||||
private volatile int f = 5;
|
||||
private final AtomicBoolean g = new AtomicBoolean();
|
||||
|
||||
@@ -10852,7 +11120,7 @@ index 2f9c97dd4e1d705a87772d18c7ab4883a876af08..4d6663b3b4118f1b7f655c7b4a31d89a
|
||||
public void close() {}
|
||||
|
||||
@Override
|
||||
@@ -179,6 +389,15 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable {
|
||||
@@ -179,6 +390,15 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable {
|
||||
public void a(BlockPosition blockposition) {
|
||||
BlockPosition blockposition1 = blockposition.immutableCopy();
|
||||
|
||||
@@ -10868,7 +11136,7 @@ index 2f9c97dd4e1d705a87772d18c7ab4883a876af08..4d6663b3b4118f1b7f655c7b4a31d89a
|
||||
this.a(blockposition.getX() >> 4, blockposition.getZ() >> 4, LightEngineThreaded.Update.POST_UPDATE, SystemUtils.a(() -> {
|
||||
super.a(blockposition1);
|
||||
}, () -> {
|
||||
@@ -187,6 +406,11 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable {
|
||||
@@ -187,6 +407,11 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable {
|
||||
}
|
||||
|
||||
protected void a(ChunkCoordIntPair chunkcoordintpair) {
|
||||
@@ -10880,7 +11148,7 @@ index 2f9c97dd4e1d705a87772d18c7ab4883a876af08..4d6663b3b4118f1b7f655c7b4a31d89a
|
||||
this.a(chunkcoordintpair.x, chunkcoordintpair.z, () -> {
|
||||
return 0;
|
||||
}, LightEngineThreaded.Update.PRE_UPDATE, SystemUtils.a(() -> {
|
||||
@@ -211,6 +435,14 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable {
|
||||
@@ -211,6 +436,14 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable {
|
||||
|
||||
@Override
|
||||
public void a(SectionPosition sectionposition, boolean flag) {
|
||||
@@ -10895,7 +11163,7 @@ index 2f9c97dd4e1d705a87772d18c7ab4883a876af08..4d6663b3b4118f1b7f655c7b4a31d89a
|
||||
this.a(sectionposition.a(), sectionposition.c(), () -> {
|
||||
return 0;
|
||||
}, LightEngineThreaded.Update.PRE_UPDATE, SystemUtils.a(() -> {
|
||||
@@ -222,6 +454,11 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable {
|
||||
@@ -222,6 +455,11 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable {
|
||||
|
||||
@Override
|
||||
public void a(ChunkCoordIntPair chunkcoordintpair, boolean flag) {
|
||||
@@ -10907,7 +11175,7 @@ index 2f9c97dd4e1d705a87772d18c7ab4883a876af08..4d6663b3b4118f1b7f655c7b4a31d89a
|
||||
this.a(chunkcoordintpair.x, chunkcoordintpair.z, LightEngineThreaded.Update.PRE_UPDATE, SystemUtils.a(() -> {
|
||||
super.a(chunkcoordintpair, flag);
|
||||
}, () -> {
|
||||
@@ -231,6 +468,11 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable {
|
||||
@@ -231,6 +469,11 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable {
|
||||
|
||||
@Override
|
||||
public void a(EnumSkyBlock enumskyblock, SectionPosition sectionposition, @Nullable NibbleArray nibblearray, boolean flag) {
|
||||
@@ -10919,7 +11187,7 @@ index 2f9c97dd4e1d705a87772d18c7ab4883a876af08..4d6663b3b4118f1b7f655c7b4a31d89a
|
||||
this.a(sectionposition.a(), sectionposition.c(), () -> {
|
||||
return 0;
|
||||
}, LightEngineThreaded.Update.PRE_UPDATE, SystemUtils.a(() -> {
|
||||
@@ -240,6 +482,7 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable {
|
||||
@@ -240,6 +483,7 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable {
|
||||
}));
|
||||
}
|
||||
|
||||
@@ -10927,7 +11195,7 @@ index 2f9c97dd4e1d705a87772d18c7ab4883a876af08..4d6663b3b4118f1b7f655c7b4a31d89a
|
||||
private void a(int i, int j, LightEngineThreaded.Update lightenginethreaded_update, Runnable runnable) {
|
||||
this.a(i, j, this.d.c(ChunkCoordIntPair.pair(i, j)), lightenginethreaded_update, runnable);
|
||||
}
|
||||
@@ -252,6 +495,11 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable {
|
||||
@@ -252,6 +496,11 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable {
|
||||
|
||||
@Override
|
||||
public void b(ChunkCoordIntPair chunkcoordintpair, boolean flag) {
|
||||
@@ -10939,7 +11207,7 @@ index 2f9c97dd4e1d705a87772d18c7ab4883a876af08..4d6663b3b4118f1b7f655c7b4a31d89a
|
||||
this.a(chunkcoordintpair.x, chunkcoordintpair.z, () -> {
|
||||
return 0;
|
||||
}, LightEngineThreaded.Update.PRE_UPDATE, SystemUtils.a(() -> {
|
||||
@@ -277,6 +525,7 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable {
|
||||
@@ -277,6 +526,7 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable {
|
||||
return;
|
||||
}
|
||||
// Paper end
|
||||
@@ -10947,16 +11215,20 @@ index 2f9c97dd4e1d705a87772d18c7ab4883a876af08..4d6663b3b4118f1b7f655c7b4a31d89a
|
||||
ChunkSection[] achunksection = ichunkaccess.getSections();
|
||||
|
||||
for (int i = 0; i < 16; ++i) {
|
||||
@@ -293,16 +542,25 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable {
|
||||
@@ -293,16 +543,29 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable {
|
||||
super.a(blockposition, ichunkaccess.g(blockposition));
|
||||
});
|
||||
}
|
||||
+ } else { // Tuinity start - replace light engine impl
|
||||
+ Boolean[] emptySections = com.tuinity.tuinity.chunk.light.StarLightEngine.getEmptySectionsForChunk(ichunkaccess);
|
||||
+ if (flag) {
|
||||
+ this.theLightEngine.loadInChunk(chunkcoordintpair.x, chunkcoordintpair.z, emptySections);
|
||||
+ if (!flag) {
|
||||
+ this.theLightEngine.lightChunk(ichunkaccess, emptySections);
|
||||
+ } else {
|
||||
+ this.theLightEngine.lightChunk(chunkcoordintpair.x, chunkcoordintpair.z, emptySections);
|
||||
+ this.theLightEngine.forceLoadInChunk(ichunkaccess, emptySections);
|
||||
+ // can't really force the chunk to be edged checked, as we need neighbouring chunks - but we don't have
|
||||
+ // them, so if it's not loaded then i guess we can't do edge checks. later loads of the chunk should
|
||||
+ // catch what we miss here.
|
||||
+ this.theLightEngine.checkChunkEdges(chunkcoordintpair.x, chunkcoordintpair.z);
|
||||
+ }
|
||||
+
|
||||
+ } // Tuinity end - replace light engine impl
|
||||
@@ -10975,7 +11247,7 @@ index 2f9c97dd4e1d705a87772d18c7ab4883a876af08..4d6663b3b4118f1b7f655c7b4a31d89a
|
||||
// Paper start
|
||||
future.complete(ichunkaccess);
|
||||
});
|
||||
@@ -311,7 +569,7 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable {
|
||||
@@ -311,7 +574,7 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable {
|
||||
}
|
||||
|
||||
public void queueUpdate() {
|
||||
@@ -10984,7 +11256,7 @@ index 2f9c97dd4e1d705a87772d18c7ab4883a876af08..4d6663b3b4118f1b7f655c7b4a31d89a
|
||||
this.b.a((() -> { // Paper - decompile error
|
||||
this.b();
|
||||
this.g.set(false);
|
||||
@@ -325,17 +583,36 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable {
|
||||
@@ -325,17 +588,36 @@ public class LightEngineThreaded extends LightEngine implements AutoCloseable {
|
||||
private final java.util.List<Runnable> pre = new java.util.ArrayList<>();
|
||||
private final java.util.List<Runnable> post = new java.util.ArrayList<>();
|
||||
private void b() {
|
||||
@@ -16515,7 +16787,7 @@ index d86c25593db7cc0a73db1c37af94ae4e41bb4e93..f34e1570052eac83fb3e03b3e361d8d4
|
||||
}, MinecraftServer.getServer());
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||
index 010f702ea44d2146b0745b2b4d21f948d16cc424..d2ec9f7f105a36a1077ac0df56b1abb4786a565b 100644
|
||||
index 22bde395939f97086e411cef190bb2b1e7ede79a..0f6cb508a170360b6479f9c34048412453fbb89d 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||
@@ -138,6 +138,13 @@ public class Main {
|
||||
|
||||
@@ -420,7 +420,7 @@ index 92bfae8f8249e70105fd848f01f950b67bb1d97e..7502726207073bdac6fc416606457569
|
||||
public void restart() {
|
||||
org.spigotmc.RestartCommand.restart();
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||
index d2ec9f7f105a36a1077ac0df56b1abb4786a565b..b3c0ba202d26fd1f71a19839e2cb9fc9b56ab1ce 100644
|
||||
index 0f6cb508a170360b6479f9c34048412453fbb89d..a92721dff5c2a9a2a167b36c23d1ef22d2bbd3e1 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||
@@ -146,6 +146,14 @@ public class Main {
|
||||
|
||||
@@ -263,10 +263,10 @@ index 361f7857e461578e90cb71e15027dadaf794cb69..2578a4677d1ee060f687be531e696b7c
|
||||
+ }
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
index 58caa3240b90cdc661e1e32e3f5c312ed62c3c21..6d97bcffb6a3a64de97f159dfbc3e21935bda3f2 100644
|
||||
index 7c18b22c7b93b6ca1189e481dde17476797b8fd5..debf252a23d0178f06fdadb9c27c3c66b9bbc2d0 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
@@ -2216,4 +2216,21 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
@@ -2223,4 +2223,21 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
return spigot;
|
||||
}
|
||||
// Spigot end
|
||||
|
||||
@@ -79,7 +79,7 @@ index d1d4f4baf33e6b2224116f22a63b6d218e26635b..07fcf1646a46b867ffb0e88746b4a781
|
||||
this.server.getPluginManager().callEvent(new PlayerResourcePackStatusEvent(getPlayer(), packStatus));
|
||||
// Paper end
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
|
||||
index 4bc9b3b08b42becfd66f39cb0d639bdcae18d45c..d51650b3f7b14d0659cccb4acef969aa7a211200 100644
|
||||
index 1eb44877e7384ae0a028a12b832684126b8d50ec..5b0fdcf5190e4ab2af249a5a0952b66d52f08751 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerList.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerList.java
|
||||
@@ -914,6 +914,8 @@ public abstract class PlayerList {
|
||||
@@ -108,10 +108,10 @@ index 2578a4677d1ee060f687be531e696b7c7be89e84..c441fcea9b2b5a77b801c8a69541cf42
|
||||
+ }
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
index 6d97bcffb6a3a64de97f159dfbc3e21935bda3f2..e781ae267d4c546261a1dcdfc24d9924eb5044fd 100644
|
||||
index debf252a23d0178f06fdadb9c27c3c66b9bbc2d0..8a28c68c5fc22838c62ceef738b330afb840c4c6 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
@@ -2232,5 +2232,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
@@ -2239,5 +2239,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
public void resetIdleTimer() {
|
||||
getHandle().resetIdleTimer();
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Disable outdated build check
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||
index b3c0ba202d26fd1f71a19839e2cb9fc9b56ab1ce..a5394b04a6406323fe0f69c27b07fff4ffc14224 100644
|
||||
index a92721dff5c2a9a2a167b36c23d1ef22d2bbd3e1..b10873022efc8f01ef172e86cad07831d7bf0d5e 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||
@@ -259,7 +259,7 @@ public class Main {
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Giants AI settings
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
|
||||
index a125489d6a3b202d7e2b3d7df26fd72b81f2bd98..2a054887648012fe8f6dbbd9f7a16884fa7882f1 100644
|
||||
index f292e15746a947c580aa93e0a23dbc032eccb561..0e465a2107bd27e59a437c48672068a951ccccff 100644
|
||||
--- a/src/main/java/net/minecraft/server/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/server/Entity.java
|
||||
@@ -136,7 +136,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Cows eat mushrooms
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
|
||||
index 2a054887648012fe8f6dbbd9f7a16884fa7882f1..dd8396e7acb3e89b9500368273fcd7361160b10c 100644
|
||||
index 0e465a2107bd27e59a437c48672068a951ccccff..911a942d191659bdd055b2f1374246a829111330 100644
|
||||
--- a/src/main/java/net/minecraft/server/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/server/Entity.java
|
||||
@@ -2786,6 +2786,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
@@ -2787,6 +2787,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
this.invulnerable = flag;
|
||||
}
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ index 65a54b6bf113ca6e88929e23c5d5cbfc6cfc7bad..4bd1322892e1c46addd795254d9ae6d3
|
||||
protected double aV;
|
||||
protected double aW;
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityMinecartAbstract.java b/src/main/java/net/minecraft/server/EntityMinecartAbstract.java
|
||||
index efe5c0cecaf12ef921f6d32ff6670eff051bf323..a814cf280d1ce0d446d24da8e596f13e49678852 100644
|
||||
index 022dfdc5b6af4b243e7e4da8660e8e41d04e1a30..298af30b1a7f12d42216fc1b7ee801fd7be93d3c 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityMinecartAbstract.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityMinecartAbstract.java
|
||||
@@ -445,16 +445,62 @@ public abstract class EntityMinecartAbstract extends Entity {
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Fix the dead lagging the server
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
|
||||
index dd8396e7acb3e89b9500368273fcd7361160b10c..1536450440d1b35f6623c2a997ac816eb3d291fc 100644
|
||||
index 911a942d191659bdd055b2f1374246a829111330..7f27993ee71b8ad081e0bb8d5e7f7e467683717e 100644
|
||||
--- a/src/main/java/net/minecraft/server/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/server/Entity.java
|
||||
@@ -1532,6 +1532,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Add permission for F3+N debug
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
|
||||
index d51650b3f7b14d0659cccb4acef969aa7a211200..156c55666f6a9ba7108499f513d251aacbcd9fe8 100644
|
||||
index 5b0fdcf5190e4ab2af249a5a0952b66d52f08751..3c19e931ad7d5330f1c77ef65aaa5858a001e4df 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerList.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerList.java
|
||||
@@ -1068,6 +1068,7 @@ public abstract class PlayerList {
|
||||
@@ -1073,6 +1073,7 @@ public abstract class PlayerList {
|
||||
} else {
|
||||
b0 = (byte) (24 + i);
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Add canSaveToDisk to Entity
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/ChunkRegionLoader.java b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
|
||||
index 090e5eafeb35c60fb470b74863d59ed4a4f66be8..fc0bb651878633f778623e9b91ba110bd341f5d3 100644
|
||||
index 076d6c1e1cc049dd312ecb30518e7b25fc2d7371..5f04591193d58ba7897194142da5efcbec3763dd 100644
|
||||
--- a/src/main/java/net/minecraft/server/ChunkRegionLoader.java
|
||||
+++ b/src/main/java/net/minecraft/server/ChunkRegionLoader.java
|
||||
@@ -536,6 +536,7 @@ public class ChunkRegionLoader {
|
||||
@@ -17,7 +17,7 @@ index 090e5eafeb35c60fb470b74863d59ed4a4f66be8..fc0bb651878633f778623e9b91ba110b
|
||||
final int saveLimit = worldserver.paperConfig.entityPerChunkSaveLimits.getOrDefault(entityType, -1);
|
||||
if (saveLimit > -1) {
|
||||
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
|
||||
index 1536450440d1b35f6623c2a997ac816eb3d291fc..ff2dc06a9e903cfbb7cb6fbbb92263be82c4ecd6 100644
|
||||
index 7f27993ee71b8ad081e0bb8d5e7f7e467683717e..c164891ab4ee38244759309cee9d4aaf38f4f481 100644
|
||||
--- a/src/main/java/net/minecraft/server/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/server/Entity.java
|
||||
@@ -308,6 +308,12 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Configurable void damage height
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
|
||||
index ff2dc06a9e903cfbb7cb6fbbb92263be82c4ecd6..80e03fbb7a875c9a45f8886623e97885e08101c9 100644
|
||||
index c164891ab4ee38244759309cee9d4aaf38f4f481..8ae0e83179026d09f318ffaae751c942ecd48c41 100644
|
||||
--- a/src/main/java/net/minecraft/server/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/server/Entity.java
|
||||
@@ -611,7 +611,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Add option for boats to eject players on land
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityBoat.java b/src/main/java/net/minecraft/server/EntityBoat.java
|
||||
index da84cf98022b771bdf0c9d0b284aa7d4d59318e0..4f95976f9a852fa89cedd1fe81d2077fe5d118ee 100644
|
||||
index baa4a61114e7460c74027e1519332f0dd9582647..603910a6f9ecc34be9eb2d4fb28e5c2e20aca90a 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityBoat.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityBoat.java
|
||||
@@ -441,6 +441,7 @@ public class EntityBoat extends Entity {
|
||||
@@ -442,6 +442,7 @@ public class EntityBoat extends Entity {
|
||||
|
||||
if (f > 0.0F) {
|
||||
this.aw = f;
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Item entity immunities
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
|
||||
index 80e03fbb7a875c9a45f8886623e97885e08101c9..2d3146561c0ec3777eec11f6618cd2a3fa34d6d6 100644
|
||||
index 8ae0e83179026d09f318ffaae751c942ecd48c41..dbf6e99ec49841336c81eadfd193216583b03a3b 100644
|
||||
--- a/src/main/java/net/minecraft/server/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/server/Entity.java
|
||||
@@ -1481,6 +1481,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
|
||||
@@ -17,10 +17,10 @@ index 6fe5678cffc2487fe00c953d772f764bb37a4b11..bd0267ee4b3782f6d1ec39cba7966ba4
|
||||
return (new EntityDamageSourceIndirect("indirectMagic", entity, entity1)).setIgnoreArmor().setMagic();
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
|
||||
index 2d3146561c0ec3777eec11f6618cd2a3fa34d6d6..793977e76752d853d2280ccf5d1f4709463ab526 100644
|
||||
index dbf6e99ec49841336c81eadfd193216583b03a3b..cf13b30c71e093296ffa02c6f1383de405ee34d3 100644
|
||||
--- a/src/main/java/net/minecraft/server/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/server/Entity.java
|
||||
@@ -2146,8 +2146,8 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
@@ -2147,8 +2147,8 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
return this.a(new ItemStack(imaterial), (float) i);
|
||||
}
|
||||
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Stop squids floating on top of water
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
|
||||
index 793977e76752d853d2280ccf5d1f4709463ab526..49020e7d719af5e688a23b35af8c57fdd6934d04 100644
|
||||
index cf13b30c71e093296ffa02c6f1383de405ee34d3..3002dbaba08a5567e7e173f47f5973a8d6b4075a 100644
|
||||
--- a/src/main/java/net/minecraft/server/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/server/Entity.java
|
||||
@@ -3456,8 +3456,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
@@ -3457,8 +3457,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
this.lastYaw = this.yaw;
|
||||
}
|
||||
|
||||
|
||||
@@ -161,7 +161,7 @@ index bd0267ee4b3782f6d1ec39cba7966ba4f62f1adf..8b36ac2b0950a827763aa2357700f37e
|
||||
this.B = true;
|
||||
return this;
|
||||
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
|
||||
index 49020e7d719af5e688a23b35af8c57fdd6934d04..5b4bb8876bd5877aaa2ed6a40c05fb0c2188b444 100644
|
||||
index 3002dbaba08a5567e7e173f47f5973a8d6b4075a..2bd65dd4c4c4824a7969392f8ded35cbb1f8a0b4 100644
|
||||
--- a/src/main/java/net/minecraft/server/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/server/Entity.java
|
||||
@@ -80,7 +80,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
@@ -208,7 +208,7 @@ index 49020e7d719af5e688a23b35af8c57fdd6934d04..5b4bb8876bd5877aaa2ed6a40c05fb0c
|
||||
public void a(float f, Vec3D vec3d) {
|
||||
Vec3D vec3d1 = a(vec3d, f, this.yaw);
|
||||
|
||||
@@ -2246,6 +2247,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
@@ -2247,6 +2248,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
return this.a(entity, false);
|
||||
}
|
||||
|
||||
@@ -216,7 +216,7 @@ index 49020e7d719af5e688a23b35af8c57fdd6934d04..5b4bb8876bd5877aaa2ed6a40c05fb0c
|
||||
public boolean a(Entity entity, boolean flag) {
|
||||
for (Entity entity1 = entity; entity1.vehicle != null; entity1 = entity1.vehicle) {
|
||||
if (entity1.vehicle == this) {
|
||||
@@ -2341,6 +2343,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
@@ -2342,6 +2344,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
this.passengers.add(entity);
|
||||
}
|
||||
|
||||
@@ -230,7 +230,7 @@ index 49020e7d719af5e688a23b35af8c57fdd6934d04..5b4bb8876bd5877aaa2ed6a40c05fb0c
|
||||
}
|
||||
return true; // CraftBukkit
|
||||
}
|
||||
@@ -2381,6 +2390,12 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
@@ -2382,6 +2391,12 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
return false;
|
||||
}
|
||||
// Spigot end
|
||||
@@ -243,7 +243,7 @@ index 49020e7d719af5e688a23b35af8c57fdd6934d04..5b4bb8876bd5877aaa2ed6a40c05fb0c
|
||||
this.passengers.remove(entity);
|
||||
entity.j = 60;
|
||||
}
|
||||
@@ -2546,6 +2561,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
@@ -2547,6 +2562,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
this.setFlag(4, flag);
|
||||
}
|
||||
|
||||
@@ -251,7 +251,7 @@ index 49020e7d719af5e688a23b35af8c57fdd6934d04..5b4bb8876bd5877aaa2ed6a40c05fb0c
|
||||
public boolean bE() {
|
||||
return this.glowing || this.world.isClientSide && this.getFlag(6);
|
||||
}
|
||||
@@ -2768,6 +2784,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
@@ -2769,6 +2785,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
|
||||
public void setHeadRotation(float f) {}
|
||||
|
||||
@@ -259,7 +259,7 @@ index 49020e7d719af5e688a23b35af8c57fdd6934d04..5b4bb8876bd5877aaa2ed6a40c05fb0c
|
||||
public void n(float f) {}
|
||||
|
||||
public boolean bL() {
|
||||
@@ -3209,6 +3226,18 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
@@ -3210,6 +3227,18 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -278,7 +278,7 @@ index 49020e7d719af5e688a23b35af8c57fdd6934d04..5b4bb8876bd5877aaa2ed6a40c05fb0c
|
||||
@Override
|
||||
public void sendMessage(IChatBaseComponent ichatbasecomponent, UUID uuid) {}
|
||||
|
||||
@@ -3661,4 +3690,47 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
@@ -3662,4 +3691,47 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
return ((ChunkProviderServer) world.getChunkProvider()).isInEntityTickingChunk(this);
|
||||
}
|
||||
// Paper end
|
||||
@@ -4885,7 +4885,7 @@ index cbc0b8bc854ab1b0ba95fa0a2041385f440718d9..89d64ea0d1e61dfce622df026209af12
|
||||
|
||||
default int getHeight() {
|
||||
diff --git a/src/main/java/net/minecraft/server/IProjectile.java b/src/main/java/net/minecraft/server/IProjectile.java
|
||||
index 9f5ce64a60fe7c312399ee416b11b84213dd3bee..b9f8ed355421f24306e0cc2bb976589f4b72b548 100644
|
||||
index bbc089b41fcbe0141f13591db2cb44b9e688cac4..63040363fa5ae79ab0f2c31a1257cac2a610bc6a 100644
|
||||
--- a/src/main/java/net/minecraft/server/IProjectile.java
|
||||
+++ b/src/main/java/net/minecraft/server/IProjectile.java
|
||||
@@ -12,7 +12,7 @@ public abstract class IProjectile extends Entity {
|
||||
@@ -6383,7 +6383,7 @@ index a6d849facba1526ae2a2b7f3fb9a140d0b50289c..b56ca054b37f5887e13b481baad8132f
|
||||
+ // Purpur end
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||
index c762015e1402b59bf28dae7f947e7737fbac5c1d..956809378997df0aa7c912106799bfdaaed97a53 100644
|
||||
index 63d329dca12f902e2fb2a62ee4c86aea6453f1a3..a6963544fe460798ee870d7080939c8ec838398e 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||
@@ -509,6 +509,18 @@ public class CraftEventFactory {
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Entities can use portals configuration
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
|
||||
index 5b4bb8876bd5877aaa2ed6a40c05fb0c2188b444..301261f720df8f337b6889c6253e5c4dae91b6e4 100644
|
||||
index 2bd65dd4c4c4824a7969392f8ded35cbb1f8a0b4..46786324d6bb5150794b518e5c0f0a42d1851f74 100644
|
||||
--- a/src/main/java/net/minecraft/server/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/server/Entity.java
|
||||
@@ -2422,7 +2422,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
@@ -2423,7 +2423,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
public void d(BlockPosition blockposition) {
|
||||
if (this.ai()) {
|
||||
this.resetPortalCooldown();
|
||||
@@ -17,7 +17,7 @@ index 5b4bb8876bd5877aaa2ed6a40c05fb0c2188b444..301261f720df8f337b6889c6253e5c4d
|
||||
if (!this.world.isClientSide && !blockposition.equals(this.ac)) {
|
||||
this.ac = blockposition.immutableCopy();
|
||||
}
|
||||
@@ -3002,7 +3002,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
@@ -3003,7 +3003,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
}
|
||||
|
||||
public boolean canPortal() {
|
||||
|
||||
@@ -257,7 +257,7 @@ index 2c02e114cce1f49b643e75e7ab3c05be716d7dba..4a97a7517dc1a2a25c578d9e168240cc
|
||||
+ // Purpur end
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/IProjectile.java b/src/main/java/net/minecraft/server/IProjectile.java
|
||||
index b9f8ed355421f24306e0cc2bb976589f4b72b548..58f03f1d2e2f9e4c072c727ae202a9e37628b81f 100644
|
||||
index 63040363fa5ae79ab0f2c31a1257cac2a610bc6a..1c79f58ce2a48745c9790cd04d6d6054b9eb6ed4 100644
|
||||
--- a/src/main/java/net/minecraft/server/IProjectile.java
|
||||
+++ b/src/main/java/net/minecraft/server/IProjectile.java
|
||||
@@ -13,11 +13,25 @@ public abstract class IProjectile extends Entity {
|
||||
|
||||
@@ -25,7 +25,7 @@ index 41a36ce6d446b78bdd7a4739ad372a2ee19da116..e6de89e7f57c3c130dedb8407cd4cd57
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityBoat.java b/src/main/java/net/minecraft/server/EntityBoat.java
|
||||
index 4f95976f9a852fa89cedd1fe81d2077fe5d118ee..0254a9e971b2dd93436a38815bfd1dcca9a2ec67 100644
|
||||
index 603910a6f9ecc34be9eb2d4fb28e5c2e20aca90a..72d2eea40c37b5fa627c8deeda1802734e94f866 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityBoat.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityBoat.java
|
||||
@@ -155,7 +155,13 @@ public class EntityBoat extends Entity {
|
||||
|
||||
@@ -33,7 +33,7 @@ index aef1dc47f2025f09d650a04f6dfa867d5ea1b65a..c973a1f1aecd47f11a12c94325cc18c3
|
||||
if (flag5) {
|
||||
if (i > 0) {
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||
index 956809378997df0aa7c912106799bfdaaed97a53..9c09d4c2f5b4d34fbf340db5b5bb6b860a25bd08 100644
|
||||
index a6963544fe460798ee870d7080939c8ec838398e..c6402e5c712744a807242e0421cd3383f6ba085f 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||
@@ -1055,7 +1055,7 @@ public class CraftEventFactory {
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] PaperPR - Config option for Piglins guarding chests
|
||||
|
||||
|
||||
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||||
index 234d2daecc5d0bf6a99c0a5f4a87f947a15029d9..ab53e4993b98060c36378fc4cc449c68a74fc24b 100644
|
||||
index 89f3a28c20f0e4db4650c435dbcbc923b7bde8aa..5c7e3c2671c0f8a3966a61e2652b8bb64f79a83e 100644
|
||||
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||||
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
||||
@@ -698,6 +698,11 @@ public class PaperWorldConfig {
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Lobotomize stuck villagers
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
|
||||
index 301261f720df8f337b6889c6253e5c4dae91b6e4..7e86d54f138523921bf069b75689af17252f2ae5 100644
|
||||
index 46786324d6bb5150794b518e5c0f0a42d1851f74..b26a2b9b71f4a3a5b40612d5737500211fbefe15 100644
|
||||
--- a/src/main/java/net/minecraft/server/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/server/Entity.java
|
||||
@@ -114,7 +114,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Spread out and optimise player list ticks
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
|
||||
index 156c55666f6a9ba7108499f513d251aacbcd9fe8..2f1a2fa1f80ed23c67db1d01023a04b5074d1654 100644
|
||||
index 3c19e931ad7d5330f1c77ef65aaa5858a001e4df..0efc210ad55d843fd297f0caa88a5f355fbfef80 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerList.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerList.java
|
||||
@@ -71,7 +71,7 @@ public abstract class PlayerList {
|
||||
@@ -56,7 +56,7 @@ index 156c55666f6a9ba7108499f513d251aacbcd9fe8..2f1a2fa1f80ed23c67db1d01023a04b5
|
||||
|
||||
public void sendAll(Packet<?> packet) {
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
index e781ae267d4c546261a1dcdfc24d9924eb5044fd..4f42bc21839086b2a40a35910a08d9b11c7649f9 100644
|
||||
index 8a28c68c5fc22838c62ceef738b330afb840c4c6..95e548eea5acbece0e7036f23d79b6fc61e6786f 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
@@ -1382,7 +1382,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
|
||||
@@ -37,7 +37,7 @@ index 98961e20642e61239a6ad89445f97245aa821919..760799782d0cb01e2b14408a9b085f78
|
||||
this.isRestarting = isRestarting;
|
||||
if (flag) {
|
||||
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
|
||||
index 2f1a2fa1f80ed23c67db1d01023a04b5074d1654..ebbbd6f86cd08d84c37c8550eda1b805fe966bc3 100644
|
||||
index 0efc210ad55d843fd297f0caa88a5f355fbfef80..ca19cfa1ff801e5292332ff7b92bba881762306e 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerList.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerList.java
|
||||
@@ -513,6 +513,8 @@ public abstract class PlayerList {
|
||||
|
||||
@@ -123,7 +123,7 @@ index b56ca054b37f5887e13b481baad8132f1d28638b..eb0ce05d25ba33626d2dd3e3380d805c
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
index 4f42bc21839086b2a40a35910a08d9b11c7649f9..f3aa7878d281ae5a147728f2b5addd5659f9a6bd 100644
|
||||
index 95e548eea5acbece0e7036f23d79b6fc61e6786f..70ed64ed22ffde672a4ecb0a7f7ac2a7b3f30112 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
@@ -116,6 +116,7 @@ import org.bukkit.entity.EntityType;
|
||||
|
||||
@@ -19,10 +19,10 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
Co-authored-by: Mariell Hoversholm <proximyst@proximyst.com>
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/ChunkGenerator.java b/src/main/java/net/minecraft/server/ChunkGenerator.java
|
||||
index 9a6fef215052f9c513b23024968995c97863a453..a26616d479e79729cbf4838df90612f074a47a04 100644
|
||||
index 097cb9896c525a605c50e83548f828e0c71ab3d5..8a0d01d2bab4a28aa3c075534bc70b6e835810ef 100644
|
||||
--- a/src/main/java/net/minecraft/server/ChunkGenerator.java
|
||||
+++ b/src/main/java/net/minecraft/server/ChunkGenerator.java
|
||||
@@ -234,6 +234,14 @@ public abstract class ChunkGenerator {
|
||||
@@ -251,6 +251,14 @@ public abstract class ChunkGenerator {
|
||||
if (structuresettingsfeature != null) {
|
||||
StructureStart<?> structurestart1 = structurefeature.a(iregistrycustom, this, this.b, definedstructuremanager, i, chunkcoordintpair, biomebase, j, structuresettingsfeature);
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
|
||||
index 7e86d54f138523921bf069b75689af17252f2ae5..23d81518dfd76cd5174ba87afa0e9651cc55815a 100644
|
||||
index b26a2b9b71f4a3a5b40612d5737500211fbefe15..31642841b2954dacdebed8d40f81381330fcfcab 100644
|
||||
--- a/src/main/java/net/minecraft/server/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/server/Entity.java
|
||||
@@ -1369,7 +1369,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Fix stuck in portals
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
|
||||
index 23d81518dfd76cd5174ba87afa0e9651cc55815a..16780df5c8768b05c88f82f3b869a77240b5c8a0 100644
|
||||
index 31642841b2954dacdebed8d40f81381330fcfcab..6861683cf060df4f173ffc01ebd9de70b8c92667 100644
|
||||
--- a/src/main/java/net/minecraft/server/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/server/Entity.java
|
||||
@@ -2419,12 +2419,15 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
@@ -2420,12 +2420,15 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
||||
return new Vec2F(this.pitch, this.yaw);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user