下面列出了怎么用org.bukkit.entity.Villager.Profession的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
protected void load(ConfigurationSection config) {
super.load(config);
// load profession:
String professionInput;
if (config.isInt("prof")) {
// import from pre 1.10 profession ids:
int profId = config.getInt("prof");
professionInput = String.valueOf(profId);
this.profession = getProfessionFromOldId(profId);
} else {
professionInput = config.getString("prof");
this.profession = getProfession(professionInput);
}
// validate:
if (!isVillagerProfession(profession)) {
// fallback:
Log.warning("Missing or invalid villager profession '" + professionInput
+ "'. Using '" + Profession.FARMER + "' now.");
this.profession = Profession.FARMER;
}
}
private Profession getNextVillagerProfession() {
Profession[] professions = Profession.values();
int id = profession.ordinal();
while (true) {
id += 1;
if (id >= professions.length) {
id = 0;
}
Profession nextProfession = professions[id];
if (isVillagerProfession(nextProfession)) {
return nextProfession;
} else {
continue;
}
}
}
private static Profession getProfessionFromOldId(int oldProfessionId) {
switch (oldProfessionId) {
case 0:
return Profession.FARMER;
case 1:
return Profession.LIBRARIAN;
case 2:
return Profession.PRIEST;
case 3:
return Profession.BLACKSMITH;
case 4:
return Profession.BUTCHER;
default:
return null;
}
}
@Override
protected boolean deserialize(final String s) {
if (s.isEmpty())
return true;
try {
profession = Profession.valueOf(s);
return true;
} catch (final IllegalArgumentException e) {
return false;
}
}
private static Profession getProfession(String professionName) {
if (professionName != null) {
try {
return Profession.valueOf(professionName);
} catch (IllegalArgumentException e) {
}
}
return null;
}
private static boolean isVillagerProfession(Profession profession) {
if (profession == null) return false;
if (profession.ordinal() >= Profession.FARMER.ordinal()
&& profession.ordinal() <= Profession.BUTCHER.ordinal()) {
return true;
}
// TODO: update this once we only support MC 1.11 upwards
if (profession.name().equals("NITWIT")) {
return true;
}
return false;
}
public ZombieVillagerData(Profession prof) {
profession = prof;
}
@Override
public Profession getProfession() {
return profession;
}
@Override
public void setProfession(Profession prof) {
((IEntityVillagerPet) getEntityPet()).setProfession(prof);
this.profession = prof;
}
@Override
public Profession getProfession() {
return profession;
}
@Override
public void setProfession(Profession prof) {
((IEntityVillagerPet) getEntityPet()).setProfession(prof.getId());
this.profession = prof;
}