package com.gmail.zahusek.tinyprotocolapi.wrapper;
import java.util.Map;
import com.gmail.zahusek.tinyprotocolapi.asm.reflection.ClassAccess;
import com.google.common.collect.MapMaker;
public abstract class WrapperEnum
{
public static final ClassAccess infoActionAccess = new ClassAccess("{nms}.PacketPlayOutPlayerInfo$EnumPlayerInfoAction");
private final static Map<Integer, Object> info = new MapMaker().weakValues().makeMap();
public static final ClassAccess gameTypeAccess = new ClassAccess("{nms}.WorldSettings$EnumGamemode");
private final static Map<Integer, Object> type = new MapMaker().weakValues().makeMap();
public static final ClassAccess titleActionAccess = new ClassAccess("{nms}.PacketPlayOutTitle$EnumTitleAction");
private final static Map<Integer, Object> title = new MapMaker().weakValues().makeMap();
static
{
for(int i = 0; i < InfoAction.values().length; i++)
info.put(i, infoActionAccess.getEnum(i));
for(int i = 0; i < GameType.values().length; i++)
type.put(i, gameTypeAccess.getEnum(i));
for(int i = 0; i < TitleAction.values().length; i++)
title.put(i, titleActionAccess.getEnum(i));
}
public enum InfoAction
{
ADD_PLAYER,
UPDATE_GAME_MODE,
UPDATE_LATENCY,
UPDATE_DISPLAY_NAME,
REMOVE_PLAYER;
public static InfoAction fromHandle(Enum<?> a)
{return values()[a.ordinal()];}
public Object getHadle(){
return info.get(ordinal());
}
}
public enum GameType
{
NOT_SET,
SURVIVAL,
CREATIVE,
ADVENTURE,
SPECTATOR;
public static GameType fromHandle(Enum<?> a)
{return values()[a.ordinal()];}
public Object getHadle(){
return type.get(ordinal());
}
}
public enum TitleAction
{
TITLE,
SUBTITLE,
TIMES,
CLEAR,
RESET;
public static TitleAction fromHandle(Enum<?> a)
{return values()[a.ordinal()];}
public Object getHadle(){
return title.get(ordinal());
}
}
}