Added tameable watcher
This commit is contained in:
parent
f3a81a84a4
commit
9e4ad0ba8e
@ -14,6 +14,7 @@ import me.libraryaddict.disguise.disguisetypes.watchers.HorseWatcher;
|
|||||||
import me.libraryaddict.disguise.disguisetypes.watchers.LivingWatcher;
|
import me.libraryaddict.disguise.disguisetypes.watchers.LivingWatcher;
|
||||||
import me.libraryaddict.disguise.disguisetypes.watchers.MinecartWatcher;
|
import me.libraryaddict.disguise.disguisetypes.watchers.MinecartWatcher;
|
||||||
import me.libraryaddict.disguise.disguisetypes.watchers.SlimeWatcher;
|
import me.libraryaddict.disguise.disguisetypes.watchers.SlimeWatcher;
|
||||||
|
import me.libraryaddict.disguise.disguisetypes.watchers.TameableWatcher;
|
||||||
import me.libraryaddict.disguise.disguisetypes.watchers.ZombieWatcher;
|
import me.libraryaddict.disguise.disguisetypes.watchers.ZombieWatcher;
|
||||||
import me.libraryaddict.disguise.utilities.DisguiseSound;
|
import me.libraryaddict.disguise.utilities.DisguiseSound;
|
||||||
import me.libraryaddict.disguise.utilities.DisguiseUtilities;
|
import me.libraryaddict.disguise.utilities.DisguiseUtilities;
|
||||||
@ -30,6 +31,7 @@ import org.bukkit.entity.Ageable;
|
|||||||
import org.bukkit.entity.Damageable;
|
import org.bukkit.entity.Damageable;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.LivingEntity;
|
import org.bukkit.entity.LivingEntity;
|
||||||
|
import org.bukkit.entity.Tameable;
|
||||||
import org.bukkit.entity.Zombie;
|
import org.bukkit.entity.Zombie;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
@ -171,7 +173,9 @@ public class LibsDisguises extends JavaPlugin {
|
|||||||
} catch (ClassNotFoundException ex) {
|
} catch (ClassNotFoundException ex) {
|
||||||
// There is no explicit watcher for this entity.
|
// There is no explicit watcher for this entity.
|
||||||
Class entityClass = disguiseType.getEntityType().getEntityClass();
|
Class entityClass = disguiseType.getEntityType().getEntityClass();
|
||||||
if (Ageable.class.isAssignableFrom(entityClass)) {
|
if (Tameable.class.isAssignableFrom(entityClass)) {
|
||||||
|
watcherClass = TameableWatcher.class;
|
||||||
|
} else if (Ageable.class.isAssignableFrom(entityClass)) {
|
||||||
watcherClass = AgeableWatcher.class;
|
watcherClass = AgeableWatcher.class;
|
||||||
} else if (LivingEntity.class.isAssignableFrom(entityClass)) {
|
} else if (LivingEntity.class.isAssignableFrom(entityClass)) {
|
||||||
watcherClass = LivingWatcher.class;
|
watcherClass = LivingWatcher.class;
|
||||||
|
@ -5,55 +5,16 @@ import me.libraryaddict.disguise.disguisetypes.Disguise;
|
|||||||
import org.bukkit.entity.Ocelot;
|
import org.bukkit.entity.Ocelot;
|
||||||
import org.bukkit.entity.Ocelot.Type;
|
import org.bukkit.entity.Ocelot.Type;
|
||||||
|
|
||||||
public class OcelotWatcher extends AgeableWatcher {
|
public class OcelotWatcher extends TameableWatcher {
|
||||||
|
|
||||||
public OcelotWatcher(Disguise disguise) {
|
public OcelotWatcher(Disguise disguise) {
|
||||||
super(disguise);
|
super(disguise);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getOwner() {
|
|
||||||
return (String) getValue(17, "");
|
|
||||||
}
|
|
||||||
|
|
||||||
public Type getType() {
|
public Type getType() {
|
||||||
return Ocelot.Type.getType((Byte) getValue(18, (byte) 0));
|
return Ocelot.Type.getType((Byte) getValue(18, (byte) 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isSitting() {
|
|
||||||
return isTrue(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isTamed() {
|
|
||||||
return isTrue(4);
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isTrue(int no) {
|
|
||||||
return ((Byte) getValue(16, (byte) 0) & no) != 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setFlag(int no, boolean flag) {
|
|
||||||
byte b0 = (Byte) getValue(16, (byte) 0);
|
|
||||||
if (flag) {
|
|
||||||
setValue(16, (byte) (b0 | no));
|
|
||||||
} else {
|
|
||||||
setValue(16, (byte) (b0 & -(no + 1)));
|
|
||||||
}
|
|
||||||
sendData(16);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setOwner(String newOwner) {
|
|
||||||
setValue(17, newOwner);
|
|
||||||
sendData(17);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSitting(boolean sitting) {
|
|
||||||
setFlag(1, sitting);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTamed(boolean tamed) {
|
|
||||||
setFlag(4, tamed);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setType(Type newType) {
|
public void setType(Type newType) {
|
||||||
setValue(18, (byte) newType.getId());
|
setValue(18, (byte) newType.getId());
|
||||||
sendData(18);
|
sendData(18);
|
||||||
|
@ -0,0 +1,62 @@
|
|||||||
|
package me.libraryaddict.disguise.disguisetypes.watchers;
|
||||||
|
|
||||||
|
import me.libraryaddict.disguise.disguisetypes.Disguise;
|
||||||
|
|
||||||
|
public class TameableWatcher extends AgeableWatcher {
|
||||||
|
|
||||||
|
public TameableWatcher(Disguise disguise) {
|
||||||
|
super(disguise);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public float getHealth() {
|
||||||
|
return (Float) getValue(18, 8F);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getOwner() {
|
||||||
|
return (String) getValue(17, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSitting() {
|
||||||
|
return isTrue(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isTamed() {
|
||||||
|
return isTrue(4);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected boolean isTrue(int no) {
|
||||||
|
return ((Byte) getValue(16, (byte) 0) & no) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void setFlag(int no, boolean flag) {
|
||||||
|
byte b0 = (Byte) getValue(16, (byte) 0);
|
||||||
|
if (flag) {
|
||||||
|
setValue(16, (byte) (b0 | no));
|
||||||
|
} else {
|
||||||
|
setValue(16, (byte) (b0 & -(no + 1)));
|
||||||
|
}
|
||||||
|
sendData(16);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setHealth(float newHealth) {
|
||||||
|
setValue(18, newHealth);
|
||||||
|
sendData(18);
|
||||||
|
super.setHealth(newHealth);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOwner(String owner) {
|
||||||
|
setValue(17, owner);
|
||||||
|
sendData(17);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSitting(boolean sitting) {
|
||||||
|
setFlag(1, sitting);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTamed(boolean tamed) {
|
||||||
|
setFlag(4, tamed);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -3,7 +3,7 @@ package me.libraryaddict.disguise.disguisetypes.watchers;
|
|||||||
import me.libraryaddict.disguise.disguisetypes.AnimalColor;
|
import me.libraryaddict.disguise.disguisetypes.AnimalColor;
|
||||||
import me.libraryaddict.disguise.disguisetypes.Disguise;
|
import me.libraryaddict.disguise.disguisetypes.Disguise;
|
||||||
|
|
||||||
public class WolfWatcher extends AgeableWatcher {
|
public class WolfWatcher extends TameableWatcher {
|
||||||
|
|
||||||
public WolfWatcher(Disguise disguise) {
|
public WolfWatcher(Disguise disguise) {
|
||||||
super(disguise);
|
super(disguise);
|
||||||
@ -13,31 +13,10 @@ public class WolfWatcher extends AgeableWatcher {
|
|||||||
return AnimalColor.values()[(Byte) getValue(20, (byte) 14)];
|
return AnimalColor.values()[(Byte) getValue(20, (byte) 14)];
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public float getHealth() {
|
|
||||||
return (Float) getValue(18, 8F);
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getOwner() {
|
|
||||||
return (String) getValue(17, "");
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isAngry() {
|
public boolean isAngry() {
|
||||||
return isTrue(2);
|
return isTrue(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isSitting() {
|
|
||||||
return isTrue(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isTamed() {
|
|
||||||
return isTrue(4);
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isTrue(int no) {
|
|
||||||
return ((Byte) getValue(16, (byte) 0) & no) != 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAngry(boolean angry) {
|
public void setAngry(boolean angry) {
|
||||||
setFlag(2, angry);
|
setFlag(2, angry);
|
||||||
}
|
}
|
||||||
@ -52,33 +31,4 @@ public class WolfWatcher extends AgeableWatcher {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setFlag(int no, boolean flag) {
|
|
||||||
byte b0 = (Byte) getValue(16, (byte) 0);
|
|
||||||
if (flag) {
|
|
||||||
setValue(16, (byte) (b0 | no));
|
|
||||||
} else {
|
|
||||||
setValue(16, (byte) (b0 & -(no + 1)));
|
|
||||||
}
|
|
||||||
sendData(16);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setHealth(float newHealth) {
|
|
||||||
setValue(18, newHealth);
|
|
||||||
sendData(18);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setOwner(String owner) {
|
|
||||||
setValue(17, owner);
|
|
||||||
sendData(17);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSitting(boolean sitting) {
|
|
||||||
setFlag(1, sitting);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTamed(boolean tamed) {
|
|
||||||
setFlag(4, tamed);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user