mirror of
https://github.com/YatopiaMC/Yatopia.git
synced 2024-11-29 22:23:50 +01:00
9aa38226e4
Upstream/An Sidestream has released updates that appears to apply and compile correctly This update has NOT been tested by YatopiaMC and as with ANY update, please do your own testing. Tuinity Changes: 988e550 Updated Upstream (Paper) Purpur Changes: ea7a301 Fix lag 424607f Updated Upstream (Paper)
84 lines
3.9 KiB
Diff
84 lines
3.9 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: JellySquid <jellysquid+atwork@protonmail.com>
|
|
Date: Thu, 20 Aug 2020 17:25:11 +0300
|
|
Subject: [PATCH] lithium MixinChunkSection
|
|
|
|
Original code by JellySquid, licensed under LGPLv3
|
|
you can find the original code on https://github.com/jellysquid3/lithium-fabric/ (Yarn mappings)
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/BlockBase.java b/src/main/java/net/minecraft/server/BlockBase.java
|
|
index 00bf3ceae4f341277c6442d8555537d9a6066bcd..344b23dfe54df6dee5e2d6bf1bbbe4a9d1da87c4 100644
|
|
--- a/src/main/java/net/minecraft/server/BlockBase.java
|
|
+++ b/src/main/java/net/minecraft/server/BlockBase.java
|
|
@@ -350,6 +350,8 @@ public abstract class BlockBase {
|
|
}
|
|
// Tuinity end
|
|
|
|
+ public final boolean shapeExceedsCubeUncached() { return this.a == null || this.a.c; } // Yatopia - uncached shapeExceedsCube due to collisions stuff
|
|
+
|
|
public void a() {
|
|
this.fluid = this.getBlock().d(this.p()); // Paper - moved from getFluid()
|
|
this.isTicking = this.getBlock().isTicking(this.p()); // Paper - moved from isTicking()
|
|
diff --git a/src/main/java/net/minecraft/server/ChunkSection.java b/src/main/java/net/minecraft/server/ChunkSection.java
|
|
index cebd808e273dbdb88feb16920dd7a2f60390b34f..d210ac3d5775491e9beb885dde608f5e8fda8eb2 100644
|
|
--- a/src/main/java/net/minecraft/server/ChunkSection.java
|
|
+++ b/src/main/java/net/minecraft/server/ChunkSection.java
|
|
@@ -4,7 +4,7 @@ import java.util.function.Predicate;
|
|
import com.destroystokyo.paper.antixray.ChunkPacketInfo; // Paper - Anti-Xray - Add chunk packet info
|
|
import javax.annotation.Nullable;
|
|
|
|
-public class ChunkSection {
|
|
+public class ChunkSection implements me.jellysquid.mods.lithium.common.entity.movement.ChunkAwareBlockCollisionSweeper.OversizedBlocksCounter { // Yatopia
|
|
|
|
public static final DataPalette<IBlockData> GLOBAL_PALETTE = new DataPaletteGlobal<>(Block.REGISTRY_ID, Blocks.AIR.getBlockData());
|
|
final int yPos; // Paper - private -> package-private
|
|
@@ -12,6 +12,7 @@ public class ChunkSection {
|
|
short tickingBlockCount; // Paper - private -> package-private
|
|
private short e;
|
|
final DataPaletteBlock<IBlockData> blockIds; // Paper - package-private
|
|
+ private short oversizedBlockCount = 0; // Yatopia
|
|
|
|
final com.destroystokyo.paper.util.maplist.IBlockDataList tickingList = new com.destroystokyo.paper.util.maplist.IBlockDataList(); // Paper
|
|
|
|
@@ -67,6 +68,7 @@ public class ChunkSection {
|
|
|
|
if (!iblockdata1.isAir()) {
|
|
--this.nonEmptyBlockCount;
|
|
+ if (iblockdata1.shapeExceedsCubeUncached()) this.oversizedBlockCount--; // Yatopia
|
|
if (iblockdata1.isTicking()) {
|
|
--this.tickingBlockCount;
|
|
// Paper start
|
|
@@ -81,6 +83,7 @@ public class ChunkSection {
|
|
|
|
if (!iblockdata.isAir()) {
|
|
++this.nonEmptyBlockCount;
|
|
+ if (iblockdata.shapeExceedsCubeUncached()) this.oversizedBlockCount++; // Yatopia
|
|
if (iblockdata.isTicking()) {
|
|
++this.tickingBlockCount;
|
|
// Paper start
|
|
@@ -126,10 +129,12 @@ public class ChunkSection {
|
|
// Paper start
|
|
this.tickingList.clear();
|
|
// Paper end
|
|
+ this.oversizedBlockCount = 0; // Yatopia
|
|
this.nonEmptyBlockCount = 0;
|
|
this.tickingBlockCount = 0;
|
|
this.e = 0;
|
|
this.blockIds.forEachLocation((iblockdata, location) -> { // Paper
|
|
+ if (iblockdata.shapeExceedsCubeUncached()) this.oversizedBlockCount += location; // Yatopia
|
|
Fluid fluid = iblockdata.getFluid();
|
|
|
|
if (!iblockdata.isAir()) {
|
|
@@ -173,4 +178,11 @@ public class ChunkSection {
|
|
public boolean a(Predicate<IBlockData> predicate) {
|
|
return this.blockIds.contains(predicate);
|
|
}
|
|
+
|
|
+ // Yatopia start
|
|
+ @Override
|
|
+ public boolean hasOversizedBlocks() {
|
|
+ return this.oversizedBlockCount > 0;
|
|
+ }
|
|
+ // Yatopia end
|
|
}
|