mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-18 00:47:42 +01:00
Updated Upstream (Pufferfish) (#1575)
Upstream has released updates that appear to apply and compile correctly Pufferfish Changes: pufferfish-gg/Pufferfish@c9f4e20 Final 1.20.4 Update pufferfish-gg/Pufferfish@1f3ad02 Final 1.20.4 update, for realzies pufferfish-gg/Pufferfish@b1ab664 Enable SIMD on java 21 pufferfish-gg/Pufferfish@0674c2b 1.21 compiles pufferfish-gg/Pufferfish@98ea973 Fix 1.21 version checkers pufferfish-gg/Pufferfish@68f859c Fix lambda/tick guard patch pufferfish-gg/Pufferfish@eaa18d5 Updated Upstream (Paper) pufferfish-gg/Pufferfish@1d72eea Updated Upstream (Paper) pufferfish-gg/Pufferfish@1d3c743 Update pufferfish version detector stuff pufferfish-gg/Pufferfish@5e30963 Fix crash bug pufferfish-gg/Pufferfish@12571eb Use mojmapped paperclip jar instead (CI only) pufferfish-gg/Pufferfish@4d16ae0 Drop a patch - moonrise includes it pufferfish-gg/Pufferfish@52c2d05 Revert "Drop a patch - moonrise includes it" pufferfish-gg/Pufferfish@bdb56f1 Fix entity interactions with fluids pufferfish-gg/Pufferfish@469e5c1 Updated Upstream (Paper) pufferfish-gg/Pufferfish@d75961f 1.21.1 Update (Updated Upstream (Paper))
This commit is contained in:
@@ -0,0 +1,110 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: MelnCat <melncatuwu@gmail.com>
|
||||
Date: Sat, 1 Oct 2022 18:06:52 -0700
|
||||
Subject: [PATCH] Configurable block fall damage modifiers
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/BedBlock.java b/src/main/java/net/minecraft/world/level/block/BedBlock.java
|
||||
index b59dd6b512021c335f3c21999958e2ea081daf69..17c994a39a1b99cc7727e328ce7493d534247a21 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/BedBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/BedBlock.java
|
||||
@@ -181,7 +181,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock
|
||||
|
||||
@Override
|
||||
public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) {
|
||||
- super.fallOn(world, state, pos, entity, fallDistance * 0.5F);
|
||||
+ super.fallOn(world, state, pos, entity, fallDistance); // Purpur
|
||||
}
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java
|
||||
index 0f677573083ac806cfc105321b39edabb11e5d22..58c6002bc9d326477ebacfece4bb2bc50389fe87 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/Block.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/Block.java
|
||||
@@ -88,6 +88,10 @@ public class Block extends BlockBehaviour implements ItemLike {
|
||||
public static final int UPDATE_LIMIT = 512;
|
||||
protected final StateDefinition<Block, BlockState> stateDefinition;
|
||||
private BlockState defaultBlockState;
|
||||
+ // Purpur start
|
||||
+ public float fallDamageMultiplier = 1.0F;
|
||||
+ public float fallDistanceMultiplier = 1.0F;
|
||||
+ // Purpur end
|
||||
// Paper start
|
||||
public final boolean isDestroyable() {
|
||||
return io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.allowPermanentBlockBreakExploits ||
|
||||
@@ -486,7 +490,7 @@ public class Block extends BlockBehaviour implements ItemLike {
|
||||
}
|
||||
|
||||
public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) {
|
||||
- entity.causeFallDamage(fallDistance, 1.0F, entity.damageSources().fall());
|
||||
+ entity.causeFallDamage(fallDistance * fallDistanceMultiplier, fallDamageMultiplier, entity.damageSources().fall()); // Purpur
|
||||
}
|
||||
|
||||
public void updateEntityAfterFallOn(BlockGetter world, Entity entity) {
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/HayBlock.java b/src/main/java/net/minecraft/world/level/block/HayBlock.java
|
||||
index ef364aa171a48482a45bc18cfe730ec20c3f7be6..74971d90506aa253d5ee821b5390fb2551a3a393 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/HayBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/HayBlock.java
|
||||
@@ -23,6 +23,6 @@ public class HayBlock extends RotatedPillarBlock {
|
||||
|
||||
@Override
|
||||
public void fallOn(Level world, BlockState state, BlockPos pos, Entity entity, float fallDistance) {
|
||||
- entity.causeFallDamage(fallDistance, 0.2F, world.damageSources().fall());
|
||||
+ super.fallOn(world, state, pos, entity, fallDistance); // Purpur
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
index f07429836c7cdd6016b919740c2926e395641623..8d1b86a5591f7032c39010e7a61942eceb4f5f49 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
||||
@@ -507,4 +507,50 @@ public class PurpurConfig {
|
||||
block.explosionResistance = blastResistance.floatValue();
|
||||
});
|
||||
}
|
||||
+ private static void blockFallMultiplierSettings() {
|
||||
+ getMap("settings.block-fall-multipliers", Map.ofEntries(
|
||||
+ Map.entry("minecraft:hay_block", Map.of("damage", 0.2F)),
|
||||
+ Map.entry("minecraft:white_bed", Map.of("distance", 0.5F)),
|
||||
+ Map.entry("minecraft:light_gray_bed", Map.of("distance", 0.5F)),
|
||||
+ Map.entry("minecraft:gray_bed", Map.of("distance", 0.5F)),
|
||||
+ Map.entry("minecraft:black_bed", Map.of("distance", 0.5F)),
|
||||
+ Map.entry("minecraft:brown_bed", Map.of("distance", 0.5F)),
|
||||
+ Map.entry("minecraft:pink_bed", Map.of("distance", 0.5F)),
|
||||
+ Map.entry("minecraft:red_bed", Map.of("distance", 0.5F)),
|
||||
+ Map.entry("minecraft:orange_bed", Map.of("distance", 0.5F)),
|
||||
+ Map.entry("minecraft:yellow_bed", Map.of("distance", 0.5F)),
|
||||
+ Map.entry("minecraft:green_bed", Map.of("distance", 0.5F)),
|
||||
+ Map.entry("minecraft:lime_bed", Map.of("distance", 0.5F)),
|
||||
+ Map.entry("minecraft:cyan_bed", Map.of("distance", 0.5F)),
|
||||
+ Map.entry("minecraft:light_blue_bed", Map.of("distance", 0.5F)),
|
||||
+ Map.entry("minecraft:blue_bed", Map.of("distance", 0.5F)),
|
||||
+ Map.entry("minecraft:purple_bed", Map.of("distance", 0.5F)),
|
||||
+ Map.entry("minecraft:magenta_bed", Map.of("distance", 0.5F))
|
||||
+ )).forEach((blockId, value) -> {
|
||||
+ Block block = BuiltInRegistries.BLOCK.get(ResourceLocation.parse(blockId));
|
||||
+ if (block == Blocks.AIR) {
|
||||
+ log(Level.SEVERE, "Invalid block for `settings.block-fall-multipliers`: " + blockId);
|
||||
+ return;
|
||||
+ }
|
||||
+ if (!(value instanceof Map<?, ?> map)) {
|
||||
+ log(Level.SEVERE, "Invalid fall multiplier for `settings.block-fall-multipliers." + blockId + "`: " + value
|
||||
+ + ", expected a map with keys `damage` and `distance` to floats.");
|
||||
+ return;
|
||||
+ }
|
||||
+ Object rawFallDamageMultiplier = map.get("damage");
|
||||
+ if (rawFallDamageMultiplier == null) rawFallDamageMultiplier = 1F;
|
||||
+ if (!(rawFallDamageMultiplier instanceof Number fallDamageMultiplier)) {
|
||||
+ log(Level.SEVERE, "Invalid multiplier for `settings.block-fall-multipliers." + blockId + ".damage`: " + map.get("damage"));
|
||||
+ return;
|
||||
+ }
|
||||
+ Object rawFallDistanceMultiplier = map.get("distance");
|
||||
+ if (rawFallDistanceMultiplier == null) rawFallDistanceMultiplier = 1F;
|
||||
+ if (!(rawFallDistanceMultiplier instanceof Number fallDistanceMultiplier)) {
|
||||
+ log(Level.SEVERE, "Invalid multiplier for `settings.block-fall-multipliers." + blockId + ".distance`: " + map.get("distance"));
|
||||
+ return;
|
||||
+ }
|
||||
+ block.fallDamageMultiplier = fallDamageMultiplier.floatValue();
|
||||
+ block.fallDistanceMultiplier = fallDistanceMultiplier.floatValue();
|
||||
+ });
|
||||
+ }
|
||||
}
|
||||
Reference in New Issue
Block a user