From 31171abcde0ec30399415a1b00e0e3fb612388b1 Mon Sep 17 00:00:00 2001 From: JernejTDO Date: Fri, 11 Jul 2025 21:03:22 +0200 Subject: [PATCH] UTD --- .gitignore | 1 + .../eu/triler/BukkitColors/ApplyColors.java | 27 +++++++++++++ .../Spigot/LitePermissions.java | 36 +++++++++++++---- .../Spigot/Permissible/CustomPermissible.java | 38 ++++++++++++------ .../Permissible/PermissionInjector.java | 18 ++++++++- .../Spigot/Permissible/PlayerJoinInject.java | 13 ------ .../Permissible/onPlayerLoginInject.java | 13 ++++++ src/main/resources/plugin.yml | 6 +++ target/LitePermissions-1.0-sources.jar | Bin 1878 -> 6174 bytes target/LitePermissions-1.0.jar | Bin 2150 -> 9426 bytes .../LitePermissions/pom.properties | 4 +- .../Spigot/LitePermissions.class | Bin 1015 -> 2998 bytes .../Permissible/CustomPermissible.class | Bin 991 -> 2186 bytes .../Permissible/PermissionInjector.class | Bin 1258 -> 1983 bytes .../Spigot/Permissible/PlayerJoinInject.class | Bin 906 -> 0 bytes .../compile/default-compile/inputFiles.lst | 5 +++ target/original-LitePermissions-1.0.jar | Bin 2022 -> 9058 bytes 17 files changed, 125 insertions(+), 36 deletions(-) create mode 100644 .gitignore create mode 100644 src/main/java/eu/triler/BukkitColors/ApplyColors.java delete mode 100644 src/main/java/si/jernejtdo/LitePermissions/Spigot/Permissible/PlayerJoinInject.java create mode 100644 src/main/java/si/jernejtdo/LitePermissions/Spigot/Permissible/onPlayerLoginInject.java create mode 100644 src/main/resources/plugin.yml delete mode 100644 target/classes/si/jernejtdo/LitePermissions/Spigot/Permissible/PlayerJoinInject.class 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 ba48efabd22d67de0f626786dda987298c74bbcf..f556749cf712d63c87aeaf7e30fae9c7c22e225b 100644 GIT binary patch literal 6174 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 delta 239 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 C4x!!v 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 834f4809374f93e095b4b3bb41ffa0a7f59340d9..812b9121a6451f9db20f5904c3a7ca1b11e99a91 100644 GIT binary patch literal 2998 zcmbVOYgg1(6x|ol3`0~L1gaLr7moo+TeT{Kwu)HM;bDhjt+j2Kxr~8KGA0?6zTf=| z{RjP8+qJOT)vkW_M|E}IBrqAEw#)f2xw-e;ea_iu-;?|7@27tPIEx=NGzpyYEn`V~ zj$8^#u93F_IV-)2<@=WF_(q{>mEB7amEeM>+zkr(@0mdxH3N8vX4-C!=w2ZqYnMO0(bZAHk?8#e>oUTv^M-*?b<@fr5=>?Wk9!b-rQ%4uN ziRnwHG)_KTTTV&eH_LR?Igk(YwN0mN6atT%a)a|4_6v;vpJdl*W;llH%-ZIv^ztrg zoOG6CF;M;w>UbGF0=qp~w){YP6D!gQn8?1Q?{VAoeY#HJFhi}UBEwWmBLc0ibH(yi z;wc<$NVgPChel-?tk>=Az~BoOthHd39W$tTWa#|Z+~{aNArq;>rdgG?1hAy0@8yr~t3vH4U!{^wgKO*{YiL`z+mN7k>ApB4U+=9RK`}N zYRhS}LQ?lJ(t0W4BbQ+>yP+eGDS_^axhz@Pq8Z$>f_q_&&G5kVC8f50Shs?uF@u{L zW_d>HjwT)!Wi?R%gt=g;6IE}k#%TR(h)M!CRQIWjIj4h<6y0M>zL|MaPqv|3|9rs{Gs*Bra zft^&TZm3apMYmEholXXnQyw_*1V#;N)jo~O`pyYB_O7L*>wYU8nZejgL`g?bUnn! z8dmA6E-}klahGNM6^R6V)l>~_RVn)ufgh9ljjbcVYoyJV{_(u)F4wBLt(hfe8aB>R zJ=>Tk+vhfYD~1?1ZM(p`LT=AaJV@blHp%t2-rHx2zD4ydUH@vy(ntzlQgVIfCX#yl z&VJe(7ihG%Z&3*7lMcTPp@yZe;TwSyTX@K4G! zPL6q{;D0OM3_b;)JF<_Fe#Ai&^w?LRiN1eQIbS2=sH{g3W;LpVHS~hc}0WQr2-~i(}n1Ik? zh*liKamJ<6Q&074`33Di^O?-jfYv2lZ;`6 zL>Y-Vdp6?ifr~0#q*&Se@aUw2mG(KOXbkAE2{o+nxtpU;Y57_B{{_C{ocjEKjc@Ti G_WuK!!V?Yv delta 358 zcmYLDJxjx27`!)$iAht9rXSI!jcH@8apCDKmwg4v&Qzzmsg8L5-us@UlM`2fQL2@t)Ew!KE!CZDY_d2bq|}E!AfVKTzFU zk#xZEpI|(~$gn&`h2a(U*)tlXOyP(~DI!28T*#}6kg$jb3=~PzXBFiAmNTqlo=_#e jmEWZO7sz?I{P$?&iP@)$Ha7T|+A^)&7ILpcC}8skP8u}o diff --git a/target/classes/si/jernejtdo/LitePermissions/Spigot/Permissible/CustomPermissible.class b/target/classes/si/jernejtdo/LitePermissions/Spigot/Permissible/CustomPermissible.class index 326a1b62928c5be8826589c5f53ac198120cb778..c6d072510f7c92f30255ecfb171769b3490a7d68 100644 GIT binary patch literal 2186 zcmbtVU31$+6g}&tR_rQHYVy&Pwm2b89XnKoQd;V^keG%B>?Gh$8Q_80*o&=L)@r16 zhP?4J;1}@11I$1RWd_<;eiU$5a$*tNOs9Cp@@n_)x#yny;XnU+@;iVVs2NBwtOvHW zFML<*tA?~Hwi3I-@7O_LOE<7;p52tnI@;QEgjMbaN_Jv92F4jyq~Emmy6v{DEH4HS zv)kZ-U`TonKNLR0xk~JcaFwkNt=;gfL{_(L*H(8K3i-HM9Jwa^1L5z`7FW_Qtv+NJ zFUy8VV+^NF7??0H$#8a*mlPPLOq@c}z!`?6eSW|#hr3N{%W*`LJL`V4+aY52zN!mP zksK3viQ(!%{5k15hq<8ZdD2%wE{Y*%yMf|vT?A=NV^;H-W0=iX`fh5~b@@3JW|*ugUT;^q7xFRi z3d5zCyrZ*2S6e(dss-teP~x*R<>XZp%UEQXuD3+J-M>SDCvA6|cS3arWTX-tSt@;y z(kl5_MbSWkVQ~cazPX7tyvATOg^C={fU z(U2zI#C3)g5!!XSO`DXwL6lwqsdO49idmWjH%+{aTMY9Z-WFx)*17t`RxMiT3Ra~1 z%^_twD8mqCbg;Kg+|jk44TRg!pwbal5d^$RiA*>i!}S;9f22Y*P0o`Fv2>oCC+V8( z`gO5s>)x6hXyGfmoT%hBq*Q_OxmOjcB^%Vco49Y_eTLo?XFiE)G)U5uZs^3Ju$@m^O*h4-oB`-QalSih%$Ga z8V&Z+R1)_lP@z<>aJKSgu3whKOXf(9{>OV delta 440 zcmZ{gy-EW?6ot>suCv*3jjmDSPt^4XAxV)^P?Ab)EG+EAW)+DBiJ(g?)7!;;hZJIC z6T!j<@Fjc*d+}sui6Y3roqI2b@7{Co!w*ltf4#l|*v4j0cY6JX@&k-Pr4QmUy_02C z2rz>%?aPz$0+u{13QV=)PF%Z++s)eHY3uwf2~fhaKrXpHN^UOO&2-n<(*n*#d@CT1 z(@%G+i#4#rNr20YBN#na4M;vfRjMz@Ju{QgjM{X4DmBJg&sh}$Ot7LJc}$YQeGq1> z9cnVx0Mk!YS(ZXqu*m-dnkC$ViW#V$f&5B!fcZbHA*%2T<&Spqv4T~D;>|MDK7R)X jwC&VOKPy>#Mb3!~Dl*4$M<^F|tD&KY$CJdY8$%o4-QFnc diff --git a/target/classes/si/jernejtdo/LitePermissions/Spigot/Permissible/PermissionInjector.class b/target/classes/si/jernejtdo/LitePermissions/Spigot/Permissible/PermissionInjector.class index 057f0869b07a6854ac8fb15bbcc91a0563768003..dab406d7374fb59bc0bb2c5bf66d1c3b7621ff0e 100644 GIT binary patch delta 992 zcmZuw&r{P-5dL0MNE(6^C~ZN0L{Uo9LZm9FMFo+nP!MUYfa4*SfMG)0NrNL?dh_Bj z{sW%4f`{tpjNW91@t^SE#iKW89C1?);NWED?c2?_`+aZsy&t~MP2&Ea51#;x;PI}w zz*G?oZ4!bAF-WVrJ*QjiDML4x8RGrvHSM{knp$C1oiMd>IT>{Zx%P?=?KsV&gTa3U z$ZVEveO*E)x)?a!vZ(H1zEM=?ETdp&Y)jYHlLC4ehEkeg>dUfSlvj+xvK%Q9Z-n;5 zEUy$Txnydax+NQhH9c<|#loP7Gw9`UmZ7h;#`zU`Mh2(8&6H0!P~zS&G8s;nmj2X4pl-OE;vs-st`d!!bMzi zUV9St!??m@#QEw8v#ZW`&$oIWw;94tCkqp~FJr70G<(CMg6fIpjVd<|`xg~(ml)j> zi?A`l9WUlJGpAXGMvcmDmh`N)qcojq25Yn+KF7Lua zc>%;Rj5b7TmV-z!rM5OefJ9#-VNMaE869XrFIov3zyL*t5UQY|mf&?I;2M%-1-e3` zxK1~|7xlP-n?y7KFUBxVv0H=)g8Pj&9+3muG9DA|GVCQE@TL+>PWLzM-t&1~@I7yR)Abjdx zxz)DYIj-)u-CoaTk|{NijZlh=Nm>wBk23DJnIWt0jHH|u?A%9cDlJDXiyZSde)8(u zs0LFMZAv)G@zpaG7EKleWB(f(*GH}H<;i)+rmAjy1NG^z3q#4k-t7ZE9Z+yQBGH(~ zM6)bCreDb&I?v4Qmz|17;fY|g>{0F`v^hx(xW 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 aa7b6d6409770dcea8c3a8b72653020785edec0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 906 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 Ge*8Z%9lzfI delta 471 zcmaFl_Kcr5z?+$ci-CcIfkCkF6(B(?6ClVbj=;v^}cuPoLK99tNp|0vHn(sXGV?Mri7>;%W%3yr6HvfRW|p;A0Qnv0Z8+eEvjiC4I<8@u zEFdQf4lV;ZX{MVDlh-N8P0p6%0Si?Dg@hS_LV7v@-XJUBwju>51A`UZNCt)_jjZ0B=?{kV