mirror of
https://github.com/Shiewk/ViewServerResources.git
synced 2026-04-28 03:44:17 +02:00
Add setting for showing URLs in chat
This commit is contained in:
+28
@@ -1,6 +1,8 @@
|
||||
package de.shiewk.resourcepackprivacy.screen;
|
||||
|
||||
import de.shiewk.resourcepackprivacy.client.ResourcePackPrivacyClient;
|
||||
import it.unimi.dsi.fastutil.booleans.Boolean2ObjectFunction;
|
||||
import it.unimi.dsi.fastutil.booleans.BooleanConsumer;
|
||||
import net.minecraft.client.gui.screen.Screen;
|
||||
import net.minecraft.client.gui.widget.ButtonWidget;
|
||||
import net.minecraft.client.gui.widget.GridWidget;
|
||||
@@ -8,9 +10,13 @@ import net.minecraft.client.gui.widget.SimplePositioningWidget;
|
||||
import net.minecraft.client.gui.widget.TextWidget;
|
||||
import net.minecraft.text.Text;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
public class ResourcePackPrivacyConfigScreen extends Screen {
|
||||
private final Screen parent;
|
||||
private static final int buttonWidth = 192;
|
||||
private boolean cfgDirty = false;
|
||||
public ResourcePackPrivacyConfigScreen(Screen parent) {
|
||||
super(Text.translatable("gui.resourcepackprivacy.config"));
|
||||
this.parent = parent;
|
||||
@@ -18,6 +24,9 @@ public class ResourcePackPrivacyConfigScreen extends Screen {
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
if (cfgDirty){
|
||||
ResourcePackPrivacyClient.saveConfig();
|
||||
}
|
||||
assert client != null;
|
||||
client.setScreen(parent);
|
||||
}
|
||||
@@ -33,14 +42,24 @@ public class ResourcePackPrivacyConfigScreen extends Screen {
|
||||
final GridWidget gw = new GridWidget();
|
||||
gw.getMainPositioner().margin(4, 4, 4, 0);
|
||||
final GridWidget.Adder adder = gw.createAdder(2);
|
||||
adder.add(createToggleableLargeButton(
|
||||
ResourcePackPrivacyClient.isBroadcastDownloads(),
|
||||
bl -> Text.translatable("resourcepackprivacy.settings.broadcast", Text.translatable(bl ? "gui.yes" : "gui.no")).withColor(bl ? new Color(100, 255, 100).getRGB() : new Color(255, 100, 100).getRGB()),
|
||||
bl -> {
|
||||
ResourcePackPrivacyClient.setBroadcastDownloads(bl);
|
||||
cfgDirty = true;
|
||||
}
|
||||
), 2);
|
||||
adder.add(createButton(Text.translatable("resourcepackprivacy.settings.whitelistedURLs"), btn -> {
|
||||
btn.active = false;
|
||||
assert client != null;
|
||||
cfgDirty = true;
|
||||
client.setScreen(new ManageListScreen<>(Text.translatable("resourcepackprivacy.settings.whitelistedURLs"), this, ResourcePackPrivacyClient.getWhitelistedURLs()));
|
||||
}));
|
||||
adder.add(createButton(Text.translatable("resourcepackprivacy.settings.whitelistedHosts"), btn -> {
|
||||
btn.active = false;
|
||||
assert client != null;
|
||||
cfgDirty = true;
|
||||
client.setScreen(new ManageListScreen<>(Text.translatable("resourcepackprivacy.settings.whitelistedHosts"), this, ResourcePackPrivacyClient.getWhitelistedHosts()));
|
||||
}));
|
||||
gw.refreshPositions();
|
||||
@@ -52,4 +71,13 @@ public class ResourcePackPrivacyConfigScreen extends Screen {
|
||||
private ButtonWidget createButton(Text m, ButtonWidget.PressAction action){
|
||||
return new ButtonWidget.Builder(m, action).width(buttonWidth).build();
|
||||
}
|
||||
|
||||
private ButtonWidget createToggleableLargeButton(boolean state, Boolean2ObjectFunction<Text> function, BooleanConsumer onToggle){
|
||||
AtomicBoolean bl = new AtomicBoolean(state);
|
||||
return new ButtonWidget.Builder(function.get(state), btn -> {
|
||||
bl.set(!bl.get());
|
||||
onToggle.accept(bl.get());
|
||||
btn.setMessage(function.apply(bl.get()));
|
||||
}).width(buttonWidth * 2 + 8).build();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user