Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import lombok.SneakyThrows;
- import org.bukkit.Bukkit;
- import org.bukkit.Material;
- import org.bukkit.Server;
- import org.bukkit.entity.Player;
- import java.lang.reflect.Constructor;
- import java.lang.reflect.Field;
- import java.lang.reflect.InvocationTargetException;
- import java.lang.reflect.Method;
- import static org.mineacademy.fo.ReflectionUtil.getNMSClass;
- public class UpdateTittleContainers {
- static Class<?> packetclass;
- static Method handle;
- static Field playerConaetion;
- static Class<?> packettestr;
- public static void UpdateTittleContainerss() throws ClassNotFoundException, NoSuchMethodException, NoSuchFieldException {
- if (packetclass == null)
- packetclass = Class.forName("net.minecraft.server.v1_16_R3.Packet");
- if (handle == null)
- handle = Class.forName("org.bukkit.craftbukkit.v1_16_R3.entity.CraftPlayer").getMethod("getHandle");
- if (playerConaetion == null)
- playerConaetion = Class.forName("net.minecraft.server.v1_16_R3.EntityPlayer").getField("playerConnection");
- if (packettestr == null)
- packettestr = Class.forName("net.minecraft.server.v1_16_R3.PlayerConnection");
- }
- @SneakyThrows
- public static void update(Player p, String title, Material container, int inventorySize) {
- UpdateTittleContainerss();
- /*Containers<?> inventoryType = null;
- EntityPlayer ep = ((CraftPlayer) p).getHandle();
- IChatBaseComponent icbc = IChatBaseComponent.ChatSerializer.b("'" + title + "'");
- if (container == Material.HOPPER)
- inventoryType = Containers.HOPPER;
- if (container == Material.CHEST)
- inventoryType = inventorySize == 9 ? Containers.GENERIC_9X1 : inventorySize == 9 * 2 ?
- Containers.GENERIC_9X2 : inventorySize == 9 * 3 ? Containers.GENERIC_9X3 : inventorySize == 9 * 4 ?
- Containers.GENERIC_9X4 : inventorySize == 9 * 5 ? Containers.GENERIC_9X5 : null;
- if (inventoryType != null) {
- PacketPlayOutOpenWindow packet = new PacketPlayOutOpenWindow(ep.activeContainer.windowId, inventoryType, icbc);
- ep.playerConnection.sendPacket((Packet<?>) packet);
- ep.updateInventory(ep.activeContainer);
- }*/
- versionCheck(Bukkit.getServer(), p, title, container, inventorySize);
- }
- public static void versionCheck(Server server, Player p, String title, Material container, int inventorySize) {
- System.out.println(Bukkit.getServer().getClass().getPackageName().split("\\.")[3]);
- try {
- Object player = p.getClass().getMethod("getHandle").invoke(p);
- Object activeContainer = player.getClass().getField("activeContainer").get(player);
- Object windowId = activeContainer.getClass().getField("windowId").get(activeContainer);
- Class<?> tests1 = Class.forName("net.minecraft.server.v1_16_R3.IChatBaseComponent");
- Class<?> chatCompenent = Class.forName("net.minecraft.server.v1_16_R3.IChatBaseComponent$ChatSerializer");
- Method declaredMethodChat = chatCompenent.getMethod("b", String.class);
- Object inventoryTittle = declaredMethodChat.invoke(null, "'" + title + "'");
- Class<?> containerClass = Class.forName("net.minecraft.server.v1_16_R3.Containers");
- Object inventoryType = null;
- if (container == Material.HOPPER)
- inventoryType = containerClass.getField("HOPPER").get("HOPPER");
- if (container == Material.CHEST)
- if (inventorySize % 9 == 0)
- inventoryType = containerClass.getField("GENERIC_9X" + inventorySize / 9).get(null);
- else
- inventoryType = containerClass.getField("GENERIC_9X3").get(null);
- Constructor<?> PacketConstructor = Class.forName("net.minecraft.server.v1_16_R3.PacketPlayOutOpenWindow").getConstructor(int.class, containerClass, tests1);
- Object methods = PacketConstructor.newInstance(windowId, inventoryType, inventoryTittle);
- System.out.println("Iventory sise" + (5 % 9));
- /* Class<?> packetclass = Class.forName("net.minecraft.server.v1_16_R3.Packet");
- Method handle = Class.forName("org.bukkit.craftbukkit.v1_16_R3.entity.CraftPlayer").getMethod("getHandle");
- Field playerConaetion = Class.forName("net.minecraft.server.v1_16_R3.EntityPlayer").getField("playerConnection");
- Class<?> packettestr = Class.forName("net.minecraft.server.v1_16_R3.PlayerConnection");*/
- Object handles = handle.invoke(p);
- Object playerconect = playerConaetion.get(handles);
- Method packet1 = packettestr.getMethod("sendPacket", packetclass);
- packet1.invoke(playerconect, methods);
- player.getClass().getMethod("updateInventory", getNMSClass("Container")).invoke(player, activeContainer);
- //PacketPlayOutOpenWindow packet = new PacketPlayOutOpenWindow(ep.activeContainer.windowId, (Containers<?>) inventoryType, icbc);
- System.out.println("handles " + handles + "inventory " + inventoryType + " windowsId " + windowId + " container " + container);
- //System.out.println(Arrays.toString(new String[]{exemple.getDeclaredField("GENERIC_9X1").toString()}));
- } catch (ClassNotFoundException | NoSuchFieldException | IllegalAccessException | NoSuchMethodException | InstantiationException | InvocationTargetException e) {
- e.printStackTrace();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement