@@ -34,9 +34,10 @@ public void onEntityTargetEvent(EntityTargetEvent event) {
34
34
if (event .getTarget () instanceof Player player && event .getEntity () instanceof Monster ) {
35
35
val sscPlayer = SoloServerApi .getInstance ().getSSCPlayer (player );
36
36
if (sscPlayer .isPeacefulMode ()) {
37
- if (event .getReason () == EntityTargetEvent .TargetReason .CLOSEST_PLAYER
37
+ if (event .getEntity () instanceof Monster
38
+ && (event .getReason () == EntityTargetEvent .TargetReason .CLOSEST_PLAYER
38
39
|| 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 ))
40
41
event .setCancelled (true );
41
42
}
42
43
}
@@ -57,16 +58,22 @@ public void onEntityDamageEvent(EntityDamageEvent event) {
57
58
58
59
@ EventHandler
59
60
public void onEntityDamageByEntityEvent (EntityDamageByEntityEvent event ) {
61
+ boolean cancelled = event .isCancelled (); // 今後追加の可能性
62
+ // プレイヤーに対する攻撃に関する処理
60
63
if (event .getEntity () instanceof Player player ) {
61
64
val sscPlayer = SoloServerApi .getInstance ().getSSCPlayer (player );
62
65
if (sscPlayer .isPeacefulMode ()) {
63
- boolean cancelled = event .isCancelled (); // 今後追加の可能性
64
66
if (event .getDamager () instanceof TNTPrimed ) // TNT爆破の無効化
65
67
cancelled = true ;
66
-
67
- event .setCancelled (cancelled );
68
68
}
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 ;
69
74
}
75
+
76
+ event .setCancelled (cancelled );
70
77
}
71
78
72
79
@ EventHandler
0 commit comments