Add TickFreeze Patch
Dieser Commit ist enthalten in:
Ursprung
0a9b35f004
Commit
243a56213c
@ -5,7 +5,7 @@ Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
|||||||
===================================================================
|
===================================================================
|
||||||
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||||
--- a/src/main/java/net/minecraft/server/WorldServer.java (revision 571772e5fd38f66c11220ce29cd15d70e8da46f6)
|
--- a/src/main/java/net/minecraft/server/WorldServer.java (revision 571772e5fd38f66c11220ce29cd15d70e8da46f6)
|
||||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java (date 1639424761201)
|
+++ b/src/main/java/net/minecraft/server/WorldServer.java (date 1639429464511)
|
||||||
@@ -14,38 +14,28 @@
|
@@ -14,38 +14,28 @@
|
||||||
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
|
import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
|
||||||
import it.unimi.dsi.fastutil.objects.ObjectIterator;
|
import it.unimi.dsi.fastutil.objects.ObjectIterator;
|
||||||
@ -66,7 +66,15 @@ diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java
|
|||||||
|
|
||||||
this.ticking = true;
|
this.ticking = true;
|
||||||
gameprofilerfiller.enter("world border");
|
gameprofilerfiller.enter("world border");
|
||||||
@@ -308,7 +299,7 @@
|
@@ -303,12 +294,14 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
this.N();
|
||||||
|
- this.a();
|
||||||
|
+ if (!currentlyFrozen) {
|
||||||
|
+ this.a();
|
||||||
|
+ }
|
||||||
|
gameprofilerfiller.exitEnter("chunkSource");
|
||||||
this.getChunkProvider().tick(booleansupplier);
|
this.getChunkProvider().tick(booleansupplier);
|
||||||
gameprofilerfiller.exitEnter("tickPending");
|
gameprofilerfiller.exitEnter("tickPending");
|
||||||
timings.doTickPending.startTiming(); // Spigot
|
timings.doTickPending.startTiming(); // Spigot
|
||||||
@ -75,7 +83,7 @@ diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java
|
|||||||
this.nextTickListBlock.b();
|
this.nextTickListBlock.b();
|
||||||
this.nextTickListFluid.b();
|
this.nextTickListFluid.b();
|
||||||
}
|
}
|
||||||
@@ -322,7 +313,9 @@
|
@@ -322,7 +315,9 @@
|
||||||
|
|
||||||
gameprofilerfiller.exitEnter("blockEvents");
|
gameprofilerfiller.exitEnter("blockEvents");
|
||||||
timings.doSounds.startTiming(); // Spigot
|
timings.doSounds.startTiming(); // Spigot
|
||||||
@ -86,15 +94,14 @@ diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java
|
|||||||
timings.doSounds.stopTiming(); // Spigot
|
timings.doSounds.stopTiming(); // Spigot
|
||||||
this.ticking = false;
|
this.ticking = false;
|
||||||
gameprofilerfiller.exitEnter("entities");
|
gameprofilerfiller.exitEnter("entities");
|
||||||
@@ -332,18 +325,28 @@
|
@@ -332,19 +327,28 @@
|
||||||
this.resetEmptyTime();
|
this.resetEmptyTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
+ lastFreezed = false;
|
+ lastFreezed = false;
|
||||||
+ if (!currentlyFrozen && !physicsTick.isEmpty()) {
|
+ if (!currentlyFrozen && !physicsTick.isEmpty()) {
|
||||||
+ Map<BlockPosition, Runnable> physicsTickList = new LinkedHashMap<>(physicsTick);
|
+ physicsTick.forEach((blockPosition, runnable) -> runnable.run());
|
||||||
+ physicsTick.clear();
|
+ physicsTick.clear();
|
||||||
+ physicsTickList.forEach((blockPosition, runnable) -> runnable.run());
|
|
||||||
+ lastFreezed = true;
|
+ lastFreezed = true;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
@ -110,13 +117,14 @@ diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java
|
|||||||
// CraftBukkit start - Fixed an NPE
|
// CraftBukkit start - Fixed an NPE
|
||||||
if (entity == null) {
|
if (entity == null) {
|
||||||
continue;
|
continue;
|
||||||
+ }
|
}
|
||||||
+ if (currentlyFrozen && !(entity instanceof EntityPlayer)) {
|
+ if (currentlyFrozen && !(entity instanceof EntityPlayer)) {
|
||||||
+ continue;
|
+ continue;
|
||||||
}
|
+ }
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
this.a((entity1) -> {
|
this.a((entity1) -> {
|
||||||
@@ -415,7 +418,9 @@
|
++entity1.ticksLived;
|
||||||
|
@@ -415,7 +419,9 @@
|
||||||
|
|
||||||
gameprofilerfiller.exit();
|
gameprofilerfiller.exit();
|
||||||
timings.tickEntities.stopTiming(); // Spigot
|
timings.tickEntities.stopTiming(); // Spigot
|
||||||
@ -127,7 +135,7 @@ diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java
|
|||||||
}
|
}
|
||||||
|
|
||||||
gameprofilerfiller.exit();
|
gameprofilerfiller.exit();
|
||||||
@@ -428,6 +433,7 @@
|
@@ -428,6 +434,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
public void a(Chunk chunk, int i) {
|
public void a(Chunk chunk, int i) {
|
||||||
@ -135,7 +143,7 @@ diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java
|
|||||||
ChunkCoordIntPair chunkcoordintpair = chunk.getPos();
|
ChunkCoordIntPair chunkcoordintpair = chunk.getPos();
|
||||||
boolean flag = this.isRaining();
|
boolean flag = this.isRaining();
|
||||||
int j = chunkcoordintpair.d();
|
int j = chunkcoordintpair.d();
|
||||||
@@ -584,6 +590,7 @@
|
@@ -584,6 +591,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
private void a(NextTickListEntry<FluidType> nextticklistentry) {
|
private void a(NextTickListEntry<FluidType> nextticklistentry) {
|
||||||
@ -143,7 +151,7 @@ diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java
|
|||||||
Fluid fluid = this.getFluid(nextticklistentry.a);
|
Fluid fluid = this.getFluid(nextticklistentry.a);
|
||||||
|
|
||||||
if (fluid.getType() == nextticklistentry.b()) {
|
if (fluid.getType() == nextticklistentry.b()) {
|
||||||
@@ -593,6 +600,7 @@
|
@@ -593,6 +601,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
private void b(NextTickListEntry<Block> nextticklistentry) {
|
private void b(NextTickListEntry<Block> nextticklistentry) {
|
||||||
@ -151,7 +159,7 @@ diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java
|
|||||||
IBlockData iblockdata = this.getType(nextticklistentry.a);
|
IBlockData iblockdata = this.getType(nextticklistentry.a);
|
||||||
|
|
||||||
if (iblockdata.getBlock() == nextticklistentry.b()) {
|
if (iblockdata.getBlock() == nextticklistentry.b()) {
|
||||||
@@ -602,6 +610,36 @@
|
@@ -602,6 +611,36 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
public void entityJoinedWorld(Entity entity) {
|
public void entityJoinedWorld(Entity entity) {
|
||||||
@ -188,19 +196,6 @@ diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java
|
|||||||
if (entity instanceof EntityHuman || this.getChunkProvider().a(entity)) {
|
if (entity instanceof EntityHuman || this.getChunkProvider().a(entity)) {
|
||||||
// Spigot start
|
// Spigot start
|
||||||
if (!org.spigotmc.ActivationRange.checkIfActive(entity)) {
|
if (!org.spigotmc.ActivationRange.checkIfActive(entity)) {
|
||||||
@@ -1315,6 +1353,12 @@
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void playBlockAction(BlockPosition blockposition, Block block, int i, int j) {
|
|
||||||
+ if (!currentlyFrozen) {
|
|
||||||
+ physicsTick.put(blockposition, () -> {
|
|
||||||
+ this.I.add(new BlockActionData(blockposition, block, i, j));
|
|
||||||
+ });
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
this.I.add(new BlockActionData(blockposition, block, i, j));
|
|
||||||
}
|
|
||||||
|
|
||||||
Index: src/main/java/net/minecraft/server/World.java
|
Index: src/main/java/net/minecraft/server/World.java
|
||||||
IDEA additional info:
|
IDEA additional info:
|
||||||
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
||||||
@ -208,7 +203,7 @@ Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
|||||||
===================================================================
|
===================================================================
|
||||||
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
|
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
|
||||||
--- a/src/main/java/net/minecraft/server/World.java (revision 571772e5fd38f66c11220ce29cd15d70e8da46f6)
|
--- a/src/main/java/net/minecraft/server/World.java (revision 571772e5fd38f66c11220ce29cd15d70e8da46f6)
|
||||||
+++ b/src/main/java/net/minecraft/server/World.java (date 1639417061068)
|
+++ b/src/main/java/net/minecraft/server/World.java (date 1639428902021)
|
||||||
@@ -1,29 +1,23 @@
|
@@ -1,29 +1,23 @@
|
||||||
package net.minecraft.server;
|
package net.minecraft.server;
|
||||||
|
|
||||||
@ -292,22 +287,10 @@ diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/m
|
|||||||
if (!this.isClientSide) {
|
if (!this.isClientSide) {
|
||||||
IBlockData iblockdata = this.getType(blockposition);
|
IBlockData iblockdata = this.getType(blockposition);
|
||||||
|
|
||||||
@@ -1193,7 +1207,9 @@
|
@@ -1226,6 +1240,14 @@
|
||||||
}
|
|
||||||
|
|
||||||
protected void a() {
|
|
||||||
- this.a(this.worldData.getTime() + 1L);
|
|
||||||
+ if (!currentlyFrozen) {
|
|
||||||
+ this.a(this.worldData.getTime() + 1L);
|
|
||||||
+ }
|
|
||||||
if (this.worldData.v().getBoolean(GameRules.DO_DAYLIGHT_CYCLE)) {
|
|
||||||
this.setDayTime(this.worldData.getDayTime() + 1L);
|
|
||||||
}
|
|
||||||
@@ -1226,7 +1242,16 @@
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void playBlockAction(BlockPosition blockposition, Block block, int i, int j) {
|
public void playBlockAction(BlockPosition blockposition, Block block, int i, int j) {
|
||||||
- this.getType(blockposition).a(this, blockposition, i, j);
|
|
||||||
+ /*
|
+ /*
|
||||||
+ if (!currentlyFrozen) {
|
+ if (!currentlyFrozen) {
|
||||||
+ physicsTick.put(blockposition, () -> {
|
+ physicsTick.put(blockposition, () -> {
|
||||||
@ -316,8 +299,6 @@ diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/m
|
|||||||
+ return;
|
+ return;
|
||||||
+ }
|
+ }
|
||||||
+ */
|
+ */
|
||||||
+ IBlockData iblockdata = this.getType(blockposition); // Block of Position
|
this.getType(blockposition).a(this, blockposition, i, j);
|
||||||
+ iblockdata.a(this, blockposition, i, j);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren