get building placing working properly

This commit is contained in:
ruby
2025-01-05 18:19:17 +13:00
parent 3875ca5d0a
commit b2d9c1b36a
8 changed files with 31 additions and 18 deletions

View File

@ -1,10 +1,7 @@
package com.pobnellion.aoe.building
import com.pobnellion.aoe.ui.PlaceHint
import com.pobnellion.aoe.ui.PlaceHintValidators
import org.bukkit.Location
import org.bukkit.Material
import org.bukkit.entity.Player
class Blacksmith(location: Location, variant: Int): Building(location, variant) {
fun place(location: Location, sizeX: Float, sizeY: Float, sizeZ: Float, offsetY: Int) {

View File

@ -3,13 +3,14 @@ package com.pobnellion.aoe.building
import com.pobnellion.aoe.Aoe
import com.pobnellion.aoe.ui.PlaceHintValidators
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 com.sk89q.worldedit.world.World
import org.bukkit.Bukkit
import org.bukkit.Location
import java.io.File
import java.io.FileInputStream
@ -17,8 +18,8 @@ import java.io.FileInputStream
class TownCenter(location: Location, variant: Int): Building(location, variant) {
companion object Info: BuildingInfo {
override val buildingType: BuildingType = BuildingType.TOWN_CENTER
override val schematicNames: List<String> = listOf("plains_towncenter")
override val buildingType = BuildingType.TOWN_CENTER
override val schematicNames = listOf("plains_towncenter")
override fun validate(location: Location): Boolean {
return PlaceHintValidators.allReplaceable(location, 10f, 10f, 10f, -2)
@ -38,12 +39,12 @@ class TownCenter(location: Location, variant: Int): Building(location, variant)
clipboard = reader.read()
}
clipboard.origin = BlockVector3.ZERO
val offset = clipboard.region.minimumPoint.subtract(clipboard.origin)
WorldEdit.getInstance().newEditSession(location.world as World).use { editSession ->
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)) // configure here
.to(BlockVector3.at(location.x, location.y, location.z).subtract(offset)) // configure here
.build()
Operations.complete(operation)
}

View File

@ -7,7 +7,7 @@ import com.pobnellion.aoe.building.TownCenter
import org.bukkit.entity.Player
class Plains(players: List<Player>) : Team(players) {
override val name: String = "Plains"
override fun name(): String = "Plains"
override fun getBuildingInfo(type: BuildingType): BuildingInfo {
return when (type) {

View File

@ -12,11 +12,11 @@ abstract class Team(val players: List<Player>) {
private val buildings: MutableList<Building> = mutableListOf()
init {
players.forEach { player -> player.sendMessage("Joined team $name") }
players.forEach { player -> player.sendMessage("Joined team ${name()}") }
}
protected abstract fun getBuildingInfo(type: BuildingType): BuildingInfo
protected abstract val name: String
protected abstract fun name(): String
fun addBuilding(location: Location, building: BuildingInfo, variant: Int) {
buildings.add(building.create(location, variant))

View File

@ -10,7 +10,6 @@ import org.bukkit.Location
import org.bukkit.entity.Player
import org.bukkit.util.Vector
import org.joml.Vector3f
import java.io.File
import java.io.FileInputStream
import kotlin.math.floor
@ -50,8 +49,7 @@ class BuildingPlaceHint(
this.offset = Vector(
-floor(clipboard.dimensions.x() / 2.0),
// clipboard.minY.toDouble(),
0.0,
clipboard.minY.toDouble() + 1,
-floor(clipboard.dimensions.z() / 2.0))
}

View File

@ -6,7 +6,6 @@ import com.comphenix.protocol.events.PacketContainer
import com.comphenix.protocol.wrappers.*
import com.comphenix.protocol.wrappers.WrappedDataWatcher.Registry
import com.destroystokyo.paper.MaterialSetTag
import org.bukkit.Bukkit
import org.bukkit.Location
import org.bukkit.block.data.BlockData
import org.bukkit.entity.EntityType