This commit is contained in:
2025-02-24 21:24:01 +08:00
parent e376832ffc
commit 16e6af2d76
3 changed files with 29 additions and 9 deletions

View File

@@ -1,5 +1,5 @@
plugins { plugins {
kotlin("jvm") version "2.1.0" kotlin("jvm") version "2.1.10"
id("com.gradleup.shadow") version "8.3.5" id("com.gradleup.shadow") version "8.3.5"
} }

View File

@@ -110,12 +110,12 @@ class Console {
private lateinit var speedrunnerList: List<UUID> private lateinit var speedrunnerList: List<UUID>
/** /**
* 玩家离开主世界时最后的位置 * 速通者离开主世界时最后的位置
*/ */
private val playerLocInWorld: MutableMap<UUID, Location> = HashMap() private val playerLocInWorld: MutableMap<UUID, Location> = HashMap()
/** /**
* 玩家离开下界时最后的位置 * 速通者离开下界时最后的位置
*/ */
private val playerLocInNether: MutableMap<UUID, Location> = HashMap() private val playerLocInNether: MutableMap<UUID, Location> = HashMap()
@@ -258,7 +258,7 @@ class Console {
* 加入观众阵营 * 加入观众阵营
*/ */
fun joinAudience(player: Player) { fun joinAudience(player: Player) {
if (stage == GameStage.PREPARING && beginningCountdown == null) { if (stage == GameStage.PREPARING) {
audienceTeam.addPlayer(player) audienceTeam.addPlayer(player)
player.sendMessage(Component.text("你已加入[观众]")) player.sendMessage(Component.text("你已加入[观众]"))
} }
@@ -442,7 +442,7 @@ class Console {
} }
votingEndMap[player.uniqueId] = true votingEndMap[player.uniqueId] = true
votingCount++ votingCount++
player.sendMessage(Component.text("voting (${votingCount}/${votingEndMap.size})", NamedTextColor.RED)) player.sendMessage(Component.text("Voting (${votingCount}/${votingEndMap.size})", NamedTextColor.RED))
if (votingCount != votingEndMap.size) { if (votingCount != votingEndMap.size) {
return return
} }
@@ -536,7 +536,15 @@ class Console {
// 让指南针指向某一个猎人 // 让指南针指向某一个猎人
val meta = itemStack.itemMeta as CompassMeta val meta = itemStack.itemMeta as CompassMeta
meta.isLodestoneTracked = false meta.isLodestoneTracked = false
meta.lodestone = speedrunner.location if (hunter.world.uid == speedrunner.world.uid) {
meta.lodestone = speedrunner.location
} else if (hunter.world.uid == overworld.uid) {
meta.lodestone = playerLocInWorld[speedrunner.uniqueId]
} else if (hunter.world.uid == nether.uid) {
meta.lodestone = playerLocInNether[speedrunner.uniqueId]
} else {
meta.lodestone = null
}
itemStack.itemMeta = meta itemStack.itemMeta = meta
itemStack.amount = 1 itemStack.amount = 1
} }
@@ -630,7 +638,19 @@ class Console {
*/ */
fun giveCompassIfNeed(player: Player) { fun giveCompassIfNeed(player: Player) {
if (stage == GameStage.PROCESSING && isHunter(player)) { if (stage == GameStage.PROCESSING && isHunter(player)) {
player.give(hunterCompass) val items = player.inventory.all(Material.COMPASS)
var have = false
for (item in items) {
if (item.value.lore().isNullOrEmpty()) continue
val component = item.value.lore()!![0]
if (component is TextComponent && component.content() == compassFlag) {
have = true
break
}
}
if (!have) {
player.give(hunterCompass)
}
} }
} }

View File

@@ -26,11 +26,11 @@ class PlayerListener(
@EventHandler @EventHandler
fun onPlayerJoin(event: PlayerJoinEvent) { fun onPlayerJoin(event: PlayerJoinEvent) {
val player = event.player val player = event.player
if (console.stage == GameStage.PREPARING && console.beginningCountdown == null) { if (console.stage == GameStage.PREPARING) {
// 在准备阶段,玩家设为冒险模式 // 在准备阶段,玩家设为冒险模式
player.gameMode = GameMode.ADVENTURE player.gameMode = GameMode.ADVENTURE
// 自动加入观察者队伍 // 自动加入观察者队伍
console.audienceTeam.addPlayer(player) console.joinAudience(player)
} }
} }