Add a config option which fixes a bug where you can dye sheep/wolf client sidedly
This commit is contained in:
		| @@ -28,6 +28,12 @@ RemoveHeldItem: false | ||||
| # Set this to true if you want the disguise to get the animations of the disguised entity. Such as invisible, on fire, sprinting, sneaking, blocking | ||||
| # This is only valid if you set a animation on the disguise itself. Because the entitys animations are applied otherwise. | ||||
| AddEntityAnimations: true | ||||
| # When a sheep or wolf is right clicked with dye. The client automatically assumes it was successful and displays the sheeps wool or the wolfs collar as dyed. | ||||
| # This is a option that either prevents that happening, or it changes their color officially in the plugin so that everyone sees it changed. | ||||
| # Its currently set to false which means that the color is not changed and will refresh itself to the player. | ||||
| # Please note that this will not remove the dye from their hands. This also does not check if the disguised entity is actually a sheep/wolf and wants a say in its color. | ||||
| DyeableSheep: false | ||||
| DyeableWolf: false | ||||
| # This is only called into action when the disguise is constructed using the commands. | ||||
| # And when the disguise supports that. This will not be used at all for plugins constructing the disguises for instance. | ||||
| # Such as prophunt. Its also false because its kind of a retarded feature. | ||||
|   | ||||
| @@ -9,6 +9,8 @@ public class DisguiseConfig { | ||||
|     private static boolean bedEnabled; | ||||
|     private static boolean blowDisguisesOnAttack; | ||||
|     private static boolean collectEnabled; | ||||
|     private static boolean colorizeSheep; | ||||
|     private static boolean colorizeWolf; | ||||
|     private static String disguiseBlownMessage; | ||||
|     private static int disguiseCloneExpire; | ||||
|     private static int disguiseEntityExpire; | ||||
| @@ -81,6 +83,8 @@ public class DisguiseConfig { | ||||
|         setDisguiseEntityExpire(config.getInt("DisguiseEntityExpire")); | ||||
|         setDisguiseCloneExpire(config.getInt("DisguiseCloneExpire")); | ||||
|         setMaxClonedDisguises(config.getInt("DisguiseCloneSize")); | ||||
|         setSheepDyeable(config.getBoolean("DyeableSheep")); | ||||
|         setWolfDyeable(config.getBoolean("DyeableWolf")); | ||||
|     } | ||||
|  | ||||
|     public static boolean isAnimationPacketsEnabled() { | ||||
| @@ -177,6 +181,10 @@ public class DisguiseConfig { | ||||
|         return hearSelfDisguise; | ||||
|     } | ||||
|  | ||||
|     public static boolean isSheepDyeable() { | ||||
|         return colorizeSheep; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Is the sound packets caught and modified | ||||
|      */ | ||||
| @@ -202,6 +210,10 @@ public class DisguiseConfig { | ||||
|         return witherSkullEnabled; | ||||
|     } | ||||
|  | ||||
|     public static boolean isWolfDyeable() { | ||||
|         return colorizeWolf; | ||||
|     } | ||||
|  | ||||
|     public static void setAddEntityAnimations(boolean isEntityAnimationsAdded) { | ||||
|         entityAnimationsAdded = isEntityAnimationsAdded; | ||||
|     } | ||||
| @@ -347,6 +359,10 @@ public class DisguiseConfig { | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public static void setSheepDyeable(boolean color) { | ||||
|         colorizeSheep = color; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Set if the disguises play sounds when hurt | ||||
|      */ | ||||
| @@ -369,6 +385,10 @@ public class DisguiseConfig { | ||||
|         witherSkullEnabled = enabled; | ||||
|     } | ||||
|  | ||||
|     public static void setWolfDyeable(boolean color) { | ||||
|         colorizeWolf = color; | ||||
|     } | ||||
|  | ||||
|     private DisguiseConfig() { | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -8,6 +8,7 @@ import java.util.Random; | ||||
| import me.libraryaddict.disguise.DisguiseAPI; | ||||
| import me.libraryaddict.disguise.DisguiseConfig; | ||||
| import me.libraryaddict.disguise.LibsDisguises; | ||||
| import me.libraryaddict.disguise.disguisetypes.AnimalColor; | ||||
| import me.libraryaddict.disguise.disguisetypes.Disguise; | ||||
| import me.libraryaddict.disguise.disguisetypes.DisguiseType; | ||||
| import me.libraryaddict.disguise.disguisetypes.FlagWatcher; | ||||
| @@ -16,6 +17,8 @@ import me.libraryaddict.disguise.disguisetypes.MobDisguise; | ||||
| import me.libraryaddict.disguise.disguisetypes.PlayerDisguise; | ||||
| import me.libraryaddict.disguise.disguisetypes.watchers.LivingWatcher; | ||||
| import me.libraryaddict.disguise.disguisetypes.watchers.PlayerWatcher; | ||||
| import me.libraryaddict.disguise.disguisetypes.watchers.SheepWatcher; | ||||
| import me.libraryaddict.disguise.disguisetypes.watchers.WolfWatcher; | ||||
| import me.libraryaddict.disguise.utilities.DisguiseSound.SoundType; | ||||
| import me.libraryaddict.disguise.utilities.ReflectionManager.LibVersion; | ||||
|  | ||||
| @@ -75,11 +78,26 @@ public class PacketsManager { | ||||
|                 try { | ||||
|                     Player observer = event.getPlayer(); | ||||
|                     StructureModifier<Entity> entityModifer = event.getPacket().getEntityModifier(observer.getWorld()); | ||||
|                     org.bukkit.entity.Entity entity = entityModifer.read(LibVersion.is1_7() ? 0 : 1); | ||||
|                     Entity entity = entityModifer.read(LibVersion.is1_7() ? 0 : 1); | ||||
|                     if (entity instanceof ExperienceOrb || entity instanceof Item || entity instanceof Arrow | ||||
|                             || entity == observer) { | ||||
|                         event.setCancelled(true); | ||||
|                     } | ||||
|                     ItemStack item = observer.getItemInHand(); | ||||
|                     if (item != null && item.getType() == Material.INK_SACK) { | ||||
|                         Disguise disguise = DisguiseAPI.getDisguise(observer, entity); | ||||
|                         if (disguise != null | ||||
|                                 && (disguise.getType() == DisguiseType.SHEEP || disguise.getType() == DisguiseType.WOLF)) { | ||||
|                             AnimalColor color = AnimalColor.getColor(item.getDurability()); | ||||
|                             if (disguise.getType() == DisguiseType.SHEEP) { | ||||
|                                 SheepWatcher watcher = (SheepWatcher) disguise.getWatcher(); | ||||
|                                 watcher.setColor(DisguiseConfig.isSheepDyeable() ? color : watcher.getColor()); | ||||
|                             } else { | ||||
|                                 WolfWatcher watcher = (WolfWatcher) disguise.getWatcher(); | ||||
|                                 watcher.setCollarColor(DisguiseConfig.isWolfDyeable() ? color : watcher.getCollarColor()); | ||||
|                             } | ||||
|                         } | ||||
|                     } | ||||
|                 } catch (Exception e) { | ||||
|                     e.printStackTrace(); | ||||
|                 } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user