1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
package de.hysky.skyblocker.skyblock.auction;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.skyblock.calculators.SignCalculator;
import de.hysky.skyblocker.utils.render.gui.AbstractPopupScreen;
import net.minecraft.block.entity.SignBlockEntity;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.widget.*;
import net.minecraft.network.packet.c2s.play.UpdateSignC2SPacket;
import net.minecraft.text.Style;
import net.minecraft.text.Text;
import org.jetbrains.annotations.NotNull;
public class EditBidPopup extends AbstractPopupScreen {
private DirectionalLayoutWidget layout = DirectionalLayoutWidget.vertical();
private final String minimumBid;
private final SignBlockEntity signBlockEntity;
private final boolean signFront;
private TextFieldWidget textFieldWidget;
private boolean packetSent = false;
public EditBidPopup(AuctionViewScreen auctionViewScreen, @NotNull SignBlockEntity signBlockEntity, boolean signFront, String minimumBid) {
super(Text.literal("Edit Bid"), auctionViewScreen);
this.minimumBid = minimumBid;
this.signBlockEntity = signBlockEntity;
this.signFront = signFront;
}
@Override
protected void init() {
super.init();
layout = DirectionalLayoutWidget.vertical();
layout.spacing(8).getMainPositioner().alignHorizontalCenter();
textFieldWidget = new EnterConfirmTextFieldWidget(textRenderer, 120, 15, Text.empty(), () -> done(null));
textFieldWidget.setTextPredicate(this::isStringGood);
layout.add(new TextWidget(Text.literal("- Set Bid -").fillStyle(Style.EMPTY.withBold(true)), textRenderer));
layout.add(textFieldWidget);
layout.add(new TextWidget(Text.literal("Minimum Bid: " + minimumBid), textRenderer));
DirectionalLayoutWidget horizontal = DirectionalLayoutWidget.horizontal();
ButtonWidget buttonWidget = ButtonWidget.builder(Text.literal("Set Minimum Bid"), this::buttonMinimumBid).width(80).build();
buttonWidget.active = isStringGood(minimumBid);
horizontal.add(buttonWidget);
horizontal.add(ButtonWidget.builder(Text.literal("Done"), this::done).width(80).build());
layout.add(horizontal);
layout.forEachChild(this::addDrawableChild);
this.layout.refreshPositions();
SimplePositioningWidget.setPos(layout, this.getNavigationFocus());
setInitialFocus(textFieldWidget);
}
@Override
public void renderBackground(DrawContext context, int mouseX, int mouseY, float delta) {
super.renderBackground(context, mouseX, mouseY, delta);
drawPopupBackground(context, layout.getX(), layout.getY(), layout.getWidth(), layout.getHeight());
if (SkyblockerConfigManager.get().uiAndVisuals.inputCalculator.enabled) {
SignCalculator.renderCalculator(context, textFieldWidget.getText(), context.getScaledWindowWidth() / 2, textFieldWidget.getY() - 8);
}
}
private boolean isStringGood(String s) {
assert this.client != null;
return this.client.textRenderer.getWidth(minimumBid) <= this.signBlockEntity.getMaxTextWidth();
}
private void buttonMinimumBid(ButtonWidget widget) {
if (!isStringGood(minimumBid)) return;
sendPacket(minimumBid);
this.close();
}
private void done(ButtonWidget widget) {
if (SkyblockerConfigManager.get().uiAndVisuals.inputCalculator.enabled) {
if (!isStringGood(SignCalculator.getNewValue(false))) return;
sendPacket(SignCalculator.getNewValue(false));
} else {
if (!isStringGood(textFieldWidget.getText().trim())) return;
sendPacket(textFieldWidget.getText().trim());
}
this.close();
}
private void sendPacket(String string) {
assert MinecraftClient.getInstance().player != null;
MinecraftClient.getInstance().player.networkHandler.sendPacket(new UpdateSignC2SPacket(signBlockEntity.getPos(), signFront,
string.replace("coins", ""),
"",
"",
""
));
packetSent = true;
}
@Override
public void close() {
if (!packetSent) sendPacket("");
assert this.client != null;
this.client.setScreen(null);
}
@Override
public void removed() {
if (!packetSent) sendPacket("");
super.removed();
}
}
|