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

Paper Changes:
PaperMC/Paper@46c6f49 Fix Registry#getKey implementation
PaperMC/Paper@4c6ea84 move junit platform dep to -server and -api
PaperMC/Paper@c31d95e remove test plugin diff accidentally committed
PaperMC/Paper@90d50aa update .editorconfig
PaperMC/Paper@8ad15d6 Update minecraft dir references
PaperMC/Paper@083c083 Fix a bunch more issues arising from mutable types (#11769)
PaperMC/Paper@eb793c3 [ci skip] more cleanup from repo reorg
PaperMC/Paper@f8bf600 Fix potion effect type removal (#11778)
PaperMC/Paper@188124b Fix totems negating incorrect item (#11776)
PaperMC/Paper@a0b3326 refactor registry entry to detach 'delayed' from other meta
PaperMC/Paper@cbf630d Move missing import into feature patches to fix pre-features compile
PaperMC/Paper@17f649d Fix PlayerTradeEvent visual issue when being cancelled (#11773)
PaperMC/Paper@976b0a4 [ci skip] Simplify and update contribution guidelines
PaperMC/Paper@63c94c9 [ci skip] Comment out update tasks, update comments
PaperMC/Paper@62d4130 [ci skip] Fix Inventory#addItem javadoc mismatch with behaviour (#11782)
PaperMC/Paper@bd4c235 Throw during plugin update folder process on failed rename/delete (#11784)
PaperMC/Paper@793d361 Fix recipe book items order (#11787)
PaperMC/Paper@c768099 Fix tripwires (#11790)
PaperMC/Paper@17d76ae Correctly die when cancelling EntityResurrectEvent (#11785)
PaperMC/Paper@aa2c52b Fix dropper inventory var
PaperMC/Paper@d0d0efe Partially revert 083c083188 for Transformation (#11798)
PaperMC/Paper@b8a0541 Fix 0 parameter in Player#applyMending (#11802)
PaperMC/Paper@9e2d39c Fix double chest identification (#11812)
PaperMC/Paper@321d17c [ci skip] Only build PRs on correct label (#11811)
PaperMC/Paper@d568e17 Port basic lookAt methods from Player to Entity (#11775)
PaperMC/Paper@25cc3d8 Fix EnchantmentView#setOffers length precondition being flipped (#11818)
PaperMC/Paper@763b32d Fix framed maps looping through all players in world (#11819)
PaperMC/Paper@946314f Remove disableTeleportationSuffocationCheck config (#11822)
PaperMC/Paper@140577b Fix broken field rename compat for instrument "feel_goat_horn" (#11824)
PaperMC/Paper@a07cec1 Add effective name to ItemStack (#11770)
PaperMC/Paper@3a479ea Add Registry#getTags (#11795)
PaperMC/Paper@d85d318 Fix NullPointerException in PlayerInteractEvent#getClickedPosition (#11827)
PaperMC/Paper@3331805 Deprecate #furnace_materials item tag (#11823)
PaperMC/Paper@c9a904e Fix keepalive logic resetting counter
PaperMC/Paper@a8f850a temporarily revert OldEnum toString changes (#11829)
PaperMC/Paper@a14c06b fix annotation test for null marked inner classes (#11826)
PaperMC/Paper@f51aa3e Fix BlockRedstoneEvent for tripwire hooks (#11791)
PaperMC/Paper@af2812f For new registry values, allow copying from existing (#11796)
PaperMC/Paper@0efd301 Fix suggestions for ResourceLocation (#11830)
PaperMC/Paper@aac246a Expand on entity serialization API (#11807)
PaperMC/Paper@953f6f9 Banner pattern registry modification (#11803)
PaperMC/Paper@a5b8df6 add tagkey file for entity type (#11832)
PaperMC/Paper@c530c39 More var name fixes
PaperMC/Paper@2b73d19 More var name fixes
PaperMC/Paper@326c687 Fix whack diff from last commit
PaperMC/Paper@13c94e4 Updated adventure to 4.18.0 (#11809)
PaperMC/Paper@ca8709b Fix more incorrect array nullability annotations (#11836)
PaperMC/Paper@e10dcbf [ci skip] Improve build workflow conditions (#11842)
PaperMC/Paper@b4051db Handle disabled vanilla registry values correctly (#11781)
PaperMC/Paper@4b89390 Fix contextual map renderer memory leak (#11841)
PaperMC/Paper@5c7537c Add DamageType RegistryEvent (#11783)
PaperMC/Paper@33411ec Properly remove UnsafeValues#getDamageEffect
PaperMC/Paper@0629524 Directly build Art (#11813)
PaperMC/Paper@e0abc5f Do not spawn fire for visual lightning (#11845)
PaperMC/Paper@dac977a Correctly force particles (#11850)
PaperMC/Paper@feb8756 Add datapack registration lifecycle event (#11804)
PaperMC/Paper@18da1ae [ci skip] update DiscoveredDatapack javadoc
PaperMC/Paper@93a3df0 Extend HumanEntity#dropItem API (#11810)
PaperMC/Paper@287eb52 Use hidden classes for event executors (#11848)
PaperMC/Paper@887f3f7 [ci skip] Replace FQN with import in EventExecutor
PaperMC/Paper@d00344a update jb annotations to 26.0.1 (#11860)
PaperMC/Paper@60edd61 [ci skip] Fix spelling of ignition's word into javadoc (#11864)
PaperMC/Paper@a81990e Update mache, fixes dev bundle use with Java 23
PaperMC/Paper@1e4669e [ci skip] Clarify loot table behavior when set to null. (#11861)
PaperMC/Paper@9298f59 Update paperweight to 2.0.0-beta.10
PaperMC/Paper@bdfad1c Add sendRich/PlainMessage methods to Server (#11872)
PaperMC/Paper@1dd52be Use playerlist whitelist status instead of properties
PaperMC/Paper@83995d7 Fix settings changes not being saved (#11881)
PaperMC/Paper@daddcf6 Fix JOML javadoc URL (#11883)
PaperMC/Paper@edde726 [ci skip] Add missing Nullable annotations for NMS DamageSource (#11875)
PaperMC/Paper@4106da7 Fix retain passengers teleport flag (#11858)
PaperMC/Paper@6ab1352 Improve performance of PoiCompetitorScan by unrolling stream (#11871)
PaperMC/Paper@33a590b Fix TargetHitEvent#getSignalStrength() post-hard-fork (#11897)
PaperMC/Paper@f367f10 Add rotation helpers to Location (#11908)
PaperMC/Paper@9f90b4c Fix ItemDamageEvents called for 0 damage (#11900)
PaperMC/Paper@486e521 Re-add droped MapLike spam fix (#11917)
PaperMC/Paper@3375570 Fix MapCanvas#drawImage (#11865)
PaperMC/Paper@49d15f6 Fix DiscoveredDatapack#getSource (#11928)
PaperMC/Paper@b34ae4f Fix wolves ignoring result of damage event (#11932)
PaperMC/Paper@efdcaa2 Fix removing the "LootTable" nbt tag from Block entities (#11929)
PaperMC/Paper@55f3f28 Reimplement ItemStack Obfuscation (#11817)
PaperMC/Paper@08fc33c Update CustomTimingsHandler Nag Message (#11923)
PaperMC/Paper@5e14504 [ci skip] Add missing deprecated docs for isEnabledByFeature (#11938)
PaperMC/Paper@4007171 Correct obfuscation of oversized items (#11944)
PaperMC/Paper@1b38f28 Fix reading recipes used on furnace (#11947)
PaperMC/Paper@b03d39b [ci skip] Update paperweight to 2.0.0-beta.13
PaperMC/Paper@6316a50 Make CraftServer#isPrimaryThread use TickThread check
PaperMC/Paper@ea7b961 Fix MapItem incorectly fetching water biomes on treasure maps (#11936)
PaperMC/Paper@b242f1e Prevent day cycle on the client when using fixed time (#11924)
PaperMC/Paper@3e42518 Fix snow accumulating in custom biomes without precipitation (#11854)
PaperMC/Paper@3d9ecc4 Log thread check parameters when the thread check fails
PaperMC/Paper@3ad3fbc Update to Concurrentutil 0.0.3
PaperMC/Paper@79ffcd1 Fix vanilla parity on enchantable items with no targets (#11896)
PaperMC/Paper@19ddbef Fix InventoryAction wrong for Bundles (#11902)
PaperMC/Paper@ac3aaa2 Don't use delayed registries in impl anywhere (#11918)
PaperMC/Paper@775002a [ci skip] Remove nullable from SyncedEntityData#packAll (#11949)
PaperMC/Paper@c949225 MenuType API addition InventoryView Builders (#11816)
PaperMC/Paper@c2f24e1 Feat: Add 'with' methods to CommandSourceStack (#11868)
PaperMC/Paper@ed75b0e Disallow calling JavaPlugin#getCommand during onEnable for Paper plugins (#11914)
PaperMC/Paper@08ac057 Rename getPotentialBedLocation to getPotentialRespawnLocation (#11950)
PaperMC/Paper@9746d73 Add back known movement check
PaperMC/Paper@e5542cf Hide unnecessary decorated pot data (#11957)
PaperMC/Paper@eb4db79 Make CommandSourceStack respect hidden players (#11898)
PaperMC/Paper@76617dd Add EntityEffectTickEvent (#11838)
PaperMC/Paper@86c6308 Fix locate command dist overflow/underflow (#11956)
PaperMC/Paper@2ea6aee Deprecate Turtle#isDigging (#11959)
PaperMC/Paper@ad74b67 Fix client visual desync if cooldown events are cancelled (#11892)
PaperMC/Paper@50c2c59 Fix unstable Suggestion comparison by sorting int suggestions before text ones (#11941)
PaperMC/Paper@3709150 Expose all possible block data states (#11958)
PaperMC/Paper@5e23d28 Remove entity tag selector tag completion fix (#11964)
PaperMC/Paper@ab1b312 Call PlayerItemDamageEvent for tridents (#11899)
PaperMC/Paper@1bb3677 Remove deprecation from EntityRemoveEvent (#11961)
PaperMC/Paper@d69981b [ci skip] Remove redundant build configuration
PaperMC/Paper@6fde26d remove .paperassetsroot
PaperMC/Paper@fe75eaf split direct holder support up from ctor accepting Holder
2025-01-14 11:51:16 -08: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 d7c9acaffdcff5e35e026ae90a3e521bab13b074..a426ba82af695426952bb5e04fa721e6ccff2f89 100644
--- a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
+++ b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
@@ -398,6 +398,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 {
@@ -407,7 +408,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)));
+ }
+ }
+
+}