restructure things a bit for use in actual gameplay

This commit is contained in:
ruby
2025-01-05 21:23:32 +13:00
parent b2d9c1b36a
commit 57626e4f95
17 changed files with 229 additions and 116 deletions

View File

@ -1,8 +1,50 @@
package com.pobnellion.aoe.building
import com.pobnellion.aoe.Aoe
import com.pobnellion.aoe.entity.goals.EntityWorkTarget
import com.sk89q.worldedit.WorldEdit
import com.sk89q.worldedit.bukkit.BukkitAdapter
import com.sk89q.worldedit.extent.clipboard.Clipboard
import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormats
import com.sk89q.worldedit.function.operation.Operation
import com.sk89q.worldedit.function.operation.Operations
import com.sk89q.worldedit.math.BlockVector3
import com.sk89q.worldedit.session.ClipboardHolder
import org.bukkit.Location
import java.io.File
import java.io.FileInputStream
abstract class Building(val location: Location, val variant: Int) {
abstract class Building(val location: Location, val variant: Int): EntityWorkTarget {
override var currentProgressPercent: Float = 0f
override fun isComplete(): Boolean = currentProgressPercent >= 1.0f
override fun addProgress(amount: Float) {}
override fun setProgress(amount: Float) {}
override fun removeProgress(amount: Float) {}
override fun onComplete() {}
abstract var populationCapacity: Int
abstract fun getSchematicName(variant: Int): String
fun placeFull() {
currentProgressPercent = 1f
var clipboard: Clipboard
val file: File = Aoe.getSchematicFile(getSchematicName(variant))
val format = ClipboardFormats.findByFile(file)
format!!.getReader(FileInputStream(file)).use { reader ->
clipboard = reader.read()
}
val offset = clipboard.region.minimumPoint.subtract(clipboard.origin)
WorldEdit.getInstance().newEditSession(BukkitAdapter.adapt(location.world)).use { editSession ->
val operation: Operation = ClipboardHolder(clipboard)
.createPaste(editSession)
.to(BlockVector3.at(location.x, location.y, location.z).subtract(offset))
.build()
Operations.complete(operation)
}
}
}
interface BuildingInfo {