From 28fccff6c4d539a1b30b9d9687f64697f60a95dd Mon Sep 17 00:00:00 2001 From: Samsuik Date: Sun, 26 May 2024 18:13:35 +0100 Subject: [PATCH] Combine `loads-chunks` into a single config option --- .../0003-Sakura-Configuration-Files.patch | 65 +++++++++++++++++-- .../server/0009-Load-Chunks-on-Movement.patch | 8 +-- patches/server/0025-Cannon-Mechanics.patch | 6 +- 3 files changed, 65 insertions(+), 14 deletions(-) diff --git a/patches/server/0003-Sakura-Configuration-Files.patch b/patches/server/0003-Sakura-Configuration-Files.patch index 1a834c7..2ccb2d2 100644 --- a/patches/server/0003-Sakura-Configuration-Files.patch +++ b/patches/server/0003-Sakura-Configuration-Files.patch @@ -388,10 +388,10 @@ index 0000000000000000000000000000000000000000..5296d4e0a1041932e36562f42fbf3e1d +} diff --git a/src/main/java/me/samsuik/sakura/configuration/SakuraConfigurations.java b/src/main/java/me/samsuik/sakura/configuration/SakuraConfigurations.java new file mode 100644 -index 0000000000000000000000000000000000000000..f8770f97e3ad6c2746bc436b2b2c895cecd43996 +index 0000000000000000000000000000000000000000..b5c2471a2982f5a5ab64620e906766460498095c --- /dev/null +++ b/src/main/java/me/samsuik/sakura/configuration/SakuraConfigurations.java -@@ -0,0 +1,253 @@ +@@ -0,0 +1,255 @@ +package me.samsuik.sakura.configuration; + +import com.google.common.collect.Table; @@ -418,6 +418,7 @@ index 0000000000000000000000000000000000000000..f8770f97e3ad6c2746bc436b2b2c895c +import me.samsuik.sakura.configuration.transformation.world.V3_RenameKnockback; +import me.samsuik.sakura.configuration.transformation.world.V2_VerticalKnockbackUseDefault; +import me.samsuik.sakura.configuration.transformation.world.V4_RenameNonStrictMergeLevel; ++import me.samsuik.sakura.configuration.transformation.world.V5_CombineLoadChunksOptions; +import net.minecraft.core.RegistryAccess; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceLocation; @@ -581,6 +582,7 @@ index 0000000000000000000000000000000000000000..f8770f97e3ad6c2746bc436b2b2c895c + V2_VerticalKnockbackUseDefault.apply(versionedBuilder); + V3_RenameKnockback.apply(versionedBuilder); + V4_RenameNonStrictMergeLevel.apply(versionedBuilder); ++ V5_CombineLoadChunksOptions.apply(versionedBuilder); + // ADD FUTURE VERSIONED TRANSFORMS TO versionedBuilder HERE + versionedBuilder.build().apply(node); + } @@ -647,10 +649,10 @@ index 0000000000000000000000000000000000000000..f8770f97e3ad6c2746bc436b2b2c895c +} diff --git a/src/main/java/me/samsuik/sakura/configuration/WorldConfiguration.java b/src/main/java/me/samsuik/sakura/configuration/WorldConfiguration.java new file mode 100644 -index 0000000000000000000000000000000000000000..33ead866ae736fd191ed97ed8e9b8e30292e6fe6 +index 0000000000000000000000000000000000000000..f9fe1024c3e5681abe9823d71582d83b50d3c6b0 --- /dev/null +++ b/src/main/java/me/samsuik/sakura/configuration/WorldConfiguration.java -@@ -0,0 +1,205 @@ +@@ -0,0 +1,204 @@ +package me.samsuik.sakura.configuration; + +import com.mojang.logging.LogUtils; @@ -682,7 +684,7 @@ index 0000000000000000000000000000000000000000..33ead866ae736fd191ed97ed8e9b8e30 +public class WorldConfiguration extends ConfigurationPart { + + private static final Logger LOGGER = LogUtils.getClassLogger(); -+ static final int CURRENT_VERSION = 4; // (when you change the version, change the comment, so it conflicts on rebases): rename filter bad nbt from spawn eggs ++ static final int CURRENT_VERSION = 5; // (when you change the version, change the comment, so it conflicts on rebases): rename filter bad nbt from spawn eggs + + private transient final ResourceLocation worldKey; + WorldConfiguration(ResourceLocation worldKey) { @@ -705,16 +707,15 @@ index 0000000000000000000000000000000000000000..33ead866ae736fd191ed97ed8e9b8e30 + public boolean treatAllBlocksAsFullWhenMoving = false; + @NestedSetting({"treat-collidable-blocks-as-full", "moving-faster-than"}) + public double treatAllBlocksAsFullWhenMovingFasterThan = 64.0; ++ public boolean loadChunks = false; + + public Tnt tnt = new Tnt(); + public class Tnt extends ConfigurationPart { -+ public boolean loadsChunks; + public boolean forcePositionUpdates; + } + + public Sand sand = new Sand(); + public class Sand extends ConfigurationPart { -+ public boolean loadsChunks; + public boolean despawnInsideMovingPistons = true; + public boolean concreteSolidifyInWater = true; + @@ -967,6 +968,56 @@ index 0000000000000000000000000000000000000000..198eb5f030ec5def4d93dec51dde3522 + return null; + } +} +diff --git a/src/main/java/me/samsuik/sakura/configuration/transformation/world/V5_CombineLoadChunksOptions.java b/src/main/java/me/samsuik/sakura/configuration/transformation/world/V5_CombineLoadChunksOptions.java +new file mode 100644 +index 0000000000000000000000000000000000000000..3d647a3db0862232f158d823da9a797d4e0d5608 +--- /dev/null ++++ b/src/main/java/me/samsuik/sakura/configuration/transformation/world/V5_CombineLoadChunksOptions.java +@@ -0,0 +1,44 @@ ++package me.samsuik.sakura.configuration.transformation.world; ++ ++import org.checkerframework.checker.nullness.qual.Nullable; ++import org.spongepowered.configurate.ConfigurateException; ++import org.spongepowered.configurate.ConfigurationNode; ++import org.spongepowered.configurate.NodePath; ++import org.spongepowered.configurate.transformation.ConfigurationTransformation; ++import org.spongepowered.configurate.transformation.TransformAction; ++ ++import java.util.List; ++ ++import static org.spongepowered.configurate.NodePath.path; ++ ++public final class V5_CombineLoadChunksOptions implements TransformAction { ++ private static final int VERSION = 5; ++ private static final List ENTITY_PATHS = List.of("tnt", "sand"); ++ private static final String OLD_NAME = "loads-chunks"; ++ private static final String NAME = "load-chunks"; ++ private static final NodePath PATH = path("cannons"); ++ private static final V5_CombineLoadChunksOptions INSTANCE = new V5_CombineLoadChunksOptions(); ++ ++ private V5_CombineLoadChunksOptions() {} ++ ++ public static void apply(ConfigurationTransformation.VersionedBuilder builder) { ++ builder.addVersion(VERSION, ConfigurationTransformation.builder().addAction(PATH, INSTANCE).build()); ++ } ++ ++ @Override ++ public Object @Nullable [] visitPath(NodePath path, ConfigurationNode value) throws ConfigurateException { ++ boolean shouldLoadChunks = false; ++ ++ for (String entity : ENTITY_PATHS) { ++ NodePath entityPath = NodePath.path(entity, OLD_NAME); ++ if (value.hasChild(entityPath)) { ++ ConfigurationNode node = value.node(entityPath); ++ shouldLoadChunks |= node.getBoolean(); ++ node.raw(null); ++ } ++ } ++ ++ value.node(NAME).set(shouldLoadChunks); ++ return null; ++ } ++} diff --git a/src/main/java/me/samsuik/sakura/explosion/durable/DurableMaterial.java b/src/main/java/me/samsuik/sakura/explosion/durable/DurableMaterial.java new file mode 100644 index 0000000000000000000000000000000000000000..4024f9738e039ffffd560a07a2210f758879d3c0 diff --git a/patches/server/0009-Load-Chunks-on-Movement.patch b/patches/server/0009-Load-Chunks-on-Movement.patch index 0b21275..fd10a62 100644 --- a/patches/server/0009-Load-Chunks-on-Movement.patch +++ b/patches/server/0009-Load-Chunks-on-Movement.patch @@ -99,26 +99,26 @@ index 5fbcdbaf4c0344dc3e8fff7bf31c2b021a0ae6cf..6e217474e7224cc5cc0a9818d39233c6 public boolean mayInteract(Level world, BlockPos pos) { diff --git a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java -index 91aa2714bae3f8f5d0fb76426b2b8cfc61941f54..aae2093c42d76af5bdb0d4bda3e5ee362a2143e3 100644 +index 91aa2714bae3f8f5d0fb76426b2b8cfc61941f54..eb2f4fcfe04cb5aa135590b620927ffbe12c8a1e 100644 --- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java @@ -75,6 +75,7 @@ public class FallingBlockEntity extends Entity { this.dropItem = true; this.fallDamageMax = 40; this.isFallingBlock = true; // Sakura -+ this.loadChunks = world.sakuraConfig().cannons.sand.loadsChunks; // Sakura - load chunks ++ this.loadChunks = world.sakuraConfig().cannons.loadChunks; // Sakura - falling blocks load chunks } public FallingBlockEntity(Level world, double x, double y, double z, BlockState block) { diff --git a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java -index 5aa02f28b6be60688e340099b1637fb0ebfe7aa9..7a5ea7e0ea063eb0355dea89746a0e581548d131 100644 +index 5aa02f28b6be60688e340099b1637fb0ebfe7aa9..2202138b4ee5d78c9d67f0d53516d135ac9dc745 100644 --- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java +++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java @@ -40,6 +40,7 @@ public class PrimedTnt extends Entity implements TraceableEntity { super(type, world); this.blocksBuilding = true; this.isPrimedTNT = true; // Sakura -+ this.loadChunks = world.sakuraConfig().cannons.tnt.loadsChunks; // Sakura - load chunks ++ this.loadChunks = world.sakuraConfig().cannons.loadChunks; // Sakura - tnt load chunks } public PrimedTnt(Level world, double x, double y, double z, @Nullable LivingEntity igniter) { diff --git a/patches/server/0025-Cannon-Mechanics.patch b/patches/server/0025-Cannon-Mechanics.patch index 68d267c..3081b24 100644 --- a/patches/server/0025-Cannon-Mechanics.patch +++ b/patches/server/0025-Cannon-Mechanics.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Cannon Mechanics diff --git a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java -index 16a8b667f50700a85f1c14f3a7ed3098e732321a..fd7524b3aae54bc62dce1c54666f18ad0ea230b4 100644 +index 63490856a582db74c47e87d3a2ee414ce2456643..2b6ca6a04013f684397ede74f1d3a295b2dbafd7 100644 --- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java @@ -68,6 +68,7 @@ public class FallingBlockEntity extends Entity { @@ -19,7 +19,7 @@ index 16a8b667f50700a85f1c14f3a7ed3098e732321a..fd7524b3aae54bc62dce1c54666f18ad @@ -76,6 +77,7 @@ public class FallingBlockEntity extends Entity { this.fallDamageMax = 40; this.isFallingBlock = true; // Sakura - this.loadChunks = world.sakuraConfig().cannons.sand.loadsChunks; // Sakura - load chunks + this.loadChunks = world.sakuraConfig().cannons.loadChunks; // Sakura - falling blocks load chunks + this.heightParity = world.sakuraConfig().cannons.mechanics.fallingBlockParity; // Sakura - configure cannon mechanics } @@ -38,7 +38,7 @@ index 16a8b667f50700a85f1c14f3a7ed3098e732321a..fd7524b3aae54bc62dce1c54666f18ad @Override public void tick() { diff --git a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java -index 491dab62dda6e24bda5b01364a2adbf51ad74ef6..403cfb14dff46a405a1476f6806020e9a2c9a941 100644 +index dbebba5c36b034270d4c238966957bc25a35aa86..5bc7e9c135d02fe8817643bd21d8f245a6e984df 100644 --- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java +++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java @@ -54,6 +54,12 @@ public class PrimedTnt extends Entity implements TraceableEntity {