LibsDisguises/plugin/src/main/java/me/libraryaddict/disguise/disguisetypes/watchers/InsentientWatcher.java
2023-03-31 16:24:17 +13:00

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);
}
}