diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b83d222 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/src/main/java/eu/triler/BukkitColors/ApplyColors.java b/src/main/java/eu/triler/BukkitColors/ApplyColors.java new file mode 100644 index 0000000..a99704c --- /dev/null +++ b/src/main/java/eu/triler/BukkitColors/ApplyColors.java @@ -0,0 +1,27 @@ +package eu.triler.BukkitColors; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import net.md_5.bungee.api.ChatColor; + +public class ApplyColors { + + public String applyColerCodes(String str) { + Pattern unicode = Pattern.compile("\\\\u\\+[a-fA-F0-9]{4}"); + Matcher match = unicode.matcher(str); + while (match.find()) { + String code = str.substring(match.start(),match.end()); + str = str.replace(code,Character.toString((char) Integer.parseInt(code.replace("\\u+",""),16))); + match = unicode.matcher(str); + } + Pattern pattern = Pattern.compile("&#[a-fA-F0-9]{6}"); + match = pattern.matcher(str); + while (match.find()) { + String color = str.substring(match.start(),match.end()); + str = str.replace(color,ChatColor.of(color.replace("&","")) + ""); + match = pattern.matcher(str); + } + return ChatColor.translateAlternateColorCodes('&',str); + } +} \ No newline at end of file diff --git a/src/main/java/si/jernejtdo/LitePermissions/Spigot/LitePermissions.java b/src/main/java/si/jernejtdo/LitePermissions/Spigot/LitePermissions.java index 0046354..4dc9115 100644 --- a/src/main/java/si/jernejtdo/LitePermissions/Spigot/LitePermissions.java +++ b/src/main/java/si/jernejtdo/LitePermissions/Spigot/LitePermissions.java @@ -1,26 +1,48 @@ package si.jernejtdo.LitePermissions.Spigot; +import org.bukkit.Bukkit; +import org.bukkit.event.Listener; import org.bukkit.plugin.java.JavaPlugin; -import si.jernejtdo.LitePermissions.Spigot.Permissible.PlayerJoinInject; +import eu.triler.BukkitColors.ApplyColors; +import si.jernejtdo.LitePermissions.Spigot.Permissible.onPlayerLoginInject; public class LitePermissions extends JavaPlugin { private static LitePermissions plugin; - + @Override public void onEnable() { plugin = this; - - plugin.getServer().getPluginManager().registerEvents(new PlayerJoinInject(), plugin); + sendConsoleMessage("Plugin is starting."); + + registerEvents(onPlayerLoginInject.class); + + sendConsoleMessage("Plugin is enabled."); } - + @Override public void onDisable() { - + sendConsoleMessage("Plugin is disabled."); } - + public static LitePermissions getPlugin() { return plugin; } + + public void registerEvents(Class listenerClass) { + try { + T listener = listenerClass.getDeclaredConstructor().newInstance(); + plugin.getServer().getPluginManager().registerEvents(listener, plugin); + sendConsoleMessage("Listener &a" + listenerClass.getSimpleName() + "&f is registered."); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void sendConsoleMessage(String message) { + ApplyColors ac = new ApplyColors(); + String def = ac.applyColerCodes("&aLitePermissions &7| Message: &f" + message); + Bukkit.getConsoleSender().sendMessage(def); + } } diff --git a/src/main/java/si/jernejtdo/LitePermissions/Spigot/Permissible/CustomPermissible.java b/src/main/java/si/jernejtdo/LitePermissions/Spigot/Permissible/CustomPermissible.java index db5497f..d8d5a74 100644 --- a/src/main/java/si/jernejtdo/LitePermissions/Spigot/Permissible/CustomPermissible.java +++ b/src/main/java/si/jernejtdo/LitePermissions/Spigot/Permissible/CustomPermissible.java @@ -1,34 +1,46 @@ package si.jernejtdo.LitePermissions.Spigot.Permissible; +import org.bukkit.entity.Player; import org.bukkit.permissions.PermissibleBase; import org.bukkit.permissions.ServerOperator; +import si.jernejtdo.LitePermissions.Spigot.LitePermissions; + public class CustomPermissible extends PermissibleBase { + private final Player player; + public CustomPermissible(ServerOperator opable) { super(opable); + if (opable instanceof Player) { + this.player = (Player) opable; + } else { + throw new IllegalArgumentException("CustomPermissible only supports Player instances"); + } } @Override public boolean hasPermission(String inName) { - return checkPermissions(inName); + return checkPermissions(inName); } @Override public boolean hasPermission(org.bukkit.permissions.Permission perm) { - return checkPermissions(perm.toString()); + return checkPermissions(perm.getName()); } - + public boolean checkPermissions(String inName) { - boolean has = false; - - /* - * My check logic - * Get all permissions from RamData - * Check if player has permission - * - */ - - return has; + // You now have access to the player object + LitePermissions lp = LitePermissions.getPlugin(); + + // Example: Check RamData or other storage here + // return RamData.hasPermission(player.getUniqueId(), inName); + lp.sendConsoleMessage("&a"+player.getName()+"&f Permission(&a"+inName+"&f)"); + + return false; // default deny + } + + public Player getPlayer() { + return player; } } diff --git a/src/main/java/si/jernejtdo/LitePermissions/Spigot/Permissible/PermissionInjector.java b/src/main/java/si/jernejtdo/LitePermissions/Spigot/Permissible/PermissionInjector.java index ca552c0..e3b0a0b 100644 --- a/src/main/java/si/jernejtdo/LitePermissions/Spigot/Permissible/PermissionInjector.java +++ b/src/main/java/si/jernejtdo/LitePermissions/Spigot/Permissible/PermissionInjector.java @@ -8,7 +8,12 @@ public class PermissionInjector { public static void injectCustomPermissible(Player player) { try { - Field permField = player.getClass().getDeclaredField("perm"); + Field permField = getPermField(player.getClass()); + if (permField == null) { + System.err.println("Failed to find 'perm' field for player injection."); + return; + } + permField.setAccessible(true); CustomPermissible customPerm = new CustomPermissible(player); permField.set(player, customPerm); @@ -16,4 +21,15 @@ public class PermissionInjector { e.printStackTrace(); } } + + private static Field getPermField(Class clazz) { + while (clazz != null) { + try { + return clazz.getDeclaredField("perm"); + } catch (NoSuchFieldException e) { + clazz = clazz.getSuperclass(); // walk up the hierarchy + } + } + return null; + } } diff --git a/src/main/java/si/jernejtdo/LitePermissions/Spigot/Permissible/PlayerJoinInject.java b/src/main/java/si/jernejtdo/LitePermissions/Spigot/Permissible/PlayerJoinInject.java deleted file mode 100644 index e5f3c86..0000000 --- a/src/main/java/si/jernejtdo/LitePermissions/Spigot/Permissible/PlayerJoinInject.java +++ /dev/null @@ -1,13 +0,0 @@ -package si.jernejtdo.LitePermissions.Spigot.Permissible; - -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerJoinEvent; - -public class PlayerJoinInject implements Listener { - - @EventHandler - public void onJoinInject(PlayerJoinEvent event) { - PermissionInjector.injectCustomPermissible(event.getPlayer()); - } -} diff --git a/src/main/java/si/jernejtdo/LitePermissions/Spigot/Permissible/onPlayerLoginInject.java b/src/main/java/si/jernejtdo/LitePermissions/Spigot/Permissible/onPlayerLoginInject.java new file mode 100644 index 0000000..89c1ab3 --- /dev/null +++ b/src/main/java/si/jernejtdo/LitePermissions/Spigot/Permissible/onPlayerLoginInject.java @@ -0,0 +1,13 @@ +package si.jernejtdo.LitePermissions.Spigot.Permissible; + +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerLoginEvent; + +public class onPlayerLoginInject implements Listener { + + @EventHandler + public void onLoginInject(PlayerLoginEvent event) { + PermissionInjector.injectCustomPermissible(event.getPlayer()); + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml new file mode 100644 index 0000000..644cf00 --- /dev/null +++ b/src/main/resources/plugin.yml @@ -0,0 +1,6 @@ +name: LitePermissions +main: si.jernejtdo.LitePermissions.Spigot.LitePermissions +version: 1.0.0 +api-version: 1.21.4 +author: jernejtdo +description: A lightweight permissions plugin that injects custom permission handlers. \ No newline at end of file diff --git a/target/LitePermissions-1.0-sources.jar b/target/LitePermissions-1.0-sources.jar index ba48efa..f556749 100644 Binary files a/target/LitePermissions-1.0-sources.jar and b/target/LitePermissions-1.0-sources.jar differ diff --git a/target/LitePermissions-1.0.jar b/target/LitePermissions-1.0.jar index 410e32e..4bcbf83 100644 Binary files a/target/LitePermissions-1.0.jar and b/target/LitePermissions-1.0.jar differ diff --git a/target/classes/META-INF/maven/si.jernejtdo/LitePermissions/pom.properties b/target/classes/META-INF/maven/si.jernejtdo/LitePermissions/pom.properties index cacc3a2..9f7bcc6 100644 --- a/target/classes/META-INF/maven/si.jernejtdo/LitePermissions/pom.properties +++ b/target/classes/META-INF/maven/si.jernejtdo/LitePermissions/pom.properties @@ -1,7 +1,7 @@ #Generated by Maven Integration for Eclipse -#Wed Jul 09 14:33:12 CEST 2025 +#Fri Jul 11 20:52:35 CEST 2025 artifactId=LitePermissions groupId=si.jernejtdo -m2e.projectLocation=C\:\\Users\\JernejHP\\Documents\\EclipseIDE\\JernejTDO\\LitePermissions +m2e.projectLocation=D\:\\Codespace\\JernejTDO\\LitePermissions m2e.projectName=LitePermissions version=1.0 diff --git a/target/classes/si/jernejtdo/LitePermissions/Spigot/LitePermissions.class b/target/classes/si/jernejtdo/LitePermissions/Spigot/LitePermissions.class index 834f480..812b912 100644 Binary files a/target/classes/si/jernejtdo/LitePermissions/Spigot/LitePermissions.class and b/target/classes/si/jernejtdo/LitePermissions/Spigot/LitePermissions.class differ diff --git a/target/classes/si/jernejtdo/LitePermissions/Spigot/Permissible/CustomPermissible.class b/target/classes/si/jernejtdo/LitePermissions/Spigot/Permissible/CustomPermissible.class index 326a1b6..c6d0725 100644 Binary files a/target/classes/si/jernejtdo/LitePermissions/Spigot/Permissible/CustomPermissible.class and b/target/classes/si/jernejtdo/LitePermissions/Spigot/Permissible/CustomPermissible.class differ diff --git a/target/classes/si/jernejtdo/LitePermissions/Spigot/Permissible/PermissionInjector.class b/target/classes/si/jernejtdo/LitePermissions/Spigot/Permissible/PermissionInjector.class index 057f086..dab406d 100644 Binary files a/target/classes/si/jernejtdo/LitePermissions/Spigot/Permissible/PermissionInjector.class and b/target/classes/si/jernejtdo/LitePermissions/Spigot/Permissible/PermissionInjector.class differ diff --git a/target/classes/si/jernejtdo/LitePermissions/Spigot/Permissible/PlayerJoinInject.class b/target/classes/si/jernejtdo/LitePermissions/Spigot/Permissible/PlayerJoinInject.class deleted file mode 100644 index aa7b6d6..0000000 Binary files a/target/classes/si/jernejtdo/LitePermissions/Spigot/Permissible/PlayerJoinInject.class and /dev/null differ diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst index e69de29..b517f49 100644 --- a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,5 @@ +D:\Codespace\JernejTDO\LitePermissions\src\main\java\si\jernejtdo\LitePermissions\Spigot\Permissible\PermissionInjector.java +D:\Codespace\JernejTDO\LitePermissions\src\main\java\si\jernejtdo\LitePermissions\Spigot\Permissible\onPlayerLoginInject.java +D:\Codespace\JernejTDO\LitePermissions\src\main\java\si\jernejtdo\LitePermissions\Spigot\LitePermissions.java +D:\Codespace\JernejTDO\LitePermissions\src\main\java\si\jernejtdo\LitePermissions\Spigot\Permissible\CustomPermissible.java +D:\Codespace\JernejTDO\LitePermissions\src\main\java\eu\triler\BukkitColors\ApplyColors.java diff --git a/target/original-LitePermissions-1.0.jar b/target/original-LitePermissions-1.0.jar index f304de5..a08e216 100644 Binary files a/target/original-LitePermissions-1.0.jar and b/target/original-LitePermissions-1.0.jar differ