@@ -9,6 +9,7 @@ import net.minecraft.network.chat.Component
9
9
import net.minecraft.resources.ResourceLocation
10
10
import net.minecraft.world.entity.player.Inventory
11
11
import net.minecraft.world.phys.BlockHitResult
12
+ import org.valkyrienskies.core.api.ships.Ship
12
13
import org.valkyrienskies.eureka.EurekaConfig
13
14
import org.valkyrienskies.eureka.EurekaMod
14
15
import org.valkyrienskies.mod.common.getShipManagingPos
@@ -20,10 +21,12 @@ class ShipHelmScreen(handler: ShipHelmScreenMenu, playerInventory: Inventory, te
20
21
private lateinit var alignButton: ShipHelmButton
21
22
private lateinit var disassembleButton: ShipHelmButton
22
23
23
- private val pos = (Minecraft .getInstance().hitResult as ? BlockHitResult )?.blockPos
24
+ private var pos = (Minecraft .getInstance().hitResult as ? BlockHitResult )?.blockPos
25
+ private var ship: Ship ? = pos?.let { Minecraft .getInstance().level?.getShipManagingPos(it) }
24
26
25
27
init {
26
- titleLabelX = 120
28
+ titleLabelX = 6
29
+ titleLabelY = 6
27
30
}
28
31
29
32
override fun init () {
@@ -54,10 +57,14 @@ class ShipHelmScreen(handler: ShipHelmScreenMenu, playerInventory: Inventory, te
54
57
}
55
58
56
59
private fun updateButtons () {
57
- val level = Minecraft .getInstance().level ? : return
58
- val isLookingAtShip = level.getShipManagingPos(pos ? : return ) != null
60
+ pos = (Minecraft .getInstance().hitResult as ? BlockHitResult )?.blockPos
61
+ ship = pos?.let { Minecraft .getInstance().level?.getShipManagingPos(it) }
62
+
63
+ val isLookingAtShip = ship != null
64
+
59
65
assembleButton.active = ! isLookingAtShip
60
66
disassembleButton.active = EurekaConfig .SERVER .allowDisassembly && isLookingAtShip
67
+ alignButton.active = disassembleButton.active
61
68
}
62
69
63
70
override fun renderBg (matrixStack : PoseStack , partialTicks : Float , mouseX : Int , mouseY : Int ) {
@@ -72,8 +79,6 @@ class ShipHelmScreen(handler: ShipHelmScreenMenu, playerInventory: Inventory, te
72
79
}
73
80
74
81
override fun renderLabels (matrixStack : PoseStack , i : Int , j : Int ) {
75
- font.draw(matrixStack, title, titleLabelX.toFloat(), titleLabelY.toFloat(), 0x404040 )
76
-
77
82
if (this .menu.aligning) {
78
83
alignButton.message = ALIGNING_TEXT
79
84
alignButton.active = false
@@ -83,6 +88,9 @@ class ShipHelmScreen(handler: ShipHelmScreenMenu, playerInventory: Inventory, te
83
88
}
84
89
85
90
// TODO render stats
91
+ if (ship == null ) return
92
+ ship!! .slug?.let { font.draw(matrixStack, it, titleLabelX.toFloat(), titleLabelY.toFloat(), 0x404040 ) }
93
+ font.draw(matrixStack, String .format(" %.2f" , ship!! .velocity.length()) + " m/s" , 8f , 25f , 0x404040 )
86
94
}
87
95
88
96
// mojank doesn't check mouse release for their widgets for some reason
0 commit comments