diff --git a/pom.xml b/pom.xml
index e0c951b..3a5cce9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
cn.lunadeer
Dominion
- 1.10.6-beta
+ 1.11.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 19d168a..e478aca 100644
--- a/src/main/java/cn/lunadeer/dominion/commands/Helper.java
+++ b/src/main/java/cn/lunadeer/dominion/commands/Helper.java
@@ -26,7 +26,7 @@ public class Helper {
"harvest", "honey", "hook", "hopper",
"ignite",
"lever",
- "monster_killing", "move",
+ "mob_drop_item", "monster_killing", "move",
"place", "pressure",
"riding", "repeater",
"shear", "shoot",
diff --git a/src/main/java/cn/lunadeer/dominion/controllers/FlagsController.java b/src/main/java/cn/lunadeer/dominion/controllers/FlagsController.java
index edf36f5..7b25412 100644
--- a/src/main/java/cn/lunadeer/dominion/controllers/FlagsController.java
+++ b/src/main/java/cn/lunadeer/dominion/controllers/FlagsController.java
@@ -65,6 +65,7 @@ public class FlagsController {
case "hopper": return dominion.setHopper(value);
case "ignite": return dominion.setIgnite(value);
case "lever": return dominion.setLever(value);
+ case "mob_drop_item": return dominion.setMobDropItem(value);
case "monster_killing": return dominion.setMonsterKilling(value);
case "move": return dominion.setMove(value);
case "place": return dominion.setPlace(value);
diff --git a/src/main/java/cn/lunadeer/dominion/dtos/DominionDTO.java b/src/main/java/cn/lunadeer/dominion/dtos/DominionDTO.java
index ca20d25..9de4fad 100644
--- a/src/main/java/cn/lunadeer/dominion/dtos/DominionDTO.java
+++ b/src/main/java/cn/lunadeer/dominion/dtos/DominionDTO.java
@@ -59,6 +59,7 @@ public class DominionDTO {
rs.getBoolean("hopper"),
rs.getBoolean("ignite"),
rs.getBoolean("lever"),
+ rs.getBoolean("mob_drop_item"),
rs.getBoolean("monster_killing"),
rs.getBoolean("move"),
rs.getBoolean("place"),
@@ -206,6 +207,7 @@ public class DominionDTO {
"hopper = " + dominion.getHopper() + ", " +
"ignite = " + dominion.getIgnite() + ", " +
"lever = " + dominion.getLever() + ", " +
+ "mob_drop_item = " + dominion.getMobDropItem() + ", " + // dom only
"monster_killing = " + dominion.getMonsterKilling() + ", " +
"move = " + dominion.getMove() + ", " +
"place = " + dominion.getPlace() + ", " +
@@ -241,7 +243,7 @@ public class DominionDTO {
Boolean harvest, Boolean honey, Boolean hook, Boolean hopper,
Boolean ignite,
Boolean lever,
- Boolean monsterKilling, Boolean move,
+ Boolean mobDropItem, Boolean monsterKilling, Boolean move,
Boolean place, Boolean pressure,
Boolean riding, Boolean repeater,
Boolean shear, Boolean shoot,
@@ -290,6 +292,7 @@ public class DominionDTO {
this.hopper = hopper;
this.ignite = ignite;
this.lever = lever;
+ this.mobDropItem = mobDropItem;
this.monsterKilling = monsterKilling;
this.move = move;
this.place = place;
@@ -316,7 +319,7 @@ public class DominionDTO {
false, false, false, false, false,
false, false, false, false, false, false,
false, false, false, false, true,
- true, false, false, false, false, false, false,
+ true, false, false, false, false, false, false, true,
false, true, false, false, false, false,
false, false, false, false, false, false, false, false);
}
@@ -366,6 +369,7 @@ public class DominionDTO {
private Boolean hopper = false;
private Boolean ignite = false;
private Boolean lever = false;
+ private Boolean mobDropItem = true;
private Boolean monsterKilling = false;
private Boolean move = true;
private Boolean place = false;
@@ -738,6 +742,15 @@ public class DominionDTO {
return update(this);
}
+ public Boolean getMobDropItem() {
+ return mobDropItem;
+ }
+
+ public DominionDTO setMobDropItem(Boolean mobDropItem) {
+ this.mobDropItem = mobDropItem;
+ return update(this);
+ }
+
public Boolean getMonsterKilling() {
return monsterKilling;
}
diff --git a/src/main/java/cn/lunadeer/dominion/events/EnvironmentEvents.java b/src/main/java/cn/lunadeer/dominion/events/EnvironmentEvents.java
index 2d83500..f645c11 100644
--- a/src/main/java/cn/lunadeer/dominion/events/EnvironmentEvents.java
+++ b/src/main/java/cn/lunadeer/dominion/events/EnvironmentEvents.java
@@ -14,6 +14,7 @@ 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.EntityDropItemEvent;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.entity.EntityInteractEvent;
import org.bukkit.event.player.PlayerInteractEvent;
@@ -75,6 +76,22 @@ public class EnvironmentEvents implements Listener {
}
}
+ @EventHandler(priority = EventPriority.HIGHEST) // mob_drop_item
+ public void onMobDropItem(EntityDropItemEvent event) {
+ Entity entity = event.getEntity();
+ if (entity instanceof Player) {
+ return;
+ }
+ DominionDTO dom = Cache.instance.getDominion(entity.getLocation());
+ if (dom == null) {
+ return;
+ }
+ if (dom.getMobDropItem()) {
+ return;
+ }
+ event.setCancelled(true);
+ }
+
@EventHandler(priority = EventPriority.HIGHEST) // tnt_explode
public void onTntExplode(EntityExplodeEvent event) {
Entity entity = event.getEntity();
diff --git a/src/main/java/cn/lunadeer/dominion/events/PlayerEvents.java b/src/main/java/cn/lunadeer/dominion/events/PlayerEvents.java
index 9d7422f..84d084f 100644
--- a/src/main/java/cn/lunadeer/dominion/events/PlayerEvents.java
+++ b/src/main/java/cn/lunadeer/dominion/events/PlayerEvents.java
@@ -865,29 +865,41 @@ public class PlayerEvents implements Listener {
}
@EventHandler(priority = EventPriority.HIGHEST) // place
- public void onPlace(BlockPlaceEvent event) {
+ public void onPlaceBlock(BlockPlaceEvent event) {
Player player = event.getPlayer();
- DominionDTO dom = Cache.instance.getPlayerCurrentDominion(player);
- if (dom == null) {
+ if (onPlace(player)) {
return;
}
- if (Apis.hasPermission(player, dom)) {
- return;
- }
- PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(player, dom);
- if (privilege != null) {
- if (privilege.getPlace()) {
- return;
- }
- } else {
- if (dom.getPlace()) {
- return;
- }
- }
Notification.error(player, "你没有放置方块的权限");
event.setCancelled(true);
}
+ @EventHandler(priority = EventPriority.HIGHEST)
+ public void onPlaceLavaOrWater(PlayerBucketEmptyEvent event) {
+ Player player = event.getPlayer();
+ if (onPlace(player)) {
+ return;
+ }
+ Notification.error(player, "你没有放置方块的权限");
+ event.setCancelled(true);
+ }
+
+ public static boolean onPlace(Player player) {
+ DominionDTO dom = Cache.instance.getPlayerCurrentDominion(player);
+ if (dom == null) {
+ return false;
+ }
+ if (Apis.hasPermission(player, dom)) {
+ return true;
+ }
+ PlayerPrivilegeDTO privilege = Cache.instance.getPlayerPrivilege(player, dom);
+ if (privilege != null) {
+ return privilege.getPlace();
+ } else {
+ return dom.getPlace();
+ }
+ }
+
@EventHandler(priority = EventPriority.HIGHEST) // pressure
public void onPressure(PlayerInteractEvent event) {
if (event.getClickedBlock() == null) {
diff --git a/src/main/java/cn/lunadeer/dominion/tuis/DominionFlagInfo.java b/src/main/java/cn/lunadeer/dominion/tuis/DominionFlagInfo.java
index 925c366..b6bdfc8 100644
--- a/src/main/java/cn/lunadeer/dominion/tuis/DominionFlagInfo.java
+++ b/src/main/java/cn/lunadeer/dominion/tuis/DominionFlagInfo.java
@@ -290,6 +290,15 @@ public class DominionFlagInfo {
.append(Button.createRed("☐", "/dominion set lever true " + dominion.getName() + " " + page))
.append("使用拉杆"));
}
+ if (dominion.getMobDropItem()){
+ view.add(Line.create()
+ .append(Button.createGreen("☑", "/dominion set mob_drop_item false " + dominion.getName() + " " + page))
+ .append("生物战利品掉落"));
+ } else {
+ view.add(Line.create()
+ .append(Button.createRed("☐", "/dominion set mob_drop_item true " + dominion.getName() + " " + page))
+ .append("生物战利品掉落"));
+ }
if (dominion.getMonsterKilling()) {
view.add(Line.create()
.append(Button.createGreen("☑", "/dominion set monster_killing 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 75772fe..78827f0 100644
--- a/src/main/java/cn/lunadeer/dominion/utils/Database.java
+++ b/src/main/java/cn/lunadeer/dominion/utils/Database.java
@@ -186,5 +186,9 @@ public class Database {
// 1.10.0
sql = "ALTER TABLE dominion ADD COLUMN IF NOT EXISTS trample BOOLEAN NOT NULL DEFAULT FALSE;";
query(sql);
+
+ // 1.11.0
+ sql = "ALTER TABLE dominion ADD COLUMN IF NOT EXISTS mob_drop_item BOOLEAN NOT NULL DEFAULT TRUE;";
+ query(sql);
}
}