diff options
Diffstat (limited to 'src/main/kotlin')
5 files changed, 129 insertions, 0 deletions
diff --git a/src/main/kotlin/dev/mikka/cortex/help/TestPlugin.kt b/src/main/kotlin/dev/mikka/cortex/help/TestPlugin.kt new file mode 100644 index 0000000..e3e4269 --- /dev/null +++ b/src/main/kotlin/dev/mikka/cortex/help/TestPlugin.kt @@ -0,0 +1,58 @@ +package dev.mikka.cortex.help + +import com.comphenix.protocol.ProtocolLibrary +import com.comphenix.protocol.ProtocolManager +import com.github.retrooper.packetevents.PacketEvents +import com.github.retrooper.packetevents.PacketEventsAPI +import dev.mikka.cortex.help.event.ClickEvents +import dev.mikka.cortex.help.luckperms.ActualLuckPermsManager +import dev.mikka.cortex.help.luckperms.LuckPermsManager +import dev.mikka.cortex.help.luckperms.NoOpLuckPermsManager +import io.github.retrooper.packetevents.factory.spigot.SpigotPacketEventsBuilder +import net.luckperms.api.LuckPerms +import org.bukkit.plugin.Plugin +import org.bukkit.plugin.java.JavaPlugin + +class TestPlugin : JavaPlugin() { + companion object { + val packetEvents: PacketEventsAPI<*> by lazy { PacketEvents.getAPI() } + val protocolManager: ProtocolManager by lazy { ProtocolLibrary.getProtocolManager() } + lateinit var instance: TestPlugin + lateinit var luckPerms: LuckPermsManager + lateinit var essentials: Plugin + } + + override fun onLoad() { + instance = this + PacketEvents.setAPI(SpigotPacketEventsBuilder.build(this)) + packetEvents.load() + } + + override fun onEnable() { + if (checkLuckPerms()) { + // This will throw when called unchecked! + luckPerms = ActualLuckPermsManager(server.servicesManager.getRegistration(LuckPerms::class.java)!!.provider) + slF4JLogger.info("LuckPerms is enabled! Using $luckPerms") + } else { + luckPerms = NoOpLuckPermsManager + slF4JLogger.info("LuckPerms is not enabled! Using $luckPerms") + } + + println(server.pluginManager.plugins.joinToString(", ") { plugin -> "${plugin.name} (${plugin.isEnabled})" }) + + println(checkEssentials()) + + if (checkEssentials()) { + essentials = server.pluginManager.getPlugin("Essentials")!! + slF4JLogger.info("EssentialsX is enabled! Plugin: $essentials (${essentials::class.java.name})") + } + + slF4JLogger.info("ProtocolLib: $protocolManager") + + server.pluginManager.registerEvents(ClickEvents, this) + } + + private fun checkLuckPerms(): Boolean = server.pluginManager.isPluginEnabled("LuckPerms") + + private fun checkEssentials(): Boolean = server.pluginManager.plugins.find { it.name == "Essentials" } != null +} diff --git a/src/main/kotlin/dev/mikka/cortex/help/event/ClickEvents.kt b/src/main/kotlin/dev/mikka/cortex/help/event/ClickEvents.kt new file mode 100644 index 0000000..3e750aa --- /dev/null +++ b/src/main/kotlin/dev/mikka/cortex/help/event/ClickEvents.kt @@ -0,0 +1,46 @@ +package dev.mikka.cortex.help.event + +import com.comphenix.protocol.PacketType +import com.comphenix.protocol.events.PacketContainer +import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerChangeGameState +import dev.mikka.cortex.help.TestPlugin +import org.bukkit.Material +import org.bukkit.event.EventHandler +import org.bukkit.event.Listener +import org.bukkit.event.block.Action +import org.bukkit.event.player.PlayerInteractEvent + +object ClickEvents : Listener { + @EventHandler + fun onPlayerInteract(event: PlayerInteractEvent) { + if (event.action != Action.LEFT_CLICK_AIR && event.action != Action.RIGHT_CLICK_AIR) { + return + } + + if (event.item?.type != Material.CLOCK) { + return + } + + // We have direct access to [PacketEventsAPI] + TestPlugin.packetEvents.playerManager.sendPacket( + event.player, + WrapperPlayServerChangeGameState(WrapperPlayServerChangeGameState.Reason.DEMO_EVENT, 0f), + ) + + TestPlugin.protocolManager.sendServerPacket( + event.player, + PacketContainer(PacketType.Play.Server.GAME_STATE_CHANGE).apply { + // God is ProtocolLib bullshit + structures.modify(0) { structure -> + structure.integers.write(0, 5) + structure + } + float.write(0, 101f) + }, + ) + + TestPlugin.luckPerms.printInstance() + + TestPlugin.essentials.slF4JLogger.info("Hello from ${TestPlugin.instance}") + } +} diff --git a/src/main/kotlin/dev/mikka/cortex/help/luckperms/ActualLuckPermsManager.kt b/src/main/kotlin/dev/mikka/cortex/help/luckperms/ActualLuckPermsManager.kt new file mode 100644 index 0000000..c9cebe2 --- /dev/null +++ b/src/main/kotlin/dev/mikka/cortex/help/luckperms/ActualLuckPermsManager.kt @@ -0,0 +1,11 @@ +package dev.mikka.cortex.help.luckperms + +import net.luckperms.api.LuckPerms + +class ActualLuckPermsManager(private val luckPerms: LuckPerms) : LuckPermsManager { + override fun isEnabled(): Boolean = true + + override fun printInstance() { + println("LuckPerms Instance: $luckPerms") + } +} diff --git a/src/main/kotlin/dev/mikka/cortex/help/luckperms/LuckPermsManager.kt b/src/main/kotlin/dev/mikka/cortex/help/luckperms/LuckPermsManager.kt new file mode 100644 index 0000000..d5984a8 --- /dev/null +++ b/src/main/kotlin/dev/mikka/cortex/help/luckperms/LuckPermsManager.kt @@ -0,0 +1,7 @@ +package dev.mikka.cortex.help.luckperms + +interface LuckPermsManager { + fun isEnabled(): Boolean + + fun printInstance() +} diff --git a/src/main/kotlin/dev/mikka/cortex/help/luckperms/NoOpLuckPermsManager.kt b/src/main/kotlin/dev/mikka/cortex/help/luckperms/NoOpLuckPermsManager.kt new file mode 100644 index 0000000..1faa09e --- /dev/null +++ b/src/main/kotlin/dev/mikka/cortex/help/luckperms/NoOpLuckPermsManager.kt @@ -0,0 +1,7 @@ +package dev.mikka.cortex.help.luckperms + +object NoOpLuckPermsManager : LuckPermsManager { + override fun isEnabled(): Boolean = false + + override fun printInstance() {} +} |
