Commits

Lukas A authored 425d00fc01a
SPIGOT-2695: Added BrewingStandFuelEvent and added fuel level to the BrewEvent
No tags

nms-patches/TileEntityBrewingStand.patch

Modified
1 1 --- a/net/minecraft/server/TileEntityBrewingStand.java
2 2 +++ b/net/minecraft/server/TileEntityBrewingStand.java
3 -@@ -3,6 +3,13 @@
3 +@@ -3,6 +3,15 @@
4 4 import java.util.Arrays;
5 5 import java.util.Iterator;
6 6
7 7 +// CraftBukkit start
8 8 +import java.util.List;
9 9 +import org.bukkit.craftbukkit.entity.CraftHumanEntity;
10 ++import org.bukkit.craftbukkit.inventory.CraftItemStack;
10 11 +import org.bukkit.entity.HumanEntity;
11 12 +import org.bukkit.event.inventory.BrewEvent;
13 ++import org.bukkit.event.inventory.BrewingStandFuelEvent;
12 14 +// CraftBukkit end
13 15 +
14 16 public class TileEntityBrewingStand extends TileEntityContainer implements ITickable, IWorldInventory {
15 -
17 +​
16 18 private static final int[] a = new int[] { 3};
17 -@@ -14,6 +21,31 @@
19 +@@ -14,6 +23,31 @@
18 20 private Item k;
19 21 private String l;
20 22 private int m;
21 23 + // CraftBukkit start - add fields and methods
22 24 + private int lastTick = MinecraftServer.currentTick;
23 25 + public List<HumanEntity> transaction = new java.util.ArrayList<HumanEntity>();
24 26 + private int maxStack = 64;
25 27 +
26 28 + public void onOpen(CraftHumanEntity who) {
27 29 + transaction.add(who);
39 41 + return this.items;
40 42 + }
41 43 +
42 44 + public void setMaxStackSize(int size) {
43 45 + maxStack = size;
44 46 + }
45 47 + // CraftBukkit end
46 48
47 49 public TileEntityBrewingStand() {
48 50 this.items = NonNullList.a(5, ItemStack.a);
49 -@@ -64,9 +96,14 @@
51 +@@ -55,8 +89,17 @@
52 + ItemStack itemstack = (ItemStack) this.items.get(4);
53 +
54 + if (this.m <= 0 && itemstack.getItem() == Items.BLAZE_POWDER) {
55 +- this.m = 20;
56 +- itemstack.subtract(1);
57 ++ // CraftBukkit start
58 ++ BrewingStandFuelEvent event = new BrewingStandFuelEvent(world.getWorld().getBlockAt(position.getX(), position.getY(), position.getZ()), 20, CraftItemStack.asBukkitCopy(itemstack));
59 ++ org.bukkit.Bukkit.getPluginManager().callEvent(event);
60 ++ if (event.isCancelled()) {
61 ++ return;
62 ++ }
63 ++ this.m = event.getFuelPower(); // PAIL fuelLevel
64 ++ if (event.isConsuming()) {
65 ++ itemstack.subtract(1);
66 ++ }
67 ++ // CraftBukkit end
68 + this.update();
69 + }
70 +
71 +@@ -64,9 +107,14 @@
50 72 boolean flag1 = this.brewTime > 0;
51 73 ItemStack itemstack1 = (ItemStack) this.items.get(3);
52 74
53 75 + // CraftBukkit start - Use wall time instead of ticks for brewing
54 76 + int elapsedTicks = MinecraftServer.currentTick - this.lastTick;
55 77 + this.lastTick = MinecraftServer.currentTick;
56 78 +
57 79 if (flag1) {
58 80 - --this.brewTime;
59 81 - boolean flag2 = this.brewTime == 0;
60 82 + this.brewTime -= elapsedTicks;
61 83 + boolean flag2 = this.brewTime <= 0; // == -> <=
62 84 + // CraftBukkit end
63 85
64 86 if (flag2 && flag) {
65 87 this.p();
66 -@@ -140,6 +177,15 @@
88 +@@ -140,6 +188,15 @@
67 89
68 90 private void p() {
69 91 ItemStack itemstack = (ItemStack) this.items.get(3);
70 92 + // CraftBukkit start
71 93 + if (getOwner() != null) {
72 -+ BrewEvent event = new BrewEvent(world.getWorld().getBlockAt(position.getX(), position.getY(), position.getZ()), (org.bukkit.inventory.BrewerInventory) this.getOwner().getInventory());
94 ++ BrewEvent event = new BrewEvent(world.getWorld().getBlockAt(position.getX(), position.getY(), position.getZ()), (org.bukkit.inventory.BrewerInventory) this.getOwner().getInventory(), m);
73 95 + org.bukkit.Bukkit.getPluginManager().callEvent(event);
74 96 + if (event.isCancelled()) {
75 97 + return;
76 98 + }
77 99 + }
78 100 + // CraftBukkit end
79 101
80 102 for (int i = 0; i < 3; ++i) {
81 103 this.items.set(i, PotionBrewer.d(itemstack, (ItemStack) this.items.get(i)));
82 -@@ -210,7 +256,7 @@
104 +@@ -210,7 +267,7 @@
83 105 }
84 106
85 107 public int getMaxStackSize() {
86 108 - return 64;
87 109 + return this.maxStack; // CraftBukkit
88 110 }
89 111
90 112 public boolean a(EntityHuman entityhuman) {

Everything looks good. We'll let you know here if there's anything you should know about.

Add shortcut