Depending on NBT-API
This commit is contained in:
@@ -69,6 +69,11 @@
|
||||
<id>placeholderapi</id>
|
||||
<url>https://repo.helpch.at/releases/</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>codemc-repo</id>
|
||||
<url>https://repo.codemc.io/repository/maven-public/</url>
|
||||
<layout>default</layout>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<dependencies>
|
||||
@@ -113,5 +118,12 @@
|
||||
<version>2.12.2</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<!-- NBT-API -->
|
||||
<dependency>
|
||||
<groupId>de.tr7zw</groupId>
|
||||
<artifactId>item-nbt-api-plugin</artifactId>
|
||||
<version>2.15.7</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package xyz.fortern.forternhelper.command
|
||||
|
||||
import de.tr7zw.nbtapi.NBT
|
||||
import de.tr7zw.nbtapi.iface.ReadWriteNBT
|
||||
import net.kyori.adventure.platform.bukkit.BukkitAudiences
|
||||
import net.kyori.adventure.text.Component
|
||||
import net.kyori.adventure.text.format.NamedTextColor
|
||||
@@ -9,6 +11,8 @@ import org.bukkit.command.CommandSender
|
||||
import org.bukkit.command.TabExecutor
|
||||
import org.bukkit.entity.Player
|
||||
import org.bukkit.plugin.java.JavaPlugin
|
||||
import java.io.File
|
||||
import java.io.FileReader
|
||||
|
||||
class HelperCommand(
|
||||
private val plugin: JavaPlugin,
|
||||
@@ -54,8 +58,24 @@ class HelperCommand(
|
||||
}
|
||||
}
|
||||
return when (args[0]) {
|
||||
"help" -> onHelp(sender, exe)
|
||||
"loadlevel" -> onLoadLevel(sender, args, exe)
|
||||
"help" -> {
|
||||
onHelp(sender, exe)
|
||||
}
|
||||
|
||||
"loadlevel" -> {
|
||||
onLoadLevel(sender, args, exe)
|
||||
}
|
||||
|
||||
"setblock" -> {
|
||||
setBlockFromNbt(sender, args, exe)
|
||||
null
|
||||
}
|
||||
|
||||
"getitem" -> {
|
||||
getItemFromNbt(sender, args, exe)
|
||||
null
|
||||
}
|
||||
|
||||
else -> {
|
||||
if (exe) {
|
||||
adventure.sender(sender).sendMessage(Component.text("错误的子命令"))
|
||||
@@ -68,6 +88,54 @@ class HelperCommand(
|
||||
}
|
||||
}
|
||||
|
||||
private fun getItemFromNbt(sender: CommandSender, args: List<String>, exe: Boolean) {
|
||||
// args[0]:getitem | args[1]:0 | args[2]:txt
|
||||
if (!exe) return
|
||||
if (sender !is Player) return
|
||||
if (!sender.isOp) return
|
||||
if (args.size < 2) return
|
||||
val i = args[1]
|
||||
val isNbt = if (args.size > 2) args[2] == "nbt" else false
|
||||
val itemNbtDir = File(plugin.dataFolder, "item-nbt")
|
||||
val nbt = if (isNbt) {
|
||||
val file = File(itemNbtDir, "${i}.nbt")
|
||||
if (!file.exists()) return
|
||||
NBT.readFile(file)
|
||||
} else {
|
||||
val file = File(itemNbtDir, "${i}.txt")
|
||||
if (!file.exists()) return
|
||||
NBT.parseNBT(FileReader(file).readAllAsString())
|
||||
}
|
||||
sender.inventory.addItem(NBT.itemStackFromNBT(nbt))
|
||||
return
|
||||
}
|
||||
|
||||
private fun setBlockFromNbt(sender: CommandSender, args: List<String>, exe: Boolean) {
|
||||
// args[0]:setblock | args[1]:0 | args[2]:txt
|
||||
if (!exe) return
|
||||
if (sender !is Player) return
|
||||
if (!sender.isOp) return
|
||||
if (args.size < 2) return
|
||||
val i = args[1]
|
||||
val isNbt = if (args.size > 2) args[2] == "nbt" else false
|
||||
val world = sender.world
|
||||
val blockState = world.getBlockState(0, 128, 0)
|
||||
val itemNbtDir = File(plugin.dataFolder, "block-nbt")
|
||||
val readWriteNBT = if (isNbt) {
|
||||
val file = File(itemNbtDir, "${i}.nbt")
|
||||
if (!file.exists()) return
|
||||
NBT.readFile(file)
|
||||
} else {
|
||||
val file = File(itemNbtDir, "${i}.txt")
|
||||
if (!file.exists()) return
|
||||
NBT.parseNBT(FileReader(file).readAllAsString())
|
||||
}
|
||||
NBT.modify(blockState) { nbt: ReadWriteNBT ->
|
||||
nbt.mergeCompound(readWriteNBT)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
private fun onHelp(sender: CommandSender, exe: Boolean): List<String>? {
|
||||
if (exe) sendHelp(sender)
|
||||
return null
|
||||
|
||||
@@ -3,7 +3,10 @@ version: '${version}'
|
||||
authors: [ Fortern ]
|
||||
api-version: '26.1'
|
||||
main: xyz.fortern.forternhelper.Helper
|
||||
softdepend: ["PlaceholderAPI"]
|
||||
softdepend:
|
||||
- PlaceholderAPI
|
||||
depend:
|
||||
- NBTAPI
|
||||
|
||||
libraries:
|
||||
- org.jetbrains.kotlin:kotlin-stdlib:2.3.21
|
||||
|
||||
Reference in New Issue
Block a user