Added methods and changed internals for flag watchers.
This commit is contained in:
		@@ -7,12 +7,6 @@ public class HorseWatcher extends AgeableWatcher {
 | 
			
		||||
    public HorseWatcher(int entityId) {
 | 
			
		||||
        super(entityId);
 | 
			
		||||
        setValue(16, 0);
 | 
			
		||||
        // Horse types (19) are
 | 
			
		||||
        // Horse
 | 
			
		||||
        // Donkey
 | 
			
		||||
        // Mule
 | 
			
		||||
        // Zombie
 | 
			
		||||
        // Skeleton
 | 
			
		||||
        setValue(19, (byte) 0);
 | 
			
		||||
        setValue(20, new Random().nextInt(7));
 | 
			
		||||
        setValue(21, "");
 | 
			
		||||
@@ -27,14 +21,86 @@ public class HorseWatcher extends AgeableWatcher {
 | 
			
		||||
        return (int) (Byte) getValue(19);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean hasChest() {
 | 
			
		||||
        return isTrue(8);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean isBredable() {
 | 
			
		||||
        return isTrue(16);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean isGrazing() {
 | 
			
		||||
        return isTrue(32);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean isMouthOpen() {
 | 
			
		||||
        return isTrue(128);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean isRearing() {
 | 
			
		||||
        return isTrue(64);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean isSaddled() {
 | 
			
		||||
        return isTrue(4);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean isTamed() {
 | 
			
		||||
        return isTrue(2);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private boolean isTrue(int i) {
 | 
			
		||||
        return ((Integer) getValue(16) & i) != 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setCanBred(boolean bred) {
 | 
			
		||||
        setFlag(16, bred);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setCarryingChest(boolean chest) {
 | 
			
		||||
        setFlag(8, true);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setColoring(int color) {
 | 
			
		||||
        setValue(20, color);
 | 
			
		||||
        sendData(20);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void setFlag(int i, boolean flag) {
 | 
			
		||||
        if (isTrue(i) != flag) {
 | 
			
		||||
            int j = (Integer) getValue(16);
 | 
			
		||||
            if (flag) {
 | 
			
		||||
                setValue(16, j | i);
 | 
			
		||||
            } else {
 | 
			
		||||
                setValue(16, j & ~i);
 | 
			
		||||
            }
 | 
			
		||||
            sendData(16);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setGrazing(boolean grazing) {
 | 
			
		||||
        setFlag(32, grazing);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setHorseType(int type) {
 | 
			
		||||
        setValue(19, (byte) type);
 | 
			
		||||
        sendData(19);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setMouthOpen(boolean mouthOpen) {
 | 
			
		||||
        setFlag(128, mouthOpen);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setRearing(boolean rear) {
 | 
			
		||||
        setFlag(64, true);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setSaddled(boolean saddled) {
 | 
			
		||||
        setFlag(4, saddled);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setTamed(boolean tamed) {
 | 
			
		||||
        setFlag(2, tamed);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -4,9 +4,6 @@ import org.bukkit.entity.Ocelot;
 | 
			
		||||
import org.bukkit.entity.Ocelot.Type;
 | 
			
		||||
 | 
			
		||||
public class OcelotWatcher extends AgeableWatcher {
 | 
			
		||||
    private boolean isSitting;
 | 
			
		||||
    private boolean isTamed;
 | 
			
		||||
    private Type type = Ocelot.Type.WILD_OCELOT;
 | 
			
		||||
 | 
			
		||||
    public OcelotWatcher(int entityId) {
 | 
			
		||||
        super(entityId);
 | 
			
		||||
@@ -14,13 +11,29 @@ public class OcelotWatcher extends AgeableWatcher {
 | 
			
		||||
        setValue(17, "");
 | 
			
		||||
        setValue(18, (byte) 0);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    public String getOwner() {
 | 
			
		||||
        return (String) getValue(17);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    public Type getType() {
 | 
			
		||||
        return type;
 | 
			
		||||
        return Ocelot.Type.getType((Byte) getValue(18));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private boolean isTrue(int no) {
 | 
			
		||||
        return ((Byte) getValue(16) & no) != 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void setFlag(int no, boolean flag) {
 | 
			
		||||
        if (isTrue(no) != flag) {
 | 
			
		||||
            byte b0 = (Byte) getValue(16);
 | 
			
		||||
            if (flag) {
 | 
			
		||||
                setValue(16, (byte) (b0 | (no)));
 | 
			
		||||
            } else {
 | 
			
		||||
                setValue(16, (byte) (b0 & -(no + 1)));
 | 
			
		||||
            }
 | 
			
		||||
            sendData(16);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setOwner(String newOwner) {
 | 
			
		||||
@@ -28,29 +41,17 @@ public class OcelotWatcher extends AgeableWatcher {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setSitting(boolean sitting) {
 | 
			
		||||
        if (isSitting != sitting) {
 | 
			
		||||
            isSitting = sitting;
 | 
			
		||||
            updateStatus();
 | 
			
		||||
        }
 | 
			
		||||
        setFlag(1, sitting);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setTamed(boolean tamed) {
 | 
			
		||||
        if (isTamed != tamed) {
 | 
			
		||||
            isTamed = tamed;
 | 
			
		||||
            updateStatus();
 | 
			
		||||
        }
 | 
			
		||||
        setFlag(4, tamed);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setType(Type newType) {
 | 
			
		||||
        if (type != newType) {
 | 
			
		||||
            type = newType;
 | 
			
		||||
            setValue(18, (byte) type.getId());
 | 
			
		||||
        if (getType() != newType) {
 | 
			
		||||
            setValue(18, (byte) newType.getId());
 | 
			
		||||
            sendData(18);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void updateStatus() {
 | 
			
		||||
        setValue(16, (byte) ((isSitting ? 1 : 0) + (isTamed ? 4 : 0)));
 | 
			
		||||
        sendData(16);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -3,31 +3,37 @@ package me.libraryaddict.disguise.DisguiseTypes.Watchers;
 | 
			
		||||
import me.libraryaddict.disguise.DisguiseTypes.AnimalColor;
 | 
			
		||||
 | 
			
		||||
public class SheepWatcher extends AgeableWatcher {
 | 
			
		||||
    private AnimalColor color = AnimalColor.WHITE;
 | 
			
		||||
    private boolean isSheared;
 | 
			
		||||
 | 
			
		||||
    public SheepWatcher(int entityId) {
 | 
			
		||||
        super(entityId);
 | 
			
		||||
        setValue(16, (byte) 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public AnimalColor getColor() {
 | 
			
		||||
        return AnimalColor.values()[(Byte) getValue(16) & 15];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean isSheared() {
 | 
			
		||||
        return isSheared;
 | 
			
		||||
        return ((Byte) getValue(16) & 16) != 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setColor(AnimalColor newColor) {
 | 
			
		||||
        if (color != newColor) {
 | 
			
		||||
            setValue(16, (byte) (newColor.getId() + (isSheared ? 16 : 0)));
 | 
			
		||||
    public void setColor(AnimalColor color) {
 | 
			
		||||
        if (getColor() != color) {
 | 
			
		||||
            byte b0 = (Byte) getValue(16);
 | 
			
		||||
            setValue(16, (byte) (b0 & 240 | color.getId() & 15));
 | 
			
		||||
            sendData(16);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setSheared(boolean sheared) {
 | 
			
		||||
        if (sheared != isSheared) {
 | 
			
		||||
            isSheared = sheared;
 | 
			
		||||
            setValue(16, (byte) (color.getId() + (isSheared ? 16 : 0)));
 | 
			
		||||
    public void setSheared(boolean flag) {
 | 
			
		||||
        if (isSheared() != flag) {
 | 
			
		||||
            byte b0 = (Byte) getValue(16);
 | 
			
		||||
            if (flag) {
 | 
			
		||||
                setValue(16, (byte) (b0 | 16));
 | 
			
		||||
            } else {
 | 
			
		||||
                setValue(16, (byte) (b0 & -17));
 | 
			
		||||
            }
 | 
			
		||||
            sendData(16);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -5,18 +5,19 @@ import java.util.Random;
 | 
			
		||||
import org.bukkit.entity.Villager.Profession;
 | 
			
		||||
 | 
			
		||||
public class VillagerWatcher extends AgeableWatcher {
 | 
			
		||||
    private Profession profession;
 | 
			
		||||
 | 
			
		||||
    public VillagerWatcher(int entityId) {
 | 
			
		||||
        super(entityId);
 | 
			
		||||
        profession = Profession.values()[new Random().nextInt(Profession.values().length)];
 | 
			
		||||
        setValue(16, profession.getId());
 | 
			
		||||
        setValue(16, Profession.values()[new Random().nextInt(Profession.values().length)].getId());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Profession getProfession() {
 | 
			
		||||
        return Profession.values()[(Integer) getValue(16)];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setProfession(Profession newProfession) {
 | 
			
		||||
        if (profession != newProfession) {
 | 
			
		||||
            profession = newProfession;
 | 
			
		||||
            setValue(16, profession.getId());
 | 
			
		||||
        if (getProfession() != newProfession) {
 | 
			
		||||
            setValue(16, newProfession.getId());
 | 
			
		||||
            sendData(16);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -3,10 +3,6 @@ package me.libraryaddict.disguise.DisguiseTypes.Watchers;
 | 
			
		||||
import me.libraryaddict.disguise.DisguiseTypes.AnimalColor;
 | 
			
		||||
 | 
			
		||||
public class WolfWatcher extends AgeableWatcher {
 | 
			
		||||
    private AnimalColor collarColor = AnimalColor.RED;
 | 
			
		||||
    private boolean isAgressive;
 | 
			
		||||
    private boolean isSitting;
 | 
			
		||||
    private boolean isTamed;
 | 
			
		||||
 | 
			
		||||
    public WolfWatcher(int entityId) {
 | 
			
		||||
        super(entityId);
 | 
			
		||||
@@ -14,11 +10,11 @@ public class WolfWatcher extends AgeableWatcher {
 | 
			
		||||
        setValue(17, "");
 | 
			
		||||
        setValue(18, 8F);
 | 
			
		||||
        setValue(19, (byte) 0);
 | 
			
		||||
        setValue(20, (byte) collarColor.getId());
 | 
			
		||||
        setValue(20, (byte) 14);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public AnimalColor getCollarColor() {
 | 
			
		||||
        return collarColor;
 | 
			
		||||
        return AnimalColor.values()[(Byte) getValue(20)];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public float getHealth() {
 | 
			
		||||
@@ -29,55 +25,56 @@ public class WolfWatcher extends AgeableWatcher {
 | 
			
		||||
        return (String) getValue(17);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean isAgressive() {
 | 
			
		||||
        return isAgressive;
 | 
			
		||||
    public boolean isAngry() {
 | 
			
		||||
        return isTrue(2);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean isSitting() {
 | 
			
		||||
        return isSitting;
 | 
			
		||||
        return isTrue(1);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean isTamed() {
 | 
			
		||||
        return isTamed;
 | 
			
		||||
        return isTrue(4);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setAgressive(boolean aggressive) {
 | 
			
		||||
        if (isAgressive != aggressive) {
 | 
			
		||||
            isAgressive = aggressive;
 | 
			
		||||
            updateStatus();
 | 
			
		||||
        }
 | 
			
		||||
    private boolean isTrue(int no) {
 | 
			
		||||
        return ((Byte) getValue(16) & no) != 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setAngry(boolean angry) {
 | 
			
		||||
        setFlag(2, angry);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setCollarColor(AnimalColor newColor) {
 | 
			
		||||
        if (newColor != collarColor) {
 | 
			
		||||
            collarColor = newColor;
 | 
			
		||||
        if (newColor != getCollarColor()) {
 | 
			
		||||
            setValue(20, (byte) newColor.getId());
 | 
			
		||||
            sendData(20);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void setFlag(int no, boolean flag) {
 | 
			
		||||
        if (isTrue(no) != flag) {
 | 
			
		||||
            byte b0 = (Byte) getValue(16);
 | 
			
		||||
            if (flag) {
 | 
			
		||||
                setValue(16, (byte) (b0 | (no)));
 | 
			
		||||
            } else {
 | 
			
		||||
                setValue(16, (byte) (b0 & -(no + 1)));
 | 
			
		||||
            }
 | 
			
		||||
            sendData(16);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setHealth(float newHealth) {
 | 
			
		||||
        setValue(18, newHealth);
 | 
			
		||||
        sendData(18);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setSitting(boolean sitting) {
 | 
			
		||||
        if (isSitting != sitting) {
 | 
			
		||||
            isSitting = sitting;
 | 
			
		||||
            updateStatus();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public void setTamed(boolean tamed) {
 | 
			
		||||
        if (isTamed != tamed) {
 | 
			
		||||
            isTamed = tamed;
 | 
			
		||||
            updateStatus();
 | 
			
		||||
        }
 | 
			
		||||
        setFlag(1, sitting);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void updateStatus() {
 | 
			
		||||
        setValue(16, (byte) ((isTamed ? 4 : 0) + (isSitting ? 1 : 0) + (isAgressive ? 2 : 0)));
 | 
			
		||||
        sendData(16);
 | 
			
		||||
    public void setTamed(boolean tamed) {
 | 
			
		||||
        setFlag(4, tamed);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user