From 879ead8c91c29987848aefe36524ec85c2a6ce7a Mon Sep 17 00:00:00 2001 From: Bierque Jason Date: Mon, 23 Aug 2021 22:11:04 +0200 Subject: [PATCH] Added the ability to add combustible items (#570) --- ...the-ability-to-add-combustible-items.patch | 60 ++++++++++++ ...the-ability-to-add-combustible-items.patch | 93 +++++++++++++++++++ 2 files changed, 153 insertions(+) create mode 100644 patches/api/0051-Added-the-ability-to-add-combustible-items.patch create mode 100644 patches/server/0254-Added-the-ability-to-add-combustible-items.patch diff --git a/patches/api/0051-Added-the-ability-to-add-combustible-items.patch b/patches/api/0051-Added-the-ability-to-add-combustible-items.patch new file mode 100644 index 000000000..a79bc6974 --- /dev/null +++ b/patches/api/0051-Added-the-ability-to-add-combustible-items.patch @@ -0,0 +1,60 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: DoctaEnkoda +Date: Mon, 9 Aug 2021 13:22:03 +0200 +Subject: [PATCH] Added the ability to add combustible items + + +diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java +index e4ec2a0c15a6ada5bef9671e427cd56413f18d80..390a0d09b78e46cfebe78bfa3d1dd73aedca8256 100644 +--- a/src/main/java/org/bukkit/Bukkit.java ++++ b/src/main/java/org/bukkit/Bukkit.java +@@ -2082,5 +2082,24 @@ public final class Bukkit { + public static boolean isLagging() { + return server.isLagging(); + } ++ ++ /** ++ * Add an Item as fuel for furnaces ++ * ++ * @param material The material that will be the fuel ++ * @param burnTime The time (in ticks) this item will burn for ++ */ ++ public static void addFuel(@NotNull Material material, int burnTime) { ++ server.addFuel(material, burnTime); ++ } ++ ++ /** ++ * Remove an item as fuel for furnaces ++ * ++ * @param material The material that will no longer be a fuel ++ */ ++ public static void removeFuel(@NotNull Material material) { ++ server.removeFuel(material); ++ } + // Purpur end + } +diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java +index 80c70522eecb08c0dbfadcdeb21c9cfac42d7902..faf8cff5c1b586d9404bdecb522d45a09fc7fe92 100644 +--- a/src/main/java/org/bukkit/Server.java ++++ b/src/main/java/org/bukkit/Server.java +@@ -1827,5 +1827,20 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi + * @return True if lagging + */ + boolean isLagging(); ++ ++ /** ++ * Add an Item as fuel for furnaces ++ * ++ * @param material The material that will be the fuel ++ * @param burnTime The time (in ticks) this item will burn for ++ */ ++ public void addFuel(@NotNull Material material, int burnTime); ++ ++ /** ++ * Remove an item as fuel for furnaces ++ * ++ * @param material The material that will no longer be a fuel ++ */ ++ public void removeFuel(@NotNull Material material); + // Purpur end + } diff --git a/patches/server/0254-Added-the-ability-to-add-combustible-items.patch b/patches/server/0254-Added-the-ability-to-add-combustible-items.patch new file mode 100644 index 000000000..ab3f186a0 --- /dev/null +++ b/patches/server/0254-Added-the-ability-to-add-combustible-items.patch @@ -0,0 +1,93 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: DoctaEnkoda +Date: Mon, 9 Aug 2021 13:22:20 +0200 +Subject: [PATCH] Added the ability to add combustible items + + +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 2c64622577fdb6c2a5746471121403b633bf9042..0bd838b95d87fd2436f3674b7f16155e6c2dd720 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 +@@ -205,6 +205,26 @@ public abstract class AbstractFurnaceBlockEntity extends BaseContainerBlockEntit + // Paper end + } + ++ // Purpur start ++ public static void addFuel(ItemStack itemStack, Integer burnTime) { ++ Map map = Maps.newLinkedHashMap(); ++ if (cachedBurnDurations != null) { ++ map.putAll(cachedBurnDurations); ++ } ++ map.put(itemStack.getItem(), burnTime); ++ cachedBurnDurations = com.google.common.collect.ImmutableMap.copyOf(map); ++ } ++ ++ public static void removeFuel(ItemStack itemStack) { ++ Map map = Maps.newLinkedHashMap(); ++ if (cachedBurnDurations != null) { ++ map.putAll(cachedBurnDurations); ++ } ++ map.remove(itemStack.getItem()); ++ cachedBurnDurations = com.google.common.collect.ImmutableMap.copyOf(map); ++ } ++ // Purpur End ++ + // CraftBukkit start - add fields and methods + private int maxStack = MAX_STACK; + public List transaction = new java.util.ArrayList(); +diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +index c687ab0e629f40e5c0900b27f9243e09b7d217d4..012aa07f2f9e2711fbc4dc3af640bfbc59b8dbce 100644 +--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java ++++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java +@@ -4,7 +4,6 @@ import com.google.common.base.Charsets; + import com.google.common.base.Function; + import com.google.common.base.Preconditions; + import com.google.common.collect.ImmutableList; +-import com.google.common.collect.ImmutableSet; + import com.google.common.collect.Iterators; + import com.google.common.collect.Lists; + import com.google.common.collect.MapMaker; +@@ -18,7 +17,6 @@ import com.mojang.serialization.Lifecycle; + import io.netty.buffer.ByteBuf; + import io.netty.buffer.ByteBufOutputStream; + import io.netty.buffer.Unpooled; +-import io.papermc.paper.logging.SysoutCatcher; + import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap; + import java.awt.image.BufferedImage; + import java.io.File; +@@ -100,6 +98,7 @@ import net.minecraft.world.level.GameType; + import net.minecraft.world.level.LevelSettings; + import net.minecraft.world.level.biome.BiomeManager; + import net.minecraft.world.level.block.Block; ++import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity; + import net.minecraft.world.level.dimension.DimensionType; + import net.minecraft.world.level.dimension.LevelStem; + import net.minecraft.world.level.levelgen.PatrolSpawner; +@@ -230,6 +229,7 @@ import org.bukkit.potion.PotionEffectType; + import org.bukkit.scheduler.BukkitWorker; + import org.bukkit.util.StringUtil; + import org.bukkit.util.permissions.DefaultPermissions; ++import org.jetbrains.annotations.NotNull; + import org.yaml.snakeyaml.Yaml; + import org.yaml.snakeyaml.constructor.SafeConstructor; + import org.yaml.snakeyaml.error.MarkedYAMLException; +@@ -1362,6 +1362,19 @@ public final class CraftServer implements Server { + return true; + } + ++ // Purpur Start ++ @Override ++ public void addFuel(@NotNull org.bukkit.Material material, int burnTime) { ++ Preconditions.checkArgument(burnTime > 0, "BurnTime must be greater than 0"); ++ AbstractFurnaceBlockEntity.addFuel(net.minecraft.world.item.ItemStack.fromBukkitCopy(new ItemStack(material)), burnTime); ++ } ++ ++ @Override ++ public void removeFuel(@NotNull org.bukkit.Material material) { ++ AbstractFurnaceBlockEntity.removeFuel(net.minecraft.world.item.ItemStack.fromBukkitCopy(new ItemStack(material))); ++ } ++ // Purpur End ++ + @Override + public List getRecipesFor(ItemStack result) { + Validate.notNull(result, "Result cannot be null");