Skip to content

Commit

Permalink
Added 1.21 spigot nms
Browse files Browse the repository at this point in the history
Added SubListCommand
  • Loading branch information
TheRedMagic committed Jul 4, 2024
1 parent b197268 commit 477c53f
Show file tree
Hide file tree
Showing 15 changed files with 90 additions and 48 deletions.
4 changes: 2 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -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"

Expand Down Expand Up @@ -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"))
}

Expand Down
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -91,6 +89,12 @@ abstract class BaseUndefinedCommand {
return subCommand
}

fun <T> addListSubCommand(list: List<T>): ListSubCommand<T> {
val subCommand = ListSubCommand(list)
subCommandList.add(subCommand)
return subCommand
}



fun clearExecute() = genExecute.clear()
Expand All @@ -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)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.undefined.api.command.sub

import org.bukkit.command.CommandSender
import java.util.UUID

class ListSubCommand<T> (val subList: List<T>): UndefinedSubCommand("undefined_api_list") {

private val listExe: MutableList<T.() -> Boolean> = mutableListOf()

fun addListExecute(c: T.() -> Boolean): ListSubCommand<T> {
listExe.add(c)
return this
}

override fun getNames(): List<String> = subList.map { it.toString() }

override fun runSpecialExecute(arg: Array<out String>, 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
}
}
1 change: 1 addition & 0 deletions common/src/main/java/com/undefined/api/nms/NMSManager.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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 ->{}
}
}
Expand Down
4 changes: 2 additions & 2 deletions server/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -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"))
}

Expand All @@ -43,7 +43,7 @@ tasks {
}

runServer {
minecraftVersion("1.20.4")
minecraftVersion("1.21")
}

}
Expand Down
20 changes: 12 additions & 8 deletions server/src/main/java/com/undefined/api/Main.kt
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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() {

Expand All @@ -21,17 +23,19 @@ class Main: JavaPlugin() {
override fun onEnable() {
api = UndefinedAPI(this)

event<PlayerJoinEvent> {

val b = api.createFakeEntity(EntityType.BLOCK_DISPLAY, Material.STONE.createBlockData())!! as NMSBlockDisplayEntity

b.addViewer(player)

b.spawn(player.location)

val list: MutableList<UUID> = mutableListOf()

for (i in 0..10) {
list.add(UUID.randomUUID())
}

UndefinedCommand("test")
.addListSubCommand(list)
.addListExecute {
println(this)
return@addListExecute true
}

}

fun test(){
Expand Down
10 changes: 6 additions & 4 deletions v1_21/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -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"))
}
Expand All @@ -18,6 +16,10 @@ tasks {
kotlinOptions.jvmTarget = "21"
}

remap {
mcVersion.set("1.21")
}

}

java {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.*
Expand Down
Original file line number Diff line number Diff line change
@@ -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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -42,6 +47,7 @@ class PacketListenerManager {

event<PlayerJoinEvent> {


if (player.fireTicks > 0) {
onFire.add(player.uniqueId)
}
Expand Down Expand Up @@ -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))
}

}
Expand Down Expand Up @@ -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{
Expand All @@ -203,6 +210,8 @@ class PacketListenerManager {

val attacking = msg.isAttacking()



if (!attacking){
if (!msg.isMainHand()) return
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ fun ServerboundInteractPacket.getEntityID() = getPrivateField<Int>(SpigotNMSMapp
*/
fun ServerboundInteractPacket.isAttacking(): Boolean {
val firstChar = getActionFirstChar()
return if(isRemapped()) this.isAttack else firstChar == '1'
return firstChar[0] == '1'
}

/**
Expand All @@ -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]
fun ServerboundInteractPacket.getActionFirstChar(): String = getAction().toString().split("$")[1]
16 changes: 6 additions & 10 deletions v1_21/src/main/java/com/undefined/api/nms/v1_21/npc/NMSPlayer.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down

0 comments on commit 477c53f

Please sign in to comment.