LibsDisguises/src/me/libraryaddict/disguise/DisguiseConfig.java
2016-05-10 03:28:38 +12:00

542 lines
15 KiB
Java

package me.libraryaddict.disguise;
import org.bukkit.ChatColor;
import org.bukkit.configuration.ConfigurationSection;
import me.libraryaddict.disguise.utilities.PacketsManager;
public class DisguiseConfig
{
private static boolean animationEnabled;
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;
private static boolean entityAnimationsAdded;
private static boolean entityStatusEnabled;
private static boolean equipmentEnabled;
private static boolean hearSelfDisguise;
private static boolean viewSelfDisguise;
private static boolean hidingArmor;
private static boolean hidingHeldItem;
private static boolean keepDisguiseEntityDespawn;
private static boolean keepDisguisePlayerDeath;
private static boolean keepDisguisePlayerLogout;
private static int maxClonedDisguises;
private static boolean maxHealthIsDisguisedEntity;
private static boolean miscDisguisesForLivingEnabled;
private static boolean modifyBoundingBox;
private static boolean movementEnabled;
private static boolean sendsEntityMetadata;
private static boolean sendVelocity;
private static boolean showNameAboveHead;
private static boolean showNameAboveHeadAlwaysVisible;
private static boolean targetDisguises;
private static boolean undisguiseSwitchWorlds;
private static boolean stopShulkerDisguisesFromMoving;
private static String updateMessage = ChatColor.RED + "[LibsDisguises] " + ChatColor.DARK_RED
+ "There is a update ready to be downloaded! You are using " + ChatColor.RED + "v%s" + ChatColor.DARK_RED
+ ", the new version is " + ChatColor.RED + "%s" + ChatColor.DARK_RED + "!";
private static String updateNotificationPermission;
private static boolean witherSkullEnabled;
public static String getDisguiseBlownMessage()
{
return disguiseBlownMessage;
}
public static int getDisguiseCloneExpire()
{
return disguiseCloneExpire;
}
public static int getDisguiseEntityExpire()
{
return disguiseEntityExpire;
}
public static int getMaxClonedDisguises()
{
return maxClonedDisguises;
}
public static String getUpdateMessage()
{
return updateMessage;
}
public static String getUpdateNotificationPermission()
{
return updateNotificationPermission;
}
public static void initConfig(ConfigurationSection config)
{
setSoundsEnabled(config.getBoolean("DisguiseSounds"));
setVelocitySent(config.getBoolean("SendVelocity"));
setViewDisguises(config.getBoolean("ViewSelfDisguises")); // Since we can now toggle, the view disguises listener must
// always be on
PacketsManager.setViewDisguisesListener(true);
setHearSelfDisguise(config.getBoolean("HearSelfDisguise"));
setHideArmorFromSelf(config.getBoolean("RemoveArmor"));
setHideHeldItemFromSelf(config.getBoolean("RemoveHeldItem"));
setAddEntityAnimations(config.getBoolean("AddEntityAnimations"));
setNameOfPlayerShownAboveDisguise(config.getBoolean("ShowNamesAboveDisguises"));
setNameAboveHeadAlwaysVisible(config.getBoolean("NameAboveHeadAlwaysVisible"));
setModifyBoundingBox(config.getBoolean("ModifyBoundingBox"));
setMonstersIgnoreDisguises(config.getBoolean("MonstersIgnoreDisguises"));
setDisguiseBlownOnAttack(config.getBoolean("BlowDisguises"));
setDisguiseBlownMessage(ChatColor.translateAlternateColorCodes('&', config.getString("BlownDisguiseMessage")));
setKeepDisguiseOnPlayerDeath(config.getBoolean("KeepDisguises.PlayerDeath"));
setKeepDisguiseOnPlayerLogout(config.getBoolean("KeepDisguises.PlayerLogout"));
setKeepDisguiseOnEntityDespawn(config.getBoolean("KeepDisguises.EntityDespawn"));
setMiscDisguisesForLivingEnabled(config.getBoolean("MiscDisguisesForLiving"));
setMovementPacketsEnabled(config.getBoolean("PacketsEnabled.Movement"));
setWitherSkullPacketsEnabled(config.getBoolean("PacketsEnabled.WitherSkull"));
setEquipmentPacketsEnabled(config.getBoolean("PacketsEnabled.Equipment"));
setAnimationPacketsEnabled(config.getBoolean("PacketsEnabled.Animation"));
setBedPacketsEnabled(config.getBoolean("PacketsEnabled.Bed"));
setEntityStatusPacketsEnabled(config.getBoolean("PacketsEnabled.EntityStatus"));
setCollectPacketsEnabled(config.getBoolean("PacketsEnabled.Collect"));
setMetadataPacketsEnabled(config.getBoolean("PacketsEnabled.Metadata"));
setMaxHealthDeterminedByDisguisedEntity(config.getBoolean("MaxHealthDeterminedByEntity"));
setDisguiseEntityExpire(config.getInt("DisguiseEntityExpire"));
setDisguiseCloneExpire(config.getInt("DisguiseCloneExpire"));
setMaxClonedDisguises(config.getInt("DisguiseCloneSize"));
setSheepDyeable(config.getBoolean("DyeableSheep"));
setWolfDyeable(config.getBoolean("DyeableWolf"));
setUndisguiseOnWorldChange(config.getBoolean("UndisguiseOnWorldChange"));
setUpdateNotificationPermission(config.getString("Permission"));
setStopShulkerDisguisesFromMoving(config.getBoolean("StopShulkerDisguisesFromMoving", true));
}
public static boolean isAnimationPacketsEnabled()
{
return animationEnabled;
}
public static boolean isBedPacketsEnabled()
{
return bedEnabled;
}
public static boolean isCollectPacketsEnabled()
{
return collectEnabled;
}
public static boolean isDisguiseBlownOnAttack()
{
return blowDisguisesOnAttack;
}
/**
* @deprecated Spelling mistake.
*/
@Deprecated
public static boolean isEnquipmentPacketsEnabled()
{
return equipmentEnabled;
}
public static boolean isEntityAnimationsAdded()
{
return entityAnimationsAdded;
}
public static boolean isEntityStatusPacketsEnabled()
{
return entityStatusEnabled;
}
public static boolean isEquipmentPacketsEnabled()
{
return equipmentEnabled;
}
/**
* Is the plugin modifying the inventory packets so that players when self disguised, do not see their armor floating around
*/
public static boolean isHidingArmorFromSelf()
{
return hidingArmor;
}
/**
* Does the plugin appear to remove the item they are holding, to prevent a floating sword when they are viewing self disguise
*/
public static boolean isHidingHeldItemFromSelf()
{
return hidingHeldItem;
}
public static boolean isKeepDisguiseOnEntityDespawn()
{
return keepDisguiseEntityDespawn;
}
public static boolean isKeepDisguiseOnPlayerDeath()
{
return keepDisguisePlayerDeath;
}
public static boolean isKeepDisguiseOnPlayerLogout()
{
return keepDisguisePlayerLogout;
}
public static boolean isMaxHealthDeterminedByDisguisedEntity()
{
return maxHealthIsDisguisedEntity;
}
public static boolean isMetadataPacketsEnabled()
{
return sendsEntityMetadata;
}
public static boolean isMiscDisguisesForLivingEnabled()
{
return miscDisguisesForLivingEnabled;
}
public static boolean isModifyBoundingBox()
{
return modifyBoundingBox;
}
public static boolean isMonstersIgnoreDisguises()
{
return targetDisguises;
}
public static boolean isMovementPacketsEnabled()
{
return movementEnabled;
}
public static boolean isNameAboveHeadAlwaysVisible()
{
return showNameAboveHeadAlwaysVisible;
}
public static boolean isNameOfPlayerShownAboveDisguise()
{
return showNameAboveHead;
}
public static boolean isSelfDisguisesSoundsReplaced()
{
return hearSelfDisguise;
}
public static boolean isSheepDyeable()
{
return colorizeSheep;
}
/**
* Is the sound packets caught and modified
*/
public static boolean isSoundEnabled()
{
return PacketsManager.isHearDisguisesEnabled();
}
public static boolean isUndisguiseOnWorldChange()
{
return undisguiseSwitchWorlds;
}
/**
* Is the velocity packets sent
*
* @return
*/
public static boolean isVelocitySent()
{
return sendVelocity;
}
/**
* The default value if a player views his own disguise
*
* @return
*/
public static boolean isViewDisguises()
{
return viewSelfDisguise;
}
public static boolean isWitherSkullPacketsEnabled()
{
return witherSkullEnabled;
}
public static boolean isWolfDyeable()
{
return colorizeWolf;
}
public static void setAddEntityAnimations(boolean isEntityAnimationsAdded)
{
entityAnimationsAdded = isEntityAnimationsAdded;
}
public static void setAnimationPacketsEnabled(boolean enabled)
{
if (enabled != isAnimationPacketsEnabled())
{
animationEnabled = enabled;
PacketsManager.setupMainPacketsListener();
}
}
public static void setBedPacketsEnabled(boolean enabled)
{
if (enabled != isBedPacketsEnabled())
{
bedEnabled = enabled;
PacketsManager.setupMainPacketsListener();
}
}
public static void setCollectPacketsEnabled(boolean enabled)
{
if (enabled != isCollectPacketsEnabled())
{
collectEnabled = enabled;
PacketsManager.setupMainPacketsListener();
}
}
public static void setDisguiseBlownMessage(String newMessage)
{
disguiseBlownMessage = newMessage;
}
public static void setDisguiseBlownOnAttack(boolean blowDisguise)
{
blowDisguisesOnAttack = blowDisguise;
}
public static void setDisguiseCloneExpire(int newExpires)
{
disguiseCloneExpire = newExpires;
}
public static void setDisguiseEntityExpire(int newExpires)
{
disguiseEntityExpire = newExpires;
}
@Deprecated
public static void setEnquipmentPacketsEnabled(boolean enabled)
{
setEquipmentPacketsEnabled(enabled);
}
public static void setEntityStatusPacketsEnabled(boolean enabled)
{
if (enabled != isEntityStatusPacketsEnabled())
{
entityStatusEnabled = enabled;
PacketsManager.setupMainPacketsListener();
}
}
public static void setEquipmentPacketsEnabled(boolean enabled)
{
if (enabled != isEquipmentPacketsEnabled())
{
equipmentEnabled = enabled;
PacketsManager.setupMainPacketsListener();
}
}
/**
* Can players hear their own disguises
*/
public static void setHearSelfDisguise(boolean replaceSound)
{
if (hearSelfDisguise != replaceSound)
{
hearSelfDisguise = replaceSound;
}
}
/**
* Set the plugin to hide self disguises armor from theirselves
*/
public static void setHideArmorFromSelf(boolean hideArmor)
{
if (hidingArmor != hideArmor)
{
hidingArmor = hideArmor;
PacketsManager.setInventoryListenerEnabled(isHidingHeldItemFromSelf() || isHidingArmorFromSelf());
}
}
/**
* Does the plugin appear to remove the item they are holding, to prevent a floating sword when they are viewing self disguise
*/
public static void setHideHeldItemFromSelf(boolean hideHelditem)
{
if (hidingHeldItem != hideHelditem)
{
hidingHeldItem = hideHelditem;
PacketsManager.setInventoryListenerEnabled(isHidingHeldItemFromSelf() || isHidingArmorFromSelf());
}
}
public static void setKeepDisguiseOnEntityDespawn(boolean keepDisguise)
{
keepDisguiseEntityDespawn = keepDisguise;
}
public static void setKeepDisguiseOnPlayerDeath(boolean keepDisguise)
{
keepDisguisePlayerDeath = keepDisguise;
}
public static void setKeepDisguiseOnPlayerLogout(boolean keepDisguise)
{
keepDisguisePlayerLogout = keepDisguise;
}
public static void setMaxClonedDisguises(int newMax)
{
maxClonedDisguises = newMax;
}
public static void setMaxHealthDeterminedByDisguisedEntity(boolean isDetermined)
{
maxHealthIsDisguisedEntity = isDetermined;
}
public static void setMetadataPacketsEnabled(boolean enabled)
{
sendsEntityMetadata = enabled;
}
public static void setMiscDisguisesForLivingEnabled(boolean enabled)
{
if (enabled != isMiscDisguisesForLivingEnabled())
{
miscDisguisesForLivingEnabled = enabled;
PacketsManager.setupMainPacketsListener();
}
}
public static void setModifyBoundingBox(boolean modifyBounding)
{
modifyBoundingBox = modifyBounding;
}
public static void setMonstersIgnoreDisguises(boolean ignore)
{
targetDisguises = ignore;
}
public static void setMovementPacketsEnabled(boolean enabled)
{
if (enabled != isMovementPacketsEnabled())
{
movementEnabled = enabled;
PacketsManager.setupMainPacketsListener();
}
}
public static void setNameAboveHeadAlwaysVisible(boolean alwaysVisible)
{
showNameAboveHeadAlwaysVisible = alwaysVisible;
}
public static void setNameOfPlayerShownAboveDisguise(boolean showNames)
{
showNameAboveHead = showNames;
}
public static void setSheepDyeable(boolean color)
{
colorizeSheep = color;
}
/**
* Set if the disguises play sounds when hurt
*/
public static void setSoundsEnabled(boolean isSoundsEnabled)
{
PacketsManager.setHearDisguisesListener(isSoundsEnabled);
}
public static void setUndisguiseOnWorldChange(boolean isUndisguise)
{
undisguiseSwitchWorlds = isUndisguise;
}
public static void setUpdateMessage(String newMessage)
{
updateMessage = newMessage;
}
public static void setUpdateNotificationPermission(String newPermission)
{
updateNotificationPermission = newPermission;
}
public static void setStopShulkerDisguisesFromMoving(boolean stopShulkerDisguisesFromMoving)
{
DisguiseConfig.stopShulkerDisguisesFromMoving = stopShulkerDisguisesFromMoving;
}
public static boolean isStopShulkerDisguisesFromMoving()
{
return stopShulkerDisguisesFromMoving;
}
/**
* Disable velocity packets being sent for w/e reason. Maybe you want every ounce of performance you can get?
*
* @param sendVelocityPackets
*/
public static void setVelocitySent(boolean sendVelocityPackets)
{
sendVelocity = sendVelocityPackets;
}
public static void setViewDisguises(boolean seeOwnDisguise)
{
viewSelfDisguise = seeOwnDisguise;
}
public static void setWitherSkullPacketsEnabled(boolean enabled)
{
witherSkullEnabled = enabled;
}
public static void setWolfDyeable(boolean color)
{
colorizeWolf = color;
}
private DisguiseConfig()
{
}
}