2021-03-05 20:07:33 +01:00
|
|
|
package net.minestom.server.adventure;
|
|
|
|
|
2021-03-24 17:50:02 +01:00
|
|
|
import it.unimi.dsi.fastutil.objects.Object2IntArrayMap;
|
|
|
|
import it.unimi.dsi.fastutil.objects.Object2IntMap;
|
2021-03-05 20:07:33 +01:00
|
|
|
import net.kyori.adventure.audience.MessageType;
|
|
|
|
import net.kyori.adventure.bossbar.BossBar;
|
|
|
|
import net.kyori.adventure.sound.Sound;
|
2021-03-24 17:50:02 +01:00
|
|
|
import net.kyori.adventure.text.format.NamedTextColor;
|
2021-03-05 20:07:33 +01:00
|
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
|
|
|
|
|
import java.util.Collection;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Utility methods to convert adventure enums to their packet values.
|
|
|
|
*/
|
|
|
|
public class AdventurePacketConvertor {
|
2021-03-24 17:50:02 +01:00
|
|
|
private static final Object2IntMap<NamedTextColor> NAMED_TEXT_COLOR_ID_MAP = new Object2IntArrayMap<>(16);
|
|
|
|
static {
|
|
|
|
NAMED_TEXT_COLOR_ID_MAP.put(NamedTextColor.BLACK, 0);
|
|
|
|
NAMED_TEXT_COLOR_ID_MAP.put(NamedTextColor.DARK_BLUE, 1);
|
|
|
|
NAMED_TEXT_COLOR_ID_MAP.put(NamedTextColor.DARK_GREEN, 2);
|
|
|
|
NAMED_TEXT_COLOR_ID_MAP.put(NamedTextColor.DARK_AQUA, 3);
|
|
|
|
NAMED_TEXT_COLOR_ID_MAP.put(NamedTextColor.DARK_RED, 4);
|
|
|
|
NAMED_TEXT_COLOR_ID_MAP.put(NamedTextColor.DARK_PURPLE, 5);
|
|
|
|
NAMED_TEXT_COLOR_ID_MAP.put(NamedTextColor.GOLD, 6);
|
|
|
|
NAMED_TEXT_COLOR_ID_MAP.put(NamedTextColor.GRAY, 7);
|
|
|
|
NAMED_TEXT_COLOR_ID_MAP.put(NamedTextColor.DARK_GRAY, 8);
|
|
|
|
NAMED_TEXT_COLOR_ID_MAP.put(NamedTextColor.BLUE, 9);
|
|
|
|
NAMED_TEXT_COLOR_ID_MAP.put(NamedTextColor.GREEN, 10);
|
|
|
|
NAMED_TEXT_COLOR_ID_MAP.put(NamedTextColor.AQUA, 11);
|
|
|
|
NAMED_TEXT_COLOR_ID_MAP.put(NamedTextColor.RED, 12);
|
|
|
|
NAMED_TEXT_COLOR_ID_MAP.put(NamedTextColor.LIGHT_PURPLE, 13);
|
|
|
|
NAMED_TEXT_COLOR_ID_MAP.put(NamedTextColor.YELLOW, 14);
|
|
|
|
NAMED_TEXT_COLOR_ID_MAP.put(NamedTextColor.WHITE, 15);
|
|
|
|
}
|
2021-03-05 20:07:33 +01:00
|
|
|
|
|
|
|
public static int getBossBarOverlayValue(@NotNull BossBar.Overlay overlay) {
|
|
|
|
return overlay.ordinal();
|
|
|
|
}
|
|
|
|
|
|
|
|
public static byte getBossBarFlagValue(@NotNull Collection<BossBar.Flag> flags) {
|
|
|
|
byte val = 0x0;
|
|
|
|
for (BossBar.Flag flag : flags) {
|
|
|
|
val |= flag.ordinal();
|
|
|
|
}
|
|
|
|
return val;
|
|
|
|
}
|
|
|
|
|
|
|
|
public static int getBossBarColorValue(@NotNull BossBar.Color color) {
|
|
|
|
return color.ordinal();
|
|
|
|
}
|
|
|
|
|
2021-03-05 20:59:28 +01:00
|
|
|
public static int getSoundSourceValue(@NotNull Sound.Source source) {
|
2021-03-05 20:07:33 +01:00
|
|
|
return source.ordinal();
|
|
|
|
}
|
|
|
|
|
|
|
|
public static byte getMessageTypeValue(@NotNull MessageType messageType) {
|
|
|
|
switch (messageType) {
|
|
|
|
case CHAT: return 0x00;
|
|
|
|
case SYSTEM: return 0x01;
|
|
|
|
}
|
|
|
|
|
|
|
|
throw new IllegalArgumentException("Cannot get message type");
|
|
|
|
}
|
2021-03-24 17:50:02 +01:00
|
|
|
|
|
|
|
public static int getNamedTextColorValue(@NotNull NamedTextColor color) {
|
|
|
|
return NAMED_TEXT_COLOR_ID_MAP.getInt(color);
|
|
|
|
}
|
2021-03-05 20:07:33 +01:00
|
|
|
}
|