Skip to content

Commit 3877a8b

Browse files
author
nafu-at
committed
Change: Peaceful mode conditions.
1 parent 223f3f1 commit 3877a8b

File tree

3 files changed

+14
-6
lines changed

3 files changed

+14
-6
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ plugins {
77
}
88

99
group = 'page.nafuchoco'
10-
version = '5.0.0-SNAPSHOT-1'
10+
version = '5.0.0-SNAPSHOT-2'
1111

1212
java {
1313
toolchain {

src/main/java/page/nafuchoco/soloservercore/listener/PeacefulModeEventListener.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,10 @@ public void onEntityTargetEvent(EntityTargetEvent event) {
3434
if (event.getTarget() instanceof Player player && event.getEntity() instanceof Monster) {
3535
val sscPlayer = SoloServerApi.getInstance().getSSCPlayer(player);
3636
if (sscPlayer.isPeacefulMode()) {
37-
if (event.getReason() == EntityTargetEvent.TargetReason.CLOSEST_PLAYER
37+
if (event.getEntity() instanceof Monster
38+
&& (event.getReason() == EntityTargetEvent.TargetReason.CLOSEST_PLAYER
3839
|| event.getReason() == EntityTargetEvent.TargetReason.TARGET_ATTACKED_ENTITY
39-
|| event.getReason() == EntityTargetEvent.TargetReason.TARGET_ATTACKED_NEARBY_ENTITY)
40+
|| event.getReason() == EntityTargetEvent.TargetReason.TARGET_ATTACKED_NEARBY_ENTITY))
4041
event.setCancelled(true);
4142
}
4243
}
@@ -57,16 +58,22 @@ public void onEntityDamageEvent(EntityDamageEvent event) {
5758

5859
@EventHandler
5960
public void onEntityDamageByEntityEvent(EntityDamageByEntityEvent event) {
61+
boolean cancelled = event.isCancelled(); // 今後追加の可能性
62+
// プレイヤーに対する攻撃に関する処理
6063
if (event.getEntity() instanceof Player player) {
6164
val sscPlayer = SoloServerApi.getInstance().getSSCPlayer(player);
6265
if (sscPlayer.isPeacefulMode()) {
63-
boolean cancelled = event.isCancelled(); // 今後追加の可能性
6466
if (event.getDamager() instanceof TNTPrimed) // TNT爆破の無効化
6567
cancelled = true;
66-
67-
event.setCancelled(cancelled);
6868
}
69+
} else if (event.getDamager() instanceof Player player
70+
&& event.getEntity() instanceof Monster) { // プレイヤーによる攻撃に関する処理
71+
val sscPlayer = SoloServerApi.getInstance().getSSCPlayer(player);
72+
if (sscPlayer.isPeacefulMode() && !player.hasPermission("soloservercore.peaceful.bypass"))
73+
cancelled = true;
6974
}
75+
76+
event.setCancelled(cancelled);
7077
}
7178

7279
@EventHandler

src/main/resources/plugin.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ permissions:
5252
soloservercore.spawn: true
5353
soloservercore.home: true
5454
soloservercore.peaceful: true
55+
soloservercore.peaceful.bypass: true
5556
soloservercore.team.create: true
5657
soloservercore.team.invite: true
5758
soloservercore.team.accept: true

0 commit comments

Comments
 (0)