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

Commit bfb3838

Browse files
committed
add confirmation screens to important actions
1 parent 4ae60f9 commit bfb3838

File tree

25 files changed

+167
-64
lines changed

25 files changed

+167
-64
lines changed

1.16_combat-6/src/main/java/io/github/axolotlclient/api/chat/ChatListWidget.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,10 @@
3030
import io.github.axolotlclient.api.ContextMenuScreen;
3131
import io.github.axolotlclient.api.requests.ChannelRequest;
3232
import io.github.axolotlclient.api.types.Channel;
33+
import io.github.axolotlclient.api.types.Relation;
3334
import net.minecraft.client.MinecraftClient;
3435
import net.minecraft.client.gui.Element;
36+
import net.minecraft.client.gui.screen.ConfirmScreen;
3537
import net.minecraft.client.gui.widget.ButtonWidget;
3638
import net.minecraft.client.gui.widget.ElementListWidget;
3739
import net.minecraft.client.util.math.MatrixStack;
@@ -100,11 +102,19 @@ public boolean mouseClicked(double mouseX, double mouseY, int button) {
100102
.entry(new TranslatableText("api.channel.configure"), w -> client.openScreen(new ChannelSettingsScreen(ChatListWidget.this.screen.getSelf(), channel)))
101103
.spacer();
102104
if (channel.getOwner().equals(API.getInstance().getSelf())) {
103-
builder.entry(new TranslatableText("api.channel.delete"), w ->
104-
ChannelRequest.leaveOrDeleteChannel(channel).whenComplete((o, throwable) -> client.execute(() -> client.openScreen(screen.getSelf()))));
105+
builder.entry(new TranslatableText("api.channel.delete"), w -> client.openScreen(new ConfirmScreen(bl -> {
106+
if (bl) {
107+
ChannelRequest.leaveOrDeleteChannel(channel).whenComplete((o, throwable) -> client.execute(() -> client.openScreen(screen.getSelf())));
108+
}
109+
}, new TranslatableText("api.channels.delete.confirm"), new TranslatableText("api.channels.delete.confirm.desc", channel.getName()))));
105110
} else {
106-
builder.entry(new TranslatableText("api.channel.leave"), w ->
107-
ChannelRequest.leaveOrDeleteChannel(channel).whenComplete((o, throwable) -> client.execute(() -> client.openScreen(screen.getSelf()))));
111+
builder.entry(new TranslatableText("api.channel.leave"), w -> client.openScreen(new ConfirmScreen(bl -> {
112+
if (bl) {
113+
ChannelRequest.leaveOrDeleteChannel(channel).whenComplete((o, throwable) -> client.execute(() -> client.openScreen(screen.getSelf())));
114+
}
115+
}, new TranslatableText("api.channels.leave.confirm"), channel.getOwner().getRelation() == Relation.FRIEND ?
116+
new TranslatableText("api.channels.leave.confirm.desc_add", channel.getName()) :
117+
new TranslatableText("api.channels.leave.confirm.desc_invite", channel.getName()))));
108118
}
109119
ChatListWidget.this.screen.setContextMenu(builder.build());
110120
return true;

1.16_combat-6/src/main/java/io/github/axolotlclient/api/chat/ChatWidget.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@
4343
import io.github.axolotlclient.util.ClientColors;
4444
import lombok.Getter;
4545
import net.minecraft.client.MinecraftClient;
46+
import net.minecraft.client.gui.screen.ConfirmScreen;
47+
import net.minecraft.client.gui.screen.Screen;
4648
import net.minecraft.client.gui.widget.AlwaysSelectedEntryListWidget;
4749
import net.minecraft.client.util.math.MatrixStack;
4850
import net.minecraft.text.*;
@@ -187,7 +189,13 @@ public boolean mouseClicked(double mouseX, double mouseY, int button) {
187189
.spacer();
188190
}
189191
builder.entry(new TranslatableText("api.chat.report.message"), buttonWidget -> {
190-
ChatHandler.getInstance().reportMessage(origin);
192+
Screen previous = client.currentScreen;
193+
client.openScreen(new ConfirmScreen(b -> {
194+
if (b) {
195+
ChatHandler.getInstance().reportMessage(origin);
196+
}
197+
client.openScreen(previous);
198+
}, new TranslatableText("api.channels.confirm_report"), new TranslatableText("api.channels.confirm_report.desc", origin.content())));
191199
})
192200
.spacer()
193201
.entry(new TranslatableText("action.copy"), buttonWidget -> {

1.16_combat-6/src/main/java/io/github/axolotlclient/api/chat/CreateChannelScreen.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -148,8 +148,8 @@ public Persistence.Type getValue() {
148148
addButton(new ButtonWidget(width / 2 + 4, footerY, 150, 20, ScreenTexts.DONE, widget -> {
149149
ChannelRequest.createChannel(nameField.getText(),
150150
Persistence.of(persistence.getValue(), count.get().get(), duration.get().get()),
151-
Arrays.stream(namesInput.getText().split(",")).filter(s -> !s.isEmpty()).map(UUIDHelper::ensureUuid).toArray(String[]::new));
152-
client.openScreen(parent);
151+
Arrays.stream(namesInput.getText().split(",")).filter(s -> !s.isEmpty()).map(UUIDHelper::ensureUuid).toArray(String[]::new))
152+
.thenRun(() -> client.submit(() -> client.openScreen(parent)));;
153153
}));
154154
}
155155

1.20/src/main/java/io/github/axolotlclient/api/chat/ChatListWidget.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,12 @@
3030
import io.github.axolotlclient.api.ContextMenuScreen;
3131
import io.github.axolotlclient.api.requests.ChannelRequest;
3232
import io.github.axolotlclient.api.types.Channel;
33+
import io.github.axolotlclient.api.types.Relation;
3334
import net.minecraft.client.MinecraftClient;
3435
import net.minecraft.client.gui.Element;
3536
import net.minecraft.client.gui.GuiGraphics;
3637
import net.minecraft.client.gui.Selectable;
38+
import net.minecraft.client.gui.screen.ConfirmScreen;
3739
import net.minecraft.client.gui.widget.ButtonWidget;
3840
import net.minecraft.client.gui.widget.ElementListWidget;
3941
import net.minecraft.text.Text;
@@ -101,11 +103,19 @@ public boolean mouseClicked(double mouseX, double mouseY, int button) {
101103
.entry(Text.translatable("api.channel.configure"), w -> client.setScreen(new ChannelSettingsScreen(ChatListWidget.this.screen.getSelf(), channel)))
102104
.spacer();
103105
if (channel.getOwner().equals(API.getInstance().getSelf())) {
104-
builder.entry(Text.translatable("api.channel.delete"), w ->
105-
ChannelRequest.leaveOrDeleteChannel(channel).whenComplete((o, throwable) -> client.execute(() -> client.setScreen(screen.getSelf()))));
106+
builder.entry(Text.translatable("api.channel.delete"), w -> client.setScreen(new ConfirmScreen(bl -> {
107+
if (bl) {
108+
ChannelRequest.leaveOrDeleteChannel(channel).whenComplete((o, throwable) -> client.execute(() -> client.setScreen(screen.getSelf())));
109+
}
110+
}, Text.translatable("api.channels.delete.confirm"), Text.translatable("api.channels.delete.confirm.desc", channel.getName()))));
106111
} else {
107-
builder.entry(Text.translatable("api.channel.leave"), w ->
108-
ChannelRequest.leaveOrDeleteChannel(channel).whenComplete((o, throwable) -> client.execute(() -> client.setScreen(screen.getSelf()))));
112+
builder.entry(Text.translatable("api.channel.leave"), w -> client.setScreen(new ConfirmScreen(bl -> {
113+
if (bl) {
114+
ChannelRequest.leaveOrDeleteChannel(channel).whenComplete((o, throwable) -> client.execute(() -> client.setScreen(screen.getSelf())));
115+
}
116+
}, Text.translatable("api.channels.leave.confirm"), channel.getOwner().getRelation() == Relation.FRIEND ?
117+
Text.translatable("api.channels.leave.confirm.desc_add", channel.getName()) :
118+
Text.translatable("api.channels.leave.confirm.desc_invite", channel.getName()))));
109119
}
110120
ChatListWidget.this.screen.setContextMenu(builder.build());
111121
return true;

1.20/src/main/java/io/github/axolotlclient/api/chat/ChatWidget.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@
4343
import lombok.Getter;
4444
import net.minecraft.client.MinecraftClient;
4545
import net.minecraft.client.gui.GuiGraphics;
46+
import net.minecraft.client.gui.screen.ConfirmScreen;
47+
import net.minecraft.client.gui.screen.Screen;
4648
import net.minecraft.client.gui.widget.AlwaysSelectedEntryListWidget;
4749
import net.minecraft.text.OrderedText;
4850
import net.minecraft.text.Style;
@@ -174,7 +176,13 @@ public boolean mouseClicked(double mouseX, double mouseY, int button) {
174176
.spacer();
175177
}
176178
builder.entry(Text.translatable("api.chat.report.message"), buttonWidget -> {
177-
ChatHandler.getInstance().reportMessage(origin);
179+
Screen previous = client.currentScreen;
180+
client.setScreen(new ConfirmScreen(b -> {
181+
if (b) {
182+
ChatHandler.getInstance().reportMessage(origin);
183+
}
184+
client.setScreen(previous);
185+
}, Text.translatable("api.channels.confirm_report"), Text.translatable("api.channels.confirm_report.desc", origin.content())));
178186
})
179187
.spacer()
180188
.entry(Text.translatable("action.copy"), buttonWidget -> {

1.20/src/main/java/io/github/axolotlclient/api/chat/CreateChannelScreen.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,8 @@ protected void init() {
120120
addDrawableChild(ButtonWidget.builder(CommonTexts.DONE, widget -> {
121121
ChannelRequest.createChannel(nameField.getText(),
122122
Persistence.of(persistence.getValue(), count.get().get(), duration.get().get()),
123-
Arrays.stream(namesInput.getText().split(",")).filter(s -> !s.isEmpty()).map(UUIDHelper::ensureUuid).toArray(String[]::new));
124-
client.setScreen(parent);
123+
Arrays.stream(namesInput.getText().split(",")).filter(s -> !s.isEmpty()).map(UUIDHelper::ensureUuid).toArray(String[]::new))
124+
.thenRun(() -> client.submit(() -> client.setScreen(parent)));
125125
}).positionAndSize(width / 2 + 4, footerY, 150, 20).build());
126126
}
127127

1.21.3/src/main/java/io/github/axolotlclient/api/chat/ChatListWidget.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,14 @@
3030
import io.github.axolotlclient.api.ContextMenuScreen;
3131
import io.github.axolotlclient.api.requests.ChannelRequest;
3232
import io.github.axolotlclient.api.types.Channel;
33+
import io.github.axolotlclient.api.types.Relation;
3334
import net.minecraft.client.Minecraft;
3435
import net.minecraft.client.gui.GuiGraphics;
3536
import net.minecraft.client.gui.components.Button;
3637
import net.minecraft.client.gui.components.ContainerObjectSelectionList;
3738
import net.minecraft.client.gui.components.events.GuiEventListener;
3839
import net.minecraft.client.gui.narration.NarratableEntry;
40+
import net.minecraft.client.gui.screens.ConfirmScreen;
3941
import net.minecraft.network.chat.Component;
4042
import org.jetbrains.annotations.NotNull;
4143

@@ -107,11 +109,19 @@ public boolean mouseClicked(double mouseX, double mouseY, int button) {
107109
.entry(Component.translatable("api.channel.configure"), w -> minecraft.setScreen(new ChannelSettingsScreen(ChatListWidget.this.screen.getSelf(), channel)))
108110
.spacer();
109111
if (channel.getOwner().equals(API.getInstance().getSelf())) {
110-
builder.entry(Component.translatable("api.channel.delete"), w ->
111-
ChannelRequest.leaveOrDeleteChannel(channel).whenComplete((o, throwable) -> minecraft.execute(() -> minecraft.setScreen(screen.getSelf()))));
112+
builder.entry(Component.translatable("api.channel.delete"), w -> minecraft.setScreen(new ConfirmScreen(bl -> {
113+
if (bl) {
114+
ChannelRequest.leaveOrDeleteChannel(channel).whenComplete((o, throwable) -> minecraft.execute(() -> minecraft.setScreen(screen.getSelf())));
115+
}
116+
}, Component.translatable("api.channels.delete.confirm"), Component.translatable("api.channels.delete.confirm.desc", channel.getName()))));
112117
} else {
113-
builder.entry(Component.translatable("api.channel.leave"), w ->
114-
ChannelRequest.leaveOrDeleteChannel(channel).whenComplete((o, throwable) -> minecraft.execute(() -> minecraft.setScreen(screen.getSelf()))));
118+
builder.entry(Component.translatable("api.channel.leave"), w -> minecraft.setScreen(new ConfirmScreen(bl -> {
119+
if (bl) {
120+
ChannelRequest.leaveOrDeleteChannel(channel).whenComplete((o, throwable) -> minecraft.execute(() -> minecraft.setScreen(screen.getSelf())));
121+
}
122+
}, Component.translatable("api.channels.leave.confirm"), channel.getOwner().getRelation() == Relation.FRIEND ?
123+
Component.translatable("api.channels.leave.confirm.desc_add", channel.getName()) :
124+
Component.translatable("api.channels.leave.confirm.desc_invite", channel.getName()))));
115125
}
116126
ChatListWidget.this.screen.setContextMenu(builder.build());
117127
return true;

1.21.3/src/main/java/io/github/axolotlclient/api/chat/ChatWidget.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@
4646
import net.minecraft.client.gui.GuiGraphics;
4747
import net.minecraft.client.gui.components.ObjectSelectionList;
4848
import net.minecraft.client.gui.components.PlayerFaceRenderer;
49+
import net.minecraft.client.gui.screens.ConfirmScreen;
50+
import net.minecraft.client.gui.screens.Screen;
4951
import net.minecraft.network.chat.Component;
5052
import net.minecraft.network.chat.Style;
5153
import net.minecraft.resources.ResourceLocation;
@@ -184,7 +186,13 @@ public boolean mouseClicked(double mouseX, double mouseY, int button) {
184186
}).spacer();
185187
}
186188
builder.entry(Component.translatable("api.chat.report.message"), buttonWidget -> {
187-
ChatHandler.getInstance().reportMessage(origin);
189+
Screen previous = client.screen;
190+
client.setScreen(new ConfirmScreen(b -> {
191+
if (b) {
192+
ChatHandler.getInstance().reportMessage(origin);
193+
}
194+
client.setScreen(previous);
195+
}, Component.translatable("api.channels.confirm_report"), Component.translatable("api.channels.confirm_report.desc", origin.content())));
188196
}).spacer().entry(Component.translatable("action.copy"), buttonWidget -> {
189197
client.keyboardHandler.setClipboard(origin.content());
190198
});

1.21.3/src/main/java/io/github/axolotlclient/api/chat/CreateChannelScreen.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,7 @@ protected void init() {
115115
),
116116
Arrays.stream(namesInput.getValue().split(",")).filter(s -> !s.isEmpty()).map(UUIDHelper::ensureUuid)
117117
.toArray(String[]::new)
118-
);
119-
minecraft.setScreen(parent);
118+
).thenRun(() -> minecraft.submit(() -> minecraft.setScreen(parent)));
120119
}).build());
121120
layout.addToFooter(footer);
122121

1.21.3/src/main/java/io/github/axolotlclient/modules/screenshotUtils/ScreenshotUtils.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,13 +116,13 @@ public MutableComponent onScreenshotTaken(MutableComponent text, File shot) {
116116

117117
private @Nullable Component getUtilsText(File file) {
118118
if (!autoExec.get().equals("off")) {
119-
actions.parallelStream().filter(action -> autoExec.get().equals(action.getName())).toList()
120-
.get(0).clickEvent.setFile(file).doAction();
119+
actions.stream().filter(action -> autoExec.get().equals(action.getName())).toList()
120+
.getFirst().clickEvent.setFile(file).doAction();
121121
return null;
122122
}
123123

124124
MutableComponent message = Component.empty();
125-
actions.parallelStream().map(action -> action.getText(file)).iterator().forEachRemaining(text -> {
125+
actions.stream().map(action -> action.getText(file)).forEachOrdered(text -> {
126126
message.append(text);
127127
message.append(" ");
128128
});

0 commit comments

Comments
 (0)