Files
Purpur/purpur-server/paper-patches/features/0004-Configurable-void-damage-height-and-damage.patch
granny 2d3cfe0a56 Updated Upstream (Paper)
Upstream has released updates that appear to apply and compile correctly

Paper Changes:
PaperMC/Paper@fd4c6f19 Break MushroomCow parent
PaperMC/Paper@be8889d1 getSelected to getSelectedItem
PaperMC/Paper@2db2ec9e few random compile fixes
PaperMC/Paper@98fac014 format remaining spigot code and make Dolphin#treasurePos nullable
PaperMC/Paper@33f3a111 More compilation issues
PaperMC/Paper@1e27cd9f PlayerInventory
PaperMC/Paper@b5e234d0 Unsafe block entity pos reading in ItemStack
PaperMC/Paper@955ba6c3 update block data
PaperMC/Paper@49117c0e update block states
PaperMC/Paper@6034384b make CraftCow extends CraftAbstractCow
PaperMC/Paper@e28be7d2 chore: update paperweight
PaperMC/Paper@dbc5c19c Remove mavenLocal ref for initial pw snapshots
PaperMC/Paper@2445c79f do a full clone in the action for now
PaperMC/Paper@7633dde2 move things around
PaperMC/Paper@564344fe More compiler issues
PaperMC/Paper@907f1931 bump built-in datapack version and api-version
PaperMC/Paper@bf417ba7 tag renames
PaperMC/Paper@7f6f64f4 cat and frog variants registries are now data-driven
PaperMC/Paper@3124c702 add new particles
PaperMC/Paper@17ea49c2 tag changes and update some mapping
PaperMC/Paper@8107eb0f Partial raid changes
PaperMC/Paper@a1334d3b Missed local diff
PaperMC/Paper@1a4367ed Use Holderable in more places
PaperMC/Paper@f990b858 preserve update flag for block placement around API
PaperMC/Paper@f1424fbf Compile fixes
PaperMC/Paper@c2e18c6a fixup diffs
PaperMC/Paper@960ad6e0 remove redundant flags and check place result
PaperMC/Paper@9c01f0cd fix wrong event call for cactus growth
PaperMC/Paper@4b3d802b fix broken liquid physics during structure placement
PaperMC/Paper@28fbc7b6 fix damage modifier a bit
PaperMC/Paper@c6e7ebcc re-add missed distance check
PaperMC/Paper@8e4021aa add dropped local var after decompilation in AgeableMob#ageUp
PaperMC/Paper@4d28058a make cactus max grow height config consistent with flower chance
PaperMC/Paper@d4b5936c some fixes and simplify overrides
PaperMC/Paper@57876760 Use -> uses in particle javadocs
PaperMC/Paper@43505dca Start updating feature patches
PaperMC/Paper@3ab0d4b6 misc changes
PaperMC/Paper@b80114b2 fix broken AT
PaperMC/Paper@56ed2dc6 More feature patches
PaperMC/Paper@460b99e7 Compile fixes
PaperMC/Paper@3bf99764 more misc changes
PaperMC/Paper@c2c47249 readd wrongly dropped diff
PaperMC/Paper@3459b68d fix some feature patches
2025-03-21 22:23:05 -07:00

116 lines
6.8 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Thu, 27 Feb 2020 21:42:19 -0600
Subject: [PATCH] Configurable void damage height and damage
temporarily migrate to paper's config
drop patch on the next minecraft release
diff --git a/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java b/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java
index e48fa405d92fab221fa8331b65c8f324e801d439..e319d6337811051de478d584a37015c450960701 100644
--- a/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java
+++ b/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java
@@ -267,6 +267,7 @@ public class PaperConfigurations extends Configurations<GlobalConfiguration, Wor
for (final NodePath path : RemovedConfigurations.REMOVED_WORLD_PATHS) {
builder.addAction(path, TransformAction.remove());
}
+ org.purpurmc.purpur.configuration.transformation.VoidDamageHeightMigration.apply(builder, contextMap); // Purpur - Configurable void damage height and damage
builder.build().apply(node);
final ConfigurationTransformation.VersionedBuilder versionedBuilder = Transformations.versionedBuilder();
diff --git a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
index 9511f978f6c7da506f67928f5a5a92ecf28e5930..65f6839fe75340a4b58894ad50c6eda7b59128c0 100644
--- a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
+++ b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
@@ -402,6 +402,7 @@ public class WorldConfiguration extends ConfigurationPart {
public boolean useVanillaWorldScoreboardNameColoring = false;
}
+ @Setting(org.purpurmc.purpur.configuration.transformation.VoidDamageHeightMigration.ENVIRONMENT_KEY) // Purpur - Configurable void damage height and damage
public Environment environment;
public class Environment extends ConfigurationPart {
@@ -411,7 +412,9 @@ public class WorldConfiguration extends ConfigurationPart {
public boolean disableExplosionKnockback = false;
public boolean generateFlatBedrock = false;
public FrostedIce frostedIce;
+ @Setting(org.purpurmc.purpur.configuration.transformation.VoidDamageHeightMigration.VOID_DAMAGE_KEY) // Purpur - Configurable void damage height and damage
public DoubleOr.Disabled voidDamageAmount = new DoubleOr.Disabled(OptionalDouble.of(4));
+ @Setting(org.purpurmc.purpur.configuration.transformation.VoidDamageHeightMigration.VOID_DAMAGE_MIN_HEIGHT_OFFSET_KEY) // Purpur - Configurable void damage height and damage
public double voidDamageMinBuildHeightOffset = -64.0;
public class FrostedIce extends ConfigurationPart {
diff --git a/src/main/java/org/purpurmc/purpur/configuration/transformation/VoidDamageHeightMigration.java b/src/main/java/org/purpurmc/purpur/configuration/transformation/VoidDamageHeightMigration.java
new file mode 100644
index 0000000000000000000000000000000000000000..a04d23bd98075cd65a24d4de8d18281d1668480f
--- /dev/null
+++ b/src/main/java/org/purpurmc/purpur/configuration/transformation/VoidDamageHeightMigration.java
@@ -0,0 +1,67 @@
+package org.purpurmc.purpur.configuration.transformation;
+
+import io.papermc.paper.configuration.Configurations;
+import io.papermc.paper.configuration.PaperConfigurations;
+import io.papermc.paper.configuration.type.number.DoubleOr;
+import java.util.OptionalDouble;
+import org.checkerframework.checker.nullness.qual.Nullable;
+import org.purpurmc.purpur.PurpurConfig;
+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 static org.spongepowered.configurate.NodePath.path;
+
+public class VoidDamageHeightMigration implements TransformAction {
+
+ public static boolean HAS_BEEN_REGISTERED = false;
+
+ public static final String ENVIRONMENT_KEY = "environment";
+ public static final String VOID_DAMAGE_KEY = "void-damage-amount";
+ public static final String VOID_DAMAGE_MIN_HEIGHT_OFFSET_KEY = "void-damage-min-build-height-offset";
+ public static final double DEFAULT_VOID_DAMAGE_HEIGHT = -64.0D;
+ public static final double DEFAULT_VOID_DAMAGE = 4.0D;
+
+ private final String worldName;
+
+ private VoidDamageHeightMigration(String worldName) {
+ this.worldName = PaperConfigurations.WORLD_DEFAULTS.equals(worldName) ? "default" : worldName;
+ }
+
+ @Override
+ public Object @Nullable [] visitPath(final NodePath path, final ConfigurationNode value) throws ConfigurateException {
+ String purpurVoidDamageHeightPath = "world-settings." + this.worldName + ".gameplay-mechanics.void-damage-height";
+ ConfigurationNode voidDamageMinHeightOffsetNode = value.node(ENVIRONMENT_KEY, VOID_DAMAGE_MIN_HEIGHT_OFFSET_KEY);
+ if (PurpurConfig.config.contains(purpurVoidDamageHeightPath)) {
+ double purpurVoidDamageHeight = PurpurConfig.config.getDouble(purpurVoidDamageHeightPath);
+ if (purpurVoidDamageHeight != DEFAULT_VOID_DAMAGE_HEIGHT && (voidDamageMinHeightOffsetNode.empty() || voidDamageMinHeightOffsetNode.getDouble() == DEFAULT_VOID_DAMAGE_HEIGHT)) {
+ voidDamageMinHeightOffsetNode.raw(null);
+ voidDamageMinHeightOffsetNode.set(purpurVoidDamageHeight);
+ }
+ PurpurConfig.config.set(purpurVoidDamageHeightPath, null);
+ }
+
+ String purpurVoidDamagePath = "world-settings." + this.worldName + ".gameplay-mechanics.void-damage-dealt";
+ ConfigurationNode voidDamageNode = value.node(ENVIRONMENT_KEY, VOID_DAMAGE_KEY);
+ if (PurpurConfig.config.contains(purpurVoidDamagePath)) {
+ double purpurVoidDamage = PurpurConfig.config.getDouble(purpurVoidDamagePath);
+ if (purpurVoidDamage != DEFAULT_VOID_DAMAGE && (voidDamageNode.empty() || voidDamageNode.getDouble() == DEFAULT_VOID_DAMAGE)) {
+ voidDamageNode.raw(null);
+ voidDamageNode.set(new DoubleOr.Disabled(OptionalDouble.of(purpurVoidDamage)));
+ }
+ PurpurConfig.config.set(purpurVoidDamagePath, null);
+ }
+
+ return null;
+ }
+
+ public static void apply(final ConfigurationTransformation.Builder builder, final Configurations.ContextMap contextMap) {
+ if (PurpurConfig.version < 36) {
+ HAS_BEEN_REGISTERED = true;
+ builder.addAction(path(), new VoidDamageHeightMigration(contextMap.require(Configurations.WORLD_NAME)));
+ }
+ }
+
+}