2017-12-30 08:36:36 +01:00
|
|
|
package net.citizensnpcs.trait;
|
|
|
|
|
|
|
|
import org.bukkit.entity.Ocelot;
|
|
|
|
|
|
|
|
import net.citizensnpcs.api.persistence.Persist;
|
|
|
|
import net.citizensnpcs.api.trait.Trait;
|
|
|
|
import net.citizensnpcs.api.trait.TraitName;
|
2020-01-11 05:41:46 +01:00
|
|
|
import net.citizensnpcs.trait.versioned.CatTrait;
|
2017-12-30 08:36:36 +01:00
|
|
|
import net.citizensnpcs.util.NMS;
|
|
|
|
|
2019-05-16 13:58:29 +02:00
|
|
|
/**
|
|
|
|
* Persists Ocelot metadata.
|
|
|
|
*
|
|
|
|
* @see Ocelot
|
|
|
|
*/
|
2017-12-30 08:36:36 +01:00
|
|
|
@TraitName("ocelotmodifiers")
|
|
|
|
public class OcelotModifiers extends Trait {
|
2020-02-14 15:48:40 +01:00
|
|
|
@Persist("sitting")
|
|
|
|
private boolean sitting;
|
|
|
|
@Persist("type")
|
|
|
|
private Ocelot.Type type = Ocelot.Type.WILD_OCELOT;
|
|
|
|
|
|
|
|
public OcelotModifiers() {
|
|
|
|
super("ocelotmodifiers");
|
|
|
|
}
|
|
|
|
|
2020-05-07 10:29:45 +02:00
|
|
|
private void migrateToCat() {
|
|
|
|
npc.getTrait(CatTrait.class).setSitting(sitting);
|
|
|
|
npc.getTrait(CatTrait.class).setType(type);
|
|
|
|
}
|
|
|
|
|
2020-02-14 15:48:40 +01:00
|
|
|
@Override
|
|
|
|
public void onSpawn() {
|
|
|
|
updateModifiers();
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setSitting(boolean sit) {
|
|
|
|
this.sitting = sit;
|
|
|
|
updateModifiers();
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setType(Ocelot.Type type) {
|
|
|
|
this.type = type;
|
|
|
|
updateModifiers();
|
|
|
|
}
|
|
|
|
|
2020-05-07 10:29:45 +02:00
|
|
|
public boolean supportsOcelotType() {
|
|
|
|
return SUPPORTS_CAT_TYPE;
|
|
|
|
}
|
|
|
|
|
2020-02-14 15:48:40 +01:00
|
|
|
private void updateModifiers() {
|
2020-05-07 10:29:45 +02:00
|
|
|
if (!(npc.getEntity() instanceof Ocelot))
|
|
|
|
return;
|
|
|
|
Ocelot ocelot = (Ocelot) npc.getEntity();
|
|
|
|
NMS.setSitting(ocelot, sitting);
|
|
|
|
if (!SUPPORTS_CAT_TYPE) {
|
|
|
|
migrateToCat();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
try {
|
|
|
|
ocelot.setCatType(type);
|
|
|
|
} catch (UnsupportedOperationException ex) {
|
|
|
|
migrateToCat();
|
|
|
|
SUPPORTS_CAT_TYPE = false;
|
2020-02-14 15:48:40 +01:00
|
|
|
}
|
|
|
|
}
|
2020-05-07 10:29:45 +02:00
|
|
|
|
|
|
|
private static boolean SUPPORTS_CAT_TYPE = true;
|
2017-12-30 08:36:36 +01:00
|
|
|
}
|