diff --git a/pom.xml b/pom.xml index b207243..3c19518 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ cn.lunadeer Dominion - 1.9.3-beta + 1.10.0-beta jar Dominion diff --git a/src/main/java/cn/lunadeer/dominion/commands/Helper.java b/src/main/java/cn/lunadeer/dominion/commands/Helper.java index d1bf8ab..19d168a 100644 --- a/src/main/java/cn/lunadeer/dominion/commands/Helper.java +++ b/src/main/java/cn/lunadeer/dominion/commands/Helper.java @@ -30,7 +30,7 @@ public class Helper { "place", "pressure", "riding", "repeater", "shear", "shoot", - "tnt_explode", "trade", + "tnt_explode", "trade", "trample", "vehicle_destroy", "vehicle_spawn", "wither_spawn"); diff --git a/src/main/java/cn/lunadeer/dominion/controllers/FlagsController.java b/src/main/java/cn/lunadeer/dominion/controllers/FlagsController.java index 5439fca..edf36f5 100644 --- a/src/main/java/cn/lunadeer/dominion/controllers/FlagsController.java +++ b/src/main/java/cn/lunadeer/dominion/controllers/FlagsController.java @@ -75,6 +75,7 @@ public class FlagsController { case "shoot": return dominion.setShoot(value); case "tnt_explode": return dominion.setTntExplode(value); case "trade": return dominion.setTrade(value); + case "trample": return dominion.setTrample(value); case "vehicle_destroy": return dominion.setVehicleDestroy(value); case "vehicle_spawn": return dominion.setVehicleSpawn(value); case "wither_spawn": return dominion.setWitherSpawn(value); diff --git a/src/main/java/cn/lunadeer/dominion/dtos/DominionDTO.java b/src/main/java/cn/lunadeer/dominion/dtos/DominionDTO.java index c2854a6..ca20d25 100644 --- a/src/main/java/cn/lunadeer/dominion/dtos/DominionDTO.java +++ b/src/main/java/cn/lunadeer/dominion/dtos/DominionDTO.java @@ -69,6 +69,7 @@ public class DominionDTO { rs.getBoolean("shoot"), rs.getBoolean("tnt_explode"), rs.getBoolean("trade"), + rs.getBoolean("trample"), rs.getBoolean("vehicle_destroy"), rs.getBoolean("vehicle_spawn"), rs.getBoolean("wither_spawn") @@ -215,6 +216,7 @@ public class DominionDTO { "shoot = " + dominion.getShoot() + ", " + "tnt_explode = " + dominion.getTntExplode() + ", " + // dom only "trade = " + dominion.getTrade() + ", " + + "trample = " + dominion.getTrample() + ", " + // dom only "vehicle_destroy = " + dominion.getVehicleDestroy() + ", " + "vehicle_spawn = " + dominion.getVehicleSpawn() + ", " + "wither_spawn = " + dominion.getWitherSpawn() + " " + // dom only @@ -243,7 +245,7 @@ public class DominionDTO { Boolean place, Boolean pressure, Boolean riding, Boolean repeater, Boolean shear, Boolean shoot, - Boolean tntExplode, Boolean trade, + Boolean tntExplode, Boolean trade, Boolean trample, Boolean vehicleDestroy, Boolean vehicleSpawn, Boolean witherSpawn) { @@ -298,6 +300,7 @@ public class DominionDTO { this.shoot = shoot; this.tntExplode = tntExplode; this.trade = trade; + this.trample = trample; this.vehicleDestroy = vehicleDestroy; this.vehicleSpawn = vehicleSpawn; this.witherSpawn = witherSpawn; @@ -315,7 +318,7 @@ public class DominionDTO { false, false, false, false, true, true, false, false, false, false, false, false, false, true, false, false, false, false, - false, false, false, false, false, false, false); + false, false, false, false, false, false, false, false); } public DominionDTO(UUID owner, String name, String world, @@ -373,6 +376,7 @@ public class DominionDTO { private Boolean shoot = false; private Boolean tntExplode = false; private Boolean trade = false; + private Boolean trample = false; private Boolean vehicleDestroy = false; private Boolean vehicleSpawn = false; private Boolean witherSpawn = false; @@ -824,6 +828,15 @@ public class DominionDTO { return update(this); } + public Boolean getTrample() { + return trample; + } + + public DominionDTO setTrample(Boolean trample) { + this.trample = trample; + return update(this); + } + public Boolean getVehicleDestroy() { return vehicleDestroy; } diff --git a/src/main/java/cn/lunadeer/dominion/events/EnvironmentEvents.java b/src/main/java/cn/lunadeer/dominion/events/EnvironmentEvents.java index 6b5ff9f..2d83500 100644 --- a/src/main/java/cn/lunadeer/dominion/events/EnvironmentEvents.java +++ b/src/main/java/cn/lunadeer/dominion/events/EnvironmentEvents.java @@ -3,24 +3,30 @@ package cn.lunadeer.dominion.events; import cn.lunadeer.dominion.Cache; import cn.lunadeer.dominion.dtos.DominionDTO; import org.bukkit.Location; +import org.bukkit.block.Block; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; +import org.bukkit.event.block.Action; import org.bukkit.event.block.BlockFromToEvent; import org.bukkit.event.block.BlockIgniteEvent; import org.bukkit.event.entity.CreatureSpawnEvent; import org.bukkit.event.entity.EntityExplodeEvent; +import org.bukkit.event.entity.EntityInteractEvent; +import org.bukkit.event.player.PlayerInteractEvent; import java.util.Objects; +import static org.bukkit.Material.FARMLAND; + public class EnvironmentEvents implements Listener { @EventHandler(priority = EventPriority.HIGHEST) // creeper_explode public void onEntityExplode(EntityExplodeEvent event) { Entity entity = event.getEntity(); - if (entity.getType() != EntityType.CREEPER && entity.getType() != EntityType.WITHER_SKULL){ + if (entity.getType() != EntityType.CREEPER && entity.getType() != EntityType.WITHER_SKULL) { return; } DominionDTO dom = Cache.instance.getDominion(event.getLocation()); @@ -34,7 +40,7 @@ public class EnvironmentEvents implements Listener { } @EventHandler(priority = EventPriority.HIGHEST) // fire_spread - public void onFireSpread(BlockIgniteEvent event){ + public void onFireSpread(BlockIgniteEvent event) { Player player = event.getPlayer(); if (player != null) { // 如果点燃事件没有玩家触发,那么就是火焰蔓延 @@ -59,8 +65,8 @@ public class EnvironmentEvents implements Listener { return; } DominionDTO dom_from = Cache.instance.getDominion(from); - if (dom_from != null){ - if (Objects.equals(dom_from.getId(), dom_to.getId())){ + if (dom_from != null) { + if (Objects.equals(dom_from.getId(), dom_to.getId())) { return; } } @@ -72,7 +78,7 @@ public class EnvironmentEvents implements Listener { @EventHandler(priority = EventPriority.HIGHEST) // tnt_explode public void onTntExplode(EntityExplodeEvent event) { Entity entity = event.getEntity(); - if (entity.getType() != EntityType.MINECART_TNT && entity.getType() != EntityType.PRIMED_TNT){ + if (entity.getType() != EntityType.MINECART_TNT && entity.getType() != EntityType.PRIMED_TNT) { return; } DominionDTO dom = Cache.instance.getDominion(event.getLocation()); @@ -85,8 +91,31 @@ public class EnvironmentEvents implements Listener { event.setCancelled(true); } + @EventHandler(priority = EventPriority.HIGHEST) // trample + public void onFarmlandTrample(PlayerInteractEvent event) { + Block block = event.getClickedBlock(); + if (block == null) { + return; + } + if (block.getType() != FARMLAND) { + return; + } + if (event.getAction() != Action.PHYSICAL) { + return; + } + Location location = block.getLocation(); + DominionDTO dom = Cache.instance.getDominion(location); + if (dom == null) { + return; + } + if (dom.getTrample()) { + return; + } + event.setCancelled(true); + } + @EventHandler(priority = EventPriority.HIGHEST) // wither_spawn - public void onWitherSpawn(CreatureSpawnEvent event){ + public void onWitherSpawn(CreatureSpawnEvent event) { Entity entity = event.getEntity(); if (entity.getType() != EntityType.WITHER) { return; diff --git a/src/main/java/cn/lunadeer/dominion/tuis/DominionFlagInfo.java b/src/main/java/cn/lunadeer/dominion/tuis/DominionFlagInfo.java index 880b275..925c366 100644 --- a/src/main/java/cn/lunadeer/dominion/tuis/DominionFlagInfo.java +++ b/src/main/java/cn/lunadeer/dominion/tuis/DominionFlagInfo.java @@ -380,6 +380,15 @@ public class DominionFlagInfo { .append(Button.createRed("☐", "/dominion set trade true " + dominion.getName() + " " + page)) .append("交易")); } + if (dominion.getTrample()){ + view.add(Line.create() + .append(Button.createGreen("☑", "/dominion set trample false " + dominion.getName() + " " + page)) + .append("践踏耕地")); + } else { + view.add(Line.create() + .append(Button.createRed("☐", "/dominion set trample true " + dominion.getName() + " " + page)) + .append("践踏耕地")); + } if (dominion.getVehicleDestroy()) { view.add(Line.create() .append(Button.createGreen("☑", "/dominion set vehicle_destroy false " + dominion.getName() + " " + page)) diff --git a/src/main/java/cn/lunadeer/dominion/utils/Database.java b/src/main/java/cn/lunadeer/dominion/utils/Database.java index d34a8b3..75772fe 100644 --- a/src/main/java/cn/lunadeer/dominion/utils/Database.java +++ b/src/main/java/cn/lunadeer/dominion/utils/Database.java @@ -182,5 +182,9 @@ public class Database { query(sql); sql = "ALTER TABLE player_privilege ADD COLUMN IF NOT EXISTS vehicle_spawn BOOLEAN NOT NULL DEFAULT FALSE;"; query(sql); + + // 1.10.0 + sql = "ALTER TABLE dominion ADD COLUMN IF NOT EXISTS trample BOOLEAN NOT NULL DEFAULT FALSE;"; + query(sql); } }