mirror of
https://github.com/libraryaddict/LibsDisguises.git
synced 2024-06-28 10:54:52 +02:00
60 lines
1.7 KiB
Java
60 lines
1.7 KiB
Java
package me.libraryaddict.disguise.disguisetypes.watchers;
|
|
|
|
import me.libraryaddict.disguise.disguisetypes.Disguise;
|
|
import me.libraryaddict.disguise.disguisetypes.MetaIndex;
|
|
import me.libraryaddict.disguise.utilities.reflection.NmsVersion;
|
|
import me.libraryaddict.disguise.utilities.reflection.annotations.NmsAddedIn;
|
|
import org.bukkit.inventory.MainHand;
|
|
|
|
public class InsentientWatcher extends LivingWatcher {
|
|
public InsentientWatcher(Disguise disguise) {
|
|
super(disguise);
|
|
}
|
|
|
|
public MainHand getMainHand() {
|
|
return getInsentientFlag(2) ? MainHand.RIGHT : MainHand.LEFT;
|
|
}
|
|
|
|
public void setMainHand(MainHand mainHand) {
|
|
setInsentientFlag(2, mainHand == MainHand.RIGHT);
|
|
}
|
|
|
|
public boolean isAI() {
|
|
return getInsentientFlag(1);
|
|
}
|
|
|
|
public void setAI(boolean ai) {
|
|
setInsentientFlag(1, ai);
|
|
}
|
|
|
|
private void setInsentientFlag(int i, boolean flag) {
|
|
byte b0 = getData(MetaIndex.INSENTIENT_META);
|
|
|
|
if (flag) {
|
|
setData(MetaIndex.INSENTIENT_META, (byte) (b0 | i));
|
|
} else {
|
|
setData(MetaIndex.INSENTIENT_META, (byte) (b0 & -(i + 1)));
|
|
}
|
|
|
|
sendData(MetaIndex.INSENTIENT_META);
|
|
}
|
|
|
|
private boolean getInsentientFlag(int i) {
|
|
return (getData(MetaIndex.INSENTIENT_META) & i) != 0;
|
|
}
|
|
|
|
@NmsAddedIn(NmsVersion.v1_14)
|
|
public boolean isEnraged() {
|
|
return getInsentientFlag(4);
|
|
}
|
|
|
|
@NmsAddedIn(NmsVersion.v1_14)
|
|
public void setEnraged(boolean enraged) {
|
|
if (hasValue(MetaIndex.INSENTIENT_META) && getInsentientFlag(4) == enraged) {
|
|
return;
|
|
}
|
|
|
|
setInsentientFlag(4, enraged);
|
|
}
|
|
}
|