mirror of
https://github.com/ColdeZhang/Dominion.git
synced 2025-02-10 05:39:45 +08:00
修复玩家可以用弓箭打掉地图的问题
This commit is contained in:
parent
79d7f13a94
commit
9e1ad7640a
2
pom.xml
2
pom.xml
@ -6,7 +6,7 @@
|
||||
|
||||
<groupId>cn.lunadeer</groupId>
|
||||
<artifactId>Dominion</artifactId>
|
||||
<version>1.42.7-beta</version>
|
||||
<version>1.42.8-beta</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>Dominion</name>
|
||||
|
@ -5,6 +5,7 @@ import cn.lunadeer.dominion.dtos.DominionDTO;
|
||||
import cn.lunadeer.dominion.dtos.Flag;
|
||||
import cn.lunadeer.minecraftpluginutils.XLogger;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.*;
|
||||
import org.bukkit.event.EventHandler;
|
||||
@ -52,11 +53,28 @@ public class EnvironmentEvents implements Listener {
|
||||
if (entity.getType() != EntityType.ARMOR_STAND) {
|
||||
return;
|
||||
}
|
||||
Entity damager = event.getDamager();
|
||||
if (isNotExplodeEntity(damager)) {
|
||||
DominionDTO dom = Cache.instance.getDominionByLoc(entity.getLocation());
|
||||
checkFlag(dom, Flag.CREEPER_EXPLODE, event);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST) // creeper_explode - other entity shoot
|
||||
public void removeSomeOnItemFrameByArrow(EntityDamageByEntityEvent event) {
|
||||
Entity entity = event.getEntity();
|
||||
if (!(entity instanceof ItemFrame)) {
|
||||
return;
|
||||
}
|
||||
DominionDTO dom = Cache.instance.getDominionByLoc(entity.getLocation());
|
||||
ItemFrame itemFrame = (ItemFrame) entity;
|
||||
if (itemFrame.getItem().getType() == Material.AIR) {
|
||||
return;
|
||||
}
|
||||
if (!(event.getDamager() instanceof Arrow)) {
|
||||
return;
|
||||
}
|
||||
Arrow arrow = (Arrow) event.getDamager();
|
||||
if (arrow.getShooter() instanceof Player) {
|
||||
return;
|
||||
}
|
||||
DominionDTO dom = Cache.instance.getDominionByLoc(itemFrame.getLocation());
|
||||
checkFlag(dom, Flag.CREEPER_EXPLODE, event);
|
||||
}
|
||||
|
||||
|
@ -291,6 +291,30 @@ public class PlayerEvents implements Listener {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST) // container (item frame get)
|
||||
public void removeSomeOnItemFrameByArrow(EntityDamageByEntityEvent event) {
|
||||
Entity entity = event.getEntity();
|
||||
if (!(entity instanceof ItemFrame)) {
|
||||
return;
|
||||
}
|
||||
ItemFrame itemFrame = (ItemFrame) entity;
|
||||
if (itemFrame.getItem().getType() == Material.AIR) {
|
||||
return;
|
||||
}
|
||||
if (!(event.getDamager() instanceof Arrow)) {
|
||||
return;
|
||||
}
|
||||
Arrow arrow = (Arrow) event.getDamager();
|
||||
if (!(arrow.getShooter() instanceof Player)) {
|
||||
return;
|
||||
}
|
||||
Player bukkitPlayer = (Player) arrow.getShooter();
|
||||
if (hasContainerPermission(bukkitPlayer, itemFrame.getLocation())) {
|
||||
return;
|
||||
}
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST) // craft
|
||||
public void onCraft(InventoryOpenEvent event) {
|
||||
Inventory inv = event.getInventory();
|
||||
|
Loading…
Reference in New Issue
Block a user