禁止使用作弊武器攻击末影龙,凋零以及远古守卫者

This commit is contained in:
2024-12-26 22:22:43 +08:00
parent 380f633132
commit 83db8d61e9

View File

@@ -2,6 +2,7 @@ package ling.coordinateRecorder.Listener;
import ling.coordinateRecorder.data.CheatItemsData;
import org.bukkit.ChatColor;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@@ -15,7 +16,7 @@ import org.bukkit.persistence.PersistentDataContainer;
/// 保护作弊物品,仅限召唤者使用
public class CheatItemListener implements Listener {
protected boolean onEvent(Player player, ItemStack item) {
protected boolean onEvent(Player player, ItemStack item, boolean isBoss) {
ItemMeta meta = item.getItemMeta();
if (meta == null)
return false;
@@ -27,6 +28,10 @@ public class CheatItemListener implements Listener {
player.sendMessage(ChatColor.RED + "该物品只允许 " + data.getName() + " 使用");
return true;
}
if (isBoss) {
player.sendMessage(ChatColor.RED + "无法对BOSS级生物使用该物品");
return true;
}
return false;
}
@@ -34,7 +39,10 @@ public class CheatItemListener implements Listener {
public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
if (event.getDamager() instanceof Player player) {
ItemStack weapon = player.getInventory().getItemInMainHand();
if (onEvent(player, weapon)) {
EntityType type = event.getEntityType();
boolean isBoss =
type == EntityType.ENDER_DRAGON || type == EntityType.WITHER || type == EntityType.ELDER_GUARDIAN;
if (onEvent(player, weapon, isBoss)) {
event.setCancelled(true);
}
}
@@ -44,7 +52,7 @@ public class CheatItemListener implements Listener {
public void onProjectileHit(ProjectileHitEvent event) {
if (event.getHitEntity() != null && event.getHitEntity() instanceof Player player) {
ItemStack weapon = player.getInventory().getItemInMainHand();
if (onEvent(player, weapon))
if (onEvent(player, weapon, false))
event.setCancelled(true);
}
}
@@ -53,7 +61,7 @@ public class CheatItemListener implements Listener {
public void onBlockBreak(BlockBreakEvent event) {
Player player = event.getPlayer();
ItemStack weapon = player.getInventory().getItemInMainHand();
if (onEvent(player, weapon))
if (onEvent(player, weapon, false))
event.setCancelled(true);
}