Skip to content

Commit 67364d3

Browse files
committed
fix(drinking): Don't remove the whole stack after drinking
1 parent 5f92508 commit 67364d3

1 file changed

Lines changed: 25 additions & 9 deletions

File tree

src/main/java/com/dre/brewery/listeners/PlayerListener.java

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@
6161
import org.bukkit.inventory.ItemStack;
6262
import org.bukkit.inventory.PlayerInventory;
6363

64+
import java.util.Map;
65+
6466

6567
public class PlayerListener implements Listener {
6668

@@ -232,20 +234,34 @@ public void onPlayerItemConsume(PlayerItemConsumeEvent event) {
232234
event.setCancelled(true);
233235
return;
234236
}
235-
/*if (player.getGameMode() != org.bukkit.GameMode.CREATIVE) {
236-
brew.remove(item);
237-
}*/
238237
if (VERSION.isOrLater(MinecraftVersion.V1_9)) {
239-
if (player.getGameMode() != GameMode.CREATIVE) {
240-
// replace the potion with an empty potion to avoid effects
241-
event.setItem(new ItemStack(Material.POTION));
238+
event.setCancelled(true);
239+
240+
if (player.getGameMode() == GameMode.CREATIVE)
241+
return;
242+
243+
ItemStack remaining = event.getItem().clone();
244+
245+
int amount = remaining.getAmount();
246+
247+
if (amount <= 1) {
248+
player.getInventory().setItem(event.getHand(), new ItemStack(Material.GLASS_BOTTLE));
242249
} else {
243-
// Don't replace the item when keeping the potion, just cancel the event
244-
event.setCancelled(true);
250+
remaining.setAmount(amount - 1);
251+
player.getInventory().setItem(event.getHand(), remaining);
252+
253+
var leftovers = player.getInventory().addItem(new ItemStack(Material.GLASS_BOTTLE));
254+
255+
for (ItemStack leftover : leftovers.values()) {
256+
player.getWorld().dropItemNaturally(player.getLocation(), leftover);
257+
}
245258
}
246259
}
247260
}
248-
} else if (BUtil.getMaterialMap(config.getDrainItems()).containsKey(item.getType())) {
261+
return;
262+
}
263+
264+
if (BUtil.getMaterialMap(config.getDrainItems()).containsKey(item.getType())) {
249265
BPlayer bplayer = BPlayer.get(player);
250266
if (bplayer != null) {
251267
bplayer.drainByItem(player, item.getType());

0 commit comments

Comments
 (0)