mirror of
https://github.com/SparklyPower/SparklyPaper.git
synced 2025-12-19 15:09:27 +00:00
Update to Paper 1.21.11
This commit is contained in:
@@ -3,7 +3,7 @@ import org.gradle.api.tasks.testing.logging.TestLogEvent
|
|||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
java // TODO java launcher tasks
|
java // TODO java launcher tasks
|
||||||
id("io.papermc.paperweight.patcher") version "2.0.0-beta.17"
|
id("io.papermc.paperweight.patcher") version "2.0.0-beta.19"
|
||||||
}
|
}
|
||||||
|
|
||||||
paperweight {
|
paperweight {
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
group=net.sparklypower.sparklypaper
|
group=net.sparklypower.sparklypaper
|
||||||
version=1.21.10-R0.1-SNAPSHOT
|
version=1.21.11-R0.1-SNAPSHOT
|
||||||
mcVersion=1.21.10
|
mcVersion=1.21.11
|
||||||
|
apiVersion=1.21.11
|
||||||
paperRef=4446f17f652d3ce56860f8c06d6746fa3c1853fc
|
paperRef=4446f17f652d3ce56860f8c06d6746fa3c1853fc
|
||||||
|
|
||||||
org.gradle.configuration-cache=true
|
org.gradle.configuration-cache=true
|
||||||
|
|||||||
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -1,6 +1,6 @@
|
|||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.0-bin.zip
|
||||||
networkTimeout=10000
|
networkTimeout=10000
|
||||||
validateDistributionUrl=true
|
validateDistributionUrl=true
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
--- a/paper-api/build.gradle.kts
|
--- a/paper-api/build.gradle.kts
|
||||||
+++ b/paper-api/build.gradle.kts
|
+++ b/paper-api/build.gradle.kts
|
||||||
@@ -89,7 +_,7 @@
|
@@ -91,7 +_,7 @@
|
||||||
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
|
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
idea {
|
idea {
|
||||||
module {
|
module {
|
||||||
generatedSourceDirs.add(generatedDir.toFile())
|
generatedSourceDirs.add(generatedDir.toFile())
|
||||||
@@ -99,6 +_,18 @@
|
@@ -101,6 +_,18 @@
|
||||||
main {
|
main {
|
||||||
java {
|
java {
|
||||||
srcDir(generatedDir)
|
srcDir(generatedDir)
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -165,7 +_,7 @@
|
@@ -183,7 +_,7 @@
|
||||||
|
|
||||||
tasks.withType<Javadoc>().configureEach {
|
tasks.withType<Javadoc>().configureEach {
|
||||||
val options = options as StandardJavadocDocletOptions
|
val options = options as StandardJavadocDocletOptions
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
options.use()
|
options.use()
|
||||||
options.isDocFilesSubDirs = true
|
options.isDocFilesSubDirs = true
|
||||||
options.links(
|
options.links(
|
||||||
@@ -198,11 +_,11 @@
|
@@ -216,11 +_,11 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
// workaround for https://github.com/gradle/gradle/issues/4046
|
// workaround for https://github.com/gradle/gradle/issues/4046
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
--- a/src/main/java/org/bukkit/Material.java
|
--- a/src/main/java/org/bukkit/Material.java
|
||||||
+++ b/src/main/java/org/bukkit/Material.java
|
+++ b/src/main/java/org/bukkit/Material.java
|
||||||
@@ -1791,6 +_,16 @@
|
@@ -1808,6 +_,16 @@
|
||||||
ZOMBIE_HEAD(-1, Skull.class),
|
ZOMBIE_HEAD(-1, Skull.class),
|
||||||
ZOMBIE_WALL_HEAD(-1, WallSkull.class),
|
ZOMBIE_WALL_HEAD(-1, WallSkull.class),
|
||||||
// End generate - Blocks
|
// End generate - Blocks
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
--- a/src/main/java/org/bukkit/block/BlockType.java
|
||||||
|
+++ b/src/main/java/org/bukkit/block/BlockType.java
|
||||||
|
@@ -2525,6 +_,16 @@
|
||||||
|
BlockType.Typed<WallSkull> ZOMBIE_WALL_HEAD = getBlockType("zombie_wall_head");
|
||||||
|
// End generate - BlockType
|
||||||
|
//</editor-fold>
|
||||||
|
+
|
||||||
|
+ // SparklyPaper start - SparklyPower Survival custom blocks
|
||||||
|
+ BlockType.Typed<BlockData> SPARKLYPOWER_RAINBOW_WOOL = getBlockType("sparklypower_rainbow_wool");
|
||||||
|
+ BlockType.Typed<BlockData> SPARKLYPOWER_RAINBOW_CONCRETE = getBlockType("sparklypower_rainbow_concrete");
|
||||||
|
+ BlockType.Typed<BlockData> SPARKLYPOWER_RAINBOW_TERRACOTTA = getBlockType("sparklypower_rainbow_terracotta");
|
||||||
|
+ BlockType.Typed<BlockData> SPARKLYPOWER_ASPHALT_SERVER = getBlockType("sparklypower_asphalt_server");
|
||||||
|
+ BlockType.Typed<Slab> SPARKLYPOWER_ASPHALT_SERVER_SLAB = getBlockType("sparklypower_asphalt_server_slab");
|
||||||
|
+ BlockType.Typed<BlockData> SPARKLYPOWER_ASPHALT_PLAYER = getBlockType("sparklypower_asphalt_player");
|
||||||
|
+ BlockType.Typed<Slab> SPARKLYPOWER_ASPHALT_PLAYER_SLAB = getBlockType("sparklypower_asphalt_player_slab");
|
||||||
|
+ // SparklyPaper end
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
private static <B extends BlockType> B getBlockType(@KeyPattern.Value final String key) {
|
||||||
@@ -9,7 +9,7 @@
|
|||||||
`maven-publish`
|
`maven-publish`
|
||||||
idea
|
idea
|
||||||
id("io.papermc.paperweight.core")
|
id("io.papermc.paperweight.core")
|
||||||
@@ -20,6 +_,16 @@
|
@@ -19,6 +_,16 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
paperweight {
|
paperweight {
|
||||||
@@ -61,7 +61,7 @@
|
|||||||
implementation("ca.spottedleaf:concurrentutil:0.0.7")
|
implementation("ca.spottedleaf:concurrentutil:0.0.7")
|
||||||
implementation("org.jline:jline-terminal-ffm:3.27.1") // use ffm on java 22+
|
implementation("org.jline:jline-terminal-ffm:3.27.1") // use ffm on java 22+
|
||||||
implementation("org.jline:jline-terminal-jni:3.27.1") // fall back to jni on java 21
|
implementation("org.jline:jline-terminal-jni:3.27.1") // fall back to jni on java 21
|
||||||
@@ -192,9 +_,14 @@
|
@@ -193,9 +_,14 @@
|
||||||
val build = System.getenv("BUILD_NUMBER") ?: null
|
val build = System.getenv("BUILD_NUMBER") ?: null
|
||||||
val buildTime = providers.environmentVariable("BUILD_STARTED_AT").map(Instant::parse).orElse(Instant.EPOCH).get()
|
val buildTime = providers.environmentVariable("BUILD_STARTED_AT").map(Instant::parse).orElse(Instant.EPOCH).get()
|
||||||
val gitHash = git.exec(providers, "rev-parse", "--short=7", "HEAD").get().trim()
|
val gitHash = git.exec(providers, "rev-parse", "--short=7", "HEAD").get().trim()
|
||||||
@@ -77,7 +77,7 @@
|
|||||||
attributes(
|
attributes(
|
||||||
"Main-Class" to "org.bukkit.craftbukkit.Main",
|
"Main-Class" to "org.bukkit.craftbukkit.Main",
|
||||||
"Implementation-Title" to "Paper",
|
"Implementation-Title" to "Paper",
|
||||||
@@ -203,8 +_,8 @@
|
@@ -204,8 +_,8 @@
|
||||||
"Specification-Title" to "Paper",
|
"Specification-Title" to "Paper",
|
||||||
"Specification-Version" to project.version,
|
"Specification-Version" to project.version,
|
||||||
"Specification-Vendor" to "Paper Team",
|
"Specification-Vendor" to "Paper Team",
|
||||||
@@ -88,7 +88,7 @@
|
|||||||
"Build-Number" to (build ?: ""),
|
"Build-Number" to (build ?: ""),
|
||||||
"Build-Time" to buildTime.toString(),
|
"Build-Time" to buildTime.toString(),
|
||||||
"Git-Branch" to gitBranch,
|
"Git-Branch" to gitBranch,
|
||||||
@@ -263,7 +_,7 @@
|
@@ -264,7 +_,7 @@
|
||||||
jvmArgumentProviders.add(provider)
|
jvmArgumentProviders.add(provider)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -42,10 +42,10 @@ index 467065e3b40df17f38716499259b46663c174fd0..dcbcdbb641ecc5f724aff634e4685ff4
|
|||||||
|
|
||||||
if (this.ticketLevelPropagator.hasPendingUpdates()) {
|
if (this.ticketLevelPropagator.hasPendingUpdates()) {
|
||||||
diff --git a/net/minecraft/core/dispenser/DispenseItemBehavior.java b/net/minecraft/core/dispenser/DispenseItemBehavior.java
|
diff --git a/net/minecraft/core/dispenser/DispenseItemBehavior.java b/net/minecraft/core/dispenser/DispenseItemBehavior.java
|
||||||
index ef72c5d1b6196582cadb87944f3416881f56c8df..771643f41ff31fe0fc7822a16f7386ef61de2eeb 100644
|
index bfefb5031544caa59230f0073e8880c2b39ebf4d..afa3943571d00ecff6f34aa4909385d8b14c97c9 100644
|
||||||
--- a/net/minecraft/core/dispenser/DispenseItemBehavior.java
|
--- a/net/minecraft/core/dispenser/DispenseItemBehavior.java
|
||||||
+++ b/net/minecraft/core/dispenser/DispenseItemBehavior.java
|
+++ b/net/minecraft/core/dispenser/DispenseItemBehavior.java
|
||||||
@@ -412,8 +412,8 @@ public interface DispenseItemBehavior {
|
@@ -416,8 +416,8 @@ public interface DispenseItemBehavior {
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
level.captureTreeGeneration = false;
|
level.captureTreeGeneration = false;
|
||||||
if (!level.capturedBlockStates.isEmpty()) {
|
if (!level.capturedBlockStates.isEmpty()) {
|
||||||
@@ -57,10 +57,10 @@ index ef72c5d1b6196582cadb87944f3416881f56c8df..771643f41ff31fe0fc7822a16f7386ef
|
|||||||
List<org.bukkit.block.BlockState> states = new java.util.ArrayList<>(level.capturedBlockStates.values());
|
List<org.bukkit.block.BlockState> states = new java.util.ArrayList<>(level.capturedBlockStates.values());
|
||||||
level.capturedBlockStates.clear();
|
level.capturedBlockStates.clear();
|
||||||
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
|
||||||
index fa8cbf83a5c7aa1f93251e3e809095a78842498b..47ed5577c6619238cbc492e949f5febc0fe98a9a 100644
|
index bdeae9d9e724b1dd580fa0270701b75e874595c7..e2f1be274e7b5a8875b350c9bec22298d4719348 100644
|
||||||
--- a/net/minecraft/server/MinecraftServer.java
|
--- a/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/net/minecraft/server/MinecraftServer.java
|
+++ b/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -376,6 +376,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -381,6 +381,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
// Paper end - improve tick loop
|
// Paper end - improve tick loop
|
||||||
@@ -68,7 +68,7 @@ index fa8cbf83a5c7aa1f93251e3e809095a78842498b..47ed5577c6619238cbc492e949f5febc
|
|||||||
|
|
||||||
public static <S extends MinecraftServer> S spin(Function<Thread, S> threadFunction) {
|
public static <S extends MinecraftServer> S spin(Function<Thread, S> threadFunction) {
|
||||||
ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system
|
ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system
|
||||||
@@ -1792,6 +1793,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1801,6 +1802,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
}
|
}
|
||||||
|
|
||||||
this.isIteratingOverLevels = true; // Paper - Throw exception on world create while being ticked
|
this.isIteratingOverLevels = true; // Paper - Throw exception on world create while being ticked
|
||||||
@@ -78,7 +78,7 @@ index fa8cbf83a5c7aa1f93251e3e809095a78842498b..47ed5577c6619238cbc492e949f5febc
|
|||||||
for (ServerLevel serverLevel : this.getAllLevels()) {
|
for (ServerLevel serverLevel : this.getAllLevels()) {
|
||||||
serverLevel.hasPhysicsEvent = org.bukkit.event.block.BlockPhysicsEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper - BlockPhysicsEvent
|
serverLevel.hasPhysicsEvent = org.bukkit.event.block.BlockPhysicsEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper - BlockPhysicsEvent
|
||||||
serverLevel.hasEntityMoveEvent = io.papermc.paper.event.entity.EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper - Add EntityMoveEvent
|
serverLevel.hasEntityMoveEvent = io.papermc.paper.event.entity.EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper - Add EntityMoveEvent
|
||||||
@@ -1808,26 +1812,45 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1817,26 +1821,45 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
|
|
||||||
profilerFiller.push("tick");
|
profilerFiller.push("tick");
|
||||||
|
|
||||||
@@ -139,7 +139,7 @@ index fa8cbf83a5c7aa1f93251e3e809095a78842498b..47ed5577c6619238cbc492e949f5febc
|
|||||||
this.isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked
|
this.isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked
|
||||||
|
|
||||||
profilerFiller.popPush("connection");
|
profilerFiller.popPush("connection");
|
||||||
@@ -1930,6 +1953,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1934,6 +1957,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
Map<ResourceKey<Level>, ServerLevel> oldLevels = this.levels;
|
Map<ResourceKey<Level>, ServerLevel> oldLevels = this.levels;
|
||||||
Map<ResourceKey<Level>, ServerLevel> newLevels = Maps.newLinkedHashMap(oldLevels);
|
Map<ResourceKey<Level>, ServerLevel> newLevels = Maps.newLinkedHashMap(oldLevels);
|
||||||
newLevels.remove(level.dimension());
|
newLevels.remove(level.dimension());
|
||||||
@@ -148,10 +148,10 @@ index fa8cbf83a5c7aa1f93251e3e809095a78842498b..47ed5577c6619238cbc492e949f5febc
|
|||||||
}
|
}
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
|
diff --git a/net/minecraft/server/dedicated/DedicatedServer.java b/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
index 8c672875e4598b3be69fa134ca4e7445d3ff6eee..45e7d31cb238fbb4f7f4351228b3828937e03ae5 100644
|
index 23db8ff6bc424ff6e76f28e1e4040c9f71f98b08..826c652a5fb2f2db9214d79d809e6f39b4d70efe 100644
|
||||||
--- a/net/minecraft/server/dedicated/DedicatedServer.java
|
--- a/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
|
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
@@ -269,6 +269,10 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
@@ -266,6 +266,10 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
||||||
}
|
}
|
||||||
net.sparklypower.sparklypaper.SparklyPaperCommands.INSTANCE.registerCommands(this);
|
net.sparklypower.sparklypaper.SparklyPaperCommands.INSTANCE.registerCommands(this);
|
||||||
// SparklyPaper end
|
// SparklyPaper end
|
||||||
@@ -163,10 +163,10 @@ index 8c672875e4598b3be69fa134ca4e7445d3ff6eee..45e7d31cb238fbb4f7f4351228b38289
|
|||||||
this.paperConfigurations.initializeGlobalConfiguration(this.registryAccess());
|
this.paperConfigurations.initializeGlobalConfiguration(this.registryAccess());
|
||||||
this.paperConfigurations.initializeWorldDefaultsConfiguration(this.registryAccess());
|
this.paperConfigurations.initializeWorldDefaultsConfiguration(this.registryAccess());
|
||||||
diff --git a/net/minecraft/server/level/ServerChunkCache.java b/net/minecraft/server/level/ServerChunkCache.java
|
diff --git a/net/minecraft/server/level/ServerChunkCache.java b/net/minecraft/server/level/ServerChunkCache.java
|
||||||
index 488fc6088d69148f60a913b42ffb964c48eb0324..13bb06468086f5e7871da739f7561dc067a26211 100644
|
index af67b07722bb0125acd081dab767d7e7b360623b..0fe56555cac2721a1da7e2c4fe33223c99a3d79e 100644
|
||||||
--- a/net/minecraft/server/level/ServerChunkCache.java
|
--- a/net/minecraft/server/level/ServerChunkCache.java
|
||||||
+++ b/net/minecraft/server/level/ServerChunkCache.java
|
+++ b/net/minecraft/server/level/ServerChunkCache.java
|
||||||
@@ -178,7 +178,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
@@ -176,7 +176,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
||||||
|
|
||||||
// call mid-tick tasks for chunk system
|
// call mid-tick tasks for chunk system
|
||||||
if ((i & 7) == 0) {
|
if ((i & 7) == 0) {
|
||||||
@@ -176,19 +176,19 @@ index 488fc6088d69148f60a913b42ffb964c48eb0324..13bb06468086f5e7871da739f7561dc0
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
|
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
|
||||||
index 1f344b440aaa3543dbecb6068af87d5cb5625950..45fb110beffdaab0576431119901b586f9034bf5 100644
|
index d5165134b7471993bde6ed56a7274e73c22eb179..0be0f0ea6e1a461c50bdabe80f1f9c3c78a074dc 100644
|
||||||
--- a/net/minecraft/server/level/ServerLevel.java
|
--- a/net/minecraft/server/level/ServerLevel.java
|
||||||
+++ b/net/minecraft/server/level/ServerLevel.java
|
+++ b/net/minecraft/server/level/ServerLevel.java
|
||||||
@@ -188,7 +188,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -194,7 +194,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
public final ServerChunkCache chunkSource;
|
public final ServerChunkCache chunkSource;
|
||||||
private final MinecraftServer server;
|
private final MinecraftServer server;
|
||||||
public final net.minecraft.world.level.storage.PrimaryLevelData serverLevelData; // CraftBukkit - type
|
public final net.minecraft.world.level.storage.PrimaryLevelData serverLevelData; // CraftBukkit - type
|
||||||
- final EntityTickList entityTickList = new EntityTickList();
|
- final EntityTickList entityTickList = new EntityTickList();
|
||||||
+ final EntityTickList entityTickList = new EntityTickList(this); // SparklyPaper - parallel world ticking
|
+ final EntityTickList entityTickList = new EntityTickList(this); // SparklyPaper - parallel world ticking
|
||||||
private final ServerWaypointManager waypointManager;
|
private final ServerWaypointManager waypointManager;
|
||||||
|
private final EnvironmentAttributeSystem environmentAttributes;
|
||||||
// Paper - rewrite chunk system
|
// Paper - rewrite chunk system
|
||||||
private final GameEventDispatcher gameEventDispatcher;
|
@@ -220,6 +220,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
@@ -214,6 +214,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
|
||||||
private final boolean tickTime;
|
private final boolean tickTime;
|
||||||
private final RandomSequences randomSequences;
|
private final RandomSequences randomSequences;
|
||||||
final LevelDebugSynchronizers debugSynchronizers = new LevelDebugSynchronizers(this);
|
final LevelDebugSynchronizers debugSynchronizers = new LevelDebugSynchronizers(this);
|
||||||
@@ -196,16 +196,16 @@ index 1f344b440aaa3543dbecb6068af87d5cb5625950..45fb110beffdaab0576431119901b586
|
|||||||
|
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
public final LevelStorageSource.LevelStorageAccess levelStorageAccess;
|
public final LevelStorageSource.LevelStorageAccess levelStorageAccess;
|
||||||
@@ -689,7 +690,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -697,7 +698,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
this.sleepStatus = new SleepStatus();
|
this.sleepStatus = new SleepStatus();
|
||||||
this.gameEventDispatcher = new GameEventDispatcher(this);
|
this.gameEventDispatcher = new GameEventDispatcher(this);
|
||||||
this.randomSequences = Objects.requireNonNullElseGet(randomSequences, () -> this.getDataStorage().computeIfAbsent(RandomSequences.TYPE));
|
this.randomSequences = Objects.requireNonNullElseGet(randomSequences, () -> this.getDataStorage().computeIfAbsent(RandomSequences.TYPE));
|
||||||
- this.waypointManager = new ServerWaypointManager();
|
- this.waypointManager = new ServerWaypointManager();
|
||||||
+ this.waypointManager = new ServerWaypointManager(this); // SparklyPaper - parallel world ticking
|
+ this.waypointManager = new ServerWaypointManager(this); // SparklyPaper - parallel world ticking
|
||||||
|
this.environmentAttributes = EnvironmentAttributeSystem.builder().addDefaultLayers(this).build();
|
||||||
|
this.updateSkyBrightness();
|
||||||
// Paper start - rewrite chunk system
|
// Paper start - rewrite chunk system
|
||||||
this.moonrise$setEntityLookup(new ca.spottedleaf.moonrise.patches.chunk_system.level.entity.server.ServerEntityLookup((ServerLevel)(Object)this, ((ServerLevel)(Object)this).new EntityCallbacks()));
|
@@ -715,6 +716,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
this.chunkTaskScheduler = new ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkTaskScheduler((ServerLevel)(Object)this);
|
|
||||||
@@ -705,6 +706,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
|
||||||
this.chunkDataController = new ca.spottedleaf.moonrise.patches.chunk_system.io.datacontroller.ChunkDataController((ServerLevel)(Object)this, this.chunkTaskScheduler);
|
this.chunkDataController = new ca.spottedleaf.moonrise.patches.chunk_system.io.datacontroller.ChunkDataController((ServerLevel)(Object)this, this.chunkTaskScheduler);
|
||||||
// Paper end - rewrite chunk system
|
// Paper end - rewrite chunk system
|
||||||
this.getCraftServer().addWorld(this.getWorld()); // CraftBukkit
|
this.getCraftServer().addWorld(this.getWorld()); // CraftBukkit
|
||||||
@@ -213,7 +213,7 @@ index 1f344b440aaa3543dbecb6068af87d5cb5625950..45fb110beffdaab0576431119901b586
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Paper start
|
// Paper start
|
||||||
@@ -1272,7 +1274,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -1310,7 +1312,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
}
|
}
|
||||||
// Paper start - rewrite chunk system
|
// Paper start - rewrite chunk system
|
||||||
if ((++this.tickedBlocksOrFluids & 7L) != 0L) {
|
if ((++this.tickedBlocksOrFluids & 7L) != 0L) {
|
||||||
@@ -222,7 +222,7 @@ index 1f344b440aaa3543dbecb6068af87d5cb5625950..45fb110beffdaab0576431119901b586
|
|||||||
}
|
}
|
||||||
// Paper end - rewrite chunk system
|
// Paper end - rewrite chunk system
|
||||||
|
|
||||||
@@ -1285,7 +1287,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -1323,7 +1325,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
}
|
}
|
||||||
// Paper start - rewrite chunk system
|
// Paper start - rewrite chunk system
|
||||||
if ((++this.tickedBlocksOrFluids & 7L) != 0L) {
|
if ((++this.tickedBlocksOrFluids & 7L) != 0L) {
|
||||||
@@ -231,7 +231,7 @@ index 1f344b440aaa3543dbecb6068af87d5cb5625950..45fb110beffdaab0576431119901b586
|
|||||||
}
|
}
|
||||||
// Paper end - rewrite chunk system
|
// Paper end - rewrite chunk system
|
||||||
|
|
||||||
@@ -1556,6 +1558,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -1593,6 +1595,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addPlayer(ServerPlayer player) {
|
private void addPlayer(ServerPlayer player) {
|
||||||
@@ -239,20 +239,20 @@ index 1f344b440aaa3543dbecb6068af87d5cb5625950..45fb110beffdaab0576431119901b586
|
|||||||
Entity entity = this.getEntity(player.getUUID());
|
Entity entity = this.getEntity(player.getUUID());
|
||||||
if (entity != null) {
|
if (entity != null) {
|
||||||
LOGGER.warn("Force-added player with duplicate UUID {}", player.getUUID());
|
LOGGER.warn("Force-added player with duplicate UUID {}", player.getUUID());
|
||||||
@@ -1568,7 +1571,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
@@ -1605,7 +1608,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
|
||||||
|
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
private boolean addEntity(Entity entity, @Nullable org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason spawnReason) {
|
private boolean addEntity(Entity entity, org.bukkit.event.entity.CreatureSpawnEvent.@Nullable SpawnReason spawnReason) {
|
||||||
- org.spigotmc.AsyncCatcher.catchOp("entity add"); // Spigot
|
- org.spigotmc.AsyncCatcher.catchOp("entity add"); // Spigot
|
||||||
+ ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThread(this, "Cannot add entity off-main"); // SparklyPaper - parallel world ticking (additional concurrency issues logs)
|
+ ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThread(this, "Cannot add entity off-main"); // SparklyPaper - parallel world ticking (additional concurrency issues logs)
|
||||||
entity.generation = false; // Paper - Don't fire sync event during generation; Reset flag if it was added during a ServerLevel generation process
|
entity.generation = false; // Paper - Don't fire sync event during generation; Reset flag if it was added during a ServerLevel generation process
|
||||||
// Paper start - extra debug info
|
// Paper start - extra debug info
|
||||||
if (entity.valid) {
|
if (entity.valid) {
|
||||||
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
|
diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java
|
||||||
index b4a996ac6c570e988b38237a32f90ec5042cbc17..ca161ad7fc7e33cb5b734961e8ca559a9241c932 100644
|
index c855c48ede60eb744cc65e1b560b9a7a3417d8aa..b4ca210b253854e5f6e5e826ca24f516b60b9440 100644
|
||||||
--- a/net/minecraft/server/level/ServerPlayer.java
|
--- a/net/minecraft/server/level/ServerPlayer.java
|
||||||
+++ b/net/minecraft/server/level/ServerPlayer.java
|
+++ b/net/minecraft/server/level/ServerPlayer.java
|
||||||
@@ -473,6 +473,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
|
@@ -463,6 +463,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
|
||||||
return this.viewDistanceHolder;
|
return this.viewDistanceHolder;
|
||||||
}
|
}
|
||||||
// Paper end - rewrite chunk system
|
// Paper end - rewrite chunk system
|
||||||
@@ -260,7 +260,7 @@ index b4a996ac6c570e988b38237a32f90ec5042cbc17..ca161ad7fc7e33cb5b734961e8ca559a
|
|||||||
|
|
||||||
public ServerPlayer(MinecraftServer server, ServerLevel level, GameProfile gameProfile, ClientInformation clientInformation) {
|
public ServerPlayer(MinecraftServer server, ServerLevel level, GameProfile gameProfile, ClientInformation clientInformation) {
|
||||||
super(level, gameProfile);
|
super(level, gameProfile);
|
||||||
@@ -717,6 +718,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
|
@@ -714,6 +715,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void tick() {
|
public void tick() {
|
||||||
@@ -268,7 +268,7 @@ index b4a996ac6c570e988b38237a32f90ec5042cbc17..ca161ad7fc7e33cb5b734961e8ca559a
|
|||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
if (this.joining) {
|
if (this.joining) {
|
||||||
this.joining = false;
|
this.joining = false;
|
||||||
@@ -1529,6 +1531,8 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
|
@@ -1527,6 +1529,8 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
|
||||||
teleportTransition.postTeleportTransition().onTransition(this);
|
teleportTransition.postTeleportTransition().onTransition(this);
|
||||||
return this;
|
return this;
|
||||||
} else {
|
} else {
|
||||||
@@ -277,7 +277,7 @@ index b4a996ac6c570e988b38237a32f90ec5042cbc17..ca161ad7fc7e33cb5b734961e8ca559a
|
|||||||
this.isChangingDimension = true;
|
this.isChangingDimension = true;
|
||||||
LevelData levelData = level.getLevelData();
|
LevelData levelData = level.getLevelData();
|
||||||
this.connection.send(new ClientboundRespawnPacket(this.createCommonSpawnInfo(level), ClientboundRespawnPacket.KEEP_ALL_DATA));
|
this.connection.send(new ClientboundRespawnPacket(this.createCommonSpawnInfo(level), ClientboundRespawnPacket.KEEP_ALL_DATA));
|
||||||
@@ -1836,6 +1840,12 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
|
@@ -1844,6 +1848,12 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
|
||||||
return OptionalInt.empty();
|
return OptionalInt.empty();
|
||||||
} else {
|
} else {
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
@@ -290,7 +290,7 @@ index b4a996ac6c570e988b38237a32f90ec5042cbc17..ca161ad7fc7e33cb5b734961e8ca559a
|
|||||||
this.containerMenu = abstractContainerMenu; // Moved up
|
this.containerMenu = abstractContainerMenu; // Moved up
|
||||||
if (!this.isImmobile())
|
if (!this.isImmobile())
|
||||||
this.connection
|
this.connection
|
||||||
@@ -1900,6 +1910,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
|
@@ -1932,6 +1942,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public void closeContainer(org.bukkit.event.inventory.InventoryCloseEvent.Reason reason) {
|
public void closeContainer(org.bukkit.event.inventory.InventoryCloseEvent.Reason reason) {
|
||||||
@@ -303,11 +303,11 @@ index b4a996ac6c570e988b38237a32f90ec5042cbc17..ca161ad7fc7e33cb5b734961e8ca559a
|
|||||||
// Paper end - Inventory close reason
|
// Paper end - Inventory close reason
|
||||||
this.connection.send(new ClientboundContainerClosePacket(this.containerMenu.containerId));
|
this.connection.send(new ClientboundContainerClosePacket(this.containerMenu.containerId));
|
||||||
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
|
diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java
|
||||||
index cc5d1e8007e2ea32605bd68d0a73683e8fb6886e..5a9e1eb49f17783ac71c8a555d6688b9dbbe4f9e 100644
|
index 9f86d1fc4ea4c6987fa207644573565aea7edead..35547afb7dd31c990f8e573be9d55016775b6b31 100644
|
||||||
--- a/net/minecraft/server/players/PlayerList.java
|
--- a/net/minecraft/server/players/PlayerList.java
|
||||||
+++ b/net/minecraft/server/players/PlayerList.java
|
+++ b/net/minecraft/server/players/PlayerList.java
|
||||||
@@ -111,7 +111,7 @@ public abstract class PlayerList {
|
@@ -115,7 +115,7 @@ public abstract class PlayerList {
|
||||||
private static final SimpleDateFormat BAN_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z");
|
private static final SimpleDateFormat BAN_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z", Locale.ROOT);
|
||||||
private final MinecraftServer server;
|
private final MinecraftServer server;
|
||||||
public final List<ServerPlayer> players = new java.util.concurrent.CopyOnWriteArrayList(); // CraftBukkit - ArrayList -> CopyOnWriteArrayList: Iterator safety
|
public final List<ServerPlayer> players = new java.util.concurrent.CopyOnWriteArrayList(); // CraftBukkit - ArrayList -> CopyOnWriteArrayList: Iterator safety
|
||||||
- private final Map<UUID, ServerPlayer> playersByUUID = Maps.newHashMap();
|
- private final Map<UUID, ServerPlayer> playersByUUID = Maps.newHashMap();
|
||||||
@@ -315,7 +315,7 @@ index cc5d1e8007e2ea32605bd68d0a73683e8fb6886e..5a9e1eb49f17783ac71c8a555d6688b9
|
|||||||
private final UserBanList bans;
|
private final UserBanList bans;
|
||||||
private final IpBanList ipBans;
|
private final IpBanList ipBans;
|
||||||
private final ServerOpList ops;
|
private final ServerOpList ops;
|
||||||
@@ -129,7 +129,7 @@ public abstract class PlayerList {
|
@@ -133,7 +133,7 @@ public abstract class PlayerList {
|
||||||
|
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
private org.bukkit.craftbukkit.CraftServer cserver;
|
private org.bukkit.craftbukkit.CraftServer cserver;
|
||||||
@@ -324,7 +324,7 @@ index cc5d1e8007e2ea32605bd68d0a73683e8fb6886e..5a9e1eb49f17783ac71c8a555d6688b9
|
|||||||
public @Nullable String collideRuleTeamName; // Paper - Configurable player collision
|
public @Nullable String collideRuleTeamName; // Paper - Configurable player collision
|
||||||
|
|
||||||
public PlayerList(
|
public PlayerList(
|
||||||
@@ -150,6 +150,7 @@ public abstract class PlayerList {
|
@@ -154,6 +154,7 @@ public abstract class PlayerList {
|
||||||
abstract public void loadAndSaveFiles(); // Paper - fix converting txt to json file; moved from DedicatedPlayerList constructor
|
abstract public void loadAndSaveFiles(); // Paper - fix converting txt to json file; moved from DedicatedPlayerList constructor
|
||||||
|
|
||||||
public void placeNewPlayer(Connection connection, ServerPlayer player, CommonListenerCookie cookie) {
|
public void placeNewPlayer(Connection connection, ServerPlayer player, CommonListenerCookie cookie) {
|
||||||
@@ -332,7 +332,7 @@ index cc5d1e8007e2ea32605bd68d0a73683e8fb6886e..5a9e1eb49f17783ac71c8a555d6688b9
|
|||||||
player.isRealPlayer = true; // Paper
|
player.isRealPlayer = true; // Paper
|
||||||
player.loginTime = System.currentTimeMillis(); // Paper - Replace OfflinePlayer#getLastPlayed
|
player.loginTime = System.currentTimeMillis(); // Paper - Replace OfflinePlayer#getLastPlayed
|
||||||
NameAndId nameAndId = player.nameAndId();
|
NameAndId nameAndId = player.nameAndId();
|
||||||
@@ -588,6 +589,7 @@ public abstract class PlayerList {
|
@@ -594,6 +595,7 @@ public abstract class PlayerList {
|
||||||
|
|
||||||
// Paper start - respawn event
|
// Paper start - respawn event
|
||||||
public ServerPlayer respawn(ServerPlayer player, boolean keepInventory, Entity.RemovalReason reason, org.bukkit.event.player.PlayerRespawnEvent.RespawnReason respawnReason) {
|
public ServerPlayer respawn(ServerPlayer player, boolean keepInventory, Entity.RemovalReason reason, org.bukkit.event.player.PlayerRespawnEvent.RespawnReason respawnReason) {
|
||||||
@@ -340,7 +340,7 @@ index cc5d1e8007e2ea32605bd68d0a73683e8fb6886e..5a9e1eb49f17783ac71c8a555d6688b9
|
|||||||
ServerPlayer.RespawnResult result = player.findRespawnPositionAndUseSpawnBlock0(!keepInventory, TeleportTransition.DO_NOTHING, respawnReason);
|
ServerPlayer.RespawnResult result = player.findRespawnPositionAndUseSpawnBlock0(!keepInventory, TeleportTransition.DO_NOTHING, respawnReason);
|
||||||
if (result == null) { // disconnected player during the respawn event
|
if (result == null) { // disconnected player during the respawn event
|
||||||
return player;
|
return player;
|
||||||
@@ -600,6 +602,7 @@ public abstract class PlayerList {
|
@@ -606,6 +608,7 @@ public abstract class PlayerList {
|
||||||
player.level().removePlayerImmediately(player, reason);
|
player.level().removePlayerImmediately(player, reason);
|
||||||
ServerLevel level = teleportTransition.newLevel();
|
ServerLevel level = teleportTransition.newLevel();
|
||||||
ServerPlayer serverPlayer = player; // Paper - TODO - recreate instance
|
ServerPlayer serverPlayer = player; // Paper - TODO - recreate instance
|
||||||
@@ -349,7 +349,7 @@ index cc5d1e8007e2ea32605bd68d0a73683e8fb6886e..5a9e1eb49f17783ac71c8a555d6688b9
|
|||||||
serverPlayer.restoreFrom(player, keepInventory);
|
serverPlayer.restoreFrom(player, keepInventory);
|
||||||
serverPlayer.setId(player.getId());
|
serverPlayer.setId(player.getId());
|
||||||
diff --git a/net/minecraft/server/waypoints/ServerWaypointManager.java b/net/minecraft/server/waypoints/ServerWaypointManager.java
|
diff --git a/net/minecraft/server/waypoints/ServerWaypointManager.java b/net/minecraft/server/waypoints/ServerWaypointManager.java
|
||||||
index f9e7532f86122a379692561a639a209a126e8bba..2709dfae53c1a210f36c45fa0df0d49536341a38 100644
|
index 471e558a609c9e457720660b90fe57322b860461..0c8d2de1702824cd44e1e40bac94325b915f8a9a 100644
|
||||||
--- a/net/minecraft/server/waypoints/ServerWaypointManager.java
|
--- a/net/minecraft/server/waypoints/ServerWaypointManager.java
|
||||||
+++ b/net/minecraft/server/waypoints/ServerWaypointManager.java
|
+++ b/net/minecraft/server/waypoints/ServerWaypointManager.java
|
||||||
@@ -20,8 +20,16 @@ public class ServerWaypointManager implements WaypointManager<WaypointTransmitte
|
@@ -20,8 +20,16 @@ public class ServerWaypointManager implements WaypointManager<WaypointTransmitte
|
||||||
@@ -433,10 +433,10 @@ index f9e7532f86122a379692561a639a209a126e8bba..2709dfae53c1a210f36c45fa0df0d495
|
|||||||
if (isLocatorBarEnabledFor(player)) {
|
if (isLocatorBarEnabledFor(player)) {
|
||||||
if (!connection.isBroken()) {
|
if (!connection.isBroken()) {
|
||||||
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
|
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
|
||||||
index 2e3e038874757049445a91bf590d5a1a427a3f6d..e719e41f292be412fa05f23912ec2caca9165473 100644
|
index ad4322950726f86e250927f097a4214ed25ddce0..fabb5e91f05e96a6fc55d9b338f7156ae038af73 100644
|
||||||
--- a/net/minecraft/world/entity/Entity.java
|
--- a/net/minecraft/world/entity/Entity.java
|
||||||
+++ b/net/minecraft/world/entity/Entity.java
|
+++ b/net/minecraft/world/entity/Entity.java
|
||||||
@@ -839,7 +839,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name
|
@@ -844,7 +844,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
public void postTick() {
|
public void postTick() {
|
||||||
// No clean way to break out of ticking once the entity has been copied to a new world, so instead we move the portalling later in the tick cycle
|
// No clean way to break out of ticking once the entity has been copied to a new world, so instead we move the portalling later in the tick cycle
|
||||||
@@ -445,19 +445,19 @@ index 2e3e038874757049445a91bf590d5a1a427a3f6d..e719e41f292be412fa05f23912ec2cac
|
|||||||
this.handlePortal();
|
this.handlePortal();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4061,6 +4061,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name
|
@@ -4081,6 +4081,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name
|
||||||
|
}
|
||||||
|
|
||||||
@Nullable
|
private @Nullable Entity teleportCrossDimension(ServerLevel oldLevel, ServerLevel newLevel, TeleportTransition teleportTransition) {
|
||||||
private Entity teleportCrossDimension(ServerLevel oldLevel, ServerLevel newLevel, TeleportTransition teleportTransition) {
|
|
||||||
+ ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThread(oldLevel, "Cannot teleport entity to another world off-main, from world " + oldLevel.getWorld().getName() + " to world " + newLevel.getWorld().getName()); // SparklyPaper - parallel world ticking (additional concurrency issues logs)
|
+ ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThread(oldLevel, "Cannot teleport entity to another world off-main, from world " + oldLevel.getWorld().getName() + " to world " + newLevel.getWorld().getName()); // SparklyPaper - parallel world ticking (additional concurrency issues logs)
|
||||||
List<Entity> passengers = this.getPassengers();
|
List<Entity> passengers = this.getPassengers();
|
||||||
List<Entity> list = new ArrayList<>(passengers.size());
|
List<Entity> list = new ArrayList<>(passengers.size());
|
||||||
this.ejectPassengers();
|
this.ejectPassengers();
|
||||||
diff --git a/net/minecraft/world/inventory/AbstractContainerMenu.java b/net/minecraft/world/inventory/AbstractContainerMenu.java
|
diff --git a/net/minecraft/world/inventory/AbstractContainerMenu.java b/net/minecraft/world/inventory/AbstractContainerMenu.java
|
||||||
index 670090c4466d6472a83263e1769f19e3e491c927..63b09552d6e7408bc478cf452cd35c69c55f4768 100644
|
index c533045b6185930fbfe2b98530153453b6e769ee..dad4d6a7d5a66afae326edcd1ef45d561a3d16e1 100644
|
||||||
--- a/net/minecraft/world/inventory/AbstractContainerMenu.java
|
--- a/net/minecraft/world/inventory/AbstractContainerMenu.java
|
||||||
+++ b/net/minecraft/world/inventory/AbstractContainerMenu.java
|
+++ b/net/minecraft/world/inventory/AbstractContainerMenu.java
|
||||||
@@ -95,8 +95,14 @@ public abstract class AbstractContainerMenu {
|
@@ -92,8 +92,14 @@ public abstract class AbstractContainerMenu {
|
||||||
|
|
||||||
public void startOpen() {}
|
public void startOpen() {}
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
@@ -473,10 +473,10 @@ index 670090c4466d6472a83263e1769f19e3e491c927..63b09552d6e7408bc478cf452cd35c69
|
|||||||
this.containerId = containerId;
|
this.containerId = containerId;
|
||||||
}
|
}
|
||||||
diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java
|
diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java
|
||||||
index 47862c00e9e01c7cdd5fcd808cc1b76740b85a57..9810c2ba985102667cacf110193a336513967f88 100644
|
index b00ad17852e9890f848fc2124e2287885c2b9c5d..e60c4b185d77d544e4e39265f7888edc3b8b54ee 100644
|
||||||
--- a/net/minecraft/world/item/ItemStack.java
|
--- a/net/minecraft/world/item/ItemStack.java
|
||||||
+++ b/net/minecraft/world/item/ItemStack.java
|
+++ b/net/minecraft/world/item/ItemStack.java
|
||||||
@@ -399,8 +399,8 @@ public final class ItemStack implements DataComponentHolder {
|
@@ -404,8 +404,8 @@ public final class ItemStack implements DataComponentHolder {
|
||||||
if (interactionResult.consumesAction() && serverLevel.captureTreeGeneration && !serverLevel.capturedBlockStates.isEmpty()) {
|
if (interactionResult.consumesAction() && serverLevel.captureTreeGeneration && !serverLevel.capturedBlockStates.isEmpty()) {
|
||||||
serverLevel.captureTreeGeneration = false;
|
serverLevel.captureTreeGeneration = false;
|
||||||
org.bukkit.Location location = org.bukkit.craftbukkit.util.CraftLocation.toBukkit(clickedPos, serverLevel);
|
org.bukkit.Location location = org.bukkit.craftbukkit.util.CraftLocation.toBukkit(clickedPos, serverLevel);
|
||||||
@@ -488,7 +488,7 @@ index 47862c00e9e01c7cdd5fcd808cc1b76740b85a57..9810c2ba985102667cacf110193a3365
|
|||||||
serverLevel.capturedBlockStates.clear();
|
serverLevel.capturedBlockStates.clear();
|
||||||
org.bukkit.event.world.StructureGrowEvent structureEvent = null;
|
org.bukkit.event.world.StructureGrowEvent structureEvent = null;
|
||||||
diff --git a/net/minecraft/world/level/Level.java b/net/minecraft/world/level/Level.java
|
diff --git a/net/minecraft/world/level/Level.java b/net/minecraft/world/level/Level.java
|
||||||
index 08273e25eea77c40ef34a476870b6f4f22d9a7ad..e7a417c0a8e74dda592eb2d462b9e67cee8549db 100644
|
index 813539581fdd1c6bf6cf870c702cac9cfaad6585..ea0642bf99da799e1cc6814d8b6421eeb1443da5 100644
|
||||||
--- a/net/minecraft/world/level/Level.java
|
--- a/net/minecraft/world/level/Level.java
|
||||||
+++ b/net/minecraft/world/level/Level.java
|
+++ b/net/minecraft/world/level/Level.java
|
||||||
@@ -167,6 +167,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
|
@@ -167,6 +167,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
|
||||||
@@ -499,15 +499,15 @@ index 08273e25eea77c40ef34a476870b6f4f22d9a7ad..e7a417c0a8e74dda592eb2d462b9e67c
|
|||||||
public static @Nullable BlockPos lastPhysicsProblem; // Spigot
|
public static @Nullable BlockPos lastPhysicsProblem; // Spigot
|
||||||
private int tileTickPosition;
|
private int tileTickPosition;
|
||||||
public final Map<ServerExplosion.CacheKey, Float> explosionDensityCache = new java.util.HashMap<>(); // Paper - Optimize explosions
|
public final Map<ServerExplosion.CacheKey, Float> explosionDensityCache = new java.util.HashMap<>(); // Paper - Optimize explosions
|
||||||
@@ -1039,6 +1040,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
|
@@ -1046,6 +1047,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setBlock(BlockPos pos, BlockState state, int flags, int recursionLeft) {
|
public boolean setBlock(BlockPos pos, BlockState state, @Block.UpdateFlags int flags, int recursionLeft) {
|
||||||
+ ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThread((ServerLevel)this, pos, "Updating block asynchronously"); // SparklyPaper - parallel world ticking (additional concurrency issues logs)
|
+ ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThread((ServerLevel)this, pos, "Updating block asynchronously"); // SparklyPaper - parallel world ticking (additional concurrency issues logs)
|
||||||
// CraftBukkit start - tree generation
|
// CraftBukkit start - tree generation
|
||||||
if (this.captureTreeGeneration) {
|
if (this.captureTreeGeneration) {
|
||||||
// Paper start - Protect Bedrock and End Portal/Frames from being destroyed
|
// Paper start - Protect Bedrock and End Portal/Frames from being destroyed
|
||||||
@@ -1418,7 +1420,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
|
@@ -1413,7 +1415,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
|
||||||
tickingBlockEntity.tick();
|
tickingBlockEntity.tick();
|
||||||
// Paper start - rewrite chunk system
|
// Paper start - rewrite chunk system
|
||||||
if ((++tickedEntities & 7) == 0) {
|
if ((++tickedEntities & 7) == 0) {
|
||||||
@@ -516,7 +516,7 @@ index 08273e25eea77c40ef34a476870b6f4f22d9a7ad..e7a417c0a8e74dda592eb2d462b9e67c
|
|||||||
}
|
}
|
||||||
// Paper end - rewrite chunk system
|
// Paper end - rewrite chunk system
|
||||||
}
|
}
|
||||||
@@ -1440,7 +1442,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
|
@@ -1435,7 +1437,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
|
||||||
entity.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.DISCARD);
|
entity.discard(org.bukkit.event.entity.EntityRemoveEvent.Cause.DISCARD);
|
||||||
// Paper end - Prevent block entity and entity crashes
|
// Paper end - Prevent block entity and entity crashes
|
||||||
}
|
}
|
||||||
@@ -525,23 +525,23 @@ index 08273e25eea77c40ef34a476870b6f4f22d9a7ad..e7a417c0a8e74dda592eb2d462b9e67c
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Paper start - Option to prevent armor stands from doing entity lookups
|
// Paper start - Option to prevent armor stands from doing entity lookups
|
||||||
@@ -1582,6 +1584,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
|
@@ -1576,6 +1578,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
|
||||||
@Nullable
|
|
||||||
@Override
|
@Override
|
||||||
public BlockEntity getBlockEntity(BlockPos pos) {
|
public @Nullable BlockEntity getBlockEntity(BlockPos pos) {
|
||||||
+ ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThreadOrAsyncThread((ServerLevel) this, "Cannot read world asynchronously"); // SparklyPaper - parallel world ticking
|
+ ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThreadOrAsyncThread((ServerLevel) this, "Cannot read world asynchronously"); // SparklyPaper - parallel world ticking
|
||||||
// Paper start - Perf: Optimize capturedTileEntities lookup
|
// Paper start - Perf: Optimize capturedTileEntities lookup
|
||||||
net.minecraft.world.level.block.entity.BlockEntity blockEntity;
|
net.minecraft.world.level.block.entity.BlockEntity blockEntity;
|
||||||
if (!this.capturedTileEntities.isEmpty() && (blockEntity = this.capturedTileEntities.get(pos)) != null) {
|
if (!this.capturedTileEntities.isEmpty() && (blockEntity = this.capturedTileEntities.get(pos)) != null) {
|
||||||
@@ -1598,6 +1601,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
|
@@ -1592,6 +1595,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setBlockEntity(BlockEntity blockEntity) {
|
public void setBlockEntity(BlockEntity blockEntity) {
|
||||||
+ ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThread((ServerLevel) this, "Cannot modify world asynchronously"); // SparklyPaper - parallel world ticking
|
+ ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThread((ServerLevel) this, "Cannot modify world asynchronously"); // SparklyPaper - parallel world ticking
|
||||||
BlockPos blockPos = blockEntity.getBlockPos();
|
BlockPos blockPos = blockEntity.getBlockPos();
|
||||||
if (!this.isOutsideBuildHeight(blockPos)) {
|
if (this.isInValidBounds(blockPos)) {
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
@@ -1683,6 +1687,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
|
@@ -1673,6 +1677,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Entity> getEntities(@Nullable Entity entity, AABB boundingBox, Predicate<? super Entity> predicate) {
|
public List<Entity> getEntities(@Nullable Entity entity, AABB boundingBox, Predicate<? super Entity> predicate) {
|
||||||
@@ -549,7 +549,7 @@ index 08273e25eea77c40ef34a476870b6f4f22d9a7ad..e7a417c0a8e74dda592eb2d462b9e67c
|
|||||||
Profiler.get().incrementCounter("getEntities");
|
Profiler.get().incrementCounter("getEntities");
|
||||||
List<Entity> list = Lists.newArrayList();
|
List<Entity> list = Lists.newArrayList();
|
||||||
|
|
||||||
@@ -2036,8 +2041,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
|
@@ -2005,8 +2010,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
|
||||||
public abstract RecipeAccess recipeAccess();
|
public abstract RecipeAccess recipeAccess();
|
||||||
|
|
||||||
public BlockPos getBlockRandomPos(int x, int y, int z, int yMask) {
|
public BlockPos getBlockRandomPos(int x, int y, int z, int yMask) {
|
||||||
@@ -589,10 +589,10 @@ index 9176cf8c47b19d76eb49a7c00fc6723836344d4b..e6e43af7e13a6e8f8ac3b522dbdcc218
|
|||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
diff --git a/net/minecraft/world/level/block/RedStoneWireBlock.java b/net/minecraft/world/level/block/RedStoneWireBlock.java
|
diff --git a/net/minecraft/world/level/block/RedStoneWireBlock.java b/net/minecraft/world/level/block/RedStoneWireBlock.java
|
||||||
index a07d9237d227fe6d419d8a9bc44fc623b244ad3e..3a152d634de4c660080434153f6b70e5be727b15 100644
|
index 6d98bc37d88459d1e0a171b52bbff5810d775c38..98de05ef5f959034d2e84415c5af874f9e4dac0b 100644
|
||||||
--- a/net/minecraft/world/level/block/RedStoneWireBlock.java
|
--- a/net/minecraft/world/level/block/RedStoneWireBlock.java
|
||||||
+++ b/net/minecraft/world/level/block/RedStoneWireBlock.java
|
+++ b/net/minecraft/world/level/block/RedStoneWireBlock.java
|
||||||
@@ -267,7 +267,7 @@ public class RedStoneWireBlock extends Block {
|
@@ -266,7 +266,7 @@ public class RedStoneWireBlock extends Block {
|
||||||
|
|
||||||
// Paper start - Optimize redstone (Eigencraft)
|
// Paper start - Optimize redstone (Eigencraft)
|
||||||
// The bulk of the new functionality is found in RedstoneWireTurbo.java
|
// The bulk of the new functionality is found in RedstoneWireTurbo.java
|
||||||
@@ -601,7 +601,7 @@ index a07d9237d227fe6d419d8a9bc44fc623b244ad3e..3a152d634de4c660080434153f6b70e5
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Modified version of pre-existing updateSurroundingRedstone, which is called from
|
* Modified version of pre-existing updateSurroundingRedstone, which is called from
|
||||||
@@ -283,7 +283,7 @@ public class RedStoneWireBlock extends Block {
|
@@ -282,7 +282,7 @@ public class RedStoneWireBlock extends Block {
|
||||||
if (orientation != null) {
|
if (orientation != null) {
|
||||||
source = pos.relative(orientation.getFront().getOpposite());
|
source = pos.relative(orientation.getFront().getOpposite());
|
||||||
}
|
}
|
||||||
@@ -610,7 +610,7 @@ index a07d9237d227fe6d419d8a9bc44fc623b244ad3e..3a152d634de4c660080434153f6b70e5
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
updatePowerStrength(worldIn, pos, state, orientation, blockAdded);
|
updatePowerStrength(worldIn, pos, state, orientation, blockAdded);
|
||||||
@@ -311,7 +311,7 @@ public class RedStoneWireBlock extends Block {
|
@@ -310,7 +310,7 @@ public class RedStoneWireBlock extends Block {
|
||||||
// [Space Walker] suppress shape updates and emit those manually to
|
// [Space Walker] suppress shape updates and emit those manually to
|
||||||
// bypass the new neighbor update stack.
|
// bypass the new neighbor update stack.
|
||||||
if (level.setBlock(pos, state, Block.UPDATE_KNOWN_SHAPE | Block.UPDATE_CLIENTS)) {
|
if (level.setBlock(pos, state, Block.UPDATE_KNOWN_SHAPE | Block.UPDATE_CLIENTS)) {
|
||||||
@@ -644,22 +644,22 @@ index 23e9e5e7ef76fe3d6e1bbc41faf69ee65ca77d80..8b60d7b65e6cab4ad99a7df32865af6c
|
|||||||
java.util.List<org.bukkit.block.BlockState> blocks = new java.util.ArrayList<>(level.capturedBlockStates.values());
|
java.util.List<org.bukkit.block.BlockState> blocks = new java.util.ArrayList<>(level.capturedBlockStates.values());
|
||||||
level.capturedBlockStates.clear();
|
level.capturedBlockStates.clear();
|
||||||
diff --git a/net/minecraft/world/level/block/entity/BaseContainerBlockEntity.java b/net/minecraft/world/level/block/entity/BaseContainerBlockEntity.java
|
diff --git a/net/minecraft/world/level/block/entity/BaseContainerBlockEntity.java b/net/minecraft/world/level/block/entity/BaseContainerBlockEntity.java
|
||||||
index 1b2f8c4e1e362dc63fde2c7139039f0ce7eb762f..2ca4a34b3d9341f087fba031930ffd42a21c1db0 100644
|
index edf3bc4adc9b1700b73f06ea940f17cd55b16860..0a97678df78058068b3eaa1700d362ff1129c5f8 100644
|
||||||
--- a/net/minecraft/world/level/block/entity/BaseContainerBlockEntity.java
|
--- a/net/minecraft/world/level/block/entity/BaseContainerBlockEntity.java
|
||||||
+++ b/net/minecraft/world/level/block/entity/BaseContainerBlockEntity.java
|
+++ b/net/minecraft/world/level/block/entity/BaseContainerBlockEntity.java
|
||||||
@@ -76,6 +76,12 @@ public abstract class BaseContainerBlockEntity extends BlockEntity implements Co
|
@@ -66,6 +66,12 @@ public abstract class BaseContainerBlockEntity extends BlockEntity implements Co
|
||||||
}
|
protected abstract Component getDefaultName();
|
||||||
|
|
||||||
public static boolean canUnlock(Player player, LockCode code, Component displayName, @Nullable BlockEntity blockEntity) {
|
public boolean canOpen(Player player) {
|
||||||
+ // SparklyPaper - parallel world ticking (see: PARALLEL_NOTES.md - Opening an inventory after a world switch)
|
+ // SparklyPaper - parallel world ticking (see: PARALLEL_NOTES.md - Opening an inventory after a world switch)
|
||||||
+ if (player instanceof net.minecraft.server.level.ServerPlayer serverPlayer && blockEntity != null && blockEntity.getLevel() != serverPlayer.level()) {
|
+ if (player instanceof net.minecraft.server.level.ServerPlayer serverPlayer && getLevel() != serverPlayer.level()) {
|
||||||
+ net.minecraft.server.MinecraftServer.LOGGER.warn("Player " + serverPlayer.getScoreboardName() + " (" + serverPlayer.getStringUUID() + ") attempted to open a BlockEntity @ " + blockEntity.getLevel().getWorld().getName() + " " + blockEntity.getBlockPos().getX() + ", " + blockEntity.getBlockPos().getY() + ", " + blockEntity.getBlockPos().getZ() + " while they were in a different world " + serverPlayer.level().getWorld().getName() + " than the block themselves!");
|
+ net.minecraft.server.MinecraftServer.LOGGER.warn("Player " + serverPlayer.getScoreboardName() + " (" + serverPlayer.getStringUUID() + ") attempted to open a BlockEntity @ " + this.getLevel().getWorld().getName() + " " + this.getBlockPos().getX() + ", " + this.getBlockPos().getY() + ", " + this.getBlockPos().getZ() + " while they were in a different world " + serverPlayer.level().getWorld().getName() + " than the block themselves!");
|
||||||
+ return false;
|
+ return false;
|
||||||
+ }
|
+ }
|
||||||
+ // SparklyPaper end
|
+ // SparklyPaper end
|
||||||
if (player instanceof net.minecraft.server.level.ServerPlayer serverPlayer && blockEntity != null && blockEntity.getLevel() != null && blockEntity.getLevel().getBlockEntity(blockEntity.getBlockPos()) == blockEntity) {
|
return org.bukkit.craftbukkit.event.CraftEventFactory.callBlockLockCheckEvent(this, this.lockKey, this.getDisplayName(), player); // Paper - Call BlockLockCheckEvent
|
||||||
final org.bukkit.block.Block block = org.bukkit.craftbukkit.block.CraftBlock.at(blockEntity.getLevel(), blockEntity.getBlockPos());
|
}
|
||||||
net.kyori.adventure.text.Component lockedMessage = net.kyori.adventure.text.Component.translatable("container.isLocked", io.papermc.paper.adventure.PaperAdventure.asAdventure(displayName));
|
|
||||||
diff --git a/net/minecraft/world/level/block/entity/SculkCatalystBlockEntity.java b/net/minecraft/world/level/block/entity/SculkCatalystBlockEntity.java
|
diff --git a/net/minecraft/world/level/block/entity/SculkCatalystBlockEntity.java b/net/minecraft/world/level/block/entity/SculkCatalystBlockEntity.java
|
||||||
index ab7be4298be22af32c4726f178b93896b96f599d..d78dc310002ebb4149b60a35bf514f1fd49f95c9 100644
|
index ab7be4298be22af32c4726f178b93896b96f599d..d78dc310002ebb4149b60a35bf514f1fd49f95c9 100644
|
||||||
--- a/net/minecraft/world/level/block/entity/SculkCatalystBlockEntity.java
|
--- a/net/minecraft/world/level/block/entity/SculkCatalystBlockEntity.java
|
||||||
@@ -675,10 +675,10 @@ index ab7be4298be22af32c4726f178b93896b96f599d..d78dc310002ebb4149b60a35bf514f1f
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
diff --git a/net/minecraft/world/level/block/grower/TreeGrower.java b/net/minecraft/world/level/block/grower/TreeGrower.java
|
diff --git a/net/minecraft/world/level/block/grower/TreeGrower.java b/net/minecraft/world/level/block/grower/TreeGrower.java
|
||||||
index 3efebec19a1b4fefd6071247c614693e44bc3eb4..c277a4b002d60914e7673021d3351bb4d26c574c 100644
|
index 5471619a0484ece08640e2b3fd26746c351dc3e0..a426e98b487bd6623a75fab1e32099bcb8128b04 100644
|
||||||
--- a/net/minecraft/world/level/block/grower/TreeGrower.java
|
--- a/net/minecraft/world/level/block/grower/TreeGrower.java
|
||||||
+++ b/net/minecraft/world/level/block/grower/TreeGrower.java
|
+++ b/net/minecraft/world/level/block/grower/TreeGrower.java
|
||||||
@@ -203,55 +203,57 @@ public final class TreeGrower {
|
@@ -201,55 +201,57 @@ public final class TreeGrower {
|
||||||
|
|
||||||
// CraftBukkit start
|
// CraftBukkit start
|
||||||
private void setTreeType(Holder<ConfiguredFeature<?, ?>> feature) {
|
private void setTreeType(Holder<ConfiguredFeature<?, ?>> feature) {
|
||||||
@@ -760,22 +760,22 @@ index 3efebec19a1b4fefd6071247c614693e44bc3eb4..c277a4b002d60914e7673021d3351bb4
|
|||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
}
|
}
|
||||||
diff --git a/net/minecraft/world/level/chunk/LevelChunk.java b/net/minecraft/world/level/chunk/LevelChunk.java
|
diff --git a/net/minecraft/world/level/chunk/LevelChunk.java b/net/minecraft/world/level/chunk/LevelChunk.java
|
||||||
index de59760d27280555a334bda4f436164568cffbd6..cc194a6f3ad56e44af410bd5526af0cc767235b3 100644
|
index 7f2fa1978c2ca5620f0f3c1f26570d924d7fb3e5..7be713f0b7dfd8a1e922c56547ee0be963b7d06a 100644
|
||||||
--- a/net/minecraft/world/level/chunk/LevelChunk.java
|
--- a/net/minecraft/world/level/chunk/LevelChunk.java
|
||||||
+++ b/net/minecraft/world/level/chunk/LevelChunk.java
|
+++ b/net/minecraft/world/level/chunk/LevelChunk.java
|
||||||
@@ -367,6 +367,7 @@ public class LevelChunk extends ChunkAccess implements DebugValueSource, ca.spot
|
@@ -365,6 +365,7 @@ public class LevelChunk extends ChunkAccess implements DebugValueSource, ca.spot
|
||||||
@Nullable
|
|
||||||
@Override
|
@Override
|
||||||
public BlockState setBlockState(BlockPos pos, BlockState state, int flags) {
|
public @Nullable BlockState setBlockState(BlockPos pos, BlockState state, @Block.UpdateFlags int flags) {
|
||||||
+ ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThread(this.level, pos, "Updating block asynchronously"); // SparklyPaper - parallel world ticking (additional concurrency issues logs)
|
+ ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThread(this.level, pos, "Updating block asynchronously"); // SparklyPaper - parallel world ticking (additional concurrency issues logs)
|
||||||
int y = pos.getY();
|
int y = pos.getY();
|
||||||
LevelChunkSection section = this.getSection(this.getSectionIndex(y));
|
LevelChunkSection section = this.getSection(this.getSectionIndex(y));
|
||||||
boolean hasOnlyAir = section.hasOnlyAir();
|
boolean hasOnlyAir = section.hasOnlyAir();
|
||||||
diff --git a/net/minecraft/world/level/entity/EntityTickList.java b/net/minecraft/world/level/entity/EntityTickList.java
|
diff --git a/net/minecraft/world/level/entity/EntityTickList.java b/net/minecraft/world/level/entity/EntityTickList.java
|
||||||
index 423779a2b690f387a4f0bd07b97b50e0baefda76..24f9632e73d73c2ad68ebf30eb0e4cca7befae2d 100644
|
index 79a34ce6c888a611115719412d9a9bbcc0be498a..f2c4153b054908b6095b8d1475b1a7b1b0ea18a2 100644
|
||||||
--- a/net/minecraft/world/level/entity/EntityTickList.java
|
--- a/net/minecraft/world/level/entity/EntityTickList.java
|
||||||
+++ b/net/minecraft/world/level/entity/EntityTickList.java
|
+++ b/net/minecraft/world/level/entity/EntityTickList.java
|
||||||
@@ -10,17 +10,26 @@ import net.minecraft.world.entity.Entity;
|
@@ -10,17 +10,26 @@ import org.jspecify.annotations.Nullable;
|
||||||
|
|
||||||
public class EntityTickList {
|
public class EntityTickList {
|
||||||
private final ca.spottedleaf.moonrise.common.list.IteratorSafeOrderedReferenceSet<net.minecraft.world.entity.Entity> entities = new ca.spottedleaf.moonrise.common.list.IteratorSafeOrderedReferenceSet<>(); // Paper - rewrite chunk system
|
private final ca.spottedleaf.moonrise.common.list.IteratorSafeOrderedReferenceSet<net.minecraft.world.entity.Entity> entities = new ca.spottedleaf.moonrise.common.list.IteratorSafeOrderedReferenceSet<>(); // Paper - rewrite chunk system
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
--- a/net/minecraft/network/protocol/game/ClientboundRotateHeadPacket.java
|
--- a/net/minecraft/network/protocol/game/ClientboundRotateHeadPacket.java
|
||||||
+++ b/net/minecraft/network/protocol/game/ClientboundRotateHeadPacket.java
|
+++ b/net/minecraft/network/protocol/game/ClientboundRotateHeadPacket.java
|
||||||
@@ -20,6 +_,13 @@
|
@@ -21,6 +_,13 @@
|
||||||
this.yHeadRot = yHeadRot;
|
this.yHeadRot = yHeadRot;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
--- a/net/minecraft/server/MinecraftServer.java
|
--- a/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/net/minecraft/server/MinecraftServer.java
|
+++ b/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -1809,7 +_,15 @@
|
@@ -1818,7 +_,15 @@
|
||||||
profilerFiller.push("tick");
|
profilerFiller.push("tick");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
--- a/net/minecraft/server/dedicated/DedicatedServer.java
|
--- a/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
|
+++ b/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
@@ -260,6 +_,15 @@
|
@@ -257,6 +_,15 @@
|
||||||
org.spigotmc.SpigotConfig.registerCommands();
|
org.spigotmc.SpigotConfig.registerCommands();
|
||||||
// Spigot end
|
// Spigot end
|
||||||
io.papermc.paper.util.ObfHelper.INSTANCE.getClass(); // Paper - load mappings for stacktrace deobf and etc.
|
io.papermc.paper.util.ObfHelper.INSTANCE.getClass(); // Paper - load mappings for stacktrace deobf and etc.
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
+++ b/net/minecraft/server/level/ServerEntity.java
|
+++ b/net/minecraft/server/level/ServerEntity.java
|
||||||
@@ -197,6 +_,7 @@
|
@@ -197,6 +_,7 @@
|
||||||
|
|
||||||
if (this.entity.hasImpulse || this.trackDelta || this.entity instanceof LivingEntity && ((LivingEntity)this.entity).isFallFlying()) {
|
if (this.entity.needsSync || this.trackDelta || this.entity instanceof LivingEntity && ((LivingEntity)this.entity).isFallFlying()) {
|
||||||
Vec3 deltaMovement = this.entity.getDeltaMovement();
|
Vec3 deltaMovement = this.entity.getDeltaMovement();
|
||||||
+ if (deltaMovement != this.lastSentMovement) { // SparklyPaper start - skip distanceToSqr call in ServerEntity#sendChanges if the delta movement hasn't changed
|
+ if (deltaMovement != this.lastSentMovement) { // SparklyPaper start - skip distanceToSqr call in ServerEntity#sendChanges if the delta movement hasn't changed
|
||||||
double d = deltaMovement.distanceToSqr(this.lastSentMovement);
|
double d = deltaMovement.distanceToSqr(this.lastSentMovement);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
--- a/net/minecraft/server/level/ServerLevel.java
|
--- a/net/minecraft/server/level/ServerLevel.java
|
||||||
+++ b/net/minecraft/server/level/ServerLevel.java
|
+++ b/net/minecraft/server/level/ServerLevel.java
|
||||||
@@ -592,6 +_,12 @@
|
@@ -598,6 +_,12 @@
|
||||||
}
|
}
|
||||||
// Paper end - chunk tick iteration
|
// Paper end - chunk tick iteration
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
--- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
+++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
@@ -629,6 +_,31 @@
|
@@ -639,6 +_,31 @@
|
||||||
LOGGER.warn("{} (vehicle of {}) moved wrongly! {}", rootVehicle.getPlainTextName(), this.player.getPlainTextName(), Math.sqrt(d7));
|
LOGGER.warn("{} (vehicle of {}) moved wrongly! {}", rootVehicle.getPlainTextName(), this.player.getPlainTextName(), Math.sqrt(d7));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
// Paper start - optimise out extra getCubes
|
// Paper start - optimise out extra getCubes
|
||||||
boolean teleportBack = flag1;
|
boolean teleportBack = flag1;
|
||||||
if (!teleportBack) {
|
if (!teleportBack) {
|
||||||
@@ -1522,7 +_,7 @@
|
@@ -1539,7 +_,7 @@
|
||||||
d3 = d - this.lastGoodX; // Paper - diff on change, used for checking large move vectors above
|
d3 = d - this.lastGoodX; // Paper - diff on change, used for checking large move vectors above
|
||||||
d4 = d1 - this.lastGoodY; // Paper - diff on change, used for checking large move vectors above
|
d4 = d1 - this.lastGoodY; // Paper - diff on change, used for checking large move vectors above
|
||||||
d5 = d2 - this.lastGoodZ; // Paper - diff on change, used for checking large move vectors above
|
d5 = d2 - this.lastGoodZ; // Paper - diff on change, used for checking large move vectors above
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
if (this.player.onGround() && !packet.isOnGround() && flag) {
|
if (this.player.onGround() && !packet.isOnGround() && flag) {
|
||||||
// Paper start - Add PlayerJumpEvent
|
// Paper start - Add PlayerJumpEvent
|
||||||
org.bukkit.entity.Player player = this.getCraftPlayer();
|
org.bukkit.entity.Player player = this.getCraftPlayer();
|
||||||
@@ -1556,7 +_,37 @@
|
@@ -1573,7 +_,37 @@
|
||||||
|
|
||||||
boolean flag1 = this.player.verticalCollisionBelow;
|
boolean flag1 = this.player.verticalCollisionBelow;
|
||||||
this.player.move(MoverType.PLAYER, new Vec3(d3, d4, d5));
|
this.player.move(MoverType.PLAYER, new Vec3(d3, d4, d5));
|
||||||
@@ -80,7 +80,7 @@
|
|||||||
final boolean didCollide = toX != this.player.getX() || toY != this.player.getY() || toZ != this.player.getZ(); // Paper - needed here as the difference in Y can be reset - also note: this is only a guess at whether collisions took place, floating point errors can make this true when it shouldn't be...
|
final boolean didCollide = toX != this.player.getX() || toY != this.player.getY() || toZ != this.player.getZ(); // Paper - needed here as the difference in Y can be reset - also note: this is only a guess at whether collisions took place, floating point errors can make this true when it shouldn't be...
|
||||||
// Paper start - prevent position desync
|
// Paper start - prevent position desync
|
||||||
if (this.awaitingPositionFromClient != null) {
|
if (this.awaitingPositionFromClient != null) {
|
||||||
@@ -1689,14 +_,14 @@
|
@@ -1707,14 +_,14 @@
|
||||||
&& this.noBlocksAround(this.player);
|
&& this.noBlocksAround(this.player);
|
||||||
this.player.level().getChunkSource().move(this.player);
|
this.player.level().getChunkSource().move(this.player);
|
||||||
Vec3 vec3 = new Vec3(this.player.getX() - x, this.player.getY() - y, this.player.getZ() - z);
|
Vec3 vec3 = new Vec3(this.player.getX() - x, this.player.getY() - y, this.player.getZ() - z);
|
||||||
@@ -98,7 +98,7 @@
|
|||||||
|| this.player.hasLandedInLiquid()
|
|| this.player.hasLandedInLiquid()
|
||||||
|| this.player.onClimbable()
|
|| this.player.onClimbable()
|
||||||
|| this.player.isSpectator()
|
|| this.player.isSpectator()
|
||||||
@@ -1711,7 +_,7 @@
|
@@ -1729,7 +_,7 @@
|
||||||
this.lastGoodZ = this.player.getZ();
|
this.lastGoodZ = this.player.getZ();
|
||||||
} else {
|
} else {
|
||||||
this.internalTeleport(x, y, z, f, f1); // CraftBukkit - SPIGOT-1807: Don't call teleport event, when the client thinks the player is falling, because the chunks are not loaded on the client yet.
|
this.internalTeleport(x, y, z, f, f1); // CraftBukkit - SPIGOT-1807: Don't call teleport event, when the client thinks the player is falling, because the chunks are not loaded on the client yet.
|
||||||
@@ -107,7 +107,7 @@
|
|||||||
this.player.removeLatestMovementRecording();
|
this.player.removeLatestMovementRecording();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3193,6 +_,21 @@
|
@@ -3229,6 +_,21 @@
|
||||||
} else {
|
} else {
|
||||||
event = new CraftItemEvent(recipe, inventory, type, slotNum, click, action);
|
event = new CraftItemEvent(recipe, inventory, type, slotNum, click, action);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
--- a/net/minecraft/world/entity/Display.java
|
--- a/net/minecraft/world/entity/Display.java
|
||||||
+++ b/net/minecraft/world/entity/Display.java
|
+++ b/net/minecraft/world/entity/Display.java
|
||||||
@@ -677,7 +_,7 @@
|
@@ -673,7 +_,7 @@
|
||||||
private static final byte INITIAL_TEXT_OPACITY = -1;
|
private static final byte INITIAL_TEXT_OPACITY = -1;
|
||||||
public static final int INITIAL_BACKGROUND = 1073741824;
|
public static final int INITIAL_BACKGROUND = 1073741824;
|
||||||
private static final int INITIAL_LINE_WIDTH = 200;
|
private static final int INITIAL_LINE_WIDTH = 200;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
--- a/net/minecraft/world/entity/monster/Monster.java
|
--- a/net/minecraft/world/entity/monster/Monster.java
|
||||||
+++ b/net/minecraft/world/entity/monster/Monster.java
|
+++ b/net/minecraft/world/entity/monster/Monster.java
|
||||||
@@ -133,6 +_,12 @@
|
@@ -139,6 +_,12 @@
|
||||||
@Override
|
@Override
|
||||||
public ItemStack getProjectile(ItemStack shootable) {
|
public ItemStack getProjectile(ItemStack shootable) {
|
||||||
if (shootable.getItem() instanceof ProjectileWeaponItem) {
|
if (shootable.getItem() instanceof ProjectileWeaponItem) {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
--- a/net/minecraft/world/entity/player/Player.java
|
--- a/net/minecraft/world/entity/player/Player.java
|
||||||
+++ b/net/minecraft/world/entity/player/Player.java
|
+++ b/net/minecraft/world/entity/player/Player.java
|
||||||
@@ -1926,6 +_,12 @@
|
@@ -2029,6 +_,12 @@
|
||||||
if (!(shootable.getItem() instanceof ProjectileWeaponItem)) {
|
if (!(shootable.getItem() instanceof ProjectileWeaponItem)) {
|
||||||
return ItemStack.EMPTY;
|
return ItemStack.EMPTY;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
+ public net.sparklypower.sparklypaper.configs.SparklyPaperConfig.SparklyPaperWorldConfig sparklyPaperConfig; // SparklyPaper - config files
|
+ public net.sparklypower.sparklypaper.configs.SparklyPaperConfig.SparklyPaperWorldConfig sparklyPaperConfig; // SparklyPaper - config files
|
||||||
private final CraftWorld world;
|
private final CraftWorld world;
|
||||||
public net.kyori.adventure.util.TriState pvpMode = net.kyori.adventure.util.TriState.NOT_SET;
|
public net.kyori.adventure.util.TriState pvpMode = net.kyori.adventure.util.TriState.NOT_SET;
|
||||||
public @Nullable org.bukkit.generator.ChunkGenerator generator;
|
public org.bukkit.generator.@Nullable ChunkGenerator generator;
|
||||||
@@ -846,6 +_,7 @@
|
@@ -846,6 +_,7 @@
|
||||||
// Paper end - getblock optimisations - cache world height/sections
|
// Paper end - getblock optimisations - cache world height/sections
|
||||||
this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) levelData).getLevelName()); // Spigot
|
this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) levelData).getLevelName()); // Spigot
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
this.generator = generator;
|
this.generator = generator;
|
||||||
this.world = new CraftWorld((ServerLevel) this, generator, biomeProvider, environment);
|
this.world = new CraftWorld((ServerLevel) this, generator, biomeProvider, environment);
|
||||||
|
|
||||||
@@ -1407,13 +_,11 @@
|
@@ -1402,13 +_,11 @@
|
||||||
boolean runsNormally = this.tickRateManager().runsNormally();
|
boolean runsNormally = this.tickRateManager().runsNormally();
|
||||||
|
|
||||||
int tickedEntities = 0; // Paper - rewrite chunk system
|
int tickedEntities = 0; // Paper - rewrite chunk system
|
||||||
@@ -40,7 +40,7 @@
|
|||||||
} else if (runsNormally && this.shouldTickBlocksAt(tickingBlockEntity.getPos())) {
|
} else if (runsNormally && this.shouldTickBlocksAt(tickingBlockEntity.getPos())) {
|
||||||
tickingBlockEntity.tick();
|
tickingBlockEntity.tick();
|
||||||
// Paper start - rewrite chunk system
|
// Paper start - rewrite chunk system
|
||||||
@@ -1423,7 +_,7 @@
|
@@ -1418,7 +_,7 @@
|
||||||
// Paper end - rewrite chunk system
|
// Paper end - rewrite chunk system
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
--- a/net/minecraft/world/level/block/Blocks.java
|
--- a/net/minecraft/world/level/block/Blocks.java
|
||||||
+++ b/net/minecraft/world/level/block/Blocks.java
|
+++ b/net/minecraft/world/level/block/Blocks.java
|
||||||
@@ -7060,6 +_,52 @@
|
@@ -7123,6 +_,52 @@
|
||||||
.sound(SoundType.SWEET_BERRY_BUSH)
|
.sound(SoundType.SWEET_BERRY_BUSH)
|
||||||
.pushReaction(PushReaction.DESTROY)
|
.pushReaction(PushReaction.DESTROY)
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
--- a/net/minecraft/world/level/block/CrafterBlock.java
|
--- a/net/minecraft/world/level/block/CrafterBlock.java
|
||||||
+++ b/net/minecraft/world/level/block/CrafterBlock.java
|
+++ b/net/minecraft/world/level/block/CrafterBlock.java
|
||||||
@@ -159,6 +_,12 @@
|
@@ -158,6 +_,12 @@
|
||||||
}
|
}
|
||||||
itemStack = org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(event.getResult());
|
itemStack = org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(event.getResult());
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
|
|||||||
@@ -294,10 +294,10 @@ index 69cdd304d255d52c9b7dc9b6a33ffdb630b79abe..636ec7172e9b535f7b4f95b4a9743217
|
|||||||
+ // SparklyPaper end
|
+ // SparklyPaper end
|
||||||
}
|
}
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||||
index 48f6f41d59983e52b9db41a7555423d6e9a416d4..df4ba7ce478ed64f3dbd73e1ff4272fba6716c8f 100644
|
index 6cd3469d49f0e56f212d393f133205aa3b295a88..e482c1bf8c0670d758cdbdc8f824e207dfb7d644 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||||
@@ -472,6 +472,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
@@ -471,6 +471,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
||||||
|
|
||||||
private boolean unloadChunk0(int x, int z, boolean save) {
|
private boolean unloadChunk0(int x, int z, boolean save) {
|
||||||
org.spigotmc.AsyncCatcher.catchOp("chunk unload"); // Spigot
|
org.spigotmc.AsyncCatcher.catchOp("chunk unload"); // Spigot
|
||||||
@@ -305,7 +305,7 @@ index 48f6f41d59983e52b9db41a7555423d6e9a416d4..df4ba7ce478ed64f3dbd73e1ff4272fb
|
|||||||
if (!this.isChunkLoaded(x, z)) {
|
if (!this.isChunkLoaded(x, z)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -488,6 +489,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
@@ -487,6 +488,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean refreshChunk(int x, int z) {
|
public boolean refreshChunk(int x, int z) {
|
||||||
@@ -313,7 +313,7 @@ index 48f6f41d59983e52b9db41a7555423d6e9a416d4..df4ba7ce478ed64f3dbd73e1ff4272fb
|
|||||||
ChunkHolder playerChunk = this.world.getChunkSource().chunkMap.getVisibleChunkIfPresent(ChunkPos.asLong(x, z));
|
ChunkHolder playerChunk = this.world.getChunkSource().chunkMap.getVisibleChunkIfPresent(ChunkPos.asLong(x, z));
|
||||||
if (playerChunk == null) return false;
|
if (playerChunk == null) return false;
|
||||||
|
|
||||||
@@ -538,6 +540,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
@@ -537,6 +539,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean loadChunk(int x, int z, boolean generate) {
|
public boolean loadChunk(int x, int z, boolean generate) {
|
||||||
@@ -321,7 +321,7 @@ index 48f6f41d59983e52b9db41a7555423d6e9a416d4..df4ba7ce478ed64f3dbd73e1ff4272fb
|
|||||||
org.spigotmc.AsyncCatcher.catchOp("chunk load"); // Spigot
|
org.spigotmc.AsyncCatcher.catchOp("chunk load"); // Spigot
|
||||||
warnUnsafeChunk("loading a faraway chunk", x, z); // Paper
|
warnUnsafeChunk("loading a faraway chunk", x, z); // Paper
|
||||||
ChunkAccess chunk = this.world.getChunkSource().getChunk(x, z, generate || isChunkGenerated(x, z) ? ChunkStatus.FULL : ChunkStatus.EMPTY, true); // Paper
|
ChunkAccess chunk = this.world.getChunkSource().getChunk(x, z, generate || isChunkGenerated(x, z) ? ChunkStatus.FULL : ChunkStatus.EMPTY, true); // Paper
|
||||||
@@ -751,6 +754,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
@@ -750,6 +753,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean generateTree(Location loc, TreeType type, BlockChangeDelegate delegate) {
|
public boolean generateTree(Location loc, TreeType type, BlockChangeDelegate delegate) {
|
||||||
@@ -329,7 +329,7 @@ index 48f6f41d59983e52b9db41a7555423d6e9a416d4..df4ba7ce478ed64f3dbd73e1ff4272fb
|
|||||||
this.world.captureTreeGeneration = true;
|
this.world.captureTreeGeneration = true;
|
||||||
this.world.captureBlockStates = true;
|
this.world.captureBlockStates = true;
|
||||||
boolean grownTree = this.generateTree(loc, type);
|
boolean grownTree = this.generateTree(loc, type);
|
||||||
@@ -852,6 +856,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
@@ -851,6 +855,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
||||||
|
|
||||||
private boolean createExplosion(double x, double y, double z, float power, boolean setFire, boolean breakBlocks, Entity source, Consumer<net.minecraft.world.level.ServerExplosion> configurator) {
|
private boolean createExplosion(double x, double y, double z, float power, boolean setFire, boolean breakBlocks, Entity source, Consumer<net.minecraft.world.level.ServerExplosion> configurator) {
|
||||||
// Paper end - expand explosion API
|
// Paper end - expand explosion API
|
||||||
@@ -337,7 +337,7 @@ index 48f6f41d59983e52b9db41a7555423d6e9a416d4..df4ba7ce478ed64f3dbd73e1ff4272fb
|
|||||||
net.minecraft.world.level.Level.ExplosionInteraction explosionType;
|
net.minecraft.world.level.Level.ExplosionInteraction explosionType;
|
||||||
if (!breakBlocks) {
|
if (!breakBlocks) {
|
||||||
explosionType = net.minecraft.world.level.Level.ExplosionInteraction.NONE; // Don't break blocks
|
explosionType = net.minecraft.world.level.Level.ExplosionInteraction.NONE; // Don't break blocks
|
||||||
@@ -908,6 +913,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
@@ -907,6 +912,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getHighestBlockYAt(int x, int z, org.bukkit.HeightMap heightMap) {
|
public int getHighestBlockYAt(int x, int z, org.bukkit.HeightMap heightMap) {
|
||||||
@@ -345,7 +345,7 @@ index 48f6f41d59983e52b9db41a7555423d6e9a416d4..df4ba7ce478ed64f3dbd73e1ff4272fb
|
|||||||
warnUnsafeChunk("getting a faraway chunk", x >> 4, z >> 4); // Paper
|
warnUnsafeChunk("getting a faraway chunk", x >> 4, z >> 4); // Paper
|
||||||
// Transient load for this tick
|
// Transient load for this tick
|
||||||
return this.world.getChunk(x >> 4, z >> 4).getHeight(CraftHeightMap.toNMS(heightMap), x, z);
|
return this.world.getChunk(x >> 4, z >> 4).getHeight(CraftHeightMap.toNMS(heightMap), x, z);
|
||||||
@@ -923,6 +929,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
@@ -922,6 +928,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
||||||
@Override
|
@Override
|
||||||
public void setBiome(int x, int y, int z, Holder<net.minecraft.world.level.biome.Biome> bb) {
|
public void setBiome(int x, int y, int z, Holder<net.minecraft.world.level.biome.Biome> bb) {
|
||||||
BlockPos pos = new BlockPos(x, 0, z);
|
BlockPos pos = new BlockPos(x, 0, z);
|
||||||
@@ -353,7 +353,7 @@ index 48f6f41d59983e52b9db41a7555423d6e9a416d4..df4ba7ce478ed64f3dbd73e1ff4272fb
|
|||||||
if (this.world.hasChunkAt(pos)) {
|
if (this.world.hasChunkAt(pos)) {
|
||||||
net.minecraft.world.level.chunk.LevelChunk chunk = this.world.getChunkAt(pos);
|
net.minecraft.world.level.chunk.LevelChunk chunk = this.world.getChunkAt(pos);
|
||||||
|
|
||||||
@@ -1902,6 +1909,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
@@ -1879,6 +1886,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendGameEvent(Entity sourceEntity, org.bukkit.GameEvent gameEvent, Vector position) {
|
public void sendGameEvent(Entity sourceEntity, org.bukkit.GameEvent gameEvent, Vector position) {
|
||||||
@@ -362,7 +362,7 @@ index 48f6f41d59983e52b9db41a7555423d6e9a416d4..df4ba7ce478ed64f3dbd73e1ff4272fb
|
|||||||
}
|
}
|
||||||
// Paper end
|
// Paper end
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
|
||||||
index 6809f9dcf8510c714145d99d250eb69f98d9bf27..ee04049faf283ac929b6b0806eaed430a7c57db8 100644
|
index 31e665388bc6222210bb1a1184084a1f6786ce6b..d9993d747921c96a366d3679a4a8a77b6552aa03 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
|
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java
|
||||||
@@ -75,6 +75,11 @@ public class CraftBlock implements Block {
|
@@ -75,6 +75,11 @@ public class CraftBlock implements Block {
|
||||||
@@ -380,7 +380,7 @@ index 6809f9dcf8510c714145d99d250eb69f98d9bf27..ee04049faf283ac929b6b0806eaed430
|
|||||||
@@ -155,6 +160,11 @@ public class CraftBlock implements Block {
|
@@ -155,6 +160,11 @@ public class CraftBlock implements Block {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setData(final byte data, int flags) {
|
private void setData(final byte data, @net.minecraft.world.level.block.Block.UpdateFlags int flags) {
|
||||||
+ // SparklyPaper start - parallel world ticking
|
+ // SparklyPaper start - parallel world ticking
|
||||||
+ if (world instanceof ServerLevel serverWorld) {
|
+ if (world instanceof ServerLevel serverWorld) {
|
||||||
+ ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThread(serverWorld, position, "Cannot modify world asynchronously");
|
+ ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThread(serverWorld, position, "Cannot modify world asynchronously");
|
||||||
@@ -401,6 +401,15 @@ index 6809f9dcf8510c714145d99d250eb69f98d9bf27..ee04049faf283ac929b6b0806eaed430
|
|||||||
// SPIGOT-611: need to do this to prevent glitchiness. Easier to handle this here (like /setblock) than to fix weirdness in block entity cleanup
|
// SPIGOT-611: need to do this to prevent glitchiness. Easier to handle this here (like /setblock) than to fix weirdness in block entity cleanup
|
||||||
if (oldState.hasBlockEntity() && newState.getBlock() != oldState.getBlock()) { // SPIGOT-3725 remove old block entity if block changes
|
if (oldState.hasBlockEntity() && newState.getBlock() != oldState.getBlock()) { // SPIGOT-3725 remove old block entity if block changes
|
||||||
// SPIGOT-4612: faster - just clear tile
|
// SPIGOT-4612: faster - just clear tile
|
||||||
|
@@ -210,7 +225,7 @@ public class CraftBlock implements Block {
|
||||||
|
return world.setBlock(pos, newState, net.minecraft.world.level.block.Block.UPDATE_ALL);
|
||||||
|
} else {
|
||||||
|
boolean success = world.setBlock(pos, newState,
|
||||||
|
- net.minecraft.world.level.block.Block.UPDATE_CLIENTS |
|
||||||
|
+ net.minecraft.world.level.block.Block.UPDATE_CLIENTS |
|
||||||
|
net.minecraft.world.level.block.Block.UPDATE_KNOWN_SHAPE |
|
||||||
|
net.minecraft.world.level.block.Block.UPDATE_SKIP_ON_PLACE);
|
||||||
|
if (success && world instanceof net.minecraft.world.level.Level) {
|
||||||
@@ -344,18 +359,33 @@ public class CraftBlock implements Block {
|
@@ -344,18 +359,33 @@ public class CraftBlock implements Block {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -555,7 +564,7 @@ index 6809f9dcf8510c714145d99d250eb69f98d9bf27..ee04049faf283ac929b6b0806eaed430
|
|||||||
}
|
}
|
||||||
|
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java
|
||||||
index 5d4faad9df4824cfd61abfd4df011c006f114424..d1227c670db2dbe1816d78be51796c43e99a4d9b 100644
|
index 26feb76c52631e77b8529e4da1e54e1c703ea001..9c112ce857a90efddd63ff23812fcdc22fd65145 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java
|
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java
|
||||||
@@ -32,7 +32,7 @@ public abstract class CraftBlockEntityState<T extends BlockEntity> extends Craft
|
@@ -32,7 +32,7 @@ public abstract class CraftBlockEntityState<T extends BlockEntity> extends Craft
|
||||||
@@ -579,10 +588,10 @@ index 5d4faad9df4824cfd61abfd4df011c006f114424..d1227c670db2dbe1816d78be51796c43
|
|||||||
} else {
|
} else {
|
||||||
this.snapshot = this.createSnapshot(blockEntity);
|
this.snapshot = this.createSnapshot(blockEntity);
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java
|
||||||
index 196835bdf95ba0e149b2977e9ef41698971f501f..641adf9666fef4d15bc9b585aabfe687a83fbe86 100644
|
index 3036f3fa8b58607e2abbe1cbec065c7b78bdc025..4bd270275dbe8761cdf465ee102d57c2d12083c8 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java
|
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java
|
||||||
@@ -218,6 +218,12 @@ public class CraftBlockState implements BlockState {
|
@@ -219,6 +219,12 @@ public class CraftBlockState implements BlockState {
|
||||||
LevelAccessor access = this.getWorldHandle();
|
LevelAccessor access = this.getWorldHandle();
|
||||||
CraftBlock block = this.getBlock();
|
CraftBlock block = this.getBlock();
|
||||||
|
|
||||||
@@ -595,7 +604,7 @@ index 196835bdf95ba0e149b2977e9ef41698971f501f..641adf9666fef4d15bc9b585aabfe687
|
|||||||
if (block.getType() != this.getType()) {
|
if (block.getType() != this.getType()) {
|
||||||
if (!force) {
|
if (!force) {
|
||||||
return false;
|
return false;
|
||||||
@@ -365,6 +371,7 @@ public class CraftBlockState implements BlockState {
|
@@ -366,6 +372,7 @@ public class CraftBlockState implements BlockState {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public java.util.Collection<org.bukkit.inventory.ItemStack> getDrops(org.bukkit.inventory.ItemStack item, org.bukkit.entity.Entity entity) {
|
public java.util.Collection<org.bukkit.inventory.ItemStack> getDrops(org.bukkit.inventory.ItemStack item, org.bukkit.entity.Entity entity) {
|
||||||
@@ -626,19 +635,19 @@ index bcd73c788768f9a278181926fb56df510d271a76..ab2cec18178d917bb9253facd0312917
|
|||||||
}
|
}
|
||||||
|
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||||
index 9ccaf437ce8a779074f5abaf69fa6dc653d0064e..e25d72905347abfb6efce7f0a656970ccb30c3ad 100644
|
index 62866a982c811be04423c19c87c69a829e73cdcf..835c7245f24a8b446280c53196fc777ef50a1640 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||||
@@ -810,7 +810,7 @@ public class CraftEventFactory {
|
@@ -937,7 +937,7 @@ public class CraftEventFactory {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
- public static BlockPos sourceBlockOverride = null; // SPIGOT-7068: Add source block override, not the most elegant way but better than passing down a BlockPos up to five methods deep.
|
- public static BlockPos sourceBlockOverride = null; // SPIGOT-7068: Add source block override, not the most elegant way but better than passing down a BlockPos up to five methods deep.
|
||||||
+ public static final ThreadLocal<BlockPos> sourceBlockOverrideRT = new ThreadLocal<>(); // SPIGOT-7068: Add source block override, not the most elegant way but better than passing down a BlockPosition up to five methods deep. // SparklyPaper - parallel world ticking (this is from Folia, fixes concurrency bugs with sculk catalysts)
|
+ public static final ThreadLocal<BlockPos> sourceBlockOverrideRT = new ThreadLocal<>(); // SPIGOT-7068: Add source block override, not the most elegant way but better than passing down a BlockPosition up to five methods deep. // SparklyPaper - parallel world ticking (this is from Folia, fixes concurrency bugs with sculk catalysts)
|
||||||
|
|
||||||
public static boolean handleBlockSpreadEvent(LevelAccessor world, BlockPos source, BlockPos target, net.minecraft.world.level.block.state.BlockState state, int flags) {
|
public static boolean handleBlockSpreadEvent(LevelAccessor world, BlockPos source, BlockPos target, net.minecraft.world.level.block.state.BlockState state, @net.minecraft.world.level.block.Block.UpdateFlags int flags) {
|
||||||
return handleBlockSpreadEvent(world, source, target, state, flags, false);
|
return handleBlockSpreadEvent(world, source, target, state, flags, false);
|
||||||
@@ -826,7 +826,7 @@ public class CraftEventFactory {
|
@@ -953,7 +953,7 @@ public class CraftEventFactory {
|
||||||
CraftBlockState snapshot = CraftBlockStates.getBlockState(world, target);
|
CraftBlockState snapshot = CraftBlockStates.getBlockState(world, target);
|
||||||
snapshot.setData(state);
|
snapshot.setData(state);
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
||||||
@@ -993,6 +_,7 @@
|
@@ -992,6 +_,7 @@
|
||||||
|
|
||||||
org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot
|
org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot
|
||||||
this.console.paperConfigurations.reloadConfigs(this.console);
|
this.console.paperConfigurations.reloadConfigs(this.console);
|
||||||
+ net.sparklypower.sparklypaper.configs.SparklyPaperConfigUtils.INSTANCE.init((File) console.options.valueOf("sparklypaper-settings")); // SparklyPaper - config files
|
+ net.sparklypower.sparklypaper.configs.SparklyPaperConfigUtils.INSTANCE.init((File) console.options.valueOf("sparklypaper-settings")); // SparklyPaper - config files
|
||||||
for (ServerLevel world : this.console.getAllLevels()) {
|
for (ServerLevel world : this.console.getAllLevels()) {
|
||||||
// world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty
|
// world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty
|
||||||
world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && world.getGameRules().getBoolean(GameRules.RULE_SPAWN_MONSTERS)); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean))
|
world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && world.getGameRules().get(GameRules.SPAWN_MONSTERS)); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean))
|
||||||
@@ -1008,6 +_,7 @@
|
@@ -1007,6 +_,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
world.spigotConfig.init(); // Spigot
|
world.spigotConfig.init(); // Spigot
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper
|
Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper
|
||||||
@@ -1025,6 +_,7 @@
|
@@ -1024,6 +_,7 @@
|
||||||
org.spigotmc.SpigotConfig.registerCommands(); // Spigot
|
org.spigotmc.SpigotConfig.registerCommands(); // Spigot
|
||||||
io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper
|
io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper
|
||||||
this.spark.registerCommandBeforePlugins(this); // Paper - spark
|
this.spark.registerCommandBeforePlugins(this); // Paper - spark
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||||
@@ -1308,6 +_,23 @@
|
@@ -1432,6 +_,23 @@
|
||||||
Bukkit.getPluginManager().callEvent(crafterCraftEvent);
|
Bukkit.getPluginManager().callEvent(crafterCraftEvent);
|
||||||
return crafterCraftEvent;
|
return crafterCraftEvent;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
--- a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
|
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
|
|
||||||
@@ -11,7 +_,7 @@
|
|
||||||
public static String getBukkitVersion() {
|
|
||||||
String result = "Unknown-Version";
|
|
||||||
|
|
||||||
- InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/io.papermc.paper/paper-api/pom.properties");
|
|
||||||
+ InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/net.sparklypower.sparklypaper/sparklypaper-api/pom.properties"); // SparklyPaper
|
|
||||||
Properties properties = new Properties();
|
|
||||||
|
|
||||||
if (stream != null) {
|
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
--- a/src/test/java/org/bukkit/craftbukkit/legacy/LegacyTest.java
|
--- a/src/test/java/org/bukkit/craftbukkit/legacy/LegacyTest.java
|
||||||
+++ b/src/test/java/org/bukkit/craftbukkit/legacy/LegacyTest.java
|
+++ b/src/test/java/org/bukkit/craftbukkit/legacy/LegacyTest.java
|
||||||
@@ -153,6 +_,9 @@
|
@@ -156,6 +_,9 @@
|
||||||
Material.WAXED_OXIDIZED_COPPER_BARS, Material.WAXED_OXIDIZED_COPPER_CHAIN, Material.WAXED_OXIDIZED_COPPER_CHEST, Material.WAXED_OXIDIZED_COPPER_GOLEM_STATUE, Material.WAXED_OXIDIZED_COPPER_LANTERN, Material.WAXED_OXIDIZED_LIGHTNING_ROD, Material.WAXED_WEATHERED_COPPER_BARS,
|
// 1.21.11
|
||||||
Material.WAXED_WEATHERED_COPPER_CHAIN, Material.WAXED_WEATHERED_COPPER_CHEST, Material.WAXED_WEATHERED_COPPER_GOLEM_STATUE, Material.WAXED_WEATHERED_COPPER_LANTERN, Material.WAXED_WEATHERED_LIGHTNING_ROD, Material.WEATHERED_COPPER_BARS, Material.WEATHERED_COPPER_CHAIN,
|
Material.COPPER_NAUTILUS_ARMOR, Material.COPPER_SPEAR, Material.DIAMOND_NAUTILUS_ARMOR, Material.DIAMOND_SPEAR, Material.GOLDEN_NAUTILUS_ARMOR, Material.GOLDEN_SPEAR, Material.IRON_NAUTILUS_ARMOR, Material.IRON_SPEAR, Material.NAUTILUS_SPAWN_EGG,
|
||||||
Material.WEATHERED_COPPER_CHEST, Material.WEATHERED_COPPER_GOLEM_STATUE, Material.WEATHERED_COPPER_LANTERN, Material.WEATHERED_LIGHTNING_ROD,
|
Material.NETHERITE_NAUTILUS_ARMOR, Material.NETHERITE_SPEAR, Material.STONE_SPEAR, Material.WOODEN_SPEAR, Material.ZOMBIE_NAUTILUS_SPAWN_EGG, Material.CAMEL_HUSK_SPAWN_EGG, Material.PARCHED_SPAWN_EGG, Material.NETHERITE_HORSE_ARMOR,
|
||||||
+ // SparklyPower custom blocks
|
+ // SparklyPower custom blocks
|
||||||
+ Material.SPARKLYPOWER_RAINBOW_WOOL, Material.SPARKLYPOWER_RAINBOW_CONCRETE, Material.SPARKLYPOWER_RAINBOW_TERRACOTTA, Material.SPARKLYPOWER_ASPHALT_PLAYER, Material.SPARKLYPOWER_ASPHALT_SERVER, Material.SPARKLYPOWER_ASPHALT_PLAYER_SLAB,
|
+ Material.SPARKLYPOWER_RAINBOW_WOOL, Material.SPARKLYPOWER_RAINBOW_CONCRETE, Material.SPARKLYPOWER_RAINBOW_TERRACOTTA, Material.SPARKLYPOWER_ASPHALT_PLAYER, Material.SPARKLYPOWER_ASPHALT_SERVER, Material.SPARKLYPOWER_ASPHALT_PLAYER_SLAB,
|
||||||
+ Material.SPARKLYPOWER_ASPHALT_SERVER_SLAB,
|
+ Material.SPARKLYPOWER_ASPHALT_SERVER_SLAB,
|
||||||
|
|||||||
Reference in New Issue
Block a user