convert the color class to an enum & move it to the api package
This commit is contained in:
parent
ca1416e761
commit
2264ff3d71
16 changed files with 88 additions and 175 deletions
20
api/src/main/java/lol/pyr/znpcsplus/util/NamedColor.java
Normal file
20
api/src/main/java/lol/pyr/znpcsplus/util/NamedColor.java
Normal file
|
@ -0,0 +1,20 @@
|
|||
package lol.pyr.znpcsplus.util;
|
||||
|
||||
public enum NamedColor {
|
||||
BLACK,
|
||||
DARK_BLUE,
|
||||
DARK_GREEN,
|
||||
DARK_AQUA,
|
||||
DARK_RED,
|
||||
DARK_PURPLE,
|
||||
GOLD,
|
||||
GRAY,
|
||||
DARK_GRAY,
|
||||
BLUE,
|
||||
GREEN,
|
||||
AQUA,
|
||||
RED,
|
||||
LIGHT_PURPLE,
|
||||
YELLOW,
|
||||
WHITE
|
||||
}
|
|
@ -246,8 +246,7 @@ public class ZNpcsPlus {
|
|||
manager.registerParser(Double.class, new DoubleParser(incorrectUsageMessage));
|
||||
manager.registerParser(Float.class, new FloatParser(incorrectUsageMessage));
|
||||
manager.registerParser(Boolean.class, new BooleanParser(incorrectUsageMessage));
|
||||
manager.registerParser(NamedTextColor.class, new NamedTextColorParser(incorrectUsageMessage));
|
||||
manager.registerParser(GlowColor.class, new GlowColorParser(incorrectUsageMessage));
|
||||
manager.registerParser(NamedColor.class, new NamedColorParser(incorrectUsageMessage));
|
||||
manager.registerParser(InteractionType.class, new InteractionTypeParser(incorrectUsageMessage));
|
||||
manager.registerParser(Color.class, new ColorParser(incorrectUsageMessage));
|
||||
manager.registerParser(Vector3f.class, new Vector3fParser(incorrectUsageMessage));
|
||||
|
|
|
@ -57,11 +57,7 @@ public class PropertySetCommand implements CommandHandler {
|
|||
valueName = bukkitStack.toString();
|
||||
}
|
||||
}
|
||||
else if (type == NamedTextColor.class && context.argSize() < 1 && npc.getProperty(property) != null) {
|
||||
value = null;
|
||||
valueName = "NONE";
|
||||
}
|
||||
else if (type == GlowColor.class && context.argSize() < 1 && npc.getProperty(property) != null) {
|
||||
else if (type == NamedColor.class && context.argSize() < 1 && npc.getProperty(property) != null) {
|
||||
value = null;
|
||||
valueName = "NONE";
|
||||
}
|
||||
|
@ -155,8 +151,7 @@ public class PropertySetCommand implements CommandHandler {
|
|||
if (type == Vector3f.class && context.argSize() <= 5) return context.suggestLiteral("0", "0.0");
|
||||
if (context.argSize() == 3) {
|
||||
if (type == Boolean.class) return context.suggestLiteral("true", "false");
|
||||
if (type == NamedTextColor.class) return context.suggestCollection(NamedTextColor.NAMES.keys());
|
||||
if (type == GlowColor.class) return context.suggestCollection(GlowColor.NAMES.keys());
|
||||
if (type == NamedColor.class) return context.suggestEnum(NamedColor.values());
|
||||
if (type == Color.class) return context.suggestLiteral("0x0F00FF", "#FFFFFF");
|
||||
if (type == BlockState.class) return context.suggestLiteral("hand", "looking_at", "block");
|
||||
if (type == SpellType.class) return PacketEvents.getAPI().getServerManager().getVersion().isOlderThan(ServerVersion.V_1_13) ?
|
||||
|
|
|
@ -49,7 +49,7 @@ public class EntityPropertyRegistryImpl implements EntityPropertyRegistry {
|
|||
|
||||
public EntityPropertyRegistryImpl(MojangSkinCache skinCache, ConfigManager configManager) {
|
||||
registerSerializer(new ComponentPropertySerializer());
|
||||
registerSerializer(new GlowColorPropertySerializer());
|
||||
registerSerializer(new NamedColorPropertySerializer());
|
||||
registerSerializer(new SkinDescriptorSerializer(skinCache));
|
||||
registerSerializer(new ItemStackPropertySerializer());
|
||||
registerSerializer(new ColorPropertySerializer());
|
||||
|
@ -273,7 +273,7 @@ public class EntityPropertyRegistryImpl implements EntityPropertyRegistry {
|
|||
else if (ver.isNewerThanOrEquals(ServerVersion.V_1_9)) guardianIndex = 11;
|
||||
else guardianIndex = 16;
|
||||
register(new BitsetProperty("is_elder", guardianIndex, 0x04, false, legacyBooleans));
|
||||
register(new BitsetProperty("is_retracting_spikes", guardianIndex++, 0x02, false, legacyBooleans));
|
||||
register(new BitsetProperty("is_retracting_spikes", guardianIndex, 0x02, false, legacyBooleans));
|
||||
linkProperties("is_elder", "is_retracting_spikes");
|
||||
// TODO: add guardian beam target
|
||||
} else {
|
||||
|
|
|
@ -5,22 +5,22 @@ import com.github.retrooper.packetevents.protocol.entity.data.EntityDataTypes;
|
|||
import lol.pyr.znpcsplus.entity.EntityPropertyImpl;
|
||||
import lol.pyr.znpcsplus.entity.PacketEntity;
|
||||
import lol.pyr.znpcsplus.packets.PacketFactory;
|
||||
import lol.pyr.znpcsplus.util.GlowColor;
|
||||
import lol.pyr.znpcsplus.util.NamedColor;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public class GlowProperty extends EntityPropertyImpl<GlowColor> {
|
||||
public class GlowProperty extends EntityPropertyImpl<NamedColor> {
|
||||
private final PacketFactory packetFactory;
|
||||
|
||||
public GlowProperty(PacketFactory packetFactory) {
|
||||
super("glow", null, GlowColor.class);
|
||||
super("glow", null, NamedColor.class);
|
||||
this.packetFactory = packetFactory;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void apply(Player player, PacketEntity entity, boolean isSpawned, Map<Integer, EntityData> properties) {
|
||||
GlowColor value = entity.getProperty(this);
|
||||
NamedColor value = entity.getProperty(this);
|
||||
EntityData oldData = properties.get(0);
|
||||
byte oldValue = oldData == null ? 0 : (byte) oldData.getValue();
|
||||
properties.put(0, newEntityData(0, EntityDataTypes.BYTE, (byte) (oldValue | (value == null ? 0 : 0x40))));
|
||||
|
|
|
@ -1,24 +0,0 @@
|
|||
package lol.pyr.znpcsplus.entity.serializers;
|
||||
|
||||
import lol.pyr.znpcsplus.entity.PropertySerializer;
|
||||
import lol.pyr.znpcsplus.util.GlowColor;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
|
||||
public class GlowColorPropertySerializer implements PropertySerializer<GlowColor> {
|
||||
@Override
|
||||
public String serialize(GlowColor property) {
|
||||
return String.valueOf(property.value());
|
||||
}
|
||||
|
||||
@Override
|
||||
public GlowColor deserialize(String property) {
|
||||
NamedTextColor namedTextColor = NamedTextColor.namedColor(Integer.parseInt(property));
|
||||
if (namedTextColor == null) return null;
|
||||
return GlowColor.valueOf(namedTextColor.toString().toUpperCase());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<GlowColor> getTypeClass() {
|
||||
return GlowColor.class;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,25 @@
|
|||
package lol.pyr.znpcsplus.entity.serializers;
|
||||
|
||||
import lol.pyr.znpcsplus.entity.PropertySerializer;
|
||||
import lol.pyr.znpcsplus.util.NamedColor;
|
||||
|
||||
public class NamedColorPropertySerializer implements PropertySerializer<NamedColor> {
|
||||
@Override
|
||||
public String serialize(NamedColor property) {
|
||||
return property.name();
|
||||
}
|
||||
|
||||
@Override
|
||||
public NamedColor deserialize(String property) {
|
||||
try {
|
||||
return NamedColor.valueOf(property.toUpperCase());
|
||||
} catch (IllegalArgumentException exception) {
|
||||
return NamedColor.WHITE;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<NamedColor> getTypeClass() {
|
||||
return NamedColor.class;
|
||||
}
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
package lol.pyr.znpcsplus.entity.serializers;
|
||||
|
||||
import lol.pyr.znpcsplus.entity.PropertySerializer;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
|
||||
@Deprecated
|
||||
public class NamedTextColorPropertySerializer implements PropertySerializer<NamedTextColor> {
|
||||
@Override
|
||||
public String serialize(NamedTextColor property) {
|
||||
return String.valueOf(property.value());
|
||||
}
|
||||
|
||||
@Override
|
||||
public NamedTextColor deserialize(String property) {
|
||||
return NamedTextColor.namedColor(Integer.parseInt(property));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Class<NamedTextColor> getTypeClass() {
|
||||
return NamedTextColor.class;
|
||||
}
|
||||
}
|
|
@ -4,8 +4,7 @@ import com.github.retrooper.packetevents.protocol.entity.data.EntityData;
|
|||
import com.github.retrooper.packetevents.protocol.player.Equipment;
|
||||
import lol.pyr.znpcsplus.api.entity.PropertyHolder;
|
||||
import lol.pyr.znpcsplus.entity.PacketEntity;
|
||||
import lol.pyr.znpcsplus.util.GlowColor;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import lol.pyr.znpcsplus.util.NamedColor;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.List;
|
||||
|
@ -18,7 +17,7 @@ public interface PacketFactory {
|
|||
void teleportEntity(Player player, PacketEntity entity);
|
||||
CompletableFuture<Void> addTabPlayer(Player player, PacketEntity entity, PropertyHolder properties);
|
||||
void removeTabPlayer(Player player, PacketEntity entity);
|
||||
void createTeam(Player player, PacketEntity entity, GlowColor glowColor);
|
||||
void createTeam(Player player, PacketEntity entity, NamedColor namedColor);
|
||||
void removeTeam(Player player, PacketEntity entity);
|
||||
void sendAllMetadata(Player player, PacketEntity entity, PropertyHolder properties);
|
||||
void sendEquipment(Player player, PacketEntity entity, Equipment equipment);
|
||||
|
|
|
@ -8,9 +8,8 @@ import lol.pyr.znpcsplus.config.ConfigManager;
|
|||
import lol.pyr.znpcsplus.entity.EntityPropertyRegistryImpl;
|
||||
import lol.pyr.znpcsplus.entity.PacketEntity;
|
||||
import lol.pyr.znpcsplus.scheduling.TaskScheduler;
|
||||
import lol.pyr.znpcsplus.util.GlowColor;
|
||||
import lol.pyr.znpcsplus.util.NamedColor;
|
||||
import lol.pyr.znpcsplus.util.NpcLocation;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
@ -28,6 +27,6 @@ public class V1_17PacketFactory extends V1_8PacketFactory {
|
|||
sendPacket(player, new WrapperPlayServerSpawnEntity(entity.getEntityId(), Optional.of(entity.getUuid()), entity.getType(),
|
||||
npcLocationToVector(location), location.getPitch(), location.getYaw(), location.getYaw(), 0, Optional.of(new Vector3d())));
|
||||
sendAllMetadata(player, entity, properties);
|
||||
createTeam(player, entity, properties.getProperty(propertyRegistry.getByName("glow", GlowColor.class)));
|
||||
createTeam(player, entity, properties.getProperty(propertyRegistry.getByName("glow", NamedColor.class)));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,9 +9,8 @@ import lol.pyr.znpcsplus.config.ConfigManager;
|
|||
import lol.pyr.znpcsplus.entity.EntityPropertyRegistryImpl;
|
||||
import lol.pyr.znpcsplus.entity.PacketEntity;
|
||||
import lol.pyr.znpcsplus.scheduling.TaskScheduler;
|
||||
import lol.pyr.znpcsplus.util.GlowColor;
|
||||
import lol.pyr.znpcsplus.util.NamedColor;
|
||||
import lol.pyr.znpcsplus.util.NpcLocation;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
@ -29,7 +28,7 @@ public class V1_20_2PacketFactory extends V1_19_2PacketFactory {
|
|||
@Override
|
||||
public void spawnPlayer(Player player, PacketEntity entity, PropertyHolder properties) {
|
||||
addTabPlayer(player, entity, properties).thenAccept(ignored -> {
|
||||
createTeam(player, entity, properties.getProperty(propertyRegistry.getByName("glow", GlowColor.class)));
|
||||
createTeam(player, entity, properties.getProperty(propertyRegistry.getByName("glow", NamedColor.class)));
|
||||
NpcLocation location = entity.getLocation();
|
||||
sendPacket(player, new WrapperPlayServerSpawnEntity(entity.getEntityId(), Optional.of(entity.getUuid()), entity.getType(),
|
||||
npcLocationToVector(location), location.getPitch(), location.getYaw(), location.getYaw(), 0, Optional.of(new Vector3d())));
|
||||
|
|
|
@ -20,7 +20,7 @@ import lol.pyr.znpcsplus.entity.EntityPropertyRegistryImpl;
|
|||
import lol.pyr.znpcsplus.entity.PacketEntity;
|
||||
import lol.pyr.znpcsplus.scheduling.TaskScheduler;
|
||||
import lol.pyr.znpcsplus.skin.BaseSkinDescriptor;
|
||||
import lol.pyr.znpcsplus.util.GlowColor;
|
||||
import lol.pyr.znpcsplus.util.NamedColor;
|
||||
import lol.pyr.znpcsplus.util.NpcLocation;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
|
@ -49,7 +49,7 @@ public class V1_8PacketFactory implements PacketFactory {
|
|||
@Override
|
||||
public void spawnPlayer(Player player, PacketEntity entity, PropertyHolder properties) {
|
||||
addTabPlayer(player, entity, properties).thenAccept(ignored -> {
|
||||
createTeam(player, entity, properties.getProperty(propertyRegistry.getByName("glow", GlowColor.class)));
|
||||
createTeam(player, entity, properties.getProperty(propertyRegistry.getByName("glow", NamedColor.class)));
|
||||
NpcLocation location = entity.getLocation();
|
||||
sendPacket(player, new WrapperPlayServerSpawnPlayer(entity.getEntityId(),
|
||||
entity.getUuid(), npcLocationToVector(location), location.getYaw(), location.getPitch(), Collections.emptyList()));
|
||||
|
@ -70,7 +70,7 @@ public class V1_8PacketFactory implements PacketFactory {
|
|||
new WrapperPlayServerSpawnEntity(entity.getEntityId(), Optional.of(entity.getUuid()), entity.getType(), npcLocationToVector(location),
|
||||
location.getPitch(), location.getYaw(), location.getYaw(), 0, Optional.empty()));
|
||||
sendAllMetadata(player, entity, properties);
|
||||
createTeam(player, entity, properties.getProperty(propertyRegistry.getByName("glow", GlowColor.class)));
|
||||
createTeam(player, entity, properties.getProperty(propertyRegistry.getByName("glow", NamedColor.class)));
|
||||
}
|
||||
|
||||
protected Vector3d npcLocationToVector(NpcLocation location) {
|
||||
|
@ -112,12 +112,12 @@ public class V1_8PacketFactory implements PacketFactory {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void createTeam(Player player, PacketEntity entity, GlowColor glowColor) {
|
||||
public void createTeam(Player player, PacketEntity entity, NamedColor namedColor) {
|
||||
sendPacket(player, new WrapperPlayServerTeams("npc_team_" + entity.getEntityId(), WrapperPlayServerTeams.TeamMode.CREATE, new WrapperPlayServerTeams.ScoreBoardTeamInfo(
|
||||
Component.empty(), Component.empty(), Component.empty(),
|
||||
WrapperPlayServerTeams.NameTagVisibility.NEVER,
|
||||
WrapperPlayServerTeams.CollisionRule.NEVER,
|
||||
glowColor == null ? NamedTextColor.WHITE : glowColor.toNamedTextColor(),
|
||||
namedColor == null ? NamedTextColor.WHITE : NamedTextColor.NAMES.value(namedColor.name().toLowerCase()),
|
||||
WrapperPlayServerTeams.OptionData.NONE
|
||||
)));
|
||||
sendPacket(player, new WrapperPlayServerTeams("npc_team_" + entity.getEntityId(), WrapperPlayServerTeams.TeamMode.ADD_ENTITIES, (WrapperPlayServerTeams.ScoreBoardTeamInfo) null,
|
||||
|
|
|
@ -1,21 +0,0 @@
|
|||
package lol.pyr.znpcsplus.parsers;
|
||||
|
||||
import lol.pyr.director.adventure.command.CommandContext;
|
||||
import lol.pyr.director.adventure.parse.ParserType;
|
||||
import lol.pyr.director.common.command.CommandExecutionException;
|
||||
import lol.pyr.director.common.message.Message;
|
||||
import lol.pyr.znpcsplus.util.GlowColor;
|
||||
import java.util.Deque;
|
||||
|
||||
public class GlowColorParser extends ParserType<GlowColor> {
|
||||
public GlowColorParser(Message<CommandContext> message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GlowColor parse(Deque<String> deque) throws CommandExecutionException {
|
||||
GlowColor color = GlowColor.NAMES.value(deque.pop());
|
||||
if (color == null) throw new CommandExecutionException();
|
||||
return color;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
package lol.pyr.znpcsplus.parsers;
|
||||
|
||||
import lol.pyr.director.adventure.command.CommandContext;
|
||||
import lol.pyr.director.adventure.parse.ParserType;
|
||||
import lol.pyr.director.common.command.CommandExecutionException;
|
||||
import lol.pyr.director.common.message.Message;
|
||||
import lol.pyr.znpcsplus.util.NamedColor;
|
||||
import java.util.Deque;
|
||||
|
||||
public class NamedColorParser extends ParserType<NamedColor> {
|
||||
public NamedColorParser(Message<CommandContext> message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
@Override
|
||||
public NamedColor parse(Deque<String> deque) throws CommandExecutionException {
|
||||
try {
|
||||
return NamedColor.valueOf(deque.pop());
|
||||
} catch (IllegalArgumentException exception) {
|
||||
throw new CommandExecutionException();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,23 +0,0 @@
|
|||
package lol.pyr.znpcsplus.parsers;
|
||||
|
||||
import lol.pyr.director.adventure.command.CommandContext;
|
||||
import lol.pyr.director.adventure.parse.ParserType;
|
||||
import lol.pyr.director.common.command.CommandExecutionException;
|
||||
import lol.pyr.director.common.message.Message;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
|
||||
import java.util.Deque;
|
||||
|
||||
@Deprecated
|
||||
public class NamedTextColorParser extends ParserType<NamedTextColor> {
|
||||
public NamedTextColorParser(Message<CommandContext> message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
@Override
|
||||
public NamedTextColor parse(Deque<String> deque) throws CommandExecutionException {
|
||||
NamedTextColor color = NamedTextColor.NAMES.value(deque.pop());
|
||||
if (color == null) throw new CommandExecutionException();
|
||||
return color;
|
||||
}
|
||||
}
|
|
@ -1,56 +0,0 @@
|
|||
package lol.pyr.znpcsplus.util;
|
||||
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import net.kyori.adventure.util.Index;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public enum GlowColor {
|
||||
BLACK("black", NamedTextColor.BLACK.value()),
|
||||
DARK_BLUE("dark_blue", NamedTextColor.DARK_BLUE.value()),
|
||||
DARK_GREEN("dark_green",NamedTextColor.DARK_GREEN.value()),
|
||||
DARK_AQUA("dark_aqua", NamedTextColor.AQUA.value()),
|
||||
DARK_RED("dark_red", NamedTextColor.RED.value()),
|
||||
DARK_PURPLE("dark_purple", NamedTextColor.DARK_PURPLE.value()),
|
||||
GOLD("gold", NamedTextColor.GOLD.value()),
|
||||
GRAY("gray", NamedTextColor.GRAY.value()),
|
||||
DARK_GRAY("dark_gray", NamedTextColor.DARK_GRAY.value()),
|
||||
BLUE("blue", NamedTextColor.BLUE.value()),
|
||||
GREEN("green", NamedTextColor.GREEN.value()),
|
||||
AQUA("aqua", NamedTextColor.AQUA.value()),
|
||||
RED("red", NamedTextColor.RED.value()),
|
||||
LIGHT_PURPLE("light_purple", NamedTextColor.LIGHT_PURPLE.value()),
|
||||
YELLOW("yellow", NamedTextColor.YELLOW.value()),
|
||||
WHITE("white", NamedTextColor.WHITE.value());
|
||||
|
||||
private static final List<GlowColor> VALUES = Collections.unmodifiableList(Arrays.asList(BLACK, DARK_BLUE, DARK_GREEN, DARK_AQUA, DARK_RED, DARK_PURPLE, GOLD, GRAY, DARK_GRAY, BLUE, GREEN, AQUA, RED, LIGHT_PURPLE, YELLOW, WHITE));
|
||||
/**
|
||||
* An index of name to color.
|
||||
*
|
||||
* @since 4.0.0
|
||||
*/
|
||||
public static final Index<String, GlowColor> NAMES = Index.create(constant -> constant.name, VALUES);
|
||||
|
||||
private final String name;
|
||||
private final int value;
|
||||
|
||||
private GlowColor(final String name, final int value) {
|
||||
this.name = name;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public NamedTextColor toNamedTextColor() {
|
||||
return NamedTextColor.namedColor(this.value);
|
||||
}
|
||||
|
||||
public int value() {
|
||||
return this.value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String toString() {
|
||||
return this.name;
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue