Skip to content
This repository has been archived by the owner on Jan 30, 2024. It is now read-only.

Commit

Permalink
Remove clear buttons
Browse files Browse the repository at this point in the history
  • Loading branch information
mrmelon54 committed Oct 22, 2021
1 parent 0d39e7b commit a96da5c
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 80 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,5 @@ public interface ListWidgetDuckProvider {

List<PackListWidget.ResourcePackEntry> getSyncStoreRP();

List<MultiplayerServerListWidget.ServerEntry> getSyncStoreServer();

void hideHeaderAndShift();
}
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
package net.onpointcoding.enhancedsearchability.mixin;

import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.multiplayer.MultiplayerScreen;
import net.minecraft.client.gui.screen.multiplayer.MultiplayerServerListWidget;
import net.minecraft.client.gui.widget.ButtonWidget;
import net.minecraft.client.gui.widget.TextFieldWidget;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.text.Text;
import net.minecraft.text.TranslatableText;
import net.onpointcoding.enhancedsearchability.duck.ListWidgetDuckProvider;
import net.onpointcoding.enhancedsearchability.utils.ClearableTextFieldDual;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.Redirect;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

@Mixin(MultiplayerScreen.class)
Expand All @@ -24,7 +24,6 @@ public class MixinMultiplayerScreen extends Screen {
@Shadow
private boolean initialized;
private TextFieldWidget serverSearchBox;
private ButtonWidget serverClearButton;

protected MixinMultiplayerScreen(Text title) {
super(title);
Expand All @@ -33,29 +32,31 @@ protected MixinMultiplayerScreen(Text title) {
@Inject(method = "init", at = @At("TAIL"))
private void injected_init(CallbackInfo ci) {
MinecraftClient mc = MinecraftClient.getInstance();
ClearableTextFieldDual a = addSearchBox(mc, this.serverListWidget, this.serverSearchBox);
this.serverSearchBox = a.getTextFieldWidget();
this.serverClearButton = a.getClearButton();
this.serverSearchBox = addSearchBox(mc, this.serverListWidget, this.serverSearchBox);
this.setInitialFocus(this.serverSearchBox);

if (this.initialized)
setupOriginalServerListOffset(this.serverListWidget);
}

@Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/multiplayer/MultiplayerScreen;drawCenteredText(Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/font/TextRenderer;Lnet/minecraft/text/Text;III)V"))
private void redirected_drawCenteredText(MatrixStack matrixStack, TextRenderer textRenderer, Text text, int centerX, int y, int color) {
drawCenteredText(matrixStack, this.textRenderer, this.title, this.width / 2, 8, 16777215);
}

void setupOriginalServerListOffset(MultiplayerServerListWidget multiplayerServerListWidget) {
if (multiplayerServerListWidget instanceof ListWidgetDuckProvider duck)
duck.hideHeaderAndShift();
}

ClearableTextFieldDual addSearchBox(MinecraftClient mc, MultiplayerServerListWidget serverListWidget, TextFieldWidget textFieldWidget) {
textFieldWidget = new TextFieldWidget(mc.textRenderer, serverListWidget.getRowLeft() - 1, 34, serverListWidget.getRowWidth() - 22, 18, textFieldWidget, new TranslatableText("enhancedsearchability.searchbox"));
TextFieldWidget addSearchBox(MinecraftClient mc, MultiplayerServerListWidget serverListWidget, TextFieldWidget textFieldWidget) {
textFieldWidget = new TextFieldWidget(mc.textRenderer, this.width / 2 - 100, 22, 200, 20, textFieldWidget, new TranslatableText("enhancedsearchability.searchbox"));
textFieldWidget.setChangedListener((search) -> {
if (serverListWidget instanceof ListWidgetDuckProvider duckProvider)
duckProvider.filter(() -> search);
});
this.addSelectableChild(textFieldWidget);
TextFieldWidget finalTextFieldWidget = textFieldWidget;
ButtonWidget clearButton = this.addDrawableChild(new ButtonWidget(serverListWidget.getRowLeft() + serverListWidget.getRowWidth() - 22, 33, 20, 20, new TranslatableText("enhancedsearchability.clearbutton"), buttonWidget -> finalTextFieldWidget.setText("")));
return new ClearableTextFieldDual(textFieldWidget, clearButton);
return textFieldWidget;
}

@Inject(method = "render", at = @At("TAIL"))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package net.onpointcoding.enhancedsearchability.mixin;

import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.multiplayer.MultiplayerScreen;
import net.minecraft.client.gui.screen.multiplayer.MultiplayerServerListWidget;
import net.minecraft.client.gui.screen.pack.PackListWidget;
import net.minecraft.client.gui.widget.AlwaysSelectedEntryListWidget;
Expand All @@ -24,15 +23,10 @@

@Mixin(MultiplayerServerListWidget.class)
public class MixinMultiplayerServerListWidget extends AlwaysSelectedEntryListWidget<MultiplayerServerListWidget.Entry> implements ListWidgetDuckProvider {
@Shadow
@Final
private MultiplayerScreen screen;
@Shadow
@Final
private List<MultiplayerServerListWidget.LanServerEntry> lanServers;
@Shadow
@Final
private MultiplayerServerListWidget.Entry scanningEntry;

private final List<MultiplayerServerListWidget.ServerEntry> serverSyncStore = new ArrayList<>();
private final List<MultiplayerServerListWidget.LanServerEntry> lanServerSyncStore = new ArrayList<>();
private Supplier<String> searchTextStore = () -> "";
Expand Down Expand Up @@ -93,14 +87,9 @@ public List<PackListWidget.ResourcePackEntry> getSyncStoreRP() {
return null;
}

@Override
public List<MultiplayerServerListWidget.ServerEntry> getSyncStoreServer() {
return serverSyncStore;
}

@Override
public void hideHeaderAndShift() {
this.top += 25;
this.top += 15;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package net.onpointcoding.enhancedsearchability.mixin;

import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.multiplayer.MultiplayerServerListWidget;
import net.minecraft.client.gui.screen.pack.PackListWidget;
import net.minecraft.client.gui.widget.EntryListWidget;
import net.minecraft.text.Text;
Expand Down Expand Up @@ -31,7 +30,7 @@ public MixinPackListWidget(MinecraftClient minecraftClient, int i, int j, int k,

@Redirect(method = "<init>", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/pack/PackListWidget;setRenderHeader(ZI)V"))
private void redirected_setRenderHeader(PackListWidget instance, boolean b, int i) {
this.setRenderHeader(b, i + 20);
this.setRenderHeader(b, i + 22);
}

@Override
Expand Down Expand Up @@ -80,8 +79,4 @@ public List<PackListWidget.ResourcePackEntry> getSyncStoreRP() {
return storeChildren;
}

@Override
public List<MultiplayerServerListWidget.ServerEntry> getSyncStoreServer() {
return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,9 @@
import net.minecraft.text.TranslatableText;
import net.minecraft.util.Formatting;
import net.onpointcoding.enhancedsearchability.duck.ListWidgetDuckProvider;
import net.onpointcoding.enhancedsearchability.utils.ClearableTextFieldDual;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
Expand All @@ -38,30 +36,22 @@ public abstract class MixinPackScreen extends Screen {
@Shadow
@Final
private ResourcePackOrganizer organizer;
@Unique

private TextFieldWidget availablePackSearchBox;
@Unique
private TextFieldWidget selectedPackSearchBox;

@Shadow
public abstract void render(MatrixStack matrices, int mouseX, int mouseY, float delta);

private ButtonWidget availablePackClearButton;
private ButtonWidget selectedPackClearButton;

protected MixinPackScreen(Text text) {
super(text);
}

@Inject(method = "init", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/pack/PackScreen;refresh()V", shift = At.Shift.BEFORE))
private void injected_init(CallbackInfo ci) {
MinecraftClient mc = MinecraftClient.getInstance();
ClearableTextFieldDual a = addSearchBox(mc, this.availablePackList, this.availablePackSearchBox, new TranslatableText("pack.available.title"), this.width / 2 - 4 - 200);
this.availablePackSearchBox = a.getTextFieldWidget();
this.availablePackClearButton = a.getClearButton();
ClearableTextFieldDual b = addSearchBox(mc, this.selectedPackList, this.selectedPackSearchBox, new TranslatableText("pack.selected.title"), this.width / 2 + 4);
this.selectedPackSearchBox = b.getTextFieldWidget();
this.selectedPackClearButton = b.getClearButton();
this.availablePackSearchBox = addSearchBox(mc, this.availablePackList, this.availablePackSearchBox);
this.selectedPackSearchBox = addSearchBox(mc, this.selectedPackList, this.selectedPackSearchBox);

setupOriginalPackListOffset(this.availablePackList);
setupOriginalPackListOffset(this.selectedPackList);
Expand All @@ -72,16 +62,14 @@ void setupOriginalPackListOffset(PackListWidget packListWidget) {
duck.hideHeaderAndShift();
}

ClearableTextFieldDual addSearchBox(MinecraftClient mc, PackListWidget packListWidget, TextFieldWidget textFieldWidget, Text packListHeader, int leftPos) {
textFieldWidget = new TextFieldWidget(mc.textRenderer, packListWidget.getRowLeft() - 1, 47, packListWidget.getRowWidth() - 22, 18, textFieldWidget, new TranslatableText("enhancedsearchability.searchbox"));
TextFieldWidget addSearchBox(MinecraftClient mc, PackListWidget packListWidget, TextFieldWidget textFieldWidget) {
textFieldWidget = new TextFieldWidget(mc.textRenderer, packListWidget.getRowLeft() - 1, 47, packListWidget.getRowWidth() - 2, 20, textFieldWidget, new TranslatableText("enhancedsearchability.searchbox"));
textFieldWidget.setChangedListener((search) -> {
if (packListWidget instanceof ListWidgetDuckProvider duckProvider)
duckProvider.filter(() -> search);
});
this.addSelectableChild(textFieldWidget);
TextFieldWidget finalTextFieldWidget = textFieldWidget;
ButtonWidget clearButton = this.addDrawableChild(new ButtonWidget(packListWidget.getRowLeft() + packListWidget.getRowWidth() - 22, 46, 20, 20, new TranslatableText("enhancedsearchability.clearbutton"), buttonWidget -> finalTextFieldWidget.setText("")));
return new ClearableTextFieldDual(textFieldWidget, clearButton);
return textFieldWidget;
}

@Inject(method = "render", at = @At("TAIL"))
Expand Down Expand Up @@ -152,14 +140,6 @@ public boolean mouseClicked(double mouseX, double mouseY, int button) {
this.setFocused(this.selectedPackSearchBox);
return true;
}
if (this.availablePackClearButton != null && this.availablePackClearButton.mouseClicked(mouseX, mouseY, button)) {
this.setFocused(this.availablePackClearButton);
return true;
}
if (this.selectedPackClearButton != null && this.selectedPackClearButton.mouseClicked(mouseX, mouseY, button)) {
this.setFocused(this.selectedPackClearButton);
return true;
}
return super.mouseClicked(mouseX, mouseY, button);
}
}

This file was deleted.

0 comments on commit a96da5c

Please sign in to comment.