Skip to content

Commit 91acfda

Browse files
committed
Merge branch 'version/1.21' into version/1.21.6
# Conflicts: # gradle.properties # gradle/libs.versions.toml # surf-api-bukkit/surf-api-bukkit-api/api/surf-api-bukkit-api.api # surf-api-core/surf-api-core-api/api/surf-api-core-api.api # surf-api-velocity/surf-api-velocity-api/api/surf-api-velocity-api.api
2 parents 4962053 + a5aa804 commit 91acfda

17 files changed

Lines changed: 1939 additions & 541 deletions

File tree

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@ org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled
77
javaVersion=21
88
mcVersion=1.21.6
99
group=dev.slne.surf
10-
version=1.21.6-2.16.0-SNAPSHOT
10+
version=1.21.6-2.19.0-SNAPSHOT
1111
relocationPrefix=dev.slne.surf.surfapi.libs

gradle/libs.versions.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ scoreboard-library-implementation = "2.3.0"
2222
scoreboard-library-modern = "2.3.0"
2323

2424
# Adventure
25-
adventure-api = "4.20.0"
25+
adventure-api = "4.23.0"
2626

2727
# Velocity
2828
velocity-api = "3.4.0-SNAPSHOT"
@@ -104,6 +104,7 @@ adventure-serializer-gson = { module = "net.kyori:adventure-text-serializer-gson
104104
adventure-serializer-legacy = { module = "net.kyori:adventure-text-serializer-legacy", version.ref = "adventure-api" }
105105
adventure-serializer-plain = { module = "net.kyori:adventure-text-serializer-plain", version.ref = "adventure-api" }
106106
adventure-serializer-ansi = { module = "net.kyori:adventure-text-serializer-ansi", version.ref = "adventure-api" }
107+
adventure-nbt = { module = "net.kyori:adventure-nbt", version.ref = "adventure-api" }
107108

108109
# Velocity
109110
velocity-api = { module = "com.velocitypowered:velocity-api", version.ref = "velocity-api" }

surf-api-bukkit/surf-api-bukkit-api/api/surf-api-bukkit-api.api

Lines changed: 546 additions & 179 deletions
Large diffs are not rendered by default.

surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/nms/bridges/SurfBukkitNmsCommonBridge.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ interface SurfBukkitNmsCommonBridge {
1818
fun addCompostable(material: Material, levelIncreaseChance: Float)
1919
fun removeCompostable(material: Material)
2020

21+
fun setVelocityEnabled(enabled: Boolean)
22+
fun setVelocitySecret(secret: String)
23+
2124
companion object {
2225
val instance = requiredService<SurfBukkitNmsCommonBridge>()
2326
val nextEntityId get() = instance.nextEntityId()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package dev.slne.surf.surfapi.bukkit.api.nms.bridges
2+
3+
import dev.slne.surf.surfapi.bukkit.api.nms.NmsUseWithCaution
4+
import dev.slne.surf.surfapi.core.api.util.requiredService
5+
import org.bukkit.damage.DamageSource
6+
import org.bukkit.entity.EntityType
7+
import org.bukkit.entity.LivingEntity
8+
import org.bukkit.inventory.ItemStack
9+
10+
@NmsUseWithCaution
11+
interface SurfBukkitNmsLootTableBridge {
12+
13+
fun getDifferentLootTable(
14+
entity: LivingEntity,
15+
damageSource: DamageSource,
16+
replacement: EntityType,
17+
causedByPlayer: Boolean,
18+
): Collection<ItemStack>
19+
20+
companion object {
21+
val instance = requiredService<SurfBukkitNmsLootTableBridge>()
22+
}
23+
}
24+
25+
@NmsUseWithCaution
26+
val nmsLootTableBridge get() = SurfBukkitNmsLootTableBridge.instance

surf-api-bukkit/surf-api-bukkit-plugin-test/src/main/kotlin/dev/slne/surf/surfapi/bukkit/test/command/subcommands/VisualizerTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package dev.slne.surf.surfapi.bukkit.test.command.subcommands
33
import dev.jorel.commandapi.CommandAPICommand
44
import dev.slne.surf.surfapi.bukkit.test.command.subcommands.visualizer.SingleLocationVisualizerTest
55

6-
class VisualizerTest(name: String): CommandAPICommand(name) {
6+
class VisualizerTest(name: String) : CommandAPICommand(name) {
77
init {
88
withSubcommands(
99
SingleLocationVisualizerTest("singleLocation")

surf-api-bukkit/surf-api-bukkit-server/src/main/kotlin/dev/slne/surf/surfapi/bukkit/server/impl/nms/bridges/SurfBukkitNmsCommonBridgeImpl.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import dev.slne.surf.surfapi.bukkit.server.nms.toNms
77
import dev.slne.surf.surfapi.bukkit.server.nms.toNmsBlock
88
import dev.slne.surf.surfapi.bukkit.server.nms.toNmsItem
99
import dev.slne.surf.surfapi.core.api.util.checkInstantiationByServiceLoader
10+
import io.papermc.paper.configuration.GlobalConfiguration
1011
import net.minecraft.world.level.block.Block
1112
import net.minecraft.world.level.block.ComposterBlock
1213
import org.bukkit.Bukkit
@@ -48,4 +49,12 @@ class SurfBukkitNmsCommonBridgeImpl : SurfBukkitNmsCommonBridge {
4849
require(material.isItem) { "material must be an item" }
4950
ComposterBlock.COMPOSTABLES.removeFloat(material.toNmsItem())
5051
}
52+
53+
override fun setVelocityEnabled(enabled: Boolean) {
54+
GlobalConfiguration.get().proxies.velocity.enabled = enabled
55+
}
56+
57+
override fun setVelocitySecret(secret: String) {
58+
GlobalConfiguration.get().proxies.velocity.secret = secret
59+
}
5160
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package dev.slne.surf.surfapi.bukkit.server.impl.nms.bridges
2+
3+
import com.google.auto.service.AutoService
4+
import dev.slne.surf.surfapi.bukkit.api.nms.NmsUseWithCaution
5+
import dev.slne.surf.surfapi.bukkit.api.nms.bridges.SurfBukkitNmsLootTableBridge
6+
import dev.slne.surf.surfapi.bukkit.server.nms.toBukkit
7+
import dev.slne.surf.surfapi.bukkit.server.nms.toNms
8+
import dev.slne.surf.surfapi.core.api.util.emptyObjectList
9+
import dev.slne.surf.surfapi.core.api.util.mutableObjectListOf
10+
import net.minecraft.server.MinecraftServer
11+
import net.minecraft.server.level.ServerLevel
12+
import net.minecraft.world.level.storage.loot.LootParams
13+
import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets
14+
import net.minecraft.world.level.storage.loot.parameters.LootContextParams
15+
import org.bukkit.damage.DamageSource
16+
import org.bukkit.entity.EntityType
17+
import org.bukkit.entity.LivingEntity
18+
import org.bukkit.inventory.ItemStack
19+
import java.util.*
20+
import kotlin.jvm.optionals.getOrNull
21+
22+
@AutoService(SurfBukkitNmsLootTableBridge::class)
23+
@NmsUseWithCaution
24+
class SurfBukkitNmsLootTableBridgeImpl : SurfBukkitNmsLootTableBridge {
25+
override fun getDifferentLootTable(
26+
entity: LivingEntity,
27+
damageSource: DamageSource,
28+
replacement: EntityType,
29+
causedByPlayer: Boolean,
30+
): Collection<ItemStack> {
31+
val lootTableKey =
32+
replacement.toNms().defaultLootTable.getOrNull() ?: return emptyObjectList()
33+
val lootTable =
34+
MinecraftServer.getServer().reloadableRegistries().getLootTable(lootTableKey)
35+
val nmsEntity = entity.toNms()
36+
val nmsDamageSource = damageSource.toNms()
37+
38+
val lootParamsBuilder = LootParams.Builder(nmsEntity.level() as ServerLevel)
39+
.withParameter(LootContextParams.THIS_ENTITY, nmsEntity)
40+
.withParameter(LootContextParams.ORIGIN, nmsEntity.position())
41+
.withParameter(LootContextParams.DAMAGE_SOURCE, nmsDamageSource)
42+
.withOptionalParameter(LootContextParams.ATTACKING_ENTITY, nmsDamageSource.entity)
43+
.withOptionalParameter(
44+
LootContextParams.DIRECT_ATTACKING_ENTITY,
45+
nmsDamageSource.directEntity
46+
)
47+
48+
val lastHurtByPlayer = nmsEntity.lastHurtByPlayer
49+
if (causedByPlayer && lastHurtByPlayer != null) {
50+
lootParamsBuilder.withParameter(LootContextParams.LAST_DAMAGE_PLAYER, lastHurtByPlayer)
51+
.withLuck(lastHurtByPlayer.luck)
52+
}
53+
54+
val lootParams = lootParamsBuilder.create(LootContextParamSets.ENTITY)
55+
return lootTable.getRandomItems(lootParams, nmsEntity.lootTableSeed)
56+
.mapTo(mutableObjectListOf()) { it.toBukkit() }
57+
}
58+
}

surf-api-bukkit/surf-api-bukkit-server/src/main/kotlin/dev/slne/surf/surfapi/bukkit/server/nms/nms-extensions.kt

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import io.papermc.paper.math.FinePosition
1010
import io.papermc.paper.math.Position
1111
import net.minecraft.core.BlockPos
1212
import net.minecraft.network.chat.Component
13+
import net.minecraft.server.level.ServerLevel
1314
import net.minecraft.server.level.ServerPlayer
1415
import net.minecraft.world.entity.Display
1516
import net.minecraft.world.inventory.MenuType
@@ -21,18 +22,28 @@ import net.minecraft.world.level.block.entity.SignText
2122
import net.minecraft.world.phys.Vec3
2223
import org.bukkit.Material
2324
import org.bukkit.Server
25+
import org.bukkit.World
2426
import org.bukkit.block.BlockState
2527
import org.bukkit.block.data.BlockData
2628
import org.bukkit.craftbukkit.CraftServer
29+
import org.bukkit.craftbukkit.CraftWorld
2730
import org.bukkit.craftbukkit.block.CraftBlockState
2831
import org.bukkit.craftbukkit.block.data.CraftBlockData
32+
import org.bukkit.craftbukkit.damage.CraftDamageSource
33+
import org.bukkit.craftbukkit.entity.CraftEntity
34+
import org.bukkit.craftbukkit.entity.CraftEntityType
35+
import org.bukkit.craftbukkit.entity.CraftLivingEntity
2936
import org.bukkit.craftbukkit.entity.CraftPlayer
3037
import org.bukkit.craftbukkit.inventory.CraftItemStack
3138
import org.bukkit.craftbukkit.inventory.CraftItemType
3239
import org.bukkit.craftbukkit.util.Commodore
3340
import org.bukkit.craftbukkit.util.CraftMagicNumbers
41+
import org.bukkit.damage.DamageSource
3442
import org.bukkit.entity.Display.Billboard
43+
import org.bukkit.entity.Entity
44+
import org.bukkit.entity.EntityType
3545
import org.bukkit.entity.ItemDisplay.ItemDisplayTransform
46+
import org.bukkit.entity.LivingEntity
3647
import org.bukkit.entity.Player
3748
import org.bukkit.event.inventory.InventoryType
3849
import org.bukkit.inventory.ItemStack
@@ -110,4 +121,10 @@ fun Component.toBukkit(): AdventureComponent = PaperAdventure.asAdventure(this)
110121

111122
fun Server.toCraft() = this as CraftServer
112123
val craftServer: CraftServer get() = server.toCraft()
113-
val commodore: Commodore get() = CraftMagicNumbers.INSTANCE.commodore
124+
val commodore: Commodore get() = CraftMagicNumbers.INSTANCE.commodore
125+
126+
fun EntityType.toNms(): net.minecraft.world.entity.EntityType<*> = CraftEntityType.bukkitToMinecraft(this)
127+
fun World.toNms(): ServerLevel = (this as CraftWorld).handle
128+
fun Entity.toNms(): net.minecraft.world.entity.Entity = (this as CraftEntity).handle
129+
fun LivingEntity.toNms(): net.minecraft.world.entity.LivingEntity = (this as CraftLivingEntity).handle
130+
fun DamageSource.toNms(): net.minecraft.world.damagesource.DamageSource = (this as CraftDamageSource).handle

0 commit comments

Comments
 (0)