mirror of
https://github.com/CitizensDev/Citizens2.git
synced 2024-12-23 01:27:33 +01:00
Use new reflective access to OldEnum subclasses
This commit is contained in:
parent
4ba83dd520
commit
4143097d05
@ -112,13 +112,11 @@ public class Settings {
|
||||
"The default background color for holograms, specified as an RGB or RGBA value<br>For example 0,255,123,0 would be green",
|
||||
"npc.hologram.default-background-color", ""),
|
||||
DEFAULT_HOLOGRAM_RENDERER(
|
||||
"The default renderer for holograms, must be one of the following:<br>interaction - matches inbuilt nametags most closely<br>display - allows for different colored backgrounds<br>armorstand - the most stable option, very very small hit to client FPS compared to other options",
|
||||
"The default renderer for holograms, must be one of the following:<br>interaction - matches inbuilt nametags most closely<br>display - allows for different colored backgrounds<br>display_vehicle - mounts the display on the NPC<br>armorstand - the safest option, very very small hit to client FPS compared to other options<br>armorstand_vehicle - mounts the armorstand on the NPC",
|
||||
"npc.hologram.default-renderer", "display"),
|
||||
DEFAULT_LOOK_CLOSE("Enable look close by default", "npc.default.look-close.enabled", false),
|
||||
DEFAULT_LOOK_CLOSE_RANGE("Default look close range in blocks", "npc.default.look-close.range", 10),
|
||||
DEFAULT_NAME_HOLOGRAM_RENDERER(
|
||||
"The default renderer for name holograms, must be one of the following:<br>interaction - matches inbuilt nametags most closely<br>display - allows for different colored backgrounds<br>display_vehicle - allows for different colored backgrounds<br>armorstand - the most stable option, very very small hit to client FPS compared to other options<br>armorstand_vehicle - the most stable option, very very small hit to client FPS compared to other options",
|
||||
"npc.hologram.default-name-renderer", ""),
|
||||
DEFAULT_NAME_HOLOGRAM_RENDERER("npc.hologram.default-name-renderer", ""),
|
||||
DEFAULT_NPC_HOLOGRAM_LINE_HEIGHT("Default distance between hologram lines", "npc.hologram.default-line-height",
|
||||
0.4D),
|
||||
DEFAULT_NPC_LIMIT(
|
||||
|
@ -107,6 +107,7 @@ import net.citizensnpcs.api.util.DataKey;
|
||||
import net.citizensnpcs.api.util.EntityDim;
|
||||
import net.citizensnpcs.api.util.MemoryDataKey;
|
||||
import net.citizensnpcs.api.util.Messaging;
|
||||
import net.citizensnpcs.api.util.OldEnumCompat.VillagerProfessionEnum;
|
||||
import net.citizensnpcs.api.util.Paginator;
|
||||
import net.citizensnpcs.api.util.Placeholders;
|
||||
import net.citizensnpcs.api.util.SpigotUtil;
|
||||
@ -2553,7 +2554,7 @@ public class NPCCommands {
|
||||
|
||||
if (parsed == null)
|
||||
throw new CommandException(Messages.INVALID_PROFESSION, args.getString(1),
|
||||
Util.listValuesPretty(Profession.values()));
|
||||
Util.listValuesPretty(VillagerProfessionEnum.values()));
|
||||
|
||||
npc.getOrAddTrait(VillagerProfession.class).setProfession(parsed);
|
||||
Messaging.sendTr(sender, Messages.PROFESSION_SET, npc.getName(), parsed);
|
||||
|
@ -8,11 +8,12 @@ import net.citizensnpcs.api.exception.NPCLoadException;
|
||||
import net.citizensnpcs.api.trait.Trait;
|
||||
import net.citizensnpcs.api.trait.TraitName;
|
||||
import net.citizensnpcs.api.util.DataKey;
|
||||
import net.citizensnpcs.api.util.OldEnumCompat.VillagerProfessionEnum;
|
||||
|
||||
/**
|
||||
* Persists the Villager profession metadata.
|
||||
*
|
||||
* @see Profession
|
||||
* @see Villager.Profession
|
||||
*/
|
||||
@TraitName("profession")
|
||||
public class VillagerProfession extends Trait {
|
||||
@ -29,8 +30,9 @@ public class VillagerProfession extends Trait {
|
||||
@Override
|
||||
public void load(DataKey key) throws NPCLoadException {
|
||||
try {
|
||||
profession = Profession.valueOf(key.getString(""));
|
||||
if ("NORMAL".equals(profession.name())) {
|
||||
VillagerProfessionEnum vpe = VillagerProfessionEnum.valueOf(key.getString(""));
|
||||
profession = vpe.getInstance();
|
||||
if ("NORMAL".equals(vpe.name())) {
|
||||
profession = Profession.FARMER;
|
||||
}
|
||||
} catch (IllegalArgumentException ex) {
|
||||
@ -47,23 +49,19 @@ public class VillagerProfession extends Trait {
|
||||
return;
|
||||
}
|
||||
if (SUPPORT_ZOMBIE_VILLAGER) {
|
||||
try {
|
||||
if (npc.getEntity() instanceof ZombieVillager) {
|
||||
((ZombieVillager) npc.getEntity()).setVillagerProfession(profession);
|
||||
}
|
||||
} catch (Throwable t) {
|
||||
SUPPORT_ZOMBIE_VILLAGER = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(DataKey key) {
|
||||
key.setString("", profession.name());
|
||||
key.setString("", new VillagerProfessionEnum(profession).name());
|
||||
}
|
||||
|
||||
public void setProfession(Profession profession) {
|
||||
if ("NORMAL".equals(profession.name())) {
|
||||
if ("NORMAL".equals(new VillagerProfessionEnum(profession).name())) {
|
||||
profession = Profession.FARMER;
|
||||
}
|
||||
this.profession = profession;
|
||||
@ -75,5 +73,14 @@ public class VillagerProfession extends Trait {
|
||||
return "Profession{" + profession + "}";
|
||||
}
|
||||
|
||||
private static boolean SUPPORT_ZOMBIE_VILLAGER = true;
|
||||
private static boolean SUPPORT_ZOMBIE_VILLAGER = false;
|
||||
static {
|
||||
try {
|
||||
Class.forName("org.bukkit.entity.ZombieVillager").getMethod("setVillagerProfession",
|
||||
Villager.Profession.class);
|
||||
SUPPORT_ZOMBIE_VILLAGER = true;
|
||||
} catch (Throwable e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
@ -17,6 +17,7 @@ import net.citizensnpcs.api.persistence.Persist;
|
||||
import net.citizensnpcs.api.trait.Trait;
|
||||
import net.citizensnpcs.api.trait.TraitName;
|
||||
import net.citizensnpcs.api.util.Messaging;
|
||||
import net.citizensnpcs.api.util.OldEnumCompat.CatTypeEnum;
|
||||
import net.citizensnpcs.util.Messages;
|
||||
import net.citizensnpcs.util.NMS;
|
||||
import net.citizensnpcs.util.Util;
|
||||
@ -109,7 +110,7 @@ public class CatTrait extends Trait {
|
||||
String output = "";
|
||||
if (args.hasValueFlag("type")) {
|
||||
if (type == null)
|
||||
throw new CommandUsageException(Messages.INVALID_CAT_TYPE, Util.listValuesPretty(Cat.Type.values()));
|
||||
throw new CommandUsageException(Messages.INVALID_CAT_TYPE, Util.listValuesPretty(CatTypeEnum.values()));
|
||||
trait.setType(type);
|
||||
output += ' ' + Messaging.tr(Messages.CAT_TYPE_SET, args.getFlag("type"));
|
||||
}
|
||||
|
@ -15,6 +15,7 @@ import net.citizensnpcs.api.persistence.Persist;
|
||||
import net.citizensnpcs.api.trait.Trait;
|
||||
import net.citizensnpcs.api.trait.TraitName;
|
||||
import net.citizensnpcs.api.util.Messaging;
|
||||
import net.citizensnpcs.api.util.OldEnumCompat.FrogVariantEnum;
|
||||
import net.citizensnpcs.util.Messages;
|
||||
import net.citizensnpcs.util.Util;
|
||||
|
||||
@ -58,7 +59,8 @@ public class FrogTrait extends Trait {
|
||||
String output = "";
|
||||
if (args.hasValueFlag("variant")) {
|
||||
if (variant == null)
|
||||
throw new CommandException(Messages.INVALID_FROG_VARIANT, Util.listValuesPretty(Frog.Variant.values()));
|
||||
throw new CommandException(Messages.INVALID_FROG_VARIANT,
|
||||
Util.listValuesPretty(FrogVariantEnum.values()));
|
||||
trait.setVariant(variant);
|
||||
output += Messaging.tr(Messages.FROG_VARIANT_SET, variant);
|
||||
}
|
||||
|
@ -18,6 +18,8 @@ import net.citizensnpcs.api.persistence.Persist;
|
||||
import net.citizensnpcs.api.trait.Trait;
|
||||
import net.citizensnpcs.api.trait.TraitName;
|
||||
import net.citizensnpcs.api.util.Messaging;
|
||||
import net.citizensnpcs.api.util.OldEnumCompat.VillagerProfessionEnum;
|
||||
import net.citizensnpcs.api.util.OldEnumCompat.VillagerTypeEnum;
|
||||
import net.citizensnpcs.trait.VillagerProfession;
|
||||
import net.citizensnpcs.util.Messages;
|
||||
import net.citizensnpcs.util.Util;
|
||||
@ -84,14 +86,14 @@ public class VillagerTrait extends Trait {
|
||||
if (args.hasValueFlag("type")) {
|
||||
if (type == null)
|
||||
throw new CommandException(Messages.INVALID_VILLAGER_TYPE,
|
||||
Util.listValuesPretty(Villager.Type.values()));
|
||||
Util.listValuesPretty(VillagerTypeEnum.values()));
|
||||
trait.setType(type);
|
||||
output += " " + Messaging.tr(Messages.VILLAGER_TYPE_SET, args.getFlag("type"));
|
||||
}
|
||||
if (args.hasValueFlag("profession")) {
|
||||
if (profession == null)
|
||||
throw new CommandException(Messages.INVALID_PROFESSION, args.getFlag("profession"),
|
||||
Joiner.on(',').join(Profession.values()));
|
||||
Joiner.on(',').join(VillagerProfessionEnum.values()));
|
||||
npc.getOrAddTrait(VillagerProfession.class).setProfession(profession);
|
||||
output += " " + Messaging.tr(Messages.PROFESSION_SET, npc.getName(), args.getFlag("profession"));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user