Use a finalizer for light packet instead of onPacketDone
Sadly sharing packets is breaking the ability to do this :( We can prob still do a little better than this but will save that for another commit.
This commit is contained in:
parent
03c9bb05c1
commit
f1a8eb7fda
|
@ -143,26 +143,30 @@ index 67c960292db9d99ac85b5d0dda50ae48ef942c1b..f7641156beea365a91a935667abf8c95
|
||||||
for (int i = 0; i < 16; ++i) {
|
for (int i = 0; i < 16; ++i) {
|
||||||
System.arraycopy(this.a, 0, abyte, i * 128, 128);
|
System.arraycopy(this.a, 0, abyte, i * 128, 128);
|
||||||
diff --git a/src/main/java/net/minecraft/server/PacketPlayOutLightUpdate.java b/src/main/java/net/minecraft/server/PacketPlayOutLightUpdate.java
|
diff --git a/src/main/java/net/minecraft/server/PacketPlayOutLightUpdate.java b/src/main/java/net/minecraft/server/PacketPlayOutLightUpdate.java
|
||||||
index cd1ad45469aa163b9bc41774ae80adfa617fd97b..d6560f4693869a6638963867f7ebc63bf80d534e 100644
|
index cd1ad45469aa163b9bc41774ae80adfa617fd97b..90796fab9826a33ed35d50cdd60741d93f8607b2 100644
|
||||||
--- a/src/main/java/net/minecraft/server/PacketPlayOutLightUpdate.java
|
--- a/src/main/java/net/minecraft/server/PacketPlayOutLightUpdate.java
|
||||||
+++ b/src/main/java/net/minecraft/server/PacketPlayOutLightUpdate.java
|
+++ b/src/main/java/net/minecraft/server/PacketPlayOutLightUpdate.java
|
||||||
@@ -17,6 +17,15 @@ public class PacketPlayOutLightUpdate implements Packet<PacketListenerPlayOut> {
|
@@ -17,6 +17,19 @@ public class PacketPlayOutLightUpdate implements Packet<PacketListenerPlayOut> {
|
||||||
private List<byte[]> h;
|
private List<byte[]> h;
|
||||||
|
|
||||||
public PacketPlayOutLightUpdate() {}
|
public PacketPlayOutLightUpdate() {}
|
||||||
+ // Paper start
|
+ // Paper start
|
||||||
+ private final java.util.List<byte[]> usedBytes = new java.util.ArrayList<>();
|
+ private java.util.List<byte[]> usedBytes = new java.util.ArrayList<>();
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public void onPacketDone() {
|
+ public void finalize() throws Throwable {
|
||||||
|
+ try {
|
||||||
+ usedBytes.forEach(NibbleArray::releaseBytes);
|
+ usedBytes.forEach(NibbleArray::releaseBytes);
|
||||||
+ usedBytes.clear();
|
+ usedBytes.clear();
|
||||||
|
+ } finally {
|
||||||
|
+ super.finalize();
|
||||||
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+ // Paper end
|
+ // Paper end
|
||||||
|
|
||||||
public PacketPlayOutLightUpdate(ChunkCoordIntPair chunkcoordintpair, LightEngine lightengine) {
|
public PacketPlayOutLightUpdate(ChunkCoordIntPair chunkcoordintpair, LightEngine lightengine) {
|
||||||
this.a = chunkcoordintpair.x;
|
this.a = chunkcoordintpair.x;
|
||||||
@@ -24,6 +33,7 @@ public class PacketPlayOutLightUpdate implements Packet<PacketListenerPlayOut> {
|
@@ -24,6 +37,7 @@ public class PacketPlayOutLightUpdate implements Packet<PacketListenerPlayOut> {
|
||||||
this.g = Lists.newArrayList();
|
this.g = Lists.newArrayList();
|
||||||
this.h = Lists.newArrayList();
|
this.h = Lists.newArrayList();
|
||||||
|
|
||||||
|
@ -170,7 +174,7 @@ index cd1ad45469aa163b9bc41774ae80adfa617fd97b..d6560f4693869a6638963867f7ebc63b
|
||||||
for (int i = 0; i < 18; ++i) {
|
for (int i = 0; i < 18; ++i) {
|
||||||
NibbleArray nibblearray = lightengine.a(EnumSkyBlock.SKY).a(SectionPosition.a(chunkcoordintpair, -1 + i));
|
NibbleArray nibblearray = lightengine.a(EnumSkyBlock.SKY).a(SectionPosition.a(chunkcoordintpair, -1 + i));
|
||||||
NibbleArray nibblearray1 = lightengine.a(EnumSkyBlock.BLOCK).a(SectionPosition.a(chunkcoordintpair, -1 + i));
|
NibbleArray nibblearray1 = lightengine.a(EnumSkyBlock.BLOCK).a(SectionPosition.a(chunkcoordintpair, -1 + i));
|
||||||
@@ -33,7 +43,7 @@ public class PacketPlayOutLightUpdate implements Packet<PacketListenerPlayOut> {
|
@@ -33,7 +47,7 @@ public class PacketPlayOutLightUpdate implements Packet<PacketListenerPlayOut> {
|
||||||
this.e |= 1 << i;
|
this.e |= 1 << i;
|
||||||
} else {
|
} else {
|
||||||
this.c |= 1 << i;
|
this.c |= 1 << i;
|
||||||
|
@ -179,7 +183,7 @@ index cd1ad45469aa163b9bc41774ae80adfa617fd97b..d6560f4693869a6638963867f7ebc63b
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -42,7 +52,7 @@ public class PacketPlayOutLightUpdate implements Packet<PacketListenerPlayOut> {
|
@@ -42,7 +56,7 @@ public class PacketPlayOutLightUpdate implements Packet<PacketListenerPlayOut> {
|
||||||
this.f |= 1 << i;
|
this.f |= 1 << i;
|
||||||
} else {
|
} else {
|
||||||
this.d |= 1 << i;
|
this.d |= 1 << i;
|
||||||
|
@ -188,7 +192,7 @@ index cd1ad45469aa163b9bc41774ae80adfa617fd97b..d6560f4693869a6638963867f7ebc63b
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -57,13 +67,14 @@ public class PacketPlayOutLightUpdate implements Packet<PacketListenerPlayOut> {
|
@@ -57,13 +71,14 @@ public class PacketPlayOutLightUpdate implements Packet<PacketListenerPlayOut> {
|
||||||
this.g = Lists.newArrayList();
|
this.g = Lists.newArrayList();
|
||||||
this.h = Lists.newArrayList();
|
this.h = Lists.newArrayList();
|
||||||
|
|
||||||
|
@ -204,7 +208,7 @@ index cd1ad45469aa163b9bc41774ae80adfa617fd97b..d6560f4693869a6638963867f7ebc63b
|
||||||
} else {
|
} else {
|
||||||
this.c &= ~(1 << k);
|
this.c &= ~(1 << k);
|
||||||
if (nibblearray != null) {
|
if (nibblearray != null) {
|
||||||
@@ -75,7 +86,7 @@ public class PacketPlayOutLightUpdate implements Packet<PacketListenerPlayOut> {
|
@@ -75,7 +90,7 @@ public class PacketPlayOutLightUpdate implements Packet<PacketListenerPlayOut> {
|
||||||
if ((this.d & 1 << k) != 0) {
|
if ((this.d & 1 << k) != 0) {
|
||||||
nibblearray = lightengine.a(EnumSkyBlock.BLOCK).a(SectionPosition.a(chunkcoordintpair, -1 + k));
|
nibblearray = lightengine.a(EnumSkyBlock.BLOCK).a(SectionPosition.a(chunkcoordintpair, -1 + k));
|
||||||
if (nibblearray != null && !nibblearray.c()) {
|
if (nibblearray != null && !nibblearray.c()) {
|
||||||
|
|
Loading…
Reference in New Issue