Skip to content

Commit

Permalink
Adjustment.
Browse files Browse the repository at this point in the history
  • Loading branch information
DxsSucuk committed Jul 9, 2023
1 parent ef41812 commit 5e0d01d
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 46 deletions.
15 changes: 1 addition & 14 deletions src/main/java/de/presti/trollv4/api/Packets.java
Original file line number Diff line number Diff line change
@@ -1,27 +1,14 @@
package de.presti.trollv4.api;

import org.bukkit.entity.Player;

public class Packets {

public static Class<?> getNMSClass(String name) {
String version = org.bukkit.Bukkit.getServer().getClass().getPackage().getName().substring(org.bukkit.Bukkit.getServer().getClass().getPackage().getName().lastIndexOf(".") + 1, org.bukkit.Bukkit.getServer().getClass().getPackage().getName().length());
try {
return Class.forName("net.minecraft.server." + version + "." + name);
} catch (ClassNotFoundException e) {
System.out.println("Your Server Version isnt Supporting this Packet! (" + name + ")");
System.out.println("Your Server Version isn't supporting this Packet! (" + name + ")");
}
return null;
}

public static void sendPacket(Player player, Object packet) {
try {
Object handle = player.getClass().getMethod("getHandle", new Class[0]).invoke(player, new Object[0]);
Object playerConnection = handle.getClass().getField("playerConnection").get(handle);
playerConnection.getClass().getMethod("sendPacket", new Class[] { getNMSClass("Packet") })
.invoke(playerConnection, new Object[] { packet });
} catch (Exception e) {
System.out.println("Your Server Version isnt Supporting this Packet! (" + packet + ")");
}
}
}
35 changes: 3 additions & 32 deletions src/main/java/de/presti/trollv4/utils/crossversion/Titles.java
Original file line number Diff line number Diff line change
@@ -1,46 +1,17 @@
package de.presti.trollv4.utils.crossversion;

import java.lang.reflect.Constructor;

import com.comphenix.protocol.PacketType;
import com.comphenix.protocol.ProtocolLibrary;
import com.comphenix.protocol.events.PacketContainer;
import com.comphenix.protocol.wrappers.EnumWrappers;
import com.comphenix.protocol.wrappers.WrappedChatComponent;
import de.presti.trollv4.logging.Logger;
import de.presti.trollv4.main.Main;
import org.bukkit.entity.Player;

import de.presti.trollv4.api.Packets;

public class Titles {

public static void sendTitle(Player player, Integer fadeIn, Integer stay, Integer fadeOut, String title, String subtitle) {
public static void sendTitle(Player player, int fadeIn, int stay, int fadeOut, String title, String subtitle) {
send(player, fadeIn, stay, fadeOut, title, subtitle);
}

public static void send(Player player, Integer fadeIn, Integer stay, Integer fadeOut, String title, String subtitle) {
public static void send(Player player, int fadeIn, int stay, int fadeOut, String title, String subtitle) {
try {
player.sendTitle(title, subtitle, fadeIn, stay, fadeOut);
} catch (Exception exception) {
Logger.error("We couldn't send a Title with the default player.sendTitle methode, trying Packets now!");
try {
Object chat = Packets.getNMSClass("IChatBaseComponent").getDeclaredClasses()[0].getMethod("a", new Class[]{String.class}).invoke(null, new Object[]{"{\"text\":\"" + title + "\"}"});
Constructor<?> Constructor = Packets.getNMSClass("PacketPlayOutTitle").getConstructor(new Class[]{Packets.getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0], Packets.getNMSClass("IChatBaseComponent"), Integer.TYPE, Integer.TYPE, Integer.TYPE});
Object timePacket = Constructor.newInstance(new Object[]{Packets.getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0].getField("TIMES").get(null), chat, fadeIn, stay, fadeOut});
Constructor = Packets.getNMSClass("PacketPlayOutTitle").getConstructor(new Class[]{Packets.getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0], Packets.getNMSClass("IChatBaseComponent")});
Object titlePacket = Constructor.newInstance(new Object[]{Packets.getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0].getField("TITLE").get(null), chat});
chat = Packets.getNMSClass("IChatBaseComponent").getDeclaredClasses()[0].getMethod("a", new Class[]{String.class}).invoke(null, new Object[]{"{\"text\":\"" + subtitle + "\"}"});
Object subtitlePacket = Constructor.newInstance(new Object[]{Packets.getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0].getField("SUBTITLE").get(null), chat});

Packets.sendPacket(player, timePacket);
Packets.sendPacket(player, titlePacket);
Packets.sendPacket(player, subtitlePacket);
} catch (Exception exception1) {
Logger.error("We couldn't send a Title over the player.sendTitle methode, and neither did the Packets work.");
exception.printStackTrace();
exception1.printStackTrace();
}
com.cryptomorin.xseries.messages.Titles.sendTitle(player, fadeIn, stay, fadeOut, title, subtitle);
}
}
}

0 comments on commit 5e0d01d

Please sign in to comment.