Im rating this 4 (good), because its pretty good, but could use a little cleanup.
What I liked:
The GUI idea for game rules is pretty neat, and it's handy having a visual representation of all game rules and their current values and defaults.
Some things I found that need attention:
1) the overuse of skript-reflect for things that dont need reflect.
For example:
a) In your one function (getGameruleValue) you take a world, then you get its name, pass the name thru the function, then use Bukkit.getWorld() from the name.... you already have a world object, so theres just several steps here that aren't needed.
b) In that same function, you pass thru a game rule, only to stringify it and use reflect to get the game rule... from the stringified game rule.
c) That same function, all of it could be removed and just use the game rule value expression. You dont really need a function here. This is just over engineering a simple 1 line of code.
Exhibit A:
""
# WHAT YOU HAVE
local function getGameruleValue(worldName: text, gamerule: gamerule) :: object:
set {_world} to Bukkit.getWorld({_worldName})
set {_rule} to GameRule.getByName("%{_gamerule}%")
return {_world}.getGameRuleValue({_rule})
# WHAT SHOULD BE USING INSTEAD:
gamerule {_gamerule} of {_world}
""
d) the same thing goes for your default value function, could be cut down to 1 line of code:
Exhibit B:
""
# WHAT YOU HAVE:
local function getGameruleDefaultValue(worldName: text, gamerule: gamerule) :: object:
set {_world} to Bukkit.getWorld({_worldName})
set {_rule} to GameRule.getByName("%{_gamerule}%")
return {_world}.getGameRuleDefault({_rule})
# WHAT YOU SHOULD BE USING:
local function getGameruleDefaultValue(world: world, gamerule: gamerule) :: object:
return {_world}.getGameRuleDefault({_gamerule})
""
2) Theres errors in the console when a game rule is not available (as its feature locked), for instance, the minecart speed game rule.
Exhibit C:
""
[10:20:42 INFO]:
[10:20:44 INFO]: [Skript] method CraftWorld#getGameRuleValue called with (minecartMaxSpeed (GameRule)) threw a IllegalArgumentException: GameRule 'minecartMaxSpeed' is not available
[10:20:44 INFO]:
[10:20:44 INFO]: [Skript] method CraftWorld#getGameRuleDefault called with (minecartMaxSpeed (GameRule)) threw a IllegalArgumentException: GameRule 'minecartMaxSpeed' is not available
""
3) A lot of this code seems over engineered. The requirement for your inventory api seems unnecessary. Most of what I can see in that api is one liners that set/get variables. I feel like this script could be cleaned up substantially.
SUMMARY:
I think it's good... it works, and thats what matters.
But I do feel the code is heavily over engineered for a lot of really simple things.