From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Mon, 19 Oct 2020 15:14:01 -0500 Subject: [PATCH] Infinite fuel furnace diff --git a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java index c559ec5041474e585e4d95a664c84e1fa895cf16..806277d029a1c1a2d334a05d94163415c2619b8d 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/AbstractFurnaceBlockEntity.java @@ -40,6 +40,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.AbstractFurnaceBlock; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.material.FluidState; import net.minecraft.world.phys.Vec3; // CraftBukkit start import org.bukkit.craftbukkit.block.CraftBlock; @@ -317,6 +318,22 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit ItemStack itemstack = (ItemStack) blockEntity.items.get(1); + // Purpur start + boolean infiniteFuel = false; + if (world.purpurConfig.furnaceInfiniteFuel && !blockEntity.isLit() && itemstack.isEmpty() && !blockEntity.items.get(0).isEmpty() && world.getGameTime() % 20 == 0) { + BlockPos position = blockEntity.getBlockPos().below(); + BlockState blockState = world.getTypeIfLoaded(pos); + if (blockState != null && blockState.is(Blocks.LAVA)) { + FluidState fluid = state.getFluidState(); + if (fluid != null && fluid.isSource()) { + world.setBlock(pos, Blocks.AIR.defaultBlockState(), 3); + itemstack = Items.LAVA_BUCKET.getDefaultInstance(); + infiniteFuel = true; + } + } + } + // Purpur end + if (!blockEntity.isLit() && (itemstack.isEmpty() || ((ItemStack) blockEntity.items.get(0)).isEmpty())) { if (!blockEntity.isLit() && blockEntity.cookingProgress > 0) { blockEntity.cookingProgress = Mth.clamp(blockEntity.cookingProgress - 2, 0, blockEntity.cookingTotalTime); @@ -380,6 +397,7 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit setChanged(world, pos, state); } + if (infiniteFuel) blockEntity.items.set(1, ItemStack.EMPTY); // Purpur } private static boolean canBurn(@Nullable Recipe recipe, NonNullList slots, int count) { diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java index ac0aaf5d557e411bc29120470a80862c61c35bc5..25b3f33f487dd0cc25f9bdc335002f4601e138d2 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -398,6 +398,11 @@ public class PurpurWorldConfig { farmlandGetsMoistFromBelow = getBoolean("blocks.farmland.gets-moist-from-below", farmlandGetsMoistFromBelow); } + public boolean furnaceInfiniteFuel = false; + private void furnaceSettings() { + furnaceInfiniteFuel = getBoolean("blocks.furnace.infinite-fuel", furnaceInfiniteFuel); + } + public boolean lavaInfinite = false; public int lavaInfiniteRequiredSources = 2; public int lavaSpeedNether = 10;