From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Fri, 16 Jul 2021 22:47:29 -0500 Subject: [PATCH] Big dripleaf tilt delay Makes the tilt delays configurable. There are only 3 types of tilts used by this setting. When an entity steps on a big_dripleaf with no tilt it will immediately change to an UNSTABLE tilt. Each change after that is on a tick timer: UNSTABLE: big_dripleaf with UNSTABLE tilt will change to PARTIAL tilt after 10 ticks PARTIAL: big_dripleaf with PARTIAL tilt will change to FULL tilt after 10 ticks UNSTABLE: big_dripleaf with FULL tilt will change back to no tilt after 100 ticks diff --git a/src/main/java/net/minecraft/world/level/block/BigDripleafBlock.java b/src/main/java/net/minecraft/world/level/block/BigDripleafBlock.java index 45a5343c1109c63ce7864327837979282b904367..042128d6982481fedf8e6ad523cff98fae7dec28 100644 --- a/src/main/java/net/minecraft/world/level/block/BigDripleafBlock.java +++ b/src/main/java/net/minecraft/world/level/block/BigDripleafBlock.java @@ -236,7 +236,7 @@ public class BigDripleafBlock extends HorizontalDirectionalBlock implements Bone BigDripleafBlock.playTiltSound(world, blockposition, soundeffect); } - int i = BigDripleafBlock.DELAY_UNTIL_NEXT_TILT_STATE.getInt(tilt); + int i = world.purpurConfig.bigDripleafTiltDelay.getOrDefault(tilt, -1); // Purpur if (i != -1) { world.scheduleTick(blockposition, (Block) this, i); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index a755dbab717e6899d57558c7c7f0b17d40ce09fa..6960ee951bc3980c18a101e1285411e40572f9c8 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -691,6 +691,22 @@ public class PurpurWorldConfig { } } + public Map bigDripleafTiltDelay = new HashMap<>(); + private void bigDripleafSettings() { + bigDripleafTiltDelay.clear(); + getMap("blocks.big_dripleaf.tilt-delay", Map.ofEntries( + Map.entry("UNSTABLE", 10), + Map.entry("PARTIAL", 10), + Map.entry("FULL", 100)) + ).forEach((tilt, delay) -> { + try { + bigDripleafTiltDelay.put(Tilt.valueOf(tilt), (int) delay); + } catch (IllegalArgumentException e) { + PurpurConfig.log(Level.SEVERE, "Invalid big_dripleaf tilt key: " + tilt); + } + }); + } + public boolean buddingAmethystSilkTouch = false; private void buddingAmethystSettings() { buddingAmethystSilkTouch = getBoolean("blocks.budding_amethyst.silk-touch", buddingAmethystSilkTouch);