1
1
package dev .dfonline .codeclient .dev .menu .customchest ;
2
2
3
- import dev .dfonline .codeclient .CodeClient ;
3
+ import dev .dfonline .codeclient .Utility ;
4
4
import dev .dfonline .codeclient .hypercube .Target ;
5
5
import dev .dfonline .codeclient .hypercube .item .*;
6
6
import net .minecraft .client .font .TextRenderer ;
7
7
import net .minecraft .client .gui .DrawContext ;
8
8
import net .minecraft .client .gui .Drawable ;
9
9
import net .minecraft .client .gui .navigation .GuiNavigationPath ;
10
- import net .minecraft .client .gui .screen .ButtonTextures ;
11
- import net .minecraft .client .gui .screen .GameModeSelectionScreen ;
12
10
import net .minecraft .client .gui .screen .narration .NarrationMessageBuilder ;
13
11
import net .minecraft .client .gui .screen .narration .NarrationPart ;
14
12
import net .minecraft .client .gui .widget .*;
13
+ import net .minecraft .item .ItemStack ;
15
14
import net .minecraft .screen .ScreenHandler ;
15
+ import net .minecraft .screen .ScreenTexts ;
16
16
import net .minecraft .text .Style ;
17
17
import net .minecraft .text .Text ;
18
- import net .minecraft .util .Identifier ;
18
+ import net .minecraft .util .Formatting ;
19
19
import org .jetbrains .annotations .Nullable ;
20
20
21
21
import java .util .ArrayList ;
@@ -25,7 +25,7 @@ public class CustomChestField<ItemType extends VarItem> extends ClickableWidget
25
25
private final List <Drawable > widgets ;
26
26
public ItemType item ;
27
27
28
- public CustomChestField (TextRenderer textRender , int x , int y , int width , int height , Text message , ItemType item , ScreenHandler handler ) {
28
+ public CustomChestField (TextRenderer textRender , int x , int y , int width , int height , Text message , ItemStack stack , ItemType item , ScreenHandler handler ) {
29
29
super (x , y , width , height , message );
30
30
this .item = item ;
31
31
var widgets = new ArrayList <Drawable >();
@@ -37,11 +37,11 @@ public CustomChestField(TextRenderer textRender, int x, int y, int width, int he
37
37
scopeWidget .setValue (var .getScope ());
38
38
widgets .add (scopeWidget );
39
39
}
40
- if (item instanceof Parameter parameter ) {
41
- textboxWidth = textboxWidth - 18 ;
42
-
43
- widgets .add (new FakeSlot (x +textboxWidth ,y ,Text .literal ("Paramater Data" ), handler ));
44
- }
40
+ // if(item instanceof Parameter parameter) {
41
+ // textboxWidth = textboxWidth - 18;
42
+ //
43
+ // widgets.add(new FakeSlot(x+textboxWidth,y,Text.literal("Paramater Data"), handler));
44
+ // }
45
45
var text = new TextFieldWidget (textRender ,x ,y ,textboxWidth ,height ,Text .literal ("" ));
46
46
text .setMaxLength (10000 );
47
47
text .setText (named .getName ());
@@ -92,40 +92,52 @@ public CustomChestField(TextRenderer textRender, int x, int y, int width, int he
92
92
}
93
93
}
94
94
if (item instanceof Potion pot ) {
95
- int durationWidth = 30 ;
96
- int potencyWidth = 30 ;
95
+ int durationWidth = 45 ;
96
+ int potencyWidth = 32 ;
97
97
int textboxWidth = width - durationWidth - potencyWidth ;
98
98
var text = new TextFieldWidget (textRender ,x ,y ,textboxWidth ,height ,Text .literal ("" ));
99
99
text .setText (pot .getPotion ());
100
100
widgets .add (text );
101
- var potency = new NumberFieldWidget (textRender ,x +textboxWidth ,y ,potencyWidth ,height ,Text .empty ()).integer ();
101
+ var potency = new NumberFieldWidget (textRender ,x +textboxWidth ,y ,potencyWidth ,height ,Text .empty ()).integer (). min (- 255 ). max ( 255 ) ;
102
102
potency .setNumber (pot .getAmplifier () + 1 );
103
103
widgets .add (potency );
104
104
var duration = new TextFieldWidget (textRender ,x +textboxWidth +potencyWidth ,y ,durationWidth ,height ,Text .empty ());
105
- duration .setText (String . valueOf ( pot .getDuration () ));
105
+ duration .setText (pot .duration (). replaceAll ( " ticks" , "" ));
106
106
widgets .add (duration );
107
107
}
108
108
if (item instanceof Sound sound ) {
109
- int volumeWidth = 20 ;
110
- int pitchWidth = 20 ;
109
+ int volumeWidth = 30 ;
110
+ int pitchWidth = 30 ;
111
111
int textboxWidth = width - volumeWidth - pitchWidth ;
112
112
var text = new TextFieldWidget (textRender ,x ,y ,textboxWidth ,height ,Text .literal ("" ));
113
113
text .setText (sound .getSound ());
114
114
widgets .add (text );
115
- var volume = new NumberFieldWidget (textRender ,x +textboxWidth ,y ,volumeWidth ,height ,Text .empty ());
115
+ var volume = new NumberFieldWidget (textRender ,x +textboxWidth ,y ,volumeWidth ,height ,Text .empty ()). min ( 0 ) ;
116
116
volume .setNumber (sound .getVolume ());
117
117
widgets .add (volume );
118
- var pitch = new NumberFieldWidget (textRender ,x +textboxWidth +volumeWidth ,y ,pitchWidth ,height ,Text .empty ());
118
+ var pitch = new NumberFieldWidget (textRender ,x +textboxWidth +volumeWidth ,y ,pitchWidth ,height ,Text .empty ()). min ( 0 ). max ( 2 ) ;
119
119
pitch .setNumber (sound .getPitch ());
120
120
widgets .add (pitch );
121
121
}
122
122
if (item instanceof BlockTag tag ) {
123
- int slotSize = 18 ;
124
- int textboxWidth = width - slotSize ;
125
- widgets .add (new CyclingButtonWidget .Builder <>(Text ::literal ).values ("A" , "B" , "C" ).build (x ,y ,textboxWidth ,height ,Text .empty ()));
126
- var varItem = new FakeSlot (x + textboxWidth , y , Text .empty (), handler );
127
- if (tag .getVariable () != null ) varItem .item = tag .getVariable ().toStack ();
128
- widgets .add (varItem );
123
+ // int slotSize = 18;
124
+ // int textboxWidth = width - slotSize;
125
+ // try {
126
+ // var lines = Utility.getBlockTagLines(stack).values();
127
+ // var builder = new CyclingButtonWidget.Builder<>(Text::literal).values(lines);
128
+ // for (var line: lines) {
129
+ // if(textRender.getWidth(ScreenTexts.composeGenericOptionText(Text.literal(tag.getTag()),Text.literal(line))) > width - 10) {
130
+ // builder.omitKeyText();
131
+ // break;
132
+ // }
133
+ // }
134
+ // widgets.add(builder.build(x,y,textboxWidth,height,Text.literal(tag.getTag())));
135
+ // }
136
+ // catch (Exception ignored) {}
137
+ // var varItem = new FakeSlot(x + textboxWidth, y, Text.empty(), handler);
138
+ // if(tag.getVariable() != null) varItem.item = tag.getVariable().toStack();
139
+ // widgets.add(varItem);
140
+ widgets .add (new TextWidget (x ,y ,width ,height ,ScreenTexts .composeGenericOptionText (Text .literal (tag .getTag ()),Text .literal (tag .getOption ())),textRender ).alignCenter ());
129
141
}
130
142
this .widgets = widgets ;
131
143
}
@@ -174,6 +186,28 @@ private void updateItem() {
174
186
this .item = (ItemType ) loc ;
175
187
}
176
188
}
189
+ if (item instanceof Sound sound ) {
190
+ if (widgets .get (0 ) instanceof TextFieldWidget text ) sound .setSound (text .getText ());
191
+ if (widgets .get (1 ) instanceof NumberFieldWidget num ) sound .setVolume (num .getNumber ());
192
+ if (widgets .get (2 ) instanceof NumberFieldWidget num ) sound .setPitch (num .getNumber ());
193
+ }
194
+ if (item instanceof Potion pot ) {
195
+ if (widgets .get (0 ) instanceof TextFieldWidget text ) pot .setPotion (text .getText ());
196
+ if (widgets .get (1 ) instanceof NumberFieldWidget num ) pot .setAmplifier (num .getInt () - 1 );
197
+ if (widgets .get (2 ) instanceof TextFieldWidget text ) {
198
+ String value = text .getText ();
199
+ try {
200
+ pot .setDuration (Integer .parseInt (value ));
201
+ } catch (Exception ignored ) {
202
+ try {
203
+ var values = value .split (":" );
204
+ pot .setDuration ((Integer .parseInt (values [0 ]) * 60 + Integer .parseInt (values [1 ])) * 20 );
205
+ } catch (Exception ignored2 ) {
206
+ pot .setDuration (1000000 );
207
+ }
208
+ }
209
+ }
210
+ }
177
211
}
178
212
179
213
@ Override
0 commit comments