Skip to content

Commit 0ca74b2

Browse files
committed
[2.2.1-test2] Fix Fix Fix
1 parent 06d3d97 commit 0ca74b2

File tree

19 files changed

+90
-104
lines changed

19 files changed

+90
-104
lines changed

gradle.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
group=me.arasple.mc.trchat
2-
version=2.2.1-test1
2+
version=2.2.1-test2
33
kotlin.incremental=true
44
kotlin.incremental.java=true
55
kotlin.incremental.useClasspathSnapshot=true

project/common/src/main/java/me/arasple/mc/trchat/util/ServerUtil.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ public class ServerUtil {
1010
isModdedServer = true;
1111
} catch (Throwable ignored) {
1212
}
13-
13+
try {
14+
Class.forName("com.mohistmc.MohistMC");
15+
isModdedServer = true;
16+
} catch (Throwable ignored) {
17+
}
1418
}
1519
}

project/module-adventure/src/main/kotlin/me/arasple/mc/trchat/module/adventure/Adventure.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,5 @@ fun Component.toNative() = Components.parseRaw(gson(this))
2828
fun ComponentText.toAdventure() = gson(toRawMessage())
2929

3030
fun ComponentText.hoverItemAdventure(item: ItemStack): ComponentText {
31-
return toAdventure().hoverEvent(item).toNative()
31+
return toAdventure().hoverEvent(item.asHoverEvent()).toNative()
3232
}

project/module-compat/src/main/kotlin/me/arasple/mc/trchat/module/internal/hook/impl/HookItemsAdder.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package me.arasple.mc.trchat.module.internal.hook.impl
33
import dev.lone.itemsadder.api.FontImages.FontImageWrapper
44
import me.arasple.mc.trchat.module.internal.hook.HookAbstract
55
import org.bukkit.entity.Player
6-
import taboolib.module.nms.MinecraftVersion.majorLegacy
6+
import taboolib.module.nms.MinecraftVersion.versionId
77

88
/**
99
* @author ItsFlicker
@@ -16,7 +16,7 @@ class HookItemsAdder : HookAbstract() {
1616
return message
1717
}
1818
return try {
19-
if (player == null || majorLegacy >= 12005) {
19+
if (player == null || versionId >= 12005) {
2020
FontImageWrapper.replaceFontImages(message)
2121
} else {
2222
FontImageWrapper.replaceFontImages(player, message)

project/module-nms/src/main/kotlin/me/arasple/mc/trchat/api/nms/NMS.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ abstract class NMS {
3333

3434
@JvmStatic
3535
val instance by unsafeLazy {
36-
if (MinecraftVersion.majorLegacy < 12005) nmsProxy<NMS>()
36+
if (MinecraftVersion.versionId < 12005) nmsProxy<NMS>()
3737
else nmsProxy<NMS>("me.arasple.mc.trchat.api.nms.NMSImpl12005")
3838
}
3939

project/module-nms/src/main/kotlin/me/arasple/mc/trchat/api/nms/NMSImpl.kt

+7-7
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import taboolib.library.reflex.Reflex.Companion.invokeConstructor
1111
import taboolib.module.chat.ComponentText
1212
import taboolib.module.nms.MinecraftLanguage
1313
import taboolib.module.nms.MinecraftVersion.isUniversal
14-
import taboolib.module.nms.MinecraftVersion.majorLegacy
14+
import taboolib.module.nms.MinecraftVersion.versionId
1515
import taboolib.module.nms.NMSItemTag
1616
import taboolib.module.nms.nmsProxy
1717
import taboolib.module.nms.sendPacket
@@ -35,9 +35,9 @@ class NMSImpl : NMS() {
3535

3636
override fun craftChatMessageFromComponent(component: ComponentText): Any {
3737
return try {
38-
if (majorLegacy >= 11604) {
38+
if (versionId >= 11604) {
3939
CraftChatMessage19.fromJSON(component.toRawMessage())
40-
} else if (majorLegacy >= 11600) {
40+
} else if (versionId >= 11600) {
4141
ChatSerializer16.a(component.toRawMessage())!!
4242
} else {
4343
ChatSerializer12.a(component.toRawMessage())!!
@@ -49,7 +49,7 @@ class NMSImpl : NMS() {
4949

5050
override fun rawMessageFromCraftChatMessage(component: Any): String {
5151
return try {
52-
if (majorLegacy >= 11604) {
52+
if (versionId >= 11604) {
5353
CraftChatMessage19.toJSON(component as NMSIChatBaseComponent)
5454
} else {
5555
ChatSerializer12.a(component as IChatBaseComponent12)!!
@@ -64,16 +64,16 @@ class NMSImpl : NMS() {
6464
component.sendTo(adaptPlayer(receiver))
6565
return
6666
}
67-
if (majorLegacy >= 11900) {
67+
if (versionId >= 11900) {
6868
val player = (receiver as CraftPlayer19).handle
6969
player.sendSystemMessage(craftChatMessageFromComponent(component) as NMSIChatBaseComponent)
70-
} else if (majorLegacy >= 11600) {
70+
} else if (versionId >= 11600) {
7171
receiver.sendPacket(PacketPlayOutChat::class.java.invokeConstructor(
7272
craftChatMessageFromComponent(component),
7373
ChatMessageType.CHAT,
7474
sender
7575
))
76-
} else if (majorLegacy >= 11200) {
76+
} else if (versionId >= 11200) {
7777
receiver.sendPacket(PacketPlayOutChat::class.java.invokeConstructor(
7878
craftChatMessageFromComponent(component),
7979
ChatMessageType.CHAT

project/runtime-bukkit/src/main/kotlin/me/arasple/mc/trchat/api/impl/BukkitProxyManager.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import com.google.common.util.concurrent.ThreadFactoryBuilder
44
import me.arasple.mc.trchat.api.ClientMessageManager
55
import me.arasple.mc.trchat.api.ProxyMode
66
import me.arasple.mc.trchat.module.conf.file.Settings
7+
import me.arasple.mc.trchat.module.internal.data.PlayerData
78
import me.arasple.mc.trchat.module.internal.proxy.BukkitProxyProcessor
89
import me.arasple.mc.trchat.module.internal.proxy.redis.RedisManager
910
import me.arasple.mc.trchat.util.parseString
@@ -167,7 +168,7 @@ object BukkitProxyManager : ClientMessageManager {
167168
fun updateNames() {
168169
sendMessage(onlinePlayers.firstOrNull(), arrayOf(
169170
"UpdateNames",
170-
onlinePlayers.joinToString(",") { it.name + "-" + ChatColor.stripColor(it.displayName) },
171+
onlinePlayers.filter { it.name !in PlayerData.vanishing }.joinToString(",") { it.name + "-" + ChatColor.stripColor(it.displayName) },
171172
port.toString()
172173
))
173174
}

project/runtime-bukkit/src/main/kotlin/me/arasple/mc/trchat/module/display/function/Function.kt

+25-27
Original file line numberDiff line numberDiff line change
@@ -77,33 +77,31 @@ abstract class Function(val id: String) {
7777
}
7878

7979
fun ComponentText.applyStyle(type: TypeJson, part: VariableReader.Part, i: Int, sender: ProxyPlayer, vararg args: Any): ComponentText {
80-
if (part.isVariable) {
81-
val extra = type.jsonArgs.getOrNull(i)
82-
if (extra != null) {
83-
if (extra.containsKey("hover")) {
84-
hoverText(extra["hover"].toString().translate(sender).replaceWithOrder(*args))
85-
}
86-
if (extra.containsKey("command")) {
87-
clickRunCommand(extra["command"].toString().translate(sender).replaceWithOrder(*args))
88-
}
89-
if (extra.containsKey("suggest")) {
90-
clickSuggestCommand(extra["suggest"].toString().translate(sender).replaceWithOrder(*args))
91-
}
92-
if (extra.containsKey("insertion")) {
93-
clickInsertText(extra["insertion"].toString().translate(sender).replaceWithOrder(*args))
94-
}
95-
if (extra.containsKey("copy")) {
96-
clickCopyToClipboard(extra["copy"].toString().translate(sender).replaceWithOrder(*args))
97-
}
98-
if (extra.containsKey("file")) {
99-
clickOpenFile(extra["file"].toString().translate(sender).replaceWithOrder(*args))
100-
}
101-
if (extra.containsKey("url")) {
102-
clickOpenURL(extra["url"].toString().translate(sender).replaceWithOrder(*args))
103-
}
104-
if (extra.containsKey("font")) {
105-
font(extra["font"].toString().translate(sender).replaceWithOrder(*args))
106-
}
80+
val extra = type.jsonArgs.getOrNull(i)
81+
if (extra != null) {
82+
if (extra.containsKey("hover")) {
83+
hoverText(extra["hover"].toString().translate(sender).replaceWithOrder(*args))
84+
}
85+
if (extra.containsKey("command")) {
86+
clickRunCommand(extra["command"].toString().translate(sender).replaceWithOrder(*args))
87+
}
88+
if (extra.containsKey("suggest")) {
89+
clickSuggestCommand(extra["suggest"].toString().translate(sender).replaceWithOrder(*args))
90+
}
91+
if (extra.containsKey("insertion")) {
92+
clickInsertText(extra["insertion"].toString().translate(sender).replaceWithOrder(*args))
93+
}
94+
if (extra.containsKey("copy")) {
95+
clickCopyToClipboard(extra["copy"].toString().translate(sender).replaceWithOrder(*args))
96+
}
97+
if (extra.containsKey("file")) {
98+
clickOpenFile(extra["file"].toString().translate(sender).replaceWithOrder(*args))
99+
}
100+
if (extra.containsKey("url")) {
101+
clickOpenURL(extra["url"].toString().translate(sender).replaceWithOrder(*args))
102+
}
103+
if (extra.containsKey("font")) {
104+
font(extra["font"].toString().translate(sender).replaceWithOrder(*args))
107105
}
108106
}
109107
return this

project/runtime-bukkit/src/main/kotlin/me/arasple/mc/trchat/module/display/function/standard/ItemShow.kt

+7-7
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import org.bukkit.inventory.meta.BlockStateMeta
2323
import taboolib.common.io.digest
2424
import taboolib.common.platform.Platform
2525
import taboolib.common.platform.PlatformSide
26-
import taboolib.common.platform.function.info
2726
import taboolib.common.util.asList
2827
import taboolib.common.util.replaceWithOrder
2928
import taboolib.common.util.resettableLazy
@@ -105,7 +104,9 @@ object ItemShow : Function("ITEM") {
105104

106105
override fun parseVariable(sender: Player, arg: String): ComponentText? {
107106
val item = sender.inventory.getItem(arg.toInt() - 1) ?: ItemStack(Material.AIR)
108-
if (MinecraftVersion.majorLegacy >= 12005 && item.isAir()) return null
107+
if (item.isAir()) {
108+
return Components.text(sender.asLangText("Function-Item-Show-Air"))
109+
}
109110
var newItem = if (compatible) {
110111
if (item.isAir()) ItemStack(Material.STONE) else buildItem(item) { material = Material.STONE }
111112
} else {
@@ -134,21 +135,20 @@ object ItemShow : Function("ITEM") {
134135
}
135136
sender.getComponentFromLang("Function-Item-Show-Format-With-Hopper", newItem.amount, sha1) { type, i, part, proxySender ->
136137
val component = if (part.isVariable && part.text == "item") {
137-
item.getNameComponent(sender)
138+
item.getNameComponent(sender).hoverItemFixed(newItem)
138139
} else {
139140
Components.text(part.text.translate(proxySender).replaceWithOrder(newItem.amount, sha1))
140141
}
141-
component.applyStyle(type, part, i, proxySender, newItem.amount, sha1).hoverItemFixed(newItem)
142-
.also { info("$i: ${it.toRawMessage()}") }
142+
component.applyStyle(type, part, i, proxySender, newItem.amount, sha1)
143143
}
144144
} else {
145145
sender.getComponentFromLang("Function-Item-Show-Format-New", newItem.amount) { type, i, part, proxySender ->
146146
val component = if (part.isVariable && part.text == "item") {
147-
item.getNameComponent(sender)
147+
item.getNameComponent(sender).hoverItemFixed(newItem)
148148
} else {
149149
Components.text(part.text.translate(proxySender).replaceWithOrder(newItem.amount))
150150
}
151-
component.applyStyle(type, part, i, proxySender, newItem.amount).hoverItemFixed(newItem)
151+
component.applyStyle(type, part, i, proxySender, newItem.amount)
152152
}
153153
}
154154
}

project/runtime-bukkit/src/main/kotlin/me/arasple/mc/trchat/module/internal/TrChatBukkit.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import taboolib.common.platform.*
1717
import taboolib.common.platform.function.console
1818
import taboolib.common.platform.function.pluginVersion
1919
import taboolib.module.lang.sendLang
20-
import taboolib.module.nms.MinecraftVersion.majorLegacy
20+
import taboolib.module.nms.MinecraftVersion.versionId
2121

2222
@PlatformSide(Platform.BUKKIT)
2323
object TrChatBukkit : Plugin() {
@@ -31,7 +31,7 @@ object TrChatBukkit : Plugin() {
3131
try {
3232
// Paper 1.16.5+
3333
Class.forName("com.destroystokyo.paper.PaperConfig")
34-
if (majorLegacy >= 11604) {
34+
if (versionId >= 11604) {
3535
isPaperEnv = true
3636
}
3737
} catch (_: ClassNotFoundException) {
@@ -55,7 +55,7 @@ object TrChatBukkit : Plugin() {
5555
// if (!Settings.usePackets
5656
// || Folia.isFolia
5757
// || Bukkit.getPluginManager().isPluginEnabled("Geyser-Spigot")
58-
// || majorLegacy >= 12005
58+
// || versionId >= 12005
5959
// ) disablePacketListener()
6060
NMS.instance
6161
BukkitProxyManager.processor

project/runtime-bukkit/src/main/kotlin/me/arasple/mc/trchat/module/internal/listener/ListenerPackets.kt

+7-7
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import taboolib.common.platform.Platform
55
import taboolib.common.platform.PlatformSide
66
import taboolib.common.platform.event.SubscribeEvent
77
import taboolib.module.configuration.ConfigNode
8-
import taboolib.module.nms.MinecraftVersion.majorLegacy
8+
import taboolib.module.nms.MinecraftVersion.versionId
99
import taboolib.module.nms.PacketReceiveEvent
1010
import taboolib.module.nms.PacketSendEvent
1111

@@ -27,17 +27,17 @@ object ListenerPackets {
2727
@SubscribeEvent
2828
fun secure(e: PacketSendEvent) {
2929
if (!cheatClientSecureChat) return
30-
if (majorLegacy < 11902) return
30+
if (versionId < 11902) return
3131
when (e.packet.name) {
3232
"ClientboundServerDataPacket" -> {
33-
if (majorLegacy < 12005) e.packet.write("enforcesSecureChat", true)
33+
if (versionId < 12005) e.packet.write("enforcesSecureChat", true)
3434
}
3535
}
3636
}
3737

3838
@SubscribeEvent
3939
fun secure(e: PacketReceiveEvent) {
40-
if (majorLegacy >= 12005) return
40+
if (versionId >= 12005) return
4141
if (e.packet.name == "ServerboundChatSessionUpdatePacket") {
4242
e.isCancelled = true
4343
}
@@ -48,16 +48,16 @@ object ListenerPackets {
4848
*/
4949
@SubscribeEvent
5050
fun record(e: PacketSendEvent) {
51-
if (majorLegacy >= 12005) return
51+
if (versionId >= 12005) return
5252
val session = ChatSession.sessions[e.player.uniqueId] ?: return
5353
when (e.packet.name) {
5454
"ClientboundSystemChatPacket" -> {
5555
session.addMessage(e.packet)
5656
}
5757
"PacketPlayOutChat" -> {
58-
val type = if (majorLegacy >= 11700) {
58+
val type = if (versionId >= 11700) {
5959
e.packet.read<Byte>("type/index")!!
60-
} else if (majorLegacy >= 11200) {
60+
} else if (versionId >= 11200) {
6161
e.packet.read<Byte>("b/d")!!
6262
} else {
6363
e.packet.read<Byte>("b")

project/runtime-bukkit/src/main/kotlin/me/arasple/mc/trchat/module/internal/listener/ListenerQuit.kt

+4
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import taboolib.common.platform.Platform
88
import taboolib.common.platform.PlatformSide
99
import taboolib.common.platform.event.EventPriority
1010
import taboolib.common.platform.event.SubscribeEvent
11+
import taboolib.expansion.playerDataContainer
1112
import taboolib.expansion.releaseDataContainer
1213

1314
/**
@@ -20,6 +21,9 @@ object ListenerQuit {
2021
@SubscribeEvent(priority = EventPriority.HIGHEST)
2122
fun onQuit(e: PlayerQuitEvent) {
2223
val player = e.player
24+
25+
if (!playerDataContainer.containsKey(player.uniqueId)) return
26+
2327
Channel.channels.values.forEach { it.listeners -= player.name }
2428
ChatSession.removeSession(player)
2529
PlayerData.removeData(player)

project/runtime-bukkit/src/main/kotlin/me/arasple/mc/trchat/util/ComponentUtil.kt

+15-3
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,19 @@ import me.arasple.mc.trchat.TrChat
44
import me.arasple.mc.trchat.api.nms.NMS
55
import me.arasple.mc.trchat.module.adventure.hoverItemAdventure
66
import me.arasple.mc.trchat.util.color.colorify
7+
import net.md_5.bungee.api.chat.BaseComponent
8+
import net.md_5.bungee.api.chat.ComponentBuilder
9+
import net.md_5.bungee.api.chat.HoverEvent
710
import org.bukkit.Material
811
import org.bukkit.block.ShulkerBox
912
import org.bukkit.inventory.ItemStack
1013
import org.bukkit.inventory.meta.BlockStateMeta
1114
import org.bukkit.inventory.meta.ItemMeta
15+
import taboolib.library.reflex.Reflex.Companion.getProperty
1216
import taboolib.module.chat.ComponentText
1317
import taboolib.module.chat.component
18+
import taboolib.module.nms.MinecraftVersion.versionId
19+
import taboolib.module.nms.NMSItemTag
1420
import taboolib.module.nms.getI18nName
1521
import taboolib.platform.Folia
1622
import taboolib.platform.util.*
@@ -25,6 +31,12 @@ fun ComponentText.hoverItemFixed(item: ItemStack): ComponentText {
2531
}
2632
var newItem = item.optimizeShulkerBox()
2733
newItem = NMS.instance.optimizeNBT(newItem)
34+
if (versionId >= 12005) {
35+
this.getProperty<ArrayList<BaseComponent>>("latest")!!.forEach {
36+
it.hoverEvent = HoverEvent(HoverEvent.Action.SHOW_ITEM, ComponentBuilder(NMSItemTag.instance.toMinecraftJson(newItem)).create())
37+
}
38+
return this
39+
}
2840
return try {
2941
// https://github.com/TrPlugins/TrChat/issues/363
3042
NMS.instance.hoverItem(this, newItem)
@@ -39,10 +51,10 @@ fun ComponentText.hoverItemFixed(item: ItemStack): ComponentText {
3951

4052
@Suppress("Deprecation")
4153
fun ItemStack.optimizeShulkerBox(): ItemStack {
54+
if (!type.name.endsWith("SHULKER_BOX")) {
55+
return this
56+
}
4257
try {
43-
if (!type.name.endsWith("SHULKER_BOX")) {
44-
return this
45-
}
4658
val itemClone = clone()
4759
val blockStateMeta = itemClone.itemMeta!! as BlockStateMeta
4860
val shulkerBox = blockStateMeta.blockState as ShulkerBox

project/runtime-bukkit/src/main/resources/lang/en_US.yml

+1-13
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ Function-Item-Show-Format-With-Hopper:
130130
text: '&8\[[item] &bx{0}&8\]'
131131
args:
132132
- command: '/view-item {1}'
133+
Function-Item-Show-Air: '&8[&fAir&8]'
133134
Function-Item-Show-Unavailable: '&c&This item has been expired or does not exist...'
134135
Function-Item-Show-Title: '{0}''s Item'
135136
Function-Inventory-Show-Format:
@@ -152,19 +153,6 @@ Function-Mention-All-Format:
152153
- type: json
153154
text: ' [&a@&2Everyone] '
154155
args: [ ]
155-
Function-Image-Show-Format:
156-
- type: json
157-
text: '[&8\[&f&lImage&8\]]'
158-
args:
159-
- hover: '&7Click to view this image({0})'
160-
command: '/view-image {1}'
161-
Function-Image-Show-Unavailable:
162-
- type: actionbar
163-
text: '&c&lThis image is still loading...'
164-
- type: sound
165-
sound: 'ENTITY_ITEM_BREAK'
166-
volume: 1
167-
pitch: 0
168156

169157
Private-Message-Spy-Format: '&8[&3Spy&8] &6{0} &2-> &3{1}&f: &7{2}'
170158
Private-Message-Spy-On:

0 commit comments

Comments
 (0)