Skip to content

Commit

Permalink
Fixed using older versions of ChangeSkin causing errors in console (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
OmerBenGera committed Feb 24, 2023
1 parent 0e0a7fd commit 74f0603
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 12 deletions.
Expand Up @@ -2,28 +2,42 @@

import com.bgsoftware.superiorskyblock.SuperiorSkyblockPlugin;
import com.bgsoftware.superiorskyblock.api.wrappers.SuperiorPlayer;
import com.github.games647.changeskin.bukkit.events.PlayerChangeSkinEvent;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

@SuppressWarnings("unused")
public class ChangeSkinHook implements Listener {

private final SuperiorSkyblockPlugin plugin;
public static boolean isCompatible(SuperiorSkyblockPlugin plugin) {
try {
Class.forName("com.github.games647.changeskin.bukkit.events.PlayerChangeSkinEvent");
return true;
} catch (ClassNotFoundException error) {
return false;
}
}

ChangeSkinHook(SuperiorSkyblockPlugin plugin) {
this.plugin = plugin;
private ChangeSkinHook() {
}

public static void register(SuperiorSkyblockPlugin plugin) {
Bukkit.getPluginManager().registerEvents(new ChangeSkinHook(plugin), plugin);
Bukkit.getPluginManager().registerEvents(new PlayerChangeSkinListener(plugin), plugin);
}

@EventHandler
public void onPlayerChangeSkin(PlayerChangeSkinEvent e) {
SuperiorPlayer superiorPlayer = plugin.getPlayers().getSuperiorPlayer(e.getPlayer());
superiorPlayer.setTextureValue(e.getSkinModel().getEncodedValue());
private static class PlayerChangeSkinListener implements Listener {

private final SuperiorSkyblockPlugin plugin;

PlayerChangeSkinListener(SuperiorSkyblockPlugin plugin) {
this.plugin = plugin;
}

@EventHandler
public void onPlayerChangeSkin(com.github.games647.changeskin.bukkit.events.PlayerChangeSkinEvent e) {
SuperiorPlayer superiorPlayer = plugin.getPlayers().getSuperiorPlayer(e.getPlayer());
superiorPlayer.setTextureValue(e.getSkinModel().getEncodedValue());
}

}

}
Expand Up @@ -585,6 +585,10 @@ private void registerChunksProvider() {
private void registerHook(String className) {
try {
Class<?> clazz = Class.forName("com.bgsoftware.superiorskyblock.external." + className);

if (!isHookCompatible(clazz))
return;

Method registerMethod = clazz.getMethod("register", SuperiorSkyblockPlugin.class);
registerMethod.invoke(null, plugin);
} catch (Throwable error) {
Expand All @@ -599,9 +603,8 @@ private static boolean hasPaperAsyncSupport() {
private <T> Optional<T> createInstance(String className) {
try {
Class<?> clazz = Class.forName("com.bgsoftware.superiorskyblock.external." + className);
ReflectMethod<Boolean> compatibleMethod = new ReflectMethod<>(clazz, "isCompatible");

if (compatibleMethod.isValid() && !compatibleMethod.invoke(null))
if (!isHookCompatible(clazz))
return Optional.empty();

try {
Expand Down Expand Up @@ -629,4 +632,9 @@ private boolean isHookEnabled(String pluginName) {
return !plugin.getSettings().getDisabledHooks().contains(pluginName.toLowerCase(Locale.ENGLISH));
}

private boolean isHookCompatible(Class<?> clazz) {
ReflectMethod<Boolean> compatibleMethod = new ReflectMethod<>(clazz, "isCompatible");
return !compatibleMethod.isValid() || compatibleMethod.invoke(null);
}

}

0 comments on commit 74f0603

Please sign in to comment.