Add new config option to auto-hide tall disguises, also as a disguise option
This commit is contained in:
parent
1d7fd61556
commit
af492c2e3b
@ -240,6 +240,9 @@ public class DisguiseConfig {
|
|||||||
@Getter
|
@Getter
|
||||||
private static boolean notifyUpdate;
|
private static boolean notifyUpdate;
|
||||||
private static BukkitTask updaterTask;
|
private static BukkitTask updaterTask;
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
private static boolean hideTallSelfDisguises;
|
||||||
|
|
||||||
public static void setAutoUpdate(boolean update) {
|
public static void setAutoUpdate(boolean update) {
|
||||||
if (isAutoUpdate() == update) {
|
if (isAutoUpdate() == update) {
|
||||||
@ -566,6 +569,7 @@ public class DisguiseConfig {
|
|||||||
setScoreboardDisguiseNames(config.getBoolean("ScoreboardNames"));
|
setScoreboardDisguiseNames(config.getBoolean("ScoreboardNames"));
|
||||||
setTablistRemoveDelay(config.getInt("TablistRemoveDelay"));
|
setTablistRemoveDelay(config.getInt("TablistRemoveDelay"));
|
||||||
setAutoUpdate(config.getBoolean("AutoUpdate"));
|
setAutoUpdate(config.getBoolean("AutoUpdate"));
|
||||||
|
setHideTallSelfDisguises(config.getBoolean("HideTallSelfDisguises"));
|
||||||
|
|
||||||
if (!LibsPremium.isPremium() && (isSavePlayerDisguises() || isSaveEntityDisguises())) {
|
if (!LibsPremium.isPremium() && (isSavePlayerDisguises() || isSaveEntityDisguises())) {
|
||||||
DisguiseUtilities.getLogger().warning("You must purchase the plugin to use saved disguises!");
|
DisguiseUtilities.getLogger().warning("You must purchase the plugin to use saved disguises!");
|
||||||
|
@ -20,7 +20,9 @@ import me.libraryaddict.disguise.disguisetypes.watchers.*;
|
|||||||
import me.libraryaddict.disguise.events.DisguiseEvent;
|
import me.libraryaddict.disguise.events.DisguiseEvent;
|
||||||
import me.libraryaddict.disguise.events.UndisguiseEvent;
|
import me.libraryaddict.disguise.events.UndisguiseEvent;
|
||||||
import me.libraryaddict.disguise.utilities.DisguiseUtilities;
|
import me.libraryaddict.disguise.utilities.DisguiseUtilities;
|
||||||
|
import me.libraryaddict.disguise.utilities.DisguiseValues;
|
||||||
import me.libraryaddict.disguise.utilities.LibsPremium;
|
import me.libraryaddict.disguise.utilities.LibsPremium;
|
||||||
|
import me.libraryaddict.disguise.utilities.reflection.FakeBoundingBox;
|
||||||
import me.libraryaddict.disguise.utilities.reflection.NmsVersion;
|
import me.libraryaddict.disguise.utilities.reflection.NmsVersion;
|
||||||
import me.libraryaddict.disguise.utilities.reflection.ReflectionManager;
|
import me.libraryaddict.disguise.utilities.reflection.ReflectionManager;
|
||||||
import me.libraryaddict.disguise.utilities.translations.LibsMsg;
|
import me.libraryaddict.disguise.utilities.translations.LibsMsg;
|
||||||
@ -95,6 +97,9 @@ public abstract class Disguise {
|
|||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
private boolean customName = true;
|
private boolean customName = true;
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
private boolean hideTallSelfDisguise = DisguiseConfig.isHideTallSelfDisguises();
|
||||||
|
|
||||||
public Disguise(DisguiseType disguiseType) {
|
public Disguise(DisguiseType disguiseType) {
|
||||||
this.disguiseType = disguiseType;
|
this.disguiseType = disguiseType;
|
||||||
@ -119,6 +124,7 @@ public abstract class Disguise {
|
|||||||
protected void clone(Disguise disguise) {
|
protected void clone(Disguise disguise) {
|
||||||
disguise.setDisguiseName(getDisguiseName());
|
disguise.setDisguiseName(getDisguiseName());
|
||||||
disguise.setCustomName(isCustomName());
|
disguise.setCustomName(isCustomName());
|
||||||
|
disguise.setHideTallSelfDisguise(isHideTallSelfDisguise());
|
||||||
|
|
||||||
disguise.setReplaceSounds(isSoundsReplaced());
|
disguise.setReplaceSounds(isSoundsReplaced());
|
||||||
disguise.setViewSelfDisguise(isSelfDisguiseVisible());
|
disguise.setViewSelfDisguise(isSelfDisguiseVisible());
|
||||||
@ -543,6 +549,27 @@ public abstract class Disguise {
|
|||||||
setupWatcher();
|
setupWatcher();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (getEntity() instanceof Player && isSelfDisguiseVisible() && isHideTallSelfDisguise() &&
|
||||||
|
!getType().isCustom()) {
|
||||||
|
DisguiseValues values = DisguiseValues.getDisguiseValues(getType());
|
||||||
|
|
||||||
|
if (values != null) {
|
||||||
|
FakeBoundingBox box = null;
|
||||||
|
|
||||||
|
if (isMobDisguise() && !((MobDisguise) this).isAdult()) {
|
||||||
|
box = values.getBabyBox();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (box == null) {
|
||||||
|
box = values.getAdultBox();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (box != null && box.getY() > 1.7D) {
|
||||||
|
setSelfDisguiseVisible(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ public class DisguiseValues {
|
|||||||
private double maxHealth;
|
private double maxHealth;
|
||||||
private Class nmsEntityClass;
|
private Class nmsEntityClass;
|
||||||
|
|
||||||
public DisguiseValues(DisguiseType type, Class classType, int entitySize, double maxHealth) {
|
public DisguiseValues(DisguiseType type, Class classType, double maxHealth) {
|
||||||
values.put(type, this);
|
values.put(type, this);
|
||||||
nmsEntityClass = classType;
|
nmsEntityClass = classType;
|
||||||
this.maxHealth = maxHealth;
|
this.maxHealth = maxHealth;
|
||||||
@ -35,10 +35,18 @@ public class DisguiseValues {
|
|||||||
return adultBox;
|
return adultBox;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setAdultBox(FakeBoundingBox newBox) {
|
||||||
|
adultBox = newBox;
|
||||||
|
}
|
||||||
|
|
||||||
public FakeBoundingBox getBabyBox() {
|
public FakeBoundingBox getBabyBox() {
|
||||||
return babyBox;
|
return babyBox;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setBabyBox(FakeBoundingBox newBox) {
|
||||||
|
babyBox = newBox;
|
||||||
|
}
|
||||||
|
|
||||||
public double getMaxHealth() {
|
public double getMaxHealth() {
|
||||||
return maxHealth;
|
return maxHealth;
|
||||||
}
|
}
|
||||||
@ -46,12 +54,4 @@ public class DisguiseValues {
|
|||||||
public Class getNmsEntityClass() {
|
public Class getNmsEntityClass() {
|
||||||
return nmsEntityClass;
|
return nmsEntityClass;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAdultBox(FakeBoundingBox newBox) {
|
|
||||||
adultBox = newBox;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBabyBox(FakeBoundingBox newBox) {
|
|
||||||
babyBox = newBox;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -114,7 +114,7 @@ public class ParamInfoManager {
|
|||||||
// Add these last as it's what we want to present to be called the least
|
// Add these last as it's what we want to present to be called the least
|
||||||
for (String methodName : new String[]{"setSelfDisguiseVisible", "setHideHeldItemFromSelf",
|
for (String methodName : new String[]{"setSelfDisguiseVisible", "setHideHeldItemFromSelf",
|
||||||
"setHideArmorFromSelf", "setHearSelfDisguise", "setHidePlayer", "setExpires", "setNotifyBar",
|
"setHideArmorFromSelf", "setHearSelfDisguise", "setHidePlayer", "setExpires", "setNotifyBar",
|
||||||
"setBossBarColor", "setBossBarStyle"}) {
|
"setBossBarColor", "setBossBarStyle", "setHideTallSelfDisguise"}) {
|
||||||
try {
|
try {
|
||||||
Class cl = boolean.class;
|
Class cl = boolean.class;
|
||||||
|
|
||||||
|
@ -1717,7 +1717,7 @@ public class ReflectionManager {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
if (disguiseType == DisguiseType.UNKNOWN || disguiseType.isCustom()) {
|
if (disguiseType == DisguiseType.UNKNOWN || disguiseType.isCustom()) {
|
||||||
DisguiseValues disguiseValues = new DisguiseValues(disguiseType, null, 0, 0);
|
DisguiseValues disguiseValues = new DisguiseValues(disguiseType, null, 0);
|
||||||
|
|
||||||
disguiseValues.setAdultBox(new FakeBoundingBox(0, 0, 0));
|
disguiseValues.setAdultBox(new FakeBoundingBox(0, 0, 0));
|
||||||
|
|
||||||
@ -1758,7 +1758,7 @@ public class ReflectionManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DisguiseValues disguiseValues = new DisguiseValues(disguiseType, nmsEntity.getClass(), entitySize,
|
DisguiseValues disguiseValues = new DisguiseValues(disguiseType, nmsEntity.getClass(),
|
||||||
bukkitEntity instanceof Damageable ? ((Damageable) bukkitEntity).getMaxHealth() : 0);
|
bukkitEntity instanceof Damageable ? ((Damageable) bukkitEntity).getMaxHealth() : 0);
|
||||||
|
|
||||||
WrappedDataWatcher watcher = WrappedDataWatcher.getEntityWatcher(bukkitEntity);
|
WrappedDataWatcher watcher = WrappedDataWatcher.getEntityWatcher(bukkitEntity);
|
||||||
|
@ -328,7 +328,8 @@ public enum LibsMsg {
|
|||||||
LD_COMMAND_RELOAD(ChatColor.BLUE + "/libsdisguises reload - " + ChatColor.AQUA +
|
LD_COMMAND_RELOAD(ChatColor.BLUE + "/libsdisguises reload - " + ChatColor.AQUA +
|
||||||
"Reload's the plugin config and possibly blows disguises"),
|
"Reload's the plugin config and possibly blows disguises"),
|
||||||
LD_COMMAND_DEBUG(ChatColor.BLUE + "/libsdisguises debug - " + ChatColor.AQUA +
|
LD_COMMAND_DEBUG(ChatColor.BLUE + "/libsdisguises debug - " + ChatColor.AQUA +
|
||||||
"Used to help debug scoreboard issues on a player disguise");
|
"Used to help debug scoreboard issues on a player disguise"),
|
||||||
|
SELF_DISGUISE_HIDDEN(ChatColor.GREEN + "Self disguise hidden as it's too tall..");
|
||||||
|
|
||||||
private final String string;
|
private final String string;
|
||||||
|
|
||||||
|
@ -119,6 +119,9 @@ UndisguiseRadiusMax: 50
|
|||||||
# Shall the players view their disguises?
|
# Shall the players view their disguises?
|
||||||
# Best used when viewing yourself in 3rd person
|
# Best used when viewing yourself in 3rd person
|
||||||
ViewSelfDisguises: true
|
ViewSelfDisguises: true
|
||||||
|
# Some disguises are rather big and tall and block your vision
|
||||||
|
# By default those disguises are disabled, such as zombies, players, etc.
|
||||||
|
HideTallSelfDisguises: true
|
||||||
|
|
||||||
# Shall I disguise the sounds?
|
# Shall I disguise the sounds?
|
||||||
# This turns your damage sound into a MOOOO
|
# This turns your damage sound into a MOOOO
|
||||||
|
Loading…
Reference in New Issue
Block a user