DTweaks/src/main/kotlin/nl/kallestruik/dtweaks/tweaks/miscellaneoustweaks/FakePlayers.kt

46 lines
No EOL
1.6 KiB
Kotlin

package nl.kallestruik.dtweaks.tweaks.miscellaneoustweaks
import nl.kallestruik.dtweaks.DTweaks
import nl.kallestruik.dtweaks.fakeplayer.FakePlayer
import nl.kallestruik.dtweaks.managers.FakePlayerManager
import nl.kallestruik.dtweaks.tweaks.ITweak
import org.bukkit.craftbukkit.v1_20_R1.entity.CraftPlayer
import org.bukkit.entity.Player
import org.bukkit.event.EventHandler
import org.bukkit.event.HandlerList
import org.bukkit.event.Listener
import org.bukkit.event.player.PlayerInteractEntityEvent
import org.bukkit.inventory.EquipmentSlot
class FakePlayers(
private val fakePlayerManager: FakePlayerManager,
private val plugin: DTweaks
): ITweak, Listener {
override fun getIdentifier(): String = "FakePlayers"
override fun getCategories(): List<String> = listOf("players")
override fun onEnable() {
plugin.server.pluginManager.registerEvents(this, plugin)
}
override fun onDisable() {
HandlerList.unregisterAll(this)
fakePlayerManager.killAllFakePlayers()
}
@EventHandler
fun onRightClickEntity(event: PlayerInteractEntityEvent) {
if (event.hand != EquipmentSlot.HAND) return
val fakePlayer = event.rightClicked as? Player ?: return
if ((fakePlayer as CraftPlayer).handle !is FakePlayer) return
val playerItem = event.player.inventory.itemInMainHand.clone()
val fakePlayerItem = fakePlayer.inventory.itemInMainHand.clone()
event.player.inventory.setItemInMainHand(fakePlayerItem)
fakePlayer.inventory.setItemInMainHand(playerItem)
fakePlayer.handle.tick()
}
}