Implement minimum food level option for capitator functionality

This commit is contained in:
Gabriel Tofvesson 2021-07-03 03:22:14 +02:00
parent 353f97a5e8
commit 8acef93d7d
3 changed files with 14 additions and 3 deletions

View File

@ -10,4 +10,5 @@ search:
searchRadiusZ: 8
ghostClick: true
capitator: true
capitatorHungerPerBlock: 0.03125
capitatorHungerPerBlock: 0.03125
capitatorMinHunger: 3

View File

@ -123,7 +123,8 @@ public final class InvTweaksPlugin extends JavaPlugin {
pluginManager.registerEvents(new TabCompletionListener(), this);
pluginManager.registerEvents(new TreeCapitatorListener(
activateCapitator ? capitatorEnchantment.getEnchantment() : null,
getConfig().getDouble("capitatorHungerPerBlock")
getConfig().getDouble("capitatorHungerPerBlock"),
getConfig().getInt("capitatorMinHunger")
), this);
pluginManager.registerEvents(new PlayerMoveRenderListener(chestManager), this);
pluginManager.registerEvents(new ChestBreakListener(chestManager), this);

View File

@ -15,6 +15,7 @@ import org.bukkit.inventory.meta.ItemMeta;
import java.util.*;
import static dev.w1zzrd.spigot.wizcompat.command.CommandUtils.errorMessage;
import static org.bukkit.Material.*;
public class TreeCapitatorListener implements Listener {
@ -47,10 +48,12 @@ public class TreeCapitatorListener implements Listener {
private final Enchantment capitatorEnchantment;
private final double hungerPerBlock;
private final int minHunger;
public TreeCapitatorListener(final Enchantment capitatorEnchantment, final double hungerPerBlock) {
public TreeCapitatorListener(final Enchantment capitatorEnchantment, final double hungerPerBlock, final int minHunger) {
this.capitatorEnchantment = capitatorEnchantment;
this.hungerPerBlock = hungerPerBlock;
this.minHunger = minHunger;
}
@EventHandler
@ -59,6 +62,12 @@ public class TreeCapitatorListener implements Listener {
if (event.isCancelled() || !handTool.containsEnchantment(capitatorEnchantment))
return;
// Check if capitator functionality is prevented by hunger
if (event.getPlayer().getFoodLevel() < minHunger) {
event.getPlayer().spigot().sendMessage(errorMessage("You are too tired to fell the tree"));
return;
}
if (handTool.getItemMeta() instanceof final Damageable tool) {
if (!leaves.contains(event.getBlock().getType()) && targetMaterials.contains(event.getBlock().getType())) {
int logBreakCount = 0;