blob: ddfec27cad746b4cc248b5309f1bd61b3299ac54 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
package io.dico.parcels2.blockvisitor
import org.bukkit.block.Block
import org.bukkit.block.BlockState
import org.bukkit.block.Sign
import kotlin.reflect.KClass
interface ExtraBlockChange {
fun update(block: Block)
}
abstract class BlockStateChange<T : BlockState> : ExtraBlockChange {
abstract val stateClass: KClass<T>
abstract fun update(state: T)
override fun update(block: Block) {
val state = block.state
if (stateClass.isInstance(state)) {
@Suppress("UNCHECKED_CAST")
update(state as T)
}
}
}
class SignStateChange(state: Sign) : BlockStateChange<Sign>() {
val lines = state.lines
override val stateClass: KClass<Sign>
get() = Sign::class
override fun update(state: Sign) {
for (i in lines.indices) {
val line = lines[i]
state.setLine(i, line)
}
}
}
|