Skip to content

Commit 9f057ab

Browse files
fix: prevent players from consuming food while in vanish or invulnerable mode.
1 parent f9e6528 commit 9f057ab

1 file changed

Lines changed: 18 additions & 9 deletions

File tree

src/main/java/net/onelitefeather/stardust/listener/PlayerVanishListener.java

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@
88
import net.onelitefeather.stardust.user.UserPropertyType;
99
import org.bukkit.Bukkit;
1010
import org.bukkit.block.data.Powerable;
11-
import org.bukkit.entity.*;
11+
import org.bukkit.entity.Entity;
12+
import org.bukkit.entity.Item;
13+
import org.bukkit.entity.Player;
14+
import org.bukkit.entity.Projectile;
1215
import org.bukkit.event.Event;
1316
import org.bukkit.event.EventHandler;
1417
import org.bukkit.event.EventPriority;
@@ -21,6 +24,7 @@
2124
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
2225
import org.bukkit.event.player.PlayerDropItemEvent;
2326
import org.bukkit.event.player.PlayerInteractEvent;
27+
import org.bukkit.event.player.PlayerItemConsumeEvent;
2428
import org.bukkit.event.raid.RaidTriggerEvent;
2529

2630
import java.util.Arrays;
@@ -138,16 +142,21 @@ public void onTarget(EntityTargetEvent event) {
138142
}
139143
}
140144

145+
@EventHandler
146+
public void onItemConsume(PlayerItemConsumeEvent event) {
147+
var player = event.getPlayer();
148+
User user = stardustPlugin.getUserService().getUser(player.getUniqueId());
149+
if (user == null) return;
150+
if (!user.isVanished()) return;
151+
event.setCancelled(true);
152+
}
153+
141154
@EventHandler
142155
public void onFoodLevelChange(FoodLevelChangeEvent event) {
143-
if (event.getEntity() instanceof Player player) {
144-
try {
145-
User user = stardustPlugin.getUserService().getUser(player.getUniqueId());
146-
event.setCancelled(user != null && (user.isVanished() || player.isInvulnerable()));
147-
} catch (Exception e) {
148-
stardustPlugin.getLogger().throwing(PlayerVanishListener.class.getSimpleName(), "onFoodLevelChange", e);
149-
}
150-
}
156+
if (!(event.getEntity() instanceof Player player)) return;
157+
if (event.getFoodLevel() >= event.getEntity().getFoodLevel()) return; //Ignore food level increment
158+
if (!player.isInvulnerable()) return;
159+
event.setCancelled(true);
151160
}
152161

153162
@EventHandler

0 commit comments

Comments
 (0)