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);
}
}