Add new disguise option for mobs to ignore selective disguises. Not usable through commands due to potential for abuse by simplistic permissions.
This commit is contained in:
		| @@ -556,18 +556,30 @@ public class DisguiseListener implements Listener { | ||||
|  | ||||
|     @EventHandler | ||||
|     public void onTarget(EntityTargetEvent event) { | ||||
|         if (DisguiseConfig.isMonstersIgnoreDisguises() && event.getTarget() != null && | ||||
|                 event.getTarget() instanceof Player && DisguiseAPI.isDisguised(event.getTarget())) { | ||||
|             switch (event.getReason()) { | ||||
|                 case TARGET_ATTACKED_ENTITY: | ||||
|                 case TARGET_ATTACKED_OWNER: | ||||
|                 case OWNER_ATTACKED_TARGET: | ||||
|                 case CUSTOM: | ||||
|                     break; | ||||
|                 default: | ||||
|                     event.setCancelled(true); | ||||
|                     break; | ||||
|             } | ||||
|         if (event.getTarget() == null) { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         switch (event.getReason()) { | ||||
|             case TARGET_ATTACKED_ENTITY: | ||||
|             case TARGET_ATTACKED_OWNER: | ||||
|             case OWNER_ATTACKED_TARGET: | ||||
|             case CUSTOM: | ||||
|                 return; | ||||
|             default: | ||||
|                 break; | ||||
|         } | ||||
|  | ||||
|         Disguise disguise = DisguiseAPI.getDisguise(event.getTarget()); | ||||
|  | ||||
|         if (disguise == null) { | ||||
|             return; | ||||
|         } | ||||
|  | ||||
|         if (disguise.isMobsIgnoreDisguise()) { | ||||
|             event.setCancelled(true); | ||||
|         } else if (DisguiseConfig.isMonstersIgnoreDisguises() && event.getTarget() instanceof Player) { | ||||
|             event.setCancelled(true); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -54,6 +54,7 @@ public abstract class Disguise { | ||||
|     private boolean modifyBoundingBox = DisguiseConfig.isModifyBoundingBox(); | ||||
|     private boolean playerHiddenFromTab = DisguiseConfig.isHideDisguisedPlayers(); | ||||
|     private boolean replaceSounds = DisguiseConfig.isSoundEnabled(); | ||||
|     private boolean mobsIgnoreDisguise; | ||||
|     private boolean showName; | ||||
|     private transient BukkitTask task; | ||||
|     private Runnable velocityRunnable; | ||||
| @@ -864,4 +865,12 @@ public abstract class Disguise { | ||||
|     public boolean stopDisguise() { | ||||
|         return removeDisguise(); | ||||
|     } | ||||
|  | ||||
|     public boolean isMobsIgnoreDisguise() { | ||||
|         return mobsIgnoreDisguise; | ||||
|     } | ||||
|  | ||||
|     public void setMobsIgnoreDisguise(boolean mobsIgnoreDisguise) { | ||||
|         this.mobsIgnoreDisguise = mobsIgnoreDisguise; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user