On master: Team disguises options

This commit is contained in:
libraryaddict 2016-12-16 09:23:44 +13:00
commit 451b4a9465
3 changed files with 47 additions and 18 deletions

View File

@ -1,47 +1,64 @@
# Shall I notify people of a LibsDisguises update?
NotifyUpdate: true
# Should the plugin use scoreboards to disable pushing? Please note that disabling this effectively means that self disguises will push the disguiser around
# Alternatively when this is enabled this will remove the player from any scoreboard team he is in
DisablePushing: true
# Whats the permission to get the notification?
Permission: 'libsdisguises.update'
# Whats the max size allowed for command disguiseradius
DisguiseRadiusMax: 50
# Whats the max size allowed for command undisguiseradius
UndisguiseRadiusMax: 50
# Shall the players view their disguises?
# Best used when viewing yourself in 3rd person
ViewSelfDisguises: true
# Shall I disguise the sounds?
# This turns your damage sound into a MOOOO
DisguiseSounds: true
# Shall the disguised hear their disguise sounds or their damage sounds.
# I disable this as it can be a little confusing when not used with self disguises
HearSelfDisguise: true
# Shall I send the velocity packets? I REALLY recommend you don't disable.
# This is the only thing allowing the mobs to fly without glitching out.
SendVelocity: true
# For self disguises, they need to have the armor and the held item removed
# Else they see floating armor, floating held items.
# This turns the items invisible in the disguised players inventory. It does not actually remove them!
RemoveArmor: true
RemoveHeldItem: false
# If you set a disguise to burning, it will no longer be able to be shown as sneaking or invisible.
# 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.
# This is pretty simple. It shows the players displayname (Name as it appears in chat) above their head.
# This also overrides any custom name they have set in their disguise options.
ShowNamesAboveDisguises: false
# This supports the above option.
# If this is true, then the name shown above the head appears regardless of if you are looking at the disguise directly or not.
NameAboveHeadAlwaysVisible: true
# This modifys the bounding box, This is stuff like can a arrow hit them.
# If you turn this to true, arrows will act like they hit the disguise in the right place!
# So someone disguised as a enderdragon will easily get shot down by arrows!
@ -49,10 +66,12 @@ NameAboveHeadAlwaysVisible: true
# This shouldn't really be enabled for players as it also interferes with their movement because the server thinks the player is larger than he really is.
# That makes the player unable to approach this building because the server thinks he is trying to glitch inside blocks.
ModifyBoundingBox: false
# This prevents disguised players from being targeted by monsters.
# This doesn't prevent their targeting you if already targeting when disguised
# They will just ignore you unless provoked.
MonstersIgnoreDisguises: false
# Sigh. People are going to want this.
# So lets make your disguise blown if you are attacked..
# Works only for disguised players when attacked by a entity (arrow, monster. etc)

View File

@ -56,6 +56,7 @@ public class DisguiseConfig {
private static String updateNotificationPermission;
private static boolean viewSelfDisguise;
private static boolean witherSkullEnabled;
private static boolean disablePushing;
public static Entry<String, Disguise> getCustomDisguise(String disguise) {
for (Entry<String, Disguise> entry : customDisguises.entrySet()) {
@ -68,6 +69,10 @@ public class DisguiseConfig {
return null;
}
public static boolean isPushingDisabled() {
return disablePushing;
}
public static HashMap<String, Disguise> getCustomDisguises() {
return customDisguises;
}
@ -136,6 +141,7 @@ public class DisguiseConfig {
setHideDisguisedPlayers(config.getBoolean("HideDisguisedPlayersFromTab"));
setShowDisguisedPlayersInTab(config.getBoolean("ShowPlayerDisguisesInTab"));
setDisabledInvisibility(config.getBoolean("DisableInvisibility"));
disablePushing = config.getBoolean("DisablePushing");
customDisguises.clear();

View File

@ -988,12 +988,14 @@ public class DisguiseUtilities {
ex.printStackTrace();
}
// Code to stop player pushing in 1.9
Scoreboard scoreboard = player.getScoreboard();
Team t;
if (DisguiseConfig.isPushingDisabled()) {
// Code to stop player pushing in 1.9
Scoreboard scoreboard = player.getScoreboard();
Team t;
if ((t = scoreboard.getTeam("LDPushing")) != null) {
t.removeEntry(player.getName());
if ((t = scoreboard.getTeam("LDPushing")) != null) {
t.removeEntry(player.getName());
}
}
// player.spigot().setCollidesWithEntities(true);
@ -1071,22 +1073,24 @@ public class DisguiseUtilities {
return;
}
// Code to stop player pushing
Scoreboard scoreboard = player.getScoreboard();
Team t;
if (DisguiseConfig.isPushingDisabled()) {
// Code to stop player pushing
Scoreboard scoreboard = player.getScoreboard();
Team t;
if ((t = scoreboard.getTeam("LDPushing")) == null) {
t = scoreboard.registerNewTeam("LDPushing");
if ((t = scoreboard.getTeam("LDPushing")) == null) {
t = scoreboard.registerNewTeam("LDPushing");
}
if (t.getOption(Option.COLLISION_RULE) != OptionStatus.NEVER) {
t.setOption(Option.COLLISION_RULE, OptionStatus.NEVER);
t.setCanSeeFriendlyInvisibles(false);
}
if (!t.hasEntry(player.getName()))
t.addEntry(player.getName());
}
if (t.getOption(Option.COLLISION_RULE) != OptionStatus.NEVER) {
t.setOption(Option.COLLISION_RULE, OptionStatus.NEVER);
t.setCanSeeFriendlyInvisibles(false);
}
if (!t.hasEntry(player.getName()))
t.addEntry(player.getName());
// Add himself to his own entity tracker
Object trackedPlayersObj = ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers")
.get(entityTrackerEntry);