尝试对1.20.x兼容

This commit is contained in:
zhangyuheng 2024-08-02 17:48:25 +08:00
parent 010e9386da
commit c74b332e65
3 changed files with 32 additions and 53 deletions

View File

@ -5,7 +5,7 @@ plugins {
} }
group = "cn.lunadeer" group = "cn.lunadeer"
version = "1.44.0-beta" version = "1.44.1-beta"
java { java {
toolchain.languageVersion.set(JavaLanguageVersion.of(21)) toolchain.languageVersion.set(JavaLanguageVersion.of(21))

View File

@ -18,8 +18,6 @@ import org.bukkit.event.entity.*;
import org.bukkit.event.hanging.HangingBreakByEntityEvent; import org.bukkit.event.hanging.HangingBreakByEntityEvent;
import org.bukkit.event.hanging.HangingBreakEvent; import org.bukkit.event.hanging.HangingBreakEvent;
import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.material.PressurePlate;
import org.bukkit.material.PressureSensor;
import java.util.Objects; import java.util.Objects;
@ -57,7 +55,7 @@ public class EnvironmentEvents implements Listener {
if (entity.getType() != EntityType.ARMOR_STAND) { if (entity.getType() != EntityType.ARMOR_STAND) {
return; return;
} }
if (event.getDamager() instanceof Player) { if (isNotExplodeEntity(event.getDamager())) {
return; return;
} }
DominionDTO dom = Cache.instance.getDominionByLoc(entity.getLocation()); DominionDTO dom = Cache.instance.getDominionByLoc(entity.getLocation());
@ -82,10 +80,13 @@ public class EnvironmentEvents implements Listener {
} }
private static boolean isNotExplodeEntity(Entity damager) { private static boolean isNotExplodeEntity(Entity damager) {
return damager.getType() != EntityType.CREEPER String materialName = damager.getType().name();
&& damager.getType() != EntityType.WITHER_SKULL return !materialName.equals("creeper")
&& damager.getType() != EntityType.FIREBALL && !materialName.equals("wither_skull")
&& damager.getType() != EntityType.END_CRYSTAL; && !materialName.equals("fireball")
&& !materialName.equals("end_crystal")
&& !materialName.equals("dragon_fireball")
&& !materialName.equals("small_fireball");
} }
@EventHandler(priority = EventPriority.HIGHEST) // dragon_break_block @EventHandler(priority = EventPriority.HIGHEST) // dragon_break_block
@ -150,7 +151,7 @@ public class EnvironmentEvents implements Listener {
@EventHandler(priority = EventPriority.HIGHEST) // tnt_explode @EventHandler(priority = EventPriority.HIGHEST) // tnt_explode
public void onTntExplode(EntityExplodeEvent event) { public void onTntExplode(EntityExplodeEvent event) {
Entity entity = event.getEntity(); Entity entity = event.getEntity();
if (entity.getType() != EntityType.TNT_MINECART && entity.getType() != EntityType.TNT) { if (!entity.getType().name().contains("tnt")) {
return; return;
} }
event.blockList().removeIf(block -> { event.blockList().removeIf(block -> {
@ -165,8 +166,7 @@ public class EnvironmentEvents implements Listener {
if (entity.getType() != EntityType.ARMOR_STAND) { if (entity.getType() != EntityType.ARMOR_STAND) {
return; return;
} }
Entity damager = event.getDamager(); if (!event.getDamager().getType().name().contains("tnt")) {
if (entity.getType() != EntityType.TNT_MINECART && entity.getType() != EntityType.TNT) {
return; return;
} }
DominionDTO dom = Cache.instance.getDominionByLoc(entity.getLocation()); DominionDTO dom = Cache.instance.getDominionByLoc(entity.getLocation());

View File

@ -61,14 +61,13 @@ public class PlayerEvents implements Listener {
@EventHandler(priority = EventPriority.HIGHEST) // animal_killing @EventHandler(priority = EventPriority.HIGHEST) // animal_killing
public void onAnimalKilling(EntityDamageByEntityEvent event) { public void onAnimalKilling(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player)) { if (!(event.getDamager() instanceof Player bukkitPlayer)) {
return; return;
} }
// 如果不是动物 则不处理 // 如果不是动物 则不处理
if (!(event.getEntity() instanceof Animals)) { if (!(event.getEntity() instanceof Animals)) {
return; return;
} }
Player bukkitPlayer = (Player) event.getDamager();
DominionDTO dom = Cache.instance.getDominionByLoc(event.getEntity().getLocation()); DominionDTO dom = Cache.instance.getDominionByLoc(event.getEntity().getLocation());
checkFlag(dom, Flag.ANIMAL_KILLING, bukkitPlayer, event); checkFlag(dom, Flag.ANIMAL_KILLING, bukkitPlayer, event);
} }
@ -78,10 +77,9 @@ public class PlayerEvents implements Listener {
if (event.getInventory().getType() != InventoryType.ANVIL) { if (event.getInventory().getType() != InventoryType.ANVIL) {
return; return;
} }
if (!(event.getPlayer() instanceof Player)) { if (!(event.getPlayer() instanceof Player bukkitPlayer)) {
return; return;
} }
Player bukkitPlayer = (Player) event.getPlayer();
DominionDTO dom = Cache.instance.getPlayerCurrentDominion(bukkitPlayer); DominionDTO dom = Cache.instance.getPlayerCurrentDominion(bukkitPlayer);
checkFlag(dom, Flag.ANVIL, bukkitPlayer, event); checkFlag(dom, Flag.ANVIL, bukkitPlayer, event);
} }
@ -91,10 +89,9 @@ public class PlayerEvents implements Listener {
if (event.getInventory().getType() != InventoryType.BEACON) { if (event.getInventory().getType() != InventoryType.BEACON) {
return; return;
} }
if (!(event.getPlayer() instanceof Player)) { if (!(event.getPlayer() instanceof Player bukkitPlayer)) {
return; return;
} }
Player bukkitPlayer = (Player) event.getPlayer();
DominionDTO dom = Cache.instance.getPlayerCurrentDominion(bukkitPlayer); DominionDTO dom = Cache.instance.getPlayerCurrentDominion(bukkitPlayer);
checkFlag(dom, Flag.BEACON, bukkitPlayer, event); checkFlag(dom, Flag.BEACON, bukkitPlayer, event);
} }
@ -121,10 +118,9 @@ public class PlayerEvents implements Listener {
if (event.getInventory().getType() != InventoryType.BREWING) { if (event.getInventory().getType() != InventoryType.BREWING) {
return; return;
} }
if (!(event.getPlayer() instanceof Player)) { if (!(event.getPlayer() instanceof Player bukkitPlayer)) {
return; return;
} }
Player bukkitPlayer = (Player) event.getPlayer();
DominionDTO dom = Cache.instance.getPlayerCurrentDominion(bukkitPlayer); DominionDTO dom = Cache.instance.getPlayerCurrentDominion(bukkitPlayer);
checkFlag(dom, Flag.BREW, bukkitPlayer, event); checkFlag(dom, Flag.BREW, bukkitPlayer, event);
} }
@ -231,10 +227,9 @@ public class PlayerEvents implements Listener {
event.getInventory().getType() != InventoryType.SHULKER_BOX) { event.getInventory().getType() != InventoryType.SHULKER_BOX) {
return; return;
} }
if (!(event.getPlayer() instanceof Player)) { if (!(event.getPlayer() instanceof Player bukkitPlayer)) {
return; return;
} }
Player bukkitPlayer = (Player) event.getPlayer();
if (hasContainerPermission(bukkitPlayer, event.getInventory().getLocation())) { if (hasContainerPermission(bukkitPlayer, event.getInventory().getLocation())) {
return; return;
} }
@ -253,10 +248,9 @@ public class PlayerEvents implements Listener {
@EventHandler(priority = EventPriority.HIGHEST) // container item frame put @EventHandler(priority = EventPriority.HIGHEST) // container item frame put
public void putSomeOnItemFrame(PlayerInteractEntityEvent event) { public void putSomeOnItemFrame(PlayerInteractEntityEvent event) {
Entity entity = event.getRightClicked(); Entity entity = event.getRightClicked();
if (!(entity instanceof ItemFrame)) { if (!(entity instanceof ItemFrame itemFrame)) {
return; return;
} }
ItemFrame itemFrame = (ItemFrame) entity;
if (itemFrame.getItem().getType() != Material.AIR) { if (itemFrame.getItem().getType() != Material.AIR) {
return; return;
} }
@ -270,17 +264,15 @@ public class PlayerEvents implements Listener {
@EventHandler(priority = EventPriority.HIGHEST) // container item frame get @EventHandler(priority = EventPriority.HIGHEST) // container item frame get
public void removeSomeOnItemFrame(EntityDamageByEntityEvent event) { public void removeSomeOnItemFrame(EntityDamageByEntityEvent event) {
Entity entity = event.getEntity(); Entity entity = event.getEntity();
if (!(entity instanceof ItemFrame)) { if (!(entity instanceof ItemFrame itemFrame)) {
return; return;
} }
ItemFrame itemFrame = (ItemFrame) entity;
if (itemFrame.getItem().getType() == Material.AIR) { if (itemFrame.getItem().getType() == Material.AIR) {
return; return;
} }
if (!(event.getDamager() instanceof Player)) { if (!(event.getDamager() instanceof Player bukkitPlayer)) {
return; return;
} }
Player bukkitPlayer = (Player) event.getDamager();
if (hasContainerPermission(bukkitPlayer, entity.getLocation())) { if (hasContainerPermission(bukkitPlayer, entity.getLocation())) {
return; return;
} }
@ -290,21 +282,18 @@ public class PlayerEvents implements Listener {
@EventHandler(priority = EventPriority.HIGHEST) // container item frame get @EventHandler(priority = EventPriority.HIGHEST) // container item frame get
public void removeSomeOnItemFrameByArrow(EntityDamageByEntityEvent event) { public void removeSomeOnItemFrameByArrow(EntityDamageByEntityEvent event) {
Entity entity = event.getEntity(); Entity entity = event.getEntity();
if (!(entity instanceof ItemFrame)) { if (!(entity instanceof ItemFrame itemFrame)) {
return; return;
} }
ItemFrame itemFrame = (ItemFrame) entity;
if (itemFrame.getItem().getType() == Material.AIR) { if (itemFrame.getItem().getType() == Material.AIR) {
return; return;
} }
if (!(event.getDamager() instanceof Arrow)) { if (!(event.getDamager() instanceof Arrow arrow)) {
return; return;
} }
Arrow arrow = (Arrow) event.getDamager(); if (!(arrow.getShooter() instanceof Player bukkitPlayer)) {
if (!(arrow.getShooter() instanceof Player)) {
return; return;
} }
Player bukkitPlayer = (Player) arrow.getShooter();
if (hasContainerPermission(bukkitPlayer, itemFrame.getLocation())) { if (hasContainerPermission(bukkitPlayer, itemFrame.getLocation())) {
return; return;
} }
@ -317,10 +306,9 @@ public class PlayerEvents implements Listener {
if (inv.getType() != InventoryType.WORKBENCH) { if (inv.getType() != InventoryType.WORKBENCH) {
return; return;
} }
if (!(event.getPlayer() instanceof Player)) { if (!(event.getPlayer() instanceof Player bukkitPlayer)) {
return; return;
} }
Player bukkitPlayer = (Player) event.getPlayer();
DominionDTO dom = getInvDominion(bukkitPlayer, inv); DominionDTO dom = getInvDominion(bukkitPlayer, inv);
checkFlag(dom, Flag.CRAFT, bukkitPlayer, event); checkFlag(dom, Flag.CRAFT, bukkitPlayer, event);
} }
@ -425,13 +413,12 @@ public class PlayerEvents implements Listener {
@EventHandler(priority = EventPriority.HIGHEST) // egg @EventHandler(priority = EventPriority.HIGHEST) // egg
public void onThrowingEgg(ProjectileLaunchEvent event) { public void onThrowingEgg(ProjectileLaunchEvent event) {
if (!(event.getEntity().getShooter() instanceof Player)) { if (!(event.getEntity().getShooter() instanceof Player player)) {
return; return;
} }
if (event.getEntity().getType() != EntityType.EGG) { if (event.getEntity().getType() != EntityType.EGG) {
return; return;
} }
Player player = (Player) event.getEntity().getShooter();
DominionDTO dom = Cache.instance.getPlayerCurrentDominion(player); DominionDTO dom = Cache.instance.getPlayerCurrentDominion(player);
checkFlag(dom, Flag.EGG, player, event); checkFlag(dom, Flag.EGG, player, event);
} }
@ -441,23 +428,21 @@ public class PlayerEvents implements Listener {
if (event.getInventory().getType() != InventoryType.ENCHANTING) { if (event.getInventory().getType() != InventoryType.ENCHANTING) {
return; return;
} }
if (!(event.getPlayer() instanceof Player)) { if (!(event.getPlayer() instanceof Player bukkitPlayer)) {
return; return;
} }
Player bukkitPlayer = (Player) event.getPlayer();
DominionDTO dom = getInvDominion(bukkitPlayer, event.getInventory()); DominionDTO dom = getInvDominion(bukkitPlayer, event.getInventory());
checkFlag(dom, Flag.ENCHANT, bukkitPlayer, event); checkFlag(dom, Flag.ENCHANT, bukkitPlayer, event);
} }
@EventHandler(priority = EventPriority.HIGHEST) // ender_pearl @EventHandler(priority = EventPriority.HIGHEST) // ender_pearl
public void onThrowingEndPearl(ProjectileLaunchEvent event) { public void onThrowingEndPearl(ProjectileLaunchEvent event) {
if (!(event.getEntity().getShooter() instanceof Player)) { if (!(event.getEntity().getShooter() instanceof Player player)) {
return; return;
} }
if (event.getEntity().getType() != EntityType.ENDER_PEARL) { if (event.getEntity().getType() != EntityType.ENDER_PEARL) {
return; return;
} }
Player player = (Player) event.getEntity().getShooter();
DominionDTO dom = Cache.instance.getPlayerCurrentDominion(player); DominionDTO dom = Cache.instance.getPlayerCurrentDominion(player);
checkFlag(dom, Flag.ENDER_PEARL, player, event); checkFlag(dom, Flag.ENDER_PEARL, player, event);
} }
@ -542,10 +527,9 @@ public class PlayerEvents implements Listener {
) { ) {
return; return;
} }
if (!(event.getPlayer() instanceof Player)) { if (!(event.getPlayer() instanceof Player bukkitPlayer)) {
return; return;
} }
Player bukkitPlayer = (Player) event.getPlayer();
DominionDTO dom = getInvDominion(bukkitPlayer, event.getInventory()); DominionDTO dom = getInvDominion(bukkitPlayer, event.getInventory());
checkFlag(dom, Flag.HOPPER, bukkitPlayer, event); checkFlag(dom, Flag.HOPPER, bukkitPlayer, event);
} }
@ -563,10 +547,9 @@ public class PlayerEvents implements Listener {
@EventHandler(priority = EventPriority.HIGHEST) // item_frame_interactive @EventHandler(priority = EventPriority.HIGHEST) // item_frame_interactive
public void onItemFrameInteractive(PlayerInteractEntityEvent event) { public void onItemFrameInteractive(PlayerInteractEntityEvent event) {
Entity entity = event.getRightClicked(); Entity entity = event.getRightClicked();
if (!(entity instanceof ItemFrame)) { if (!(entity instanceof ItemFrame itemFrame)) {
return; return;
} }
ItemFrame itemFrame = (ItemFrame) entity;
if (itemFrame.getItem().getType() == Material.AIR) { if (itemFrame.getItem().getType() == Material.AIR) {
// 为空则当作容器处理见 putSomeOnItemFrame // 为空则当作容器处理见 putSomeOnItemFrame
return; return;
@ -596,7 +579,7 @@ public class PlayerEvents implements Listener {
@EventHandler(priority = EventPriority.HIGHEST) // monster_killing @EventHandler(priority = EventPriority.HIGHEST) // monster_killing
public void onMonsterKilling(EntityDamageByEntityEvent event) { public void onMonsterKilling(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player)) { if (!(event.getDamager() instanceof Player bukkitPlayer)) {
return; return;
} }
// 如果不是怪物 则不处理 // 如果不是怪物 则不处理
@ -604,7 +587,6 @@ public class PlayerEvents implements Listener {
if (!(entity instanceof Monster)) { if (!(entity instanceof Monster)) {
return; return;
} }
Player bukkitPlayer = (Player) event.getDamager();
DominionDTO dom = Cache.instance.getDominionByLoc(entity.getLocation()); DominionDTO dom = Cache.instance.getDominionByLoc(entity.getLocation());
checkFlag(dom, Flag.MONSTER_KILLING, bukkitPlayer, event); checkFlag(dom, Flag.MONSTER_KILLING, bukkitPlayer, event);
} }
@ -758,20 +740,18 @@ public class PlayerEvents implements Listener {
if (event.getInventory().getType() != InventoryType.MERCHANT) { if (event.getInventory().getType() != InventoryType.MERCHANT) {
return; return;
} }
if (!(event.getPlayer() instanceof Player)) { if (!(event.getPlayer() instanceof Player bukkitPlayer)) {
return; return;
} }
Player bukkitPlayer = (Player) event.getPlayer();
DominionDTO dom = getInvDominion(bukkitPlayer, event.getInventory()); DominionDTO dom = getInvDominion(bukkitPlayer, event.getInventory());
checkFlag(dom, Flag.TRADE, bukkitPlayer, event); checkFlag(dom, Flag.TRADE, bukkitPlayer, event);
} }
@EventHandler(priority = EventPriority.HIGHEST) // vehicle_destroy @EventHandler(priority = EventPriority.HIGHEST) // vehicle_destroy
public void onVehicleDestroy(VehicleDestroyEvent event) { public void onVehicleDestroy(VehicleDestroyEvent event) {
if (!(event.getAttacker() instanceof Player)) { if (!(event.getAttacker() instanceof Player player)) {
return; return;
} }
Player player = (Player) event.getAttacker();
DominionDTO dom = Cache.instance.getDominionByLoc(event.getVehicle().getLocation()); DominionDTO dom = Cache.instance.getDominionByLoc(event.getVehicle().getLocation());
checkFlag(dom, Flag.VEHICLE_DESTROY, player, event); checkFlag(dom, Flag.VEHICLE_DESTROY, player, event);
} }
@ -792,13 +772,12 @@ public class PlayerEvents implements Listener {
@EventHandler(priority = EventPriority.HIGHEST) // villager_killing @EventHandler(priority = EventPriority.HIGHEST) // villager_killing
public void onVillagerKilling(EntityDamageByEntityEvent event) { public void onVillagerKilling(EntityDamageByEntityEvent event) {
if (!(event.getDamager() instanceof Player)) { if (!(event.getDamager() instanceof Player player)) {
return; return;
} }
if (!(event.getEntity() instanceof Villager)) { if (!(event.getEntity() instanceof Villager)) {
return; return;
} }
Player player = (Player) event.getDamager();
DominionDTO dom = Cache.instance.getDominionByLoc(event.getEntity().getLocation()); DominionDTO dom = Cache.instance.getDominionByLoc(event.getEntity().getLocation());
checkFlag(dom, Flag.VILLAGER_KILLING, player, event); checkFlag(dom, Flag.VILLAGER_KILLING, player, event);
} }