From 5f6b1226ebd2d3316469b5b9c3f301a5e4a903cf Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sun, 19 May 2019 18:11:53 -0500 Subject: [PATCH] Add regen effect to campfires --- .../minecraft/server/TileEntityCampfire.java | 10 ++++++++++ .../java/net/pl3x/purpur/PurpurWorldConfig.java | 17 +++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/src/main/java/net/minecraft/server/TileEntityCampfire.java b/src/main/java/net/minecraft/server/TileEntityCampfire.java index 3a97a6571..530022248 100644 --- a/src/main/java/net/minecraft/server/TileEntityCampfire.java +++ b/src/main/java/net/minecraft/server/TileEntityCampfire.java @@ -34,6 +34,16 @@ public class TileEntityCampfire extends TileEntity implements Clearable, ITickab } else { if (flag) { + // Purpur start + if (world.purpurConfig.campfireRegenInterval > 0 && world.getTime() % world.purpurConfig.campfireRegenInterval == 0L) { + boolean signalBoost = getBlock().get(BlockCampfire.c); + int duration = signalBoost ? world.purpurConfig.campfireRegenBoostDuration : world.purpurConfig.campfireRegenDuration; + byte amp = (byte) (signalBoost ? world.purpurConfig.campfireRegenBoostAmp : world.purpurConfig.campfireRegenAmp); + int range = signalBoost ? world.purpurConfig.campfireRegenBoostRange : world.purpurConfig.campfireRegenRange; + MobEffect regeneration = new MobEffect(MobEffects.REGENERATION, duration, amp, true, true); + world.a(EntityHuman.class, new AxisAlignedBB(position).g(range)).forEach(p -> p.addEffect(regeneration)); + } + // Purpur end this.f(); } else { for (int i = 0; i < this.items.size(); ++i) { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java index 30f11fe26..becb6f3b7 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -60,4 +60,21 @@ public class PurpurWorldConfig { config.addDefault("world-settings.default." + path, def); return config.getString("world-settings." + worldName + "." + path, config.getString("world-settings.default." + path)); } + + public int campfireRegenInterval = 40; + public int campfireRegenDuration = 80; + public int campfireRegenRange = 5; + public int campfireRegenAmp = 0; + public int campfireRegenBoostDuration = 80; + public int campfireRegenBoostRange = 10; + public int campfireRegenBoostAmp = 1; + private void campireRegenSettings() { + campfireRegenInterval = getInt("campfire-regen.interval", campfireRegenInterval); + campfireRegenDuration = getInt("campfire-regen.duration", campfireRegenDuration); + campfireRegenRange = getInt("campfire-regen.range", campfireRegenRange); + campfireRegenAmp = getInt("campfire-regen.amplifier", campfireRegenAmp); + campfireRegenBoostDuration = getInt("campfire-regen.boost-duration", campfireRegenBoostDuration); + campfireRegenBoostRange = getInt("campfire-regen.boost-range", campfireRegenBoostRange); + campfireRegenBoostAmp = getInt("campfire-regen.boost-amplifier", campfireRegenBoostAmp); + } } -- 2.20.1