9
0
mirror of https://github.com/Samsuik/Sakura.git synced 2026-01-06 15:41:49 +00:00

Combine loads-chunks into a single config option

This commit is contained in:
Samsuik
2024-05-26 18:13:35 +01:00
parent 2715110545
commit a5ba073ea0
3 changed files with 65 additions and 14 deletions

View File

@@ -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..703c030f4d8afbbec985a87d291b434dd5a3d270
index 0000000000000000000000000000000000000000..b9c016cca8cd6485f4554485a34a6f19c71e9acd
--- /dev/null
+++ b/src/main/java/me/samsuik/sakura/configuration/SakuraConfigurations.java
@@ -0,0 +1,254 @@
@@ -0,0 +1,256 @@
+package me.samsuik.sakura.configuration;
+
+import com.google.common.collect.Table;
@@ -418,6 +418,7 @@ index 0000000000000000000000000000000000000000..703c030f4d8afbbec985a87d291b434d
+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;
@@ -582,6 +583,7 @@ index 0000000000000000000000000000000000000000..703c030f4d8afbbec985a87d291b434d
+ 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);
+ }
@@ -648,10 +650,10 @@ index 0000000000000000000000000000000000000000..703c030f4d8afbbec985a87d291b434d
+}
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;
@@ -683,7 +685,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) {
@@ -706,16 +708,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;
+
@@ -968,6 +969,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<String> 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

View File

@@ -99,26 +99,26 @@ index 9aebb8f4c98eec7ece2eed012971d417062f76d0..495d8b5606457e9bfbe63199855dcd21
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 7da6420aed597ee1bf544059c79a063512adcd40..d9668a752b06b560730973ebc82251d2cb8b7123 100644
index 7da6420aed597ee1bf544059c79a063512adcd40..b6a4753252b748c06a62b7faa6b05c1fb904d62e 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 bbf6b4f705b3e9b289a7fdf82a78ef02f777297d..431b02599b7e3f2730841c8136460177aca37f3b 100644
index bbf6b4f705b3e9b289a7fdf82a78ef02f777297d..09f09a8fbf0eee62295001ce5b7ed5329445d2b0 100644
--- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
+++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
@@ -38,6 +38,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) {

View File

@@ -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 ee38d2a82f9f0056ebb6579868df8c4709cd7b41..fe21305f66cc60e2036d2023f5f49e4a23e014dc 100644
index eec86ec7088079f31a5348089f47f29e7a1adaa8..755c620be47f3f93852ac5e916b14d3c94167f27 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 ee38d2a82f9f0056ebb6579868df8c4709cd7b41..fe21305f66cc60e2036d2023f5f49e4a
@@ -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 ee38d2a82f9f0056ebb6579868df8c4709cd7b41..fe21305f66cc60e2036d2023f5f49e4a
@Override
protected double getDefaultGravity() {
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 85b2cfd067c71eed3a5a8007ed6e933e9609f94d..469bc508416ae44546c655a23d9bc2572078ccb5 100644
index d3073a058e4d200b0146d7b72ef3cd56a6a1d8d8..8760cfe061e33ac257c5fcf9c0833ba5b470d95b 100644
--- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
+++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
@@ -52,6 +52,12 @@ public class PrimedTnt extends Entity implements TraceableEntity {