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

3
.gitignore vendored
View File

@ -117,3 +117,6 @@ runs/
# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) # Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
!gradle-wrapper.jar !gradle-wrapper.jar
# Ignore gradle.properties cos its got sensitive info
gradle.properties

View File

@ -1,8 +1,10 @@
import de.nilsdruyen.gradle.ftp.UploadExtension
plugins { plugins {
kotlin("jvm") version "2.1.20-Beta1" kotlin("jvm") version "2.1.20-Beta1"
id("com.github.johnrengelman.shadow") version "8.1.1" id("com.gradleup.shadow") version "8.3.5"
id("io.papermc.paperweight.userdev") version "2.0.0-beta.11" id("io.papermc.paperweight.userdev") version "2.0.0-beta.11"
// id("de.nilsdruyen.gradle-ftp-upload-plugin") version "0.5.0" id("de.nilsdruyen.gradle-ftp-upload-plugin") version "0.5.0"
} }
group = "com.pobnellion" group = "com.pobnellion"
@ -64,3 +66,16 @@ tasks.shadowJar {
} }
} }
configure<UploadExtension> {
host = properties.getOrDefault("ftp.host", "").toString()
port = properties.getOrDefault("ftp.port", 22).toString().toInt()
username = properties.getOrDefault("ftp.username", "").toString()
password = properties.getOrDefault("ftp.password", "").toString()
sourceDir = "${layout.buildDirectory.get()}/libs"
targetDir = "/plugins/"
clearDirectoryBeforeUpload = false
}
tasks.uploadFilesToFtp {
dependsOn("shadowJar")
}

View File

@ -1,10 +1,7 @@
package com.pobnellion.aoe.building package com.pobnellion.aoe.building
import com.pobnellion.aoe.ui.PlaceHint
import com.pobnellion.aoe.ui.PlaceHintValidators
import org.bukkit.Location import org.bukkit.Location
import org.bukkit.Material import org.bukkit.Material
import org.bukkit.entity.Player
class Blacksmith(location: Location, variant: Int): Building(location, variant) { class Blacksmith(location: Location, variant: Int): Building(location, variant) {
fun place(location: Location, sizeX: Float, sizeY: Float, sizeZ: Float, offsetY: Int) { 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.Aoe
import com.pobnellion.aoe.ui.PlaceHintValidators import com.pobnellion.aoe.ui.PlaceHintValidators
import com.sk89q.worldedit.WorldEdit import com.sk89q.worldedit.WorldEdit
import com.sk89q.worldedit.bukkit.BukkitAdapter
import com.sk89q.worldedit.extent.clipboard.Clipboard import com.sk89q.worldedit.extent.clipboard.Clipboard
import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormats import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormats
import com.sk89q.worldedit.function.operation.Operation import com.sk89q.worldedit.function.operation.Operation
import com.sk89q.worldedit.function.operation.Operations import com.sk89q.worldedit.function.operation.Operations
import com.sk89q.worldedit.math.BlockVector3 import com.sk89q.worldedit.math.BlockVector3
import com.sk89q.worldedit.session.ClipboardHolder import com.sk89q.worldedit.session.ClipboardHolder
import com.sk89q.worldedit.world.World import org.bukkit.Bukkit
import org.bukkit.Location import org.bukkit.Location
import java.io.File import java.io.File
import java.io.FileInputStream import java.io.FileInputStream
@ -17,8 +18,8 @@ import java.io.FileInputStream
class TownCenter(location: Location, variant: Int): Building(location, variant) { class TownCenter(location: Location, variant: Int): Building(location, variant) {
companion object Info: BuildingInfo { companion object Info: BuildingInfo {
override val buildingType: BuildingType = BuildingType.TOWN_CENTER override val buildingType = BuildingType.TOWN_CENTER
override val schematicNames: List<String> = listOf("plains_towncenter") override val schematicNames = listOf("plains_towncenter")
override fun validate(location: Location): Boolean { override fun validate(location: Location): Boolean {
return PlaceHintValidators.allReplaceable(location, 10f, 10f, 10f, -2) 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 = 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) val operation: Operation = ClipboardHolder(clipboard)
.createPaste(editSession) .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() .build()
Operations.complete(operation) Operations.complete(operation)
} }

View File

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

View File

@ -12,11 +12,11 @@ abstract class Team(val players: List<Player>) {
private val buildings: MutableList<Building> = mutableListOf() private val buildings: MutableList<Building> = mutableListOf()
init { 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 fun getBuildingInfo(type: BuildingType): BuildingInfo
protected abstract val name: String protected abstract fun name(): String
fun addBuilding(location: Location, building: BuildingInfo, variant: Int) { fun addBuilding(location: Location, building: BuildingInfo, variant: Int) {
buildings.add(building.create(location, variant)) buildings.add(building.create(location, variant))

View File

@ -10,7 +10,6 @@ import org.bukkit.Location
import org.bukkit.entity.Player import org.bukkit.entity.Player
import org.bukkit.util.Vector import org.bukkit.util.Vector
import org.joml.Vector3f import org.joml.Vector3f
import java.io.File
import java.io.FileInputStream import java.io.FileInputStream
import kotlin.math.floor import kotlin.math.floor
@ -50,8 +49,7 @@ class BuildingPlaceHint(
this.offset = Vector( this.offset = Vector(
-floor(clipboard.dimensions.x() / 2.0), -floor(clipboard.dimensions.x() / 2.0),
// clipboard.minY.toDouble(), clipboard.minY.toDouble() + 1,
0.0,
-floor(clipboard.dimensions.z() / 2.0)) -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.*
import com.comphenix.protocol.wrappers.WrappedDataWatcher.Registry import com.comphenix.protocol.wrappers.WrappedDataWatcher.Registry
import com.destroystokyo.paper.MaterialSetTag import com.destroystokyo.paper.MaterialSetTag
import org.bukkit.Bukkit
import org.bukkit.Location import org.bukkit.Location
import org.bukkit.block.data.BlockData import org.bukkit.block.data.BlockData
import org.bukkit.entity.EntityType import org.bukkit.entity.EntityType