Paper/Spigot-Server-Patches/0312-Implement-furnace-cook-speed-multiplier-API.patch
Zach Brown 70ce6ce831
Move version command update checking to the implementation
This makes it easier for downstream projects (forks) to replace the
version fetching system with their own. It is as simple as implementing
an interface and overriding the default implementation of
org.bukkit.UnsafeValues#getVersionFetcher()

It also makes it easier for us to organize things like the version
history feature.

Lastly I have updated the paper implementation to check against the site
API rather than against jenkins.
2019-05-27 04:13:41 -05:00

85 lines
3.9 KiB
Diff

From 37db6150821f83e9fa58b97186ee816fa587f87e Mon Sep 17 00:00:00 2001
From: Tassu <git@tassu.me>
Date: Thu, 13 Sep 2018 08:45:21 +0300
Subject: [PATCH] Implement furnace cook speed multiplier API
Signed-off-by: Tassu <git@tassu.me>
diff --git a/src/main/java/net/minecraft/server/TileEntityFurnace.java b/src/main/java/net/minecraft/server/TileEntityFurnace.java
index be16fe9a9..b9f3a952e 100644
--- a/src/main/java/net/minecraft/server/TileEntityFurnace.java
+++ b/src/main/java/net/minecraft/server/TileEntityFurnace.java
@@ -8,6 +8,7 @@ import java.util.Map;
import java.util.Map.Entry;
import javax.annotation.Nullable;
// CraftBukkit start
+import java.util.List;
import org.bukkit.craftbukkit.block.CraftBlock;
import org.bukkit.craftbukkit.entity.CraftHumanEntity;
import org.bukkit.craftbukkit.inventory.CraftItemStack;
@@ -26,6 +27,7 @@ public abstract class TileEntityFurnace extends TileEntityContainer implements I
protected NonNullList<ItemStack> items;
public int burnTime;
private int ticksForCurrentFuel;
+ public double cookSpeedMultiplier = 1.0; // Paper - cook speed multiplier API
public int cookTime;
public int cookTimeTotal;
protected final IContainerProperties b;
@@ -212,6 +214,11 @@ public abstract class TileEntityFurnace extends TileEntityContainer implements I
this.n.put(minecraftkey, j);
}
+ // Paper start - cook speed API
+ if (nbttagcompound.hasKey("Paper.CookSpeedMultiplier")) {
+ this.cookSpeedMultiplier = nbttagcompound.getDouble("Paper.CookSpeedMultiplier");
+ }
+ // Paper end
}
@Override
@@ -220,6 +227,7 @@ public abstract class TileEntityFurnace extends TileEntityContainer implements I
nbttagcompound.setShort("BurnTime", (short) this.burnTime);
nbttagcompound.setShort("CookTime", (short) this.cookTime);
nbttagcompound.setShort("CookTimeTotal", (short) this.cookTimeTotal);
+ nbttagcompound.setDouble("Paper.CookSpeedMultiplier", this.cookSpeedMultiplier); // Paper - cook speed multiplier API
ContainerUtil.a(nbttagcompound, this.items);
nbttagcompound.setShort("RecipesUsedSize", (short) this.n.size());
int i = 0;
@@ -283,8 +291,8 @@ public abstract class TileEntityFurnace extends TileEntityContainer implements I
}
if (this.isBurning() && this.canBurn(irecipe)) {
- ++this.cookTime;
- if (this.cookTime == this.cookTimeTotal) {
+ this.cookTime += cookSpeedMultiplier; // Paper - cook speed multiplier API
+ if (this.cookTime >= this.cookTimeTotal) { // Paper - cook speed multiplier API
this.cookTime = 0;
this.cookTimeTotal = this.getRecipeCookingTime();
this.burn(irecipe);
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftFurnace.java b/src/main/java/org/bukkit/craftbukkit/block/CraftFurnace.java
index 9cc67915c..1ce10ea04 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftFurnace.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftFurnace.java
@@ -63,4 +63,18 @@ public class CraftFurnace<T extends TileEntityFurnace> extends CraftContainer<T>
public void setCookTimeTotal(int cookTimeTotal) {
this.getSnapshot().cookTimeTotal = cookTimeTotal;
}
+
+ // Paper start - cook speed multiplier API
+ @Override
+ public double getCookSpeedMultiplier() {
+ return this.getSnapshot().cookSpeedMultiplier;
+ }
+
+ @Override
+ public void setCookSpeedMultiplier(double multiplier) {
+ com.google.common.base.Preconditions.checkArgument(multiplier >= 0, "Furnace speed multiplier cannot be negative");
+ com.google.common.base.Preconditions.checkArgument(multiplier <= 200, "Furnace speed multiplier cannot more than 200");
+ this.getSnapshot().cookSpeedMultiplier = multiplier;
+ }
+ // Paper end
}
--
2.21.0