Skip to content
This repository was archived by the owner on Apr 23, 2025. It is now read-only.

Commit 46c4117

Browse files
committed
Fixed Text Display
1 parent bf1f48e commit 46c4117

File tree

12 files changed

+65
-30
lines changed

12 files changed

+65
-30
lines changed

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ plugins {
1212
}
1313

1414
apply(plugin = "maven-publish")
15-
val versionVar = "0.5.79"
15+
val versionVar = "0.5.80"
1616
val groupIdVar = "com.undefined"
1717
val artifactIdVar = "api"
1818

server/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ tasks {
4343
}
4444

4545
runServer {
46-
minecraftVersion("1.21")
46+
minecraftVersion("1.20.4")
4747
jvmArgs("-Xmx2G")
4848
}
4949

server/src/main/java/com/undefined/api/Main.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,14 @@ import com.undefined.api.extension.string.asInventory
1010
import com.undefined.api.extension.string.asString
1111
import com.undefined.api.menu.MenuSize
1212
import com.undefined.api.menu.normal.UndefinedMenu
13+
import com.undefined.api.nms.createFakeEntity
1314
import com.undefined.api.scheduler.delay
1415
import com.undefined.api.scoreboard.UndefinedScoreboard
1516
import org.bukkit.Bukkit
1617
import org.bukkit.Location
1718
import org.bukkit.Material
1819
import org.bukkit.block.data.BlockData
20+
import org.bukkit.entity.EntityType
1921
import org.bukkit.event.player.PlayerJoinEvent
2022
import org.bukkit.inventory.Inventory
2123
import org.bukkit.plugin.java.JavaPlugin
@@ -29,5 +31,13 @@ class Main: JavaPlugin() {
2931
api = UndefinedAPI(this)
3032

3133

34+
event<PlayerJoinEvent> {
35+
36+
val text = api.createFakeEntity(EntityType.TEXT_DISPLAY, "Testing")!!
37+
text.addViewer(player)
38+
text.spawn(player.location)
39+
40+
}
41+
3242
}
3343
}

v1_20_4/src/main/java/com/undefined/api/nms/v1_20_4/SpigotNMSMappings.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,5 @@ object SpigotNMSMappings {
2929
const val DisplayLeftRot = "v"
3030
const val DisplayRightRot = "aE"
3131

32-
const val TextDisplaySetBackGroundColor = "c"
32+
const val TextDisplayBackgroundID = "aN"
3333
}

v1_20_4/src/main/java/com/undefined/api/nms/v1_20_4/entity/entityClasses/display/NMSTextDisplayEntity.kt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,19 @@ package com.undefined.api.nms.v1_20_4.entity.entityClasses.display
22

33
import com.undefined.api.nms.interfaces.display.NMSTextDisplay
44
import com.undefined.api.nms.v1_20_4.SpigotNMSMappings
5+
import com.undefined.api.nms.v1_20_4.extensions.DATA_BACKGROUND_COLOR_ID
56
import net.minecraft.network.chat.Component
67
import net.minecraft.world.entity.Display
8+
import net.minecraft.world.entity.Display.BlockDisplay
79
import net.minecraft.world.entity.Display.TextDisplay
10+
import net.minecraft.world.entity.Entity
11+
import net.minecraft.world.level.Level
812
import org.bukkit.Location
913
import org.bukkit.entity.EntityType
1014
import java.lang.reflect.Method
1115

1216
class NMSTextDisplayEntity(text: String) : NMSDisplayEntity(EntityType.TEXT_DISPLAY), NMSTextDisplay {
1317

14-
private val method: Method = Display.TextDisplay::class.java.getDeclaredMethod(SpigotNMSMappings.TextDisplaySetBackGroundColor)
15-
16-
init {
17-
method.isAccessible = true
18-
}
19-
2018
override var text: String = text
2119
set(value) {
2220
entity?.let {
@@ -39,7 +37,7 @@ class NMSTextDisplayEntity(text: String) : NMSDisplayEntity(EntityType.TEXT_DISP
3937
set(value) {
4038
entity?.let {
4139
val textEntity = it as Display.TextDisplay
42-
method.invoke(textEntity, value)
40+
textEntity.entityData.set(textEntity.DATA_BACKGROUND_COLOR_ID(), value)
4341
sendMetaPackets()
4442
field = value
4543
}
@@ -59,4 +57,6 @@ class NMSTextDisplayEntity(text: String) : NMSDisplayEntity(EntityType.TEXT_DISP
5957
super.spawn(newLocation)
6058
text = text
6159
}
60+
61+
override fun getUndefinedEntityClass(entityType: net.minecraft.world.entity.EntityType<*>, level: Level): Entity = TextDisplay(entityType, level)
6262
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.undefined.api.nms.v1_20_4.extensions
2+
3+
import com.undefined.api.nms.extensions.getPrivateField
4+
import com.undefined.api.nms.v1_20_4.SpigotNMSMappings
5+
import net.minecraft.network.syncher.EntityDataAccessor
6+
import net.minecraft.world.entity.Display.TextDisplay
7+
8+
fun TextDisplay.DATA_BACKGROUND_COLOR_ID(): EntityDataAccessor<Int> = getPrivateField(SpigotNMSMappings.TextDisplayBackgroundID)

v1_20_5/src/main/java/com/undefined/api/nms/v1_20_5/SpigotNMSMappings.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,5 @@ object SpigotNMSMappings {
2727
const val DisplayLeftRot = "v"
2828
const val DisplayRightRot = "aF"
2929

30-
const val TextDisplaySetBackGroundColor = "c"
30+
const val TextDisplayBackgroundID = "aP"
3131
}

v1_20_5/src/main/java/com/undefined/api/nms/v1_20_5/entity/entityClass/display/NMSTextDisplayEntity.kt

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,22 @@ package com.undefined.api.nms.v1_20_5.entity.entityClass.display
22

33
import com.undefined.api.nms.interfaces.display.NMSTextDisplay
44
import com.undefined.api.nms.v1_20_5.SpigotNMSMappings
5+
import com.undefined.api.nms.v1_20_5.extensions.DATA_BACKGROUND_COLOR_ID
56
import net.minecraft.network.chat.Component
7+
import net.minecraft.world.entity.Display
68
import net.minecraft.world.entity.Display.TextDisplay
9+
import net.minecraft.world.entity.Entity
10+
import net.minecraft.world.level.Level
711
import org.bukkit.Location
812
import org.bukkit.entity.EntityType
913
import java.lang.reflect.Method
1014

1115
class NMSTextDisplayEntity(text: String) : NMSDisplayEntity(EntityType.TEXT_DISPLAY), NMSTextDisplay {
1216

13-
private val method: Method = TextDisplay::class.java.getDeclaredMethod(SpigotNMSMappings.TextDisplaySetBackGroundColor)
14-
15-
init {
16-
method.isAccessible = true
17-
}
18-
1917
override var text: String = text
2018
set(value) {
2119
entity?.let {
22-
val textEntity = it as TextDisplay
20+
val textEntity = it as Display.TextDisplay
2321
textEntity.text = Component.literal(value)
2422
sendMetaPackets()
2523
field = value
@@ -28,7 +26,7 @@ class NMSTextDisplayEntity(text: String) : NMSDisplayEntity(EntityType.TEXT_DISP
2826
override var width: Float = 200F
2927
set(value) {
3028
entity?.let {
31-
val textEntity = it as TextDisplay
29+
val textEntity = it as Display.TextDisplay
3230
textEntity.width = value
3331
sendMetaPackets()
3432
field = value
@@ -37,16 +35,16 @@ class NMSTextDisplayEntity(text: String) : NMSDisplayEntity(EntityType.TEXT_DISP
3735
override var backGroundColor: Int = 1073741824
3836
set(value) {
3937
entity?.let {
40-
val textEntity = it as TextDisplay
41-
method.invoke(textEntity, value)
38+
val textEntity = it as Display.TextDisplay
39+
textEntity.entityData.set(textEntity.DATA_BACKGROUND_COLOR_ID(), value)
4240
sendMetaPackets()
4341
field = value
4442
}
4543
}
4644
override var textOpacity: Byte = -1
4745
set(value) {
4846
entity?.let {
49-
val textEntity = it as TextDisplay
47+
val textEntity = it as Display.TextDisplay
5048
textEntity.textOpacity = value
5149
sendMetaPackets()
5250
field = value
@@ -58,4 +56,6 @@ class NMSTextDisplayEntity(text: String) : NMSDisplayEntity(EntityType.TEXT_DISP
5856
super.spawn(newLocation)
5957
text = text
6058
}
59+
60+
override fun getUndefinedEntityClass(entityType: net.minecraft.world.entity.EntityType<*>, level: Level): Entity = TextDisplay(entityType, level)
6161
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.undefined.api.nms.v1_20_5.extensions
2+
3+
import com.undefined.api.nms.extensions.getPrivateField
4+
import com.undefined.api.nms.v1_20_5.SpigotNMSMappings
5+
import net.minecraft.network.syncher.EntityDataAccessor
6+
import net.minecraft.world.entity.Display.TextDisplay
7+
8+
9+
fun TextDisplay.DATA_BACKGROUND_COLOR_ID(): EntityDataAccessor<Int> = getPrivateField(SpigotNMSMappings.TextDisplayBackgroundID)

v1_21/src/main/java/com/undefined/api/nms/v1_21/SpigotNMSMappings.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,5 @@ object SpigotNMSMappings {
2727
const val DisplayLeftRot = "v"
2828
const val DisplayRightRot = "aD"
2929

30-
const val TextDisplaySetBackGroundColor = "c"
30+
const val TextDisplayBackgroundID = "aN"
3131
}

0 commit comments

Comments
 (0)