Untitled
unknown
java
a year ago
1.6 kB
14
Indexable
package com.trexmine.guiapi;
import com.trexmine.guiapi.gui.GuiManager;
import com.trexmine.guiapi.packets.GuiPacketPlayInWindowClick;
import com.trexmine.guiapi.packets.GuiPacketPlayOutSetSlot;
import com.trexmine.guiapi.packets.GuiPacketPlayOutWindowItems;
import lombok.Getter;
import lombok.SneakyThrows;
import net.minecraft.server.v1_8_R3.EnumProtocol;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.lang.reflect.Field;
import java.util.Map;
@Getter
public final class GuiAPI {
private static final Logger LOGGER = LogManager.getLogger(GuiAPI.class);
private static GuiAPI INSTANCE;
private final GuiManager guiManager = new GuiManager();
private static final Field enumProtocol_registry;
static {
try {
enumProtocol_registry = EnumProtocol.class.getDeclaredField("h");
} catch (NoSuchFieldException e) {
throw new RuntimeException(e);
}
enumProtocol_registry.setAccessible(true);
}
public static GuiAPI getInstance() {
if (INSTANCE == null) {
INSTANCE = new GuiAPI();
INSTANCE.registerPackets();
}
return INSTANCE;
}
@SneakyThrows
@SuppressWarnings({"unchecked", "rawtypes"})
private void registerPackets() {
Map map = (Map) enumProtocol_registry.get(null);
map.put(GuiPacketPlayOutSetSlot.class, EnumProtocol.PLAY);
map.put(GuiPacketPlayOutWindowItems.class, EnumProtocol.PLAY);
map.put(GuiPacketPlayInWindowClick.class, EnumProtocol.PLAY);
LOGGER.info("Registered GUI packets");
}
}Editor is loading...
Leave a Comment