Skip to content

Commit 6c03ab0

Browse files
committed
Merge pull request #183 from InfernalSuite/develop
2 parents 6a660f3 + 7c82b77 commit 6c03ab0

34 files changed

+223
-192
lines changed

api/src/main/java/com/infernalsuite/asp/api/world/properties/SlimeProperties.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,11 @@ public class SlimeProperties {
9999
);
100100

101101
@ApiStatus.Experimental
102+
@Deprecated(forRemoval = true)
102103
public static final SlimePropertyInt CHUNK_SECTION_MIN = SlimePropertyInt.create("chunkSectionMin", -4);
104+
103105
@ApiStatus.Experimental
106+
@Deprecated(forRemoval = true)
104107
public static final SlimePropertyInt CHUNK_SECTION_MAX = SlimePropertyInt.create("chunkSectionMax", 19);
105108

106109
/**

api/src/main/java/com/infernalsuite/asp/api/world/properties/SlimePropertyMap.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import java.util.HashMap;
77
import java.util.Map;
8+
import java.util.Optional;
89

910
/**
1011
* A Property Map object.
@@ -35,6 +36,21 @@ public <T, Z extends BinaryTag> T getValue(final SlimeProperty<T, Z> property) {
3536
}
3637
}
3738

39+
/**
40+
* Return the current value of the given property as an Optional
41+
* Instead of returning the default value if the property is not set, it returns an empty Optional
42+
*
43+
* @param property The slime property
44+
* @return An Optional containing the current value, or empty if not set
45+
*/
46+
public <T, Z extends BinaryTag> Optional<T> getOptionalValue(final SlimeProperty<T, Z> property) {
47+
if (this.properties.containsKey(property.getKey())) {
48+
return Optional.of(property.readValue(property.cast(this.properties.get(property.getKey()))));
49+
} else {
50+
return Optional.empty();
51+
}
52+
}
53+
3854
/**
3955
* Return the properties (CompoundMap)
4056
*

aspaper-api/build.gradle.kts.patch

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
--- a/paper-api/build.gradle.kts
22
+++ b/paper-api/build.gradle.kts
3-
@@ -40,6 +_,7 @@
3+
@@ -39,6 +_,7 @@
44
}
55

66
dependencies {
77
+ api(project(":api")) //ASP
88
// api dependencies are listed transitively to API consumers
99
api("com.google.guava:guava:33.3.1-jre")
1010
api("com.google.code.gson:gson:2.11.0")
11-
@@ -90,7 +_,7 @@
11+
@@ -89,7 +_,7 @@
1212
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
1313
}
1414

@@ -17,7 +17,7 @@
1717
idea {
1818
module {
1919
generatedSourceDirs.add(generatedDir.toFile())
20-
@@ -100,6 +_,18 @@
20+
@@ -99,6 +_,18 @@
2121
main {
2222
java {
2323
srcDir(generatedDir)
@@ -36,7 +36,7 @@
3636
}
3737
}
3838
}
39-
@@ -166,7 +_,7 @@
39+
@@ -165,7 +_,7 @@
4040

4141
tasks.withType<Javadoc>().configureEach {
4242
val options = options as StandardJavadocDocletOptions
@@ -45,7 +45,7 @@
4545
options.use()
4646
options.isDocFilesSubDirs = true
4747
options.links(
48-
@@ -199,11 +_,11 @@
48+
@@ -198,11 +_,11 @@
4949
}
5050

5151
// workaround for https://github.com/gradle/gradle/issues/4046

aspaper-server/build.gradle.kts.patch

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
--- a/paper-server/build.gradle.kts
22
+++ b/paper-server/build.gradle.kts
3-
@@ -26,6 +_,17 @@
3+
@@ -23,6 +_,17 @@
44
minecraftVersion = providers.gradleProperty("mcVersion")
55
gitFilePatches = false
66

@@ -17,8 +17,8 @@
1717
+
1818
spigot {
1919
enabled = true
20-
buildDataRef = "436eac9815c211be1a2a6ca0702615f995e81c44"
21-
@@ -107,7 +_,19 @@
20+
buildDataRef = "42d18d4c4653ffc549778dbe223f6994a031d69e"
21+
@@ -104,7 +_,19 @@
2222
}
2323
}
2424

@@ -39,17 +39,17 @@
3939
configurations.named(log4jPlugins.compileClasspathConfigurationName) {
4040
extendsFrom(configurations.compileClasspath.get())
4141
}
42-
@@ -129,7 +_,8 @@
42+
@@ -127,7 +_,8 @@
4343
}
4444

4545
dependencies {
4646
- implementation(project(":paper-api"))
4747
+ implementation(project(":aspaper-api")) //ASP
4848
+ implementation(project(":core")) //ASP
49-
implementation("ca.spottedleaf:concurrentutil:0.0.3")
49+
implementation("ca.spottedleaf:concurrentutil:0.0.7")
5050
implementation("org.jline:jline-terminal-ffm:3.27.1") // use ffm on java 22+
5151
implementation("org.jline:jline-terminal-jni:3.27.1") // fall back to jni on java 21
52-
@@ -200,14 +_,14 @@
52+
@@ -197,14 +_,14 @@
5353
val gitBranch = git.exec(providers, "rev-parse", "--abbrev-ref", "HEAD").get().trim()
5454
attributes(
5555
"Main-Class" to "org.bukkit.craftbukkit.Main",
@@ -69,7 +69,7 @@
6969
"Build-Number" to (build ?: ""),
7070
"Build-Time" to buildTime.toString(),
7171
"Git-Branch" to gitBranch,
72-
@@ -266,7 +_,7 @@
72+
@@ -263,7 +_,7 @@
7373
jvmArgumentProviders.add(provider)
7474
}
7575

aspaper-server/minecraft-patches/features/0001-Disable-dragon-battle.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ Subject: [PATCH] Disable dragon battle
55

66

77
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
8-
index 53ec0565a76663de74bb228c23c3d74a640a20f9..2c85ace929aeb9078fe868bcc56a2be08ac2f7ba 100644
8+
index efd599c516d89ebc5f040413b7c17c5bf0ad796c..fe30353d28cf7e35e7ba7267a8a630f2cffccd4a 100644
99
--- a/net/minecraft/server/level/ServerLevel.java
1010
+++ b/net/minecraft/server/level/ServerLevel.java
11-
@@ -684,7 +684,13 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
11+
@@ -707,7 +707,13 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
1212
);
1313
this.structureManager = new StructureManager(this, this.serverLevelData.worldGenOptions(), this.structureCheck); // CraftBukkit
1414
if (this.dimension() == Level.END && this.dimensionTypeRegistration().is(BuiltinDimensionTypes.END) || env == org.bukkit.World.Environment.THE_END) { // CraftBukkit - Allow to create EnderDragonBattle in default and custom END

aspaper-server/minecraft-patches/features/0003-Avoid-IO-call-for-UUID.patch renamed to aspaper-server/minecraft-patches/features/0002-Avoid-IO-call-for-UUID.patch

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@ Subject: [PATCH] Avoid IO call for UUID
55

66

77
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
8-
index 2c85ace929aeb9078fe868bcc56a2be08ac2f7ba..939605ce630ab66b7236962dec3ae61ed23dc222 100644
8+
index 2c8e5d8bebb53c70c3180e72af738e87ec0f36f6..c394731283ee3344a8e21d3b2d0f75470e4f6bfd 100644
99
--- a/net/minecraft/server/level/ServerLevel.java
1010
+++ b/net/minecraft/server/level/ServerLevel.java
11-
@@ -612,7 +612,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
12-
super(serverLevelData, dimension, server.registryAccess(), levelStem.type(), false, isDebug, biomeZoomSeed, server.getMaxChainedNeighborUpdates(), gen, biomeProvider, env, spigotConfig -> server.paperConfigurations.createWorldConfig(io.papermc.paper.configuration.PaperConfigurations.createWorldContextMap(levelStorageAccess.levelDirectory.path(), serverLevelData.getLevelName(), dimension.location(), spigotConfig, server.registryAccess(), serverLevelData.getGameRules())), dispatcher); // Paper - create paper world configs; Async-Anti-Xray: Pass executor
13-
this.pvpMode = server.isPvpAllowed();
11+
@@ -636,7 +636,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
12+
// CraftBukkit start
13+
super(serverLevelData, dimension, server.registryAccess(), levelStem.type(), false, isDebug, biomeZoomSeed, server.getMaxChainedNeighborUpdates(), gen, biomeProvider, env, spigotConfig -> server.paperConfigurations.createWorldConfig(io.papermc.paper.configuration.PaperConfigurations.createWorldContextMap(levelStorageAccess.levelDirectory.path(), serverLevelData.getLevelName(), dimension.location(), spigotConfig, server.registryAccess(), serverLevelData.getGameRules())), dispatcher); // Paper - create paper world configs & Async-Anti-Xray: Pass executor
1414
this.levelStorageAccess = levelStorageAccess;
1515
- this.uuid = org.bukkit.craftbukkit.util.WorldUUID.getOrCreate(levelStorageAccess.levelDirectory.path().toFile());
1616
+ this.uuid = bootstrap == null ? org.bukkit.craftbukkit.util.WorldUUID.getOrCreate(levelStorageAccess.levelDirectory.path().toFile()) : java.util.UUID.randomUUID(); //ASP - avoid IO calls
17+
this.levelLoadListener = new net.minecraft.server.level.progress.LoggingLevelLoadListener(false, this);
1718
// CraftBukkit end
1819
this.tickTime = tickTime;
19-
this.server = server;

aspaper-server/minecraft-patches/features/0002-World-overrides.patch

Lines changed: 0 additions & 44 deletions
This file was deleted.

aspaper-server/minecraft-patches/features/0004-Prevent-config-disk-io-on-world-load.patch renamed to aspaper-server/minecraft-patches/features/0003-Prevent-config-disk-io-on-world-load.patch

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,23 @@ Subject: [PATCH] Prevent config disk io on world load
55

66

77
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
8-
index 939605ce630ab66b7236962dec3ae61ed23dc222..51cfeb87385b7e40922049a197a417a3892c2fce 100644
8+
index c394731283ee3344a8e21d3b2d0f75470e4f6bfd..db13c732fdea20e28130a89b40bbe8662d4873da 100644
99
--- a/net/minecraft/server/level/ServerLevel.java
1010
+++ b/net/minecraft/server/level/ServerLevel.java
11-
@@ -609,7 +609,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
11+
@@ -634,7 +634,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
1212
) {
1313
//ASP end
1414
// CraftBukkit start
15-
- super(serverLevelData, dimension, server.registryAccess(), levelStem.type(), false, isDebug, biomeZoomSeed, server.getMaxChainedNeighborUpdates(), gen, biomeProvider, env, spigotConfig -> server.paperConfigurations.createWorldConfig(io.papermc.paper.configuration.PaperConfigurations.createWorldContextMap(levelStorageAccess.levelDirectory.path(), serverLevelData.getLevelName(), dimension.location(), spigotConfig, server.registryAccess(), serverLevelData.getGameRules())), dispatcher); // Paper - create paper world configs; Async-Anti-Xray: Pass executor
16-
+ super(serverLevelData, dimension, server.registryAccess(), levelStem.type(), false, isDebug, biomeZoomSeed, server.getMaxChainedNeighborUpdates(), gen, biomeProvider, env, spigotConfig -> bootstrap != null ? com.infernalsuite.asp.config.SlimePaperWorldConfig.initializeOrGet() : server.paperConfigurations.createWorldConfig(io.papermc.paper.configuration.PaperConfigurations.createWorldContextMap(levelStorageAccess.levelDirectory.path(), serverLevelData.getLevelName(), dimension.location(), spigotConfig, server.registryAccess(), serverLevelData.getGameRules())), dispatcher); // Paper - create paper world configs; Async-Anti-Xray: Pass executor //ASP - Optimize world config
17-
this.pvpMode = server.isPvpAllowed();
15+
- super(serverLevelData, dimension, server.registryAccess(), levelStem.type(), false, isDebug, biomeZoomSeed, server.getMaxChainedNeighborUpdates(), gen, biomeProvider, env, spigotConfig -> server.paperConfigurations.createWorldConfig(io.papermc.paper.configuration.PaperConfigurations.createWorldContextMap(levelStorageAccess.levelDirectory.path(), serverLevelData.getLevelName(), dimension.location(), spigotConfig, server.registryAccess(), serverLevelData.getGameRules())), dispatcher); // Paper - create paper world configs & Async-Anti-Xray: Pass executor
16+
+ super(serverLevelData, dimension, server.registryAccess(), levelStem.type(), false, isDebug, biomeZoomSeed, server.getMaxChainedNeighborUpdates(), gen, biomeProvider, env, spigotConfig -> bootstrap != null ? com.infernalsuite.asp.config.SlimePaperWorldConfig.initializeOrGet() : server.paperConfigurations.createWorldConfig(io.papermc.paper.configuration.PaperConfigurations.createWorldContextMap(levelStorageAccess.levelDirectory.path(), serverLevelData.getLevelName(), dimension.location(), spigotConfig, server.registryAccess(), serverLevelData.getGameRules())), dispatcher); // Paper - create paper world configs & Async-Anti-Xray: Pass executor //ASP - Optimize world config
1817
this.levelStorageAccess = levelStorageAccess;
1918
this.uuid = bootstrap == null ? org.bukkit.craftbukkit.util.WorldUUID.getOrCreate(levelStorageAccess.levelDirectory.path().toFile()) : java.util.UUID.randomUUID(); //ASP - avoid IO calls
19+
this.levelLoadListener = new net.minecraft.server.level.progress.LoggingLevelLoadListener(false, this);
2020
diff --git a/net/minecraft/world/level/Level.java b/net/minecraft/world/level/Level.java
21-
index e4b9a564aad3d9b673808caa18265b06592ceab8..8bb30eba86b74f155ef9580dc6c01d761e23dd5a 100644
21+
index d225267b1b07854b76c88ce461d7817a86d023a0..de152aca205954d33cf2997043cb8c91b9587cdf 100644
2222
--- a/net/minecraft/world/level/Level.java
2323
+++ b/net/minecraft/world/level/Level.java
24-
@@ -838,7 +838,7 @@ public abstract class Level implements LevelAccessor, UUIDLookup<Entity>, AutoCl
24+
@@ -844,7 +844,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
2525
this.maxSectionY = this.maxY >> 4;
2626
this.sectionsCount = this.maxSectionY - this.minSectionY + 1;
2727
// Paper end - getblock optimisations - cache world height/sections

aspaper-server/minecraft-patches/features/0005-Read-only-dimension-data-store.patch renamed to aspaper-server/minecraft-patches/features/0004-Read-only-dimension-data-store.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ Subject: [PATCH] Read only dimension data store
55

66

77
diff --git a/net/minecraft/server/level/ServerChunkCache.java b/net/minecraft/server/level/ServerChunkCache.java
8-
index 5d63bf024cbcbd2f627c64fee77553c9a512bd15..da169d319e9c09de2d5a34784af4e4c133b10f46 100644
8+
index 413f0673557b9e3f9177d15e9bef61bded209e34..ebc9373bb3a48ef41d54d445c1aa02fe06d83cff 100644
99
--- a/net/minecraft/server/level/ServerChunkCache.java
1010
+++ b/net/minecraft/server/level/ServerChunkCache.java
1111
@@ -210,7 +210,13 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
12-
LOGGER.error("Failed to create dimension data storage directory", (Throwable)var15);
12+
LOGGER.error("Failed to create dimension data storage directory", (Throwable)var14);
1313
}
1414

1515
- this.dataStorage = new DimensionDataStorage(new SavedData.Context(level), path, fixerUpper, level.registryAccess());

aspaper-server/minecraft-patches/sources/ca/spottedleaf/moonrise/paper/PaperHooks.java.patch

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
--- a/ca/spottedleaf/moonrise/paper/PaperHooks.java
22
+++ b/ca/spottedleaf/moonrise/paper/PaperHooks.java
3-
@@ -206,6 +_,7 @@
3+
@@ -214,6 +_,7 @@
44

55
@Override
66
public boolean forceNoSave(final ChunkAccess chunk) {

0 commit comments

Comments
 (0)