From f0185947ca1047079b3b7e96d04a6747b4d2d795 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Thu, 6 Jun 2019 21:30:49 -0500 Subject: [PATCH] Campfires burn out in rain --- src/main/java/net/minecraft/server/Block.java | 2 +- .../net/minecraft/server/BlockCampfire.java | 17 ++++++++++++++++- .../java/net/pl3x/purpur/PurpurWorldConfig.java | 2 ++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java index b29ed1cfa7..d7911c3421 100644 --- a/src/main/java/net/minecraft/server/Block.java +++ b/src/main/java/net/minecraft/server/Block.java @@ -387,7 +387,7 @@ public class Block implements IMaterial { PacketDebug.a(world, blockposition); } - public int a(IWorldReader iworldreader) { + public int a(IWorldReader world) { return tickRate(world); } public int tickRate(IWorldReader world) { // Purpur - OBFHELPER return 10; } diff --git a/src/main/java/net/minecraft/server/BlockCampfire.java b/src/main/java/net/minecraft/server/BlockCampfire.java index 65f8d803b8..3b95dfaaae 100644 --- a/src/main/java/net/minecraft/server/BlockCampfire.java +++ b/src/main/java/net/minecraft/server/BlockCampfire.java @@ -7,7 +7,7 @@ import javax.annotation.Nullable; public class BlockCampfire extends BlockTileEntity implements IBlockWaterlogged { protected static final VoxelShape a = Block.a(0.0D, 0.0D, 0.0D, 16.0D, 7.0D, 16.0D); - public static final BlockStateBoolean b = BlockProperties.r; + public static final BlockStateBoolean b = BlockProperties.r; public static BlockStateBoolean lit() { return b; } // Purpur - OBFHELPER public static final BlockStateBoolean c = BlockProperties.y; public static BlockStateBoolean signalFire() { return c; } // Purpur - OBFHELPER public static final BlockStateBoolean d = BlockProperties.C; public static final BlockStateDirection e = BlockProperties.N; @@ -74,6 +74,21 @@ public class BlockCampfire extends BlockTileEntity implements IBlockWaterlogged return (IBlockData) ((IBlockData) ((IBlockData) ((IBlockData) this.getBlockData().set(BlockCampfire.d, flag)).set(BlockCampfire.c, this.h(world.getType(blockposition.down())))).set(BlockCampfire.b, !flag)).set(BlockCampfire.e, blockactioncontext.f()); } + // Purpur start + @Override + public void tick(IBlockData iblockdata, WorldServer world, BlockPosition pos, Random random) { + if (world.purpurConfig.campfireBurnOutInRain && world.getTime() % 20 == 0L && iblockdata.get(lit()) && world.isRainingAt(pos.shift(EnumDirection.UP))) { + world.setTypeAndData(pos, iblockdata.set(lit(), false), 3); + } + world.getBlockTickList().a(pos, this, tickRate(world)); + } + + @Override + public int tickRate(IWorldReader world) { + return 1; + } + // Purpur end + @Override public IBlockData updateState(IBlockData iblockdata, EnumDirection enumdirection, IBlockData iblockdata1, GeneratorAccess generatoraccess, BlockPosition blockposition, BlockPosition blockposition1) { if ((Boolean) iblockdata.get(BlockCampfire.d)) { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java index 1072aa2e58..6aa26a1974 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -81,6 +81,7 @@ public class PurpurWorldConfig { public int campfireRegenBoostAmp = 1; public boolean campfireRegenBoostRequireLineOfSight = false; public boolean campfireRequireRegenPotion = true; + public boolean campfireBurnOutInRain = false; private void campfireSettings() { campfireRegenInterval = getInt("blocks.campfire.regen.interval", campfireRegenInterval); campfireRegenDuration = getInt("blocks.campfire.regen.duration", campfireRegenDuration); @@ -92,6 +93,7 @@ public class PurpurWorldConfig { campfireRegenBoostAmp = getInt("blocks.campfire.regen.boost-amplifier", campfireRegenBoostAmp); campfireRegenBoostRequireLineOfSight = getBoolean("blocks.campfire.regen.boost-require-line-of-sight", campfireRegenBoostRequireLineOfSight); campfireRequireRegenPotion = getBoolean("blocks.campfire.regen.requires-potion-to-activate", campfireRequireRegenPotion); + campfireBurnOutInRain = getBoolean("blocks.campfire.burn-out-in-rain", campfireBurnOutInRain); } public boolean farmlandGetsMoistFromBelow = false; -- 2.24.0