diff --git a/src/main/kotlin/net/axay/kspigot/structures/Structure.kt b/src/main/kotlin/net/axay/kspigot/structures/Structure.kt new file mode 100644 index 00000000..8c8f39a7 --- /dev/null +++ b/src/main/kotlin/net/axay/kspigot/structures/Structure.kt @@ -0,0 +1,56 @@ +package net.axay.kspigot.structures + +import net.axay.kspigot.annotations.NMS_General +import net.axay.kspigot.data.NBTData +import net.axay.kspigot.data.nbtData +import net.axay.kspigot.extensions.bukkit.spawnCleanEntity +import org.bukkit.Location +import org.bukkit.Material +import org.bukkit.block.Block +import org.bukkit.block.data.BlockData +import org.bukkit.entity.Entity +import org.bukkit.entity.EntityType + +interface StructureData { + fun createAt(loc: Location) +} + +data class StructureDataBlock( + val material: Material, + val blockData: BlockData +) : StructureData { + + constructor(block: Block) : this(block.type, block.blockData) + + override fun createAt(loc: Location) { + loc.block.let { + it.type = material + it.blockData = blockData + } + } + +} + +@NMS_General +data class StructureDataEntity( + val entityType: EntityType, + val nbtData: NBTData +) : StructureData { + + constructor(entity: Entity) : this(entity.type, entity.nbtData) + + override fun createAt(loc: Location) { + loc.spawnCleanEntity(entityType)?.nbtData = nbtData + } + +} + +class SingleStructureData( + val location: Location, + val structureData: StructureData +) + +data class Structure( + val blocks: Set = emptySet(), + val entities: Set = emptySet() +) \ No newline at end of file