Skip to content

Commit

Permalink
Implement Searchables
Browse files Browse the repository at this point in the history
  • Loading branch information
jaredlll08 committed May 20, 2023
1 parent 8fe2a7f commit 1bbd045
Show file tree
Hide file tree
Showing 13 changed files with 358 additions and 369 deletions.
2 changes: 2 additions & 0 deletions Common/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import com.blamejared.modtemplate.Utils
val minecraftVersion: String by project
val modName: String by project
val modVersion: String by project
val searchablesVersion: String by project

plugins {
`java-library`
Expand Down Expand Up @@ -32,6 +33,7 @@ minecraft {

dependencies {
compileOnly("org.spongepowered:mixin:0.8.5")
implementation("com.blamejared.searchables:Searchables-common-${minecraftVersion}:${searchablesVersion}")
}

publishing {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,15 @@
package com.blamejared.controlling;

import com.blamejared.controlling.client.FreeKeysList;
import com.blamejared.controlling.client.NewKeyBindsList;
import com.blamejared.searchables.api.SearchableComponent;
import com.blamejared.searchables.api.SearchableType;
import net.minecraft.client.gui.screens.controls.KeyBindsList;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.MutableComponent;

import java.util.Optional;

public class ControllingConstants {

public static final MutableComponent COMPONENT_CONTROLS_RESET = Component.translatable("controls.reset");
Expand All @@ -21,5 +28,29 @@ public class ControllingConstants {
public static final MutableComponent COMPONENT_OPTIONS_SEARCH = Component.translatable("options.search");
public static final MutableComponent COMPONENT_OPTIONS_AVAILABLE_KEYS = Component.translatable("options.availableKeys");

public static final SearchableType<KeyBindsList.Entry> SEARCHABLE_KEYBINDINGS = new SearchableType.Builder<KeyBindsList.Entry>()
.component(SearchableComponent.create("category", entry -> {
if(entry instanceof NewKeyBindsList.CategoryEntry cat) {
return Optional.of(cat.name().getString());
} else if(entry instanceof NewKeyBindsList.KeyEntry key) {
return Optional.of(key.categoryName().getString());
}
return Optional.empty();
}))
.component(SearchableComponent.create("key", entry -> {
if(entry instanceof NewKeyBindsList.KeyEntry key) {
return Optional.of(key.getKeybinding().getTranslatedKeyMessage().getString());
}
return Optional.empty();
}))
.defaultComponent(SearchableComponent.create("name", entry -> {
if(entry instanceof NewKeyBindsList.KeyEntry key) {
return Optional.of(key.getKeyDesc().getString());
} else if(entry instanceof FreeKeysList.InputEntry input) {
return Optional.of(input.getInput().getName());
}
return Optional.empty();
}))
.build();

}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.blamejared.controlling.mixin.AccessKeyMapping;
import net.minecraft.client.KeyMapping;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screens.controls.KeyBindsList;

import java.util.function.Predicate;

Expand All @@ -29,8 +30,8 @@ public enum DisplayMode {
this.predicate = predicate;
}

public Predicate<NewKeyBindsList.KeyEntry> getPredicate() {
public Predicate<KeyBindsList.Entry> getPredicate() {

return predicate;
return entry -> entry instanceof NewKeyBindsList.KeyEntry keyEntry && predicate.test(keyEntry);
}
}
24 changes: 14 additions & 10 deletions Common/src/main/java/com/blamejared/controlling/api/SortOrder.java
Original file line number Diff line number Diff line change
@@ -1,23 +1,31 @@
package com.blamejared.controlling.api;

import com.blamejared.controlling.ControllingConstants;
import com.blamejared.controlling.client.NewKeyBindsList;
import net.minecraft.client.resources.language.I18n;
import net.minecraft.network.chat.Component;

import java.util.Comparator;
import java.util.List;

public enum SortOrder {
NONE(entries -> {
NONE("options.sortNone", entries -> {
}),
AZ(entries -> entries.sort(Comparator.comparing(o -> ((NewKeyBindsList.KeyEntry) o).getKeyDesc().getString()))),
ZA(entries -> entries.sort(Comparator.comparing(o -> ((NewKeyBindsList.KeyEntry) o).getKeyDesc().getString())
AZ("options.sortAZ", entries -> entries.sort(Comparator.comparing(o -> ((NewKeyBindsList.KeyEntry) o).getKeyDesc()
.getString()))),
ZA("options.sortZA", entries -> entries.sort(Comparator.comparing(o -> ((NewKeyBindsList.KeyEntry) o).getKeyDesc()
.getString())
.reversed()));

private final ISort sorter;
private final Component display;

SortOrder(ISort sorter) {
SortOrder(String key, ISort sorter) {

this.sorter = sorter;
this.display = ControllingConstants.COMPONENT_OPTIONS_SORT.copy()
.append(": ")
.append(Component.translatable(key));
}

public SortOrder cycle() {
Expand All @@ -30,12 +38,8 @@ public void sort(List<NewKeyBindsList.Entry> list) {
this.sorter.sort(list);
}

public String getName() {
public Component getDisplay() {

return switch(this) {
case NONE -> I18n.get("options.sortNone");
case AZ -> I18n.get("options.sortAZ");
case ZA -> I18n.get("options.sortZA");
};
return this.display;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package com.blamejared.controlling.client;

import net.minecraft.network.chat.Component;

public class DisplayableBoolean {

private boolean state;
private final Component whenTrue;
private final Component whenFalse;

public DisplayableBoolean(boolean initialState, Component whenTrue, Component whenFalse) {

this.state = initialState;
this.whenTrue = whenTrue;
this.whenFalse = whenFalse;
}

public boolean state() {

return state;
}

public boolean toggle(){
state(!state());
return state();
}

public void state(boolean state) {

this.state = state;
}

public Component currentDisplay() {

return state ? whenTrue() : whenFalse();
}

public Component whenTrue() {

return whenTrue;
}

public Component whenFalse() {

return whenFalse;
}

}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ public FreeKeysList(KeyBindsScreen controls, Minecraft mcIn) {
super(controls, mcIn);
this.width = controls.width + 45;
this.height = controls.height;
this.y0 = 20;
this.y1 = controls.height - 80;
this.y0 = 48;
this.y1 = controls.height - 56;
this.x1 = controls.width + 45;
this.controlsScreen = controls;
this.mc = mcIn;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,16 @@
import net.minecraft.client.KeyMapping;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.components.Button;
import net.minecraft.client.gui.components.Tooltip;
import net.minecraft.client.gui.components.events.GuiEventListener;
import net.minecraft.client.gui.narration.NarratableEntry;
import net.minecraft.client.gui.narration.NarratedElementType;
import net.minecraft.client.gui.narration.NarrationElementOutput;
import net.minecraft.client.gui.screens.controls.KeyBindsList;
import net.minecraft.client.gui.screens.controls.KeyBindsScreen;
import net.minecraft.client.resources.language.I18n;
import net.minecraft.network.chat.CommonComponents;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.MutableComponent;
import net.minecraft.util.Mth;
import org.apache.commons.lang3.ArrayUtils;

Expand All @@ -36,8 +38,8 @@ public NewKeyBindsList(KeyBindsScreen controls, Minecraft mcIn) {
super(controls, mcIn);
this.width = controls.width + 45;
this.height = controls.height;
this.y0 = 20;
this.y1 = controls.height - 80;
this.y0 = 48;
this.y1 = controls.height - 56;
this.x1 = controls.width + 45;
this.controlsScreen = controls;
this.mc = mcIn;
Expand Down Expand Up @@ -68,17 +70,6 @@ public NewKeyBindsList(KeyBindsScreen controls, Minecraft mcIn) {

}

@Override
protected void renderDecorations(PoseStack matrixStack, int mouseX, int mouseY) {

Entry entry = this.getEntryAtPos(mouseY);
if(entry instanceof KeyEntry keyEntry) {

controlsScreen.renderTooltip(matrixStack, Component.translatable(keyEntry.getKeybinding()
.getCategory()), mouseX, mouseY);
}
}

public Entry getEntryAtPos(double mouseY) {

if(mouseY <= this.y0 || mouseY >= this.y1) {
Expand All @@ -103,25 +94,23 @@ public int getRowWidth() {

public class CategoryEntry extends KeyBindsList.Entry {

private final String labelText;
private final Component name;
private final int labelWidth;
private final String name;

public CategoryEntry(String name) {

this.labelText = I18n.get(name);
this.labelWidth = NewKeyBindsList.this.mc.font.width(this.labelText);
this.name = name;
this.name = Component.translatable(name);
this.labelWidth = NewKeyBindsList.this.mc.font.width(this.name);
}

public String getName() {
public Component name() {

return name;
}

public void render(PoseStack stack, int slotIndex, int y, int x, int rowLeft, int rowWidth, int mouseX, int mouseY, boolean hovered, float partialTicks) {

NewKeyBindsList.this.minecraft.font.draw(stack, this.labelText, (float) (Objects.requireNonNull(minecraft.screen).width / 2 - this.labelWidth / 2), (float) (y + rowWidth - 9 - 1), 16777215);
NewKeyBindsList.this.minecraft.font.draw(stack, this.name, (float) (Objects.requireNonNull(minecraft.screen).width / 2 - this.labelWidth / 2), (float) (y + rowWidth - 9 - 1), 16777215);
}

public List<? extends NarratableEntry> narratables() {
Expand All @@ -134,7 +123,7 @@ public NarrationPriority narrationPriority() {

public void updateNarration(NarrationElementOutput neo) {

neo.add(NarratedElementType.TITLE, labelText);
neo.add(NarratedElementType.TITLE, name);
}
});
}
Expand All @@ -160,6 +149,7 @@ public class KeyEntry extends KeyBindsList.Entry {
private final Button btnChangeKeyBinding;
private final Button btnResetKeyBinding;

private final Component categoryName;

private KeyEntry(final KeyMapping name, final Component keyDesc) {

Expand All @@ -176,7 +166,8 @@ private KeyEntry(final KeyMapping name, final Component keyDesc) {
}).bounds(0, 0, 50, 20)
.createNarration(supp -> Component.translatable("narrator.controls.reset", keyDesc))
.build();

this.categoryName = Component.translatable(this.keybinding.getCategory());
this.btnChangeKeyBinding.setTooltip(Tooltip.create(Component.translatable(keybinding.getCategory())));
}

@Override
Expand Down Expand Up @@ -282,6 +273,11 @@ public Button getBtnChangeKeyBinding() {
return btnChangeKeyBinding;
}

public Component categoryName() {

return categoryName;
}

}

}

0 comments on commit 1bbd045

Please sign in to comment.