Added methods and changed internals for flag watchers.
This commit is contained in:
parent
d181addde9
commit
a2e789aac6
@ -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);
|
||||
@ -20,7 +17,23 @@ public class OcelotWatcher extends AgeableWatcher {
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
setFlag(1, sitting);
|
||||
}
|
||||
|
||||
public void setTamed(boolean tamed) {
|
||||
if (isTamed != tamed) {
|
||||
isTamed = tamed;
|
||||
updateStatus();
|
||||
}
|
||||
}
|
||||
|
||||
private void updateStatus() {
|
||||
setValue(16, (byte) ((isTamed ? 4 : 0) + (isSitting ? 1 : 0) + (isAgressive ? 2 : 0)));
|
||||
sendData(16);
|
||||
setFlag(4, tamed);
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user