diff --git a/build.gradle.kts b/build.gradle.kts index 19a4b05b..9160e847 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -12,7 +12,7 @@ plugins { } apply(plugin = "maven-publish") -val versionVar = "0.5.50" +val versionVar = "0.5.51" val groupIdVar = "com.undefined" val artifactIdVar = "api" @@ -90,7 +90,7 @@ dependencies { implementation(project(":common")) implementation(project(":v1_20_4:", "reobf")) implementation(project(":v1_20_5:", "reobf")) - implementation(project(":v1_21:", "reobf")) + implementation(project(":v1_21")) implementation(project(":api")) } diff --git a/common/src/main/java/com/undefined/api/command/BaseUndefinedCommand.kt b/common/src/main/java/com/undefined/api/command/BaseUndefinedCommand.kt index 1be74140..5f238c1b 100644 --- a/common/src/main/java/com/undefined/api/command/BaseUndefinedCommand.kt +++ b/common/src/main/java/com/undefined/api/command/BaseUndefinedCommand.kt @@ -1,10 +1,8 @@ package com.undefined.api.command import com.undefined.api.command.info.AllCommand -import com.undefined.api.command.info.NumberSubCommandInfo -import com.undefined.api.command.info.StringSubCommandInfo import com.undefined.api.command.sub.* -import org.bukkit.Material +import com.undefined.api.command.sub.ListSubCommand import org.bukkit.command.CommandSender import org.bukkit.command.ConsoleCommandSender import org.bukkit.entity.Player @@ -91,6 +89,12 @@ abstract class BaseUndefinedCommand { return subCommand } + fun addListSubCommand(list: List): ListSubCommand { + val subCommand = ListSubCommand(list) + subCommandList.add(subCommand) + return subCommand + } + fun clearExecute() = genExecute.clear() @@ -102,7 +106,8 @@ abstract class BaseUndefinedCommand { EnumSubCommand::class.java, StringSubCommand::class.java, NumberSubCommand::class.java, - BooleanSubCommand::class.java + BooleanSubCommand::class.java, + ListSubCommand::class.java ) internal fun getSubCommand(name: String): UndefinedSubCommand? = subCommandList.filter { it.name == name }.getOrNull(0) ?: subCommandList.filter { list.contains(it::class.java) }.getOrNull(0) diff --git a/common/src/main/java/com/undefined/api/command/sub/ListSubCommand.kt b/common/src/main/java/com/undefined/api/command/sub/ListSubCommand.kt new file mode 100644 index 00000000..6eb58366 --- /dev/null +++ b/common/src/main/java/com/undefined/api/command/sub/ListSubCommand.kt @@ -0,0 +1,32 @@ +package com.undefined.api.command.sub + +import org.bukkit.command.CommandSender +import java.util.UUID + +class ListSubCommand (val subList: List): UndefinedSubCommand("undefined_api_list") { + + private val listExe: MutableList Boolean> = mutableListOf() + + fun addListExecute(c: T.() -> Boolean): ListSubCommand { + listExe.add(c) + return this + } + + override fun getNames(): List = subList.map { it.toString() } + + override fun runSpecialExecute(arg: Array, commandSender: CommandSender, indexOf: Int): Boolean { + if (arg.isEmpty()) return false + val stringValue = arg[indexOf] + + try { + val value = stringValue as T + listExe.forEach { execution -> if (!execution.invoke(value)) return false } + }catch (e: Exception) { + try { + val uuid = UUID.fromString(stringValue) + listExe.forEach { execution -> if (!execution.invoke(uuid as T)) return false } + } catch (e : Exception) { } + } + return true + } +} \ No newline at end of file diff --git a/common/src/main/java/com/undefined/api/nms/NMSManager.kt b/common/src/main/java/com/undefined/api/nms/NMSManager.kt index 84290f39..e5972978 100644 --- a/common/src/main/java/com/undefined/api/nms/NMSManager.kt +++ b/common/src/main/java/com/undefined/api/nms/NMSManager.kt @@ -9,6 +9,7 @@ class NMSManager { when(getNMSVersion()){ "1.20.4" -> com.undefined.api.nms.v1_20_4.event.PacketListenerManager() "1.20.5", "1.20.6" -> com.undefined.api.nms.v1_20_5.event.PacketListenerManager() + "1.21" -> com.undefined.api.nms.v1_21.event.PacketListenerManager() else ->{} } } diff --git a/server/build.gradle.kts b/server/build.gradle.kts index fa4733cf..1be5d7f0 100644 --- a/server/build.gradle.kts +++ b/server/build.gradle.kts @@ -22,7 +22,7 @@ dependencies { implementation(project(":api")) implementation(project(":v1_20_4:", "reobf")) implementation(project(":v1_20_5:", "reobf")) - implementation(project(":v1_21:", "reobf")) + implementation(project(":v1_21")) compileOnly(project(":v1_20_4")) } @@ -43,7 +43,7 @@ tasks { } runServer { - minecraftVersion("1.20.4") + minecraftVersion("1.21") } } diff --git a/server/src/main/java/com/undefined/api/Main.kt b/server/src/main/java/com/undefined/api/Main.kt index 2f86ce68..4d3cb907 100644 --- a/server/src/main/java/com/undefined/api/Main.kt +++ b/server/src/main/java/com/undefined/api/Main.kt @@ -1,5 +1,6 @@ package com.undefined.api +import com.undefined.api.command.UndefinedCommand import com.undefined.api.event.event import com.undefined.api.extension.glow import com.undefined.api.nms.ItemSlot @@ -13,6 +14,7 @@ import org.bukkit.entity.EntityType import org.bukkit.event.player.PlayerJoinEvent import org.bukkit.inventory.ItemStack import org.bukkit.plugin.java.JavaPlugin +import java.util.UUID class Main: JavaPlugin() { @@ -21,17 +23,19 @@ class Main: JavaPlugin() { override fun onEnable() { api = UndefinedAPI(this) - event { - - val b = api.createFakeEntity(EntityType.BLOCK_DISPLAY, Material.STONE.createBlockData())!! as NMSBlockDisplayEntity - - b.addViewer(player) - - b.spawn(player.location) - + val list: MutableList = mutableListOf() + for (i in 0..10) { + list.add(UUID.randomUUID()) } + UndefinedCommand("test") + .addListSubCommand(list) + .addListExecute { + println(this) + return@addListExecute true + } + } fun test(){ diff --git a/v1_21/build.gradle.kts b/v1_21/build.gradle.kts index fee8f789..12f5a73f 100644 --- a/v1_21/build.gradle.kts +++ b/v1_21/build.gradle.kts @@ -1,13 +1,11 @@ plugins{ kotlin("jvm") version "1.9.22" - id("io.papermc.paperweight.userdev") version "1.7.1" + id("com.undefinedcreation.mapper") version "0.0.3" } -paperweight.reobfArtifactConfiguration = io.papermc.paperweight.userdev.ReobfArtifactConfiguration.REOBF_PRODUCTION - dependencies { - paperweight.paperDevBundle("1.21-R0.1-SNAPSHOT") + compileOnly("org.spigotmc:spigot:1.21-R0.1-SNAPSHOT:remapped-mojang") compileOnly(project(":api")) } @@ -18,6 +16,10 @@ tasks { kotlinOptions.jvmTarget = "21" } + remap { + mcVersion.set("1.21") + } + } java { diff --git a/v1_21/src/main/java/com/undefined/api/nms/v1_21/entity/NMSEntity.kt b/v1_21/src/main/java/com/undefined/api/nms/v1_21/entity/NMSEntity.kt index a33cf49f..90b976dd 100644 --- a/v1_21/src/main/java/com/undefined/api/nms/v1_21/entity/NMSEntity.kt +++ b/v1_21/src/main/java/com/undefined/api/nms/v1_21/entity/NMSEntity.kt @@ -17,9 +17,9 @@ import net.minecraft.world.scores.Scoreboard import net.minecraft.world.scores.Team import org.bukkit.ChatColor import org.bukkit.Location -import org.bukkit.craftbukkit.CraftWorld -import org.bukkit.craftbukkit.entity.CraftEntityType -import org.bukkit.craftbukkit.util.CraftChatMessage +import org.bukkit.craftbukkit.v1_21_R1.CraftWorld +import org.bukkit.craftbukkit.v1_21_R1.entity.CraftEntityType +import org.bukkit.craftbukkit.v1_21_R1.util.CraftChatMessage import org.bukkit.entity.EntityType import org.bukkit.entity.Player import java.util.* diff --git a/v1_21/src/main/java/com/undefined/api/nms/v1_21/entity/entityClass/NMSItemEntity.kt b/v1_21/src/main/java/com/undefined/api/nms/v1_21/entity/entityClass/NMSItemEntity.kt index 1434d6e1..eddac9e0 100644 --- a/v1_21/src/main/java/com/undefined/api/nms/v1_21/entity/entityClass/NMSItemEntity.kt +++ b/v1_21/src/main/java/com/undefined/api/nms/v1_21/entity/entityClass/NMSItemEntity.kt @@ -1,17 +1,14 @@ package com.undefined.api.nms.v1_21.entity.entityClass import com.undefined.api.nms.extensions.getPrivateField -import com.undefined.api.nms.interfaces.NMSItemEntity import com.undefined.api.nms.v1_21.SpigotNMSMappings import com.undefined.api.nms.v1_21.entity.NMSEntity import net.minecraft.network.syncher.EntityDataAccessor -import net.minecraft.network.syncher.EntityDataSerializers -import net.minecraft.network.syncher.SynchedEntityData import net.minecraft.world.entity.Entity import net.minecraft.world.entity.item.ItemEntity import net.minecraft.world.level.Level import org.bukkit.Location -import org.bukkit.craftbukkit.inventory.CraftItemStack +import org.bukkit.craftbukkit.v1_21_R1.inventory.CraftItemStack import org.bukkit.entity.EntityType import org.bukkit.inventory.ItemStack diff --git a/v1_21/src/main/java/com/undefined/api/nms/v1_21/entity/entityClass/display/NMSBlockDisplayEntity.kt b/v1_21/src/main/java/com/undefined/api/nms/v1_21/entity/entityClass/display/NMSBlockDisplayEntity.kt index c7263ea6..bcd083e5 100644 --- a/v1_21/src/main/java/com/undefined/api/nms/v1_21/entity/entityClass/display/NMSBlockDisplayEntity.kt +++ b/v1_21/src/main/java/com/undefined/api/nms/v1_21/entity/entityClass/display/NMSBlockDisplayEntity.kt @@ -6,7 +6,7 @@ import net.minecraft.world.entity.Entity import net.minecraft.world.level.Level import org.bukkit.Location import org.bukkit.block.data.BlockData -import org.bukkit.craftbukkit.block.data.CraftBlockData +import org.bukkit.craftbukkit.v1_21_R1.block.data.CraftBlockData import org.bukkit.entity.EntityType class NMSBlockDisplayEntity(block: BlockData): NMSDisplayEntity(EntityType.BLOCK_DISPLAY), NMSBlockDisplayEntity { diff --git a/v1_21/src/main/java/com/undefined/api/nms/v1_21/event/PacketListenerManager.kt b/v1_21/src/main/java/com/undefined/api/nms/v1_21/event/PacketListenerManager.kt index f7769811..c9d5d1c5 100644 --- a/v1_21/src/main/java/com/undefined/api/nms/v1_21/event/PacketListenerManager.kt +++ b/v1_21/src/main/java/com/undefined/api/nms/v1_21/event/PacketListenerManager.kt @@ -14,9 +14,14 @@ import net.minecraft.network.protocol.Packet import net.minecraft.network.protocol.game.* import net.minecraft.world.InteractionHand import org.bukkit.Bukkit -import org.bukkit.craftbukkit.CraftWorld -import org.bukkit.craftbukkit.entity.CraftPlayer +import org.bukkit.craftbukkit.v1_21_R1.CraftWorld +import org.bukkit.craftbukkit.v1_21_R1.entity.CraftItem +import org.bukkit.craftbukkit.v1_21_R1.entity.CraftPlayer +import org.bukkit.craftbukkit.v1_21_R1.inventory.CraftItemStack import org.bukkit.entity.Player +import org.bukkit.event.inventory.InventoryClickEvent +import org.bukkit.event.player.PlayerDropItemEvent +import org.bukkit.event.player.PlayerInteractEvent import org.bukkit.event.player.PlayerJoinEvent import org.bukkit.event.player.PlayerQuitEvent import org.bukkit.inventory.EquipmentSlot @@ -42,6 +47,7 @@ class PacketListenerManager { event { + if (player.fireTicks > 0) { onFire.add(player.uniqueId) } @@ -120,7 +126,7 @@ class PacketListenerManager { val itemStack = msg.getItemStack() com.undefined.api.scheduler.sync { - Bukkit.getPluginManager().callEvent(PlayerArmorChangeEvent(player, itemStack.bukkitStack, bukkitSlot)) + Bukkit.getPluginManager().callEvent(PlayerArmorChangeEvent(player, CraftItemStack.asBukkitCopy(itemStack), bukkitSlot)) } } @@ -195,6 +201,7 @@ class PacketListenerManager { val actionN = msg.getAction() val firstChar = actionN.toString().split("$")[1][0] + if(isRemapped()){ if (actionN.toString().contains("InteractionAction")) { return } }else{ @@ -203,6 +210,8 @@ class PacketListenerManager { val attacking = msg.isAttacking() + + if (!attacking){ if (!msg.isMainHand()) return } diff --git a/v1_21/src/main/java/com/undefined/api/nms/v1_21/extensions/BlockExtension.kt b/v1_21/src/main/java/com/undefined/api/nms/v1_21/extensions/BlockExtension.kt index 1085983d..f50f1a68 100644 --- a/v1_21/src/main/java/com/undefined/api/nms/v1_21/extensions/BlockExtension.kt +++ b/v1_21/src/main/java/com/undefined/api/nms/v1_21/extensions/BlockExtension.kt @@ -2,11 +2,7 @@ package com.undefined.api.nms.v1_21.extensions import net.minecraft.core.BlockPos import net.minecraft.network.protocol.game.ClientboundBlockDestructionPacket -import net.minecraft.world.entity.EntityType -import net.minecraft.world.entity.monster.Slime -import org.bukkit.ChatColor import org.bukkit.block.Block -import org.bukkit.craftbukkit.CraftWorld import org.bukkit.entity.Player object BlockExtension { diff --git a/v1_21/src/main/java/com/undefined/api/nms/v1_21/extensions/PlayerExtension.kt b/v1_21/src/main/java/com/undefined/api/nms/v1_21/extensions/PlayerExtension.kt index 31bdf7e7..18188a69 100644 --- a/v1_21/src/main/java/com/undefined/api/nms/v1_21/extensions/PlayerExtension.kt +++ b/v1_21/src/main/java/com/undefined/api/nms/v1_21/extensions/PlayerExtension.kt @@ -3,7 +3,7 @@ package com.undefined.api.nms.v1_21.extensions import net.minecraft.network.protocol.Packet import net.minecraft.network.protocol.game.ServerboundSwingPacket import net.minecraft.server.network.ServerGamePacketListenerImpl -import org.bukkit.craftbukkit.entity.CraftPlayer +import org.bukkit.craftbukkit.v1_21_R1.entity.CraftPlayer import org.bukkit.entity.Player /** diff --git a/v1_21/src/main/java/com/undefined/api/nms/v1_21/extensions/ServerboundInteractPacketExtension.kt b/v1_21/src/main/java/com/undefined/api/nms/v1_21/extensions/ServerboundInteractPacketExtension.kt index d1b9188e..d745f6eb 100644 --- a/v1_21/src/main/java/com/undefined/api/nms/v1_21/extensions/ServerboundInteractPacketExtension.kt +++ b/v1_21/src/main/java/com/undefined/api/nms/v1_21/extensions/ServerboundInteractPacketExtension.kt @@ -18,7 +18,7 @@ fun ServerboundInteractPacket.getEntityID() = getPrivateField(SpigotNMSMapp */ fun ServerboundInteractPacket.isAttacking(): Boolean { val firstChar = getActionFirstChar() - return if(isRemapped()) this.isAttack else firstChar == '1' + return firstChar[0] == '1' } /** @@ -45,4 +45,4 @@ fun ServerboundInteractPacket.isMainHand(): Boolean { * * @return The first character of the action identifier. */ -fun ServerboundInteractPacket.getActionFirstChar(): Char = getAction().toString().split("$")[1][0] \ No newline at end of file +fun ServerboundInteractPacket.getActionFirstChar(): String = getAction().toString().split("$")[1] \ No newline at end of file diff --git a/v1_21/src/main/java/com/undefined/api/nms/v1_21/npc/NMSPlayer.kt b/v1_21/src/main/java/com/undefined/api/nms/v1_21/npc/NMSPlayer.kt index 4e4237bd..1f27332c 100644 --- a/v1_21/src/main/java/com/undefined/api/nms/v1_21/npc/NMSPlayer.kt +++ b/v1_21/src/main/java/com/undefined/api/nms/v1_21/npc/NMSPlayer.kt @@ -3,16 +3,13 @@ package com.undefined.api.nms.v1_21.npc import com.mojang.authlib.GameProfile import com.mojang.authlib.properties.Property import com.mojang.datafixers.util.Pair -import com.undefined.api.nms.v1_21.NMSManager -import com.undefined.api.nms.v1_21.SpigotNMSMappings -import com.undefined.api.nms.v1_21.extensions.getConnection import com.undefined.api.nms.* import com.undefined.api.nms.interfaces.NMSPlayer +import com.undefined.api.nms.v1_21.NMSManager +import com.undefined.api.nms.v1_21.SpigotNMSMappings import com.undefined.api.nms.v1_21.entity.NMSLivingEntity +import com.undefined.api.nms.v1_21.extensions.getConnection import com.undefined.api.nms.v1_21.extensions.sendPacket -import com.undefined.api.scheduler.delay -import net.minecraft.core.HolderLookup -import net.minecraft.network.chat.Component import net.minecraft.network.protocol.game.* import net.minecraft.network.syncher.EntityDataAccessor import net.minecraft.network.syncher.EntityDataSerializers @@ -22,15 +19,14 @@ import net.minecraft.server.level.ServerEntity import net.minecraft.server.level.ServerPlayer import net.minecraft.server.network.CommonListenerCookie import net.minecraft.server.network.ServerGamePacketListenerImpl -import net.minecraft.server.network.ServerPlayerConnection import net.minecraft.world.entity.EquipmentSlot import net.minecraft.world.entity.LivingEntity import org.bukkit.Bukkit import org.bukkit.Location import org.bukkit.Material -import org.bukkit.craftbukkit.CraftServer -import org.bukkit.craftbukkit.CraftWorld -import org.bukkit.craftbukkit.inventory.CraftItemStack +import org.bukkit.craftbukkit.v1_21_R1.CraftServer +import org.bukkit.craftbukkit.v1_21_R1.CraftWorld +import org.bukkit.craftbukkit.v1_21_R1.inventory.CraftItemStack import org.bukkit.entity.EntityType import org.bukkit.entity.Player import org.bukkit.inventory.ItemStack