Created
March 13, 2016 23:23
-
-
Save thinca/ad8b1b78a6eb752a85b5 to your computer and use it in GitHub Desktop.
kikori mod for Spigot by Kotlin
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.github.gist.thinca.spigot.plugin.kikori | |
import org.bukkit.Material | |
import org.bukkit.block.Block | |
import org.bukkit.entity.Player | |
import org.bukkit.event.EventHandler | |
import org.bukkit.event.Listener | |
import org.bukkit.event.block.BlockBreakEvent | |
import org.bukkit.plugin.java.JavaPlugin | |
class Kikori : JavaPlugin() { | |
override fun onEnable() { | |
getServer().getPluginManager().registerEvents( | |
object : Listener { | |
fun isLog(block: Block) = when (block.getType()) { | |
Material.LOG, Material.LOG_2 -> true | |
else -> false | |
} | |
fun breakBlock(block: Block, player: Player) { | |
getServer().getScheduler().scheduleSyncDelayedTask( | |
this@Kikori, | |
object : Runnable { | |
override fun run() { | |
if (player.isValid() && isLog(block)) { | |
val newEvent = BlockBreakEvent(block, player) | |
getServer().getPluginManager().callEvent(newEvent) | |
block.breakNaturally() | |
} | |
} | |
}, | |
10 | |
) | |
} | |
@EventHandler | |
fun onBlockBreak(event: BlockBreakEvent) { | |
val woodlog = event.getBlock() | |
if (!isLog(woodlog)) { | |
return | |
} | |
val player = event.getPlayer() | |
for (modY in 0..1) { | |
for (modX in -1..1) { | |
for (modZ in -1..1) { | |
val block = woodlog.getRelative(modX, modY, modZ) | |
breakBlock(block, player) | |
} | |
} | |
} | |
} | |
}, | |
this | |
) | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: kikori | |
main: com.github.gist.thinca.spigot.plugin.kikori.Kikori | |
version: 1.0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
scheduleSyncDelayedTask
の部分の Runnable は SAM 変換で渡すことが出来るかもしれません。あと Java 側の getter/setter は定義にも依りますが kotlin 側からプロパティ的に参照出来る場合があります。
普段 IDE 補完に頼りきりの軟弱なのでミスってたらすいません。