1
1
package com .mrbysco .armorposer .client .gui ;
2
2
3
+ import com .mrbysco .armorposer .Reference ;
3
4
import com .mrbysco .armorposer .client .gui .widgets .NumberFieldBox ;
4
- import com .mrbysco .armorposer .client .gui .widgets .PoseImageButton ;
5
5
import com .mrbysco .armorposer .client .gui .widgets .ToggleButton ;
6
6
import com .mrbysco .armorposer .data .SwapData ;
7
7
import com .mrbysco .armorposer .platform .Services ;
11
11
import net .minecraft .client .gui .GuiGraphics ;
12
12
import net .minecraft .client .gui .components .Button ;
13
13
import net .minecraft .client .gui .components .EditBox ;
14
+ import net .minecraft .client .gui .components .ImageButton ;
14
15
import net .minecraft .client .gui .components .LockIconButton ;
15
16
import net .minecraft .client .gui .components .Tooltip ;
17
+ import net .minecraft .client .gui .components .WidgetSprites ;
16
18
import net .minecraft .client .gui .screens .Screen ;
17
19
import net .minecraft .client .resources .language .I18n ;
18
20
import net .minecraft .nbt .CompoundTag ;
21
23
import net .minecraft .nbt .ListTag ;
22
24
import net .minecraft .nbt .TagParser ;
23
25
import net .minecraft .network .chat .Component ;
26
+ import net .minecraft .resources .ResourceLocation ;
24
27
import net .minecraft .world .entity .decoration .ArmorStand ;
25
28
import net .minecraft .world .phys .Vec3 ;
26
29
27
30
public class ArmorStandScreen extends Screen {
31
+ private static final WidgetSprites MIRROR_POSE_SPRITES = new WidgetSprites (
32
+ new ResourceLocation (Reference .MOD_ID , "widget/mirror_pose" ), new ResourceLocation (Reference .MOD_ID , "widget/mirror_pose_highlighted" )
33
+ );
34
+ private static final WidgetSprites MIRROR_LEGS_SPRITES = new WidgetSprites (
35
+ new ResourceLocation (Reference .MOD_ID , "widget/mirror_legs" ), new ResourceLocation (Reference .MOD_ID , "widget/mirror_legs_highlighted" )
36
+ );
37
+ private static final WidgetSprites MIRROR_ARMS_SPRITES = new WidgetSprites (
38
+ new ResourceLocation (Reference .MOD_ID , "widget/mirror_arms" ), new ResourceLocation (Reference .MOD_ID , "widget/mirror_arms_highlighted" )
39
+ );
40
+ private static final WidgetSprites SWAP_TO_HEAD_SPRITES = new WidgetSprites (
41
+ new ResourceLocation (Reference .MOD_ID , "widget/swap_to_head" ), new ResourceLocation (Reference .MOD_ID , "widget/swap_to_head_highlighted" )
42
+ );
43
+ private static final WidgetSprites MIRROR_HANDS_SPRITES = new WidgetSprites (
44
+ new ResourceLocation (Reference .MOD_ID , "widget/mirror_hands" ), new ResourceLocation (Reference .MOD_ID , "widget/mirror_hands_highlighted" )
45
+ );
28
46
private final ArmorStand entityArmorStand ;
29
47
private final ArmorStandData armorStandData ;
30
48
@@ -152,14 +170,14 @@ public void init() {
152
170
}).bounds (offsetX + 66 , offsetY + 22 , 64 , 20 ).tooltip (Tooltip .create (Component .translatable ("armorposer.gui.tooltip.paste" ))).build ());
153
171
154
172
offsetX = this .width - 20 ;
155
- this .addRenderableWidget (new PoseImageButton (offsetX - (22 * 6 ) - 30 , offsetY , (button ) -> {
173
+ ImageButton mirrorPose = this .addRenderableWidget (new ImageButton (offsetX - (22 * 6 ) - 30 , offsetY , 20 , 20 , MIRROR_POSE_SPRITES , (button ) -> {
156
174
//Mirror head
157
175
float [] head = new float []{poseTextFields [0 ].getFloat (), poseTextFields [1 ].getFloat (), poseTextFields [2 ].getFloat ()};
158
176
poseTextFields [0 ].setValue (String .valueOf (head [0 ]));
159
177
poseTextFields [1 ].setValue (String .valueOf (head [1 ] != 0 ? -head [1 ] : 0 ));
160
178
poseTextFields [2 ].setValue (String .valueOf (head [2 ] != 0 ? -head [2 ] : 0 ));
161
179
162
- //Mirror head
180
+ //Mirror Body
163
181
float [] body = new float []{poseTextFields [3 ].getFloat (), poseTextFields [4 ].getFloat (), poseTextFields [5 ].getFloat ()};
164
182
poseTextFields [3 ].setValue (String .valueOf (body [0 ]));
165
183
poseTextFields [4 ].setValue (String .valueOf (body [1 ] != 0 ? -body [1 ] : 0 ));
@@ -188,9 +206,10 @@ public void init() {
188
206
poseTextFields [15 ].setValue (String .valueOf (leftArm [0 ]));
189
207
poseTextFields [16 ].setValue (String .valueOf (leftArm [1 ] != 0 ? -leftArm [1 ] : 0 ));
190
208
poseTextFields [17 ].setValue (String .valueOf (leftArm [2 ] != 0 ? -leftArm [2 ] : 0 ));
209
+ }));
210
+ mirrorPose .setTooltip (Tooltip .create (Component .translatable ("armorposer.gui.tooltip.mirror" )));
191
211
192
- }, 0 , Tooltip .create (Component .translatable ("armorposer.gui.tooltip.mirror" ))));
193
- this .addRenderableWidget (new PoseImageButton (offsetX - (22 * 5 ) - 30 , offsetY , (button ) -> {
212
+ ImageButton mirrorLegs = this .addRenderableWidget (new ImageButton (offsetX - (22 * 5 ) - 30 , offsetY , 20 , 20 , MIRROR_LEGS_SPRITES , (button ) -> {
194
213
//Mirror Legs
195
214
float [] leftLeg = new float []{poseTextFields [6 ].getFloat (), poseTextFields [7 ].getFloat (), poseTextFields [8 ].getFloat ()};
196
215
float [] rightLeg = new float []{poseTextFields [9 ].getFloat (), poseTextFields [10 ].getFloat (), poseTextFields [11 ].getFloat ()};
@@ -202,8 +221,10 @@ public void init() {
202
221
poseTextFields [9 ].setValue (String .valueOf (leftLeg [0 ]));
203
222
poseTextFields [10 ].setValue (String .valueOf (leftLeg [1 ] != 0 ? -leftLeg [1 ] : 0 ));
204
223
poseTextFields [11 ].setValue (String .valueOf (leftLeg [2 ] != 0 ? -leftLeg [2 ] : 0 ));
205
- }, 1 , Tooltip .create (Component .translatable ("armorposer.gui.tooltip.mirror_legs" ))));
206
- this .addRenderableWidget (new PoseImageButton (offsetX - (22 * 4 ) - 30 , offsetY , (button ) -> {
224
+ }));
225
+ mirrorLegs .setTooltip (Tooltip .create (Component .translatable ("armorposer.gui.tooltip.mirror_legs" )));
226
+
227
+ ImageButton mirrorArms = this .addRenderableWidget (new ImageButton (offsetX - (22 * 4 ) - 30 , offsetY , 20 , 20 , MIRROR_ARMS_SPRITES , (button ) -> {
207
228
//Mirror Arms
208
229
float [] leftArm = new float []{poseTextFields [12 ].getFloat (), poseTextFields [13 ].getFloat (), poseTextFields [14 ].getFloat ()};
209
230
float [] rightArm = new float []{poseTextFields [15 ].getFloat (), poseTextFields [16 ].getFloat (), poseTextFields [17 ].getFloat ()};
@@ -215,17 +236,23 @@ public void init() {
215
236
poseTextFields [15 ].setValue (String .valueOf (leftArm [0 ]));
216
237
poseTextFields [16 ].setValue (String .valueOf (leftArm [1 ] != 0 ? -leftArm [1 ] : 0 ));
217
238
poseTextFields [17 ].setValue (String .valueOf (leftArm [2 ] != 0 ? -leftArm [2 ] : 0 ));
218
- }, 2 , Tooltip .create (Component .translatable ("armorposer.gui.tooltip.mirror_arms" ))));
219
- this .addRenderableWidget (new PoseImageButton (offsetX - (22 * 3 ) - 30 , offsetY , (button ) -> {
239
+ }));
240
+ mirrorArms .setTooltip (Tooltip .create (Component .translatable ("armorposer.gui.tooltip.mirror_arms" )));
241
+
242
+ ImageButton swapToHead = this .addRenderableWidget (new ImageButton (offsetX - (22 * 3 ) - 30 , offsetY , 20 , 20 , SWAP_TO_HEAD_SPRITES , (button ) -> {
220
243
//Swap item in main hand with head
221
244
Services .PLATFORM .swapSlots (this .entityArmorStand , SwapData .Action .SWAP_WITH_HEAD );
222
245
223
- }, 3 , Tooltip .create (Component .translatable ("armorposer.gui.tooltip.swap_head" ))));
224
- this .addRenderableWidget (new PoseImageButton (offsetX - (22 * 2 ) - 30 , offsetY , (button ) -> {
246
+ }));
247
+ swapToHead .setTooltip (Tooltip .create (Component .translatable ("armorposer.gui.tooltip.swap_head" )));
248
+
249
+ ImageButton swapHands = this .addRenderableWidget (new ImageButton (offsetX - (22 * 2 ) - 30 , offsetY , 20 , 20 , MIRROR_HANDS_SPRITES , (button ) -> {
225
250
//Swap item in main and offhand
226
251
Services .PLATFORM .swapSlots (this .entityArmorStand , SwapData .Action .SWAP_HANDS );
227
252
228
- }, 4 , Tooltip .create (Component .translatable ("armorposer.gui.tooltip.swap_hands" ))));
253
+ }));
254
+ swapHands .setTooltip (Tooltip .create (Component .translatable ("armorposer.gui.tooltip.swap_hands" )));
255
+
229
256
this .addRenderableWidget (this .lockButton = new LockIconButton (offsetX - (22 ) - 30 , offsetY , (button ) -> {
230
257
this .lockButton .setLocked (!this .lockButton .isLocked ());
231
258
}));
0 commit comments