Skip to content

Commit db382d7

Browse files
committed
[change] bundle searchables; return code for searchables
1 parent 0ec509f commit db382d7

5 files changed

Lines changed: 62 additions & 129 deletions

File tree

build.gradle.kts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -206,9 +206,9 @@ dependencies {
206206
compileOnly("com.blamejared.searchables:Searchables-fabric-${properties["searchables_version"]}") {
207207
exclude(group = "net.fabricmc.fabric-api", module = "fabric-api")
208208
}
209-
//runtimeOnly("com.blamejared.searchables:Searchables-fabric-${properties["searchables_version"]}") {
210-
//exclude(group = "net.fabricmc.fabric-api", module = "fabric-api")
211-
//}
209+
runtimeOnly("com.blamejared.searchables:Searchables-fabric-${properties["searchables_version"]}") {
210+
exclude(group = "net.fabricmc.fabric-api", module = "fabric-api")
211+
}
212212
if (isBundlingSearchables) include("com.blamejared.searchables:Searchables-fabric-${properties["searchables_version"]}")
213213

214214
// Mod Menu

gradle.properties

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ minecraft_version=26.1
88
loader_version=0.18.4
99

1010
# Mod Properties
11-
mod_version=2.8.1-beta.2
11+
mod_version=2.8.1-beta.3
1212
maven_group=red.jackf
1313
archives_base_name=chesttracker
1414

1515
# Dependencies
16-
bundle_searchables=false
17-
searchables_version=1.21.11:1.0.2
16+
bundle_searchables=true
17+
searchables_version=26.1:1.0.4
1818

1919
# Mod Compat
2020
# clothconfig_version=21.11.152

src/client/java/red/jackf/chesttracker/impl/compat/mods/searchables/CustomSearchablesFormatter.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,36 +44,34 @@ public void reset() {
4444
public TokenRange visitGrouping(final GroupingExpression expr, final @NotNull FormattingContext context) {
4545

4646
TokenRange leftRange = expr.left().accept(this, context);
47-
//tokens.add(Pair.of(getAndPushRange(), context.style()));
47+
tokens.add(Pair.of(getAndPushRange(), context.style()));
4848
TokenRange rightRange = expr.right().accept(this, context);
4949
return TokenRange.encompassing(leftRange, rightRange);
5050
}
5151

5252
@NotNull
5353
public TokenRange visitComponent(final ComponentExpression expr, final FormattingContext context) {
5454

55-
/*boolean valid = context.valid() && expr.left() instanceof LiteralExpression && expr.right() instanceof LiteralExpression;
55+
boolean valid = context.valid() && expr.left() instanceof LiteralExpression && expr.right() instanceof LiteralExpression;
5656
TokenRange leftRange = expr.left()
5757
.accept(this, FormattingContext.key(Style.EMPTY.withColor(TextColours.getSearchKeyColour()), valid));
5858
tokens.add(Pair.of(getAndPushRange(), context.style(valid)));
5959
TokenRange rightRange = expr.right()
6060
.accept(this, FormattingContext.literal(Style.EMPTY.withColor(TextColours.getSearchTermColour()), valid));
61-
return TokenRange.encompassing(leftRange, rightRange);*/
62-
return null;
61+
return TokenRange.encompassing(leftRange, rightRange);
6362
}
6463

6564
@Override
6665
@NotNull
6766
public TokenRange visitLiteral(final @NotNull LiteralExpression expr, final FormattingContext context) {
6867

69-
/*Style style = context.style();
68+
Style style = context.style();
7069
if (!context.valid() || context.isKey() && !type.components().containsKey(expr.value())) {
7170
style = Style.EMPTY.withColor(TextColours.getErrorColour()).withUnderlined(true);
7271
}
7372
TokenRange range = getAndPushRange(expr.displayValue().length());
7473
tokens.add(Pair.of(range, style));
75-
return range;*/
76-
return null;
74+
return range;
7775
}
7876

7977
@Override
Lines changed: 50 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -1,114 +1,49 @@
1-
//package red.jackf.chesttracker.impl.compat.mods.searchables;
2-
//
3-
//import com.blamejared.searchables.api.SearchableComponent;
4-
//import com.blamejared.searchables.api.SearchableType;
5-
//import com.blamejared.searchables.api.autcomplete.AutoCompletingEditBox;
6-
//import net.minecraft.client.gui.Font;
7-
//import net.minecraft.client.gui.components.AbstractWidget;
8-
//import net.minecraft.client.gui.components.EditBox;
9-
//import net.minecraft.core.component.DataComponents;
10-
//import net.minecraft.core.registries.BuiltInRegistries;
11-
//import net.minecraft.resources.Identifier;
12-
//import net.minecraft.world.item.ItemStack;
13-
//import red.jackf.chesttracker.impl.config.ChestTrackerConfig;
14-
//import red.jackf.chesttracker.impl.gui.widget.CustomEditBox;
15-
//import red.jackf.chesttracker.impl.gui.widget.WidgetZOffsetWrapper;
16-
//import red.jackf.chesttracker.impl.util.ItemStacks;
17-
//
18-
//import java.util.List;
19-
//import java.util.Optional;
20-
//import java.util.function.Consumer;
21-
//import java.util.function.Predicate;
22-
//import java.util.function.Supplier;
23-
//
24-
//public class SearchablesUtil {
25-
// public static final SearchableType<ItemStack> ITEM_STACK = buildType();
26-
//
27-
// private static SearchableType<ItemStack> buildType() {
28-
// return new SearchableType.Builder<ItemStack>()
29-
// .defaultComponent(SearchableComponent.create("text", ItemStacks::defaultPredicate))
30-
// .component(SearchableComponent.create("name", SearchablesUtil::stackNameSuggestions, ItemStacks::namePredicate))
31-
// .component(SearchableComponent.create("tooltip", ItemStacks::tooltipPredicate))
32-
// .component(SearchableComponent.create("id", stack -> Optional.of(BuiltInRegistries.ITEM.getKey(stack.getItem())
33-
// .getPath())))
34-
// .component(SearchableComponent.create("tag", ItemStacks::tagPredicate))
35-
// .component(SearchableComponent.create("mod", stack -> Optional.of(BuiltInRegistries.ITEM.getKey(stack.getItem()))
36-
// .map(Identifier::getNamespace)))
37-
// .component(SearchableComponent.create("enchantment", ItemStacks::enchantmentPredicate))
38-
// .component(SearchableComponent.create("potion", ItemStacks::potionOrEffectPredicate))
39-
// .build();
40-
// }
41-
//
42-
// private static Optional<String> stackNameSuggestions(ItemStack stack) {
43-
// if (stack.has(DataComponents.CUSTOM_NAME) || ChestTrackerConfig.INSTANCE.instance().gui.autocompleteShowsRegularNames)
44-
// return Optional.of(stack.getHoverName().getString());
45-
// return Optional.empty();
46-
// }
47-
//
48-
// public static EditBox getEditBox(
49-
// Font font,
50-
// int x,
51-
// int y,
52-
// int width,
53-
// int height,
54-
// EditBox previous,
55-
// Supplier<List<ItemStack>> itemSupplier,
56-
// Consumer<String> callback) {
57-
// AutoCompletingEditBox<ItemStack> box = new AutoCompletingEditBox<>(
58-
// font,
59-
// x,
60-
// y,
61-
// width,
62-
// height,
63-
// previous,
64-
// CustomEditBox.SEARCH_MESSAGE,
65-
// ITEM_STACK,
66-
// itemSupplier
67-
// );
68-
//
69-
// var formatter = SearchablesUtil.getFormatter();
70-
// box.addResponder(formatter);
71-
// box.addFormatter(formatter::apply);
72-
//
73-
// box.addResponder(callback);
74-
//
75-
// return box;
76-
// }
77-
//
78-
// public static CustomSearchablesFormatter getFormatter() {
79-
// return new CustomSearchablesFormatter(ITEM_STACK);
80-
// }
81-
//
82-
// public static boolean ifSearchables(EditBox box, Predicate<AbstractWidget> ifSearchablesBox) {
83-
// if (box instanceof AutoCompletingEditBox<?> autoCompletingEditBox) {
84-
// return ifSearchablesBox.test(autoCompletingEditBox.autoComplete());
85-
// } else {
86-
// return false;
87-
// }
88-
// }
89-
//
90-
// public static AbstractWidget getWrappedAutocomplete(EditBox search) {
91-
// //noinspection unchecked
92-
// return new WidgetZOffsetWrapper<>(((AutoCompletingEditBox<ItemStack>) search).autoComplete(), 250);
93-
// }
94-
//}
95-
//temp remove searchabless
961
package red.jackf.chesttracker.impl.compat.mods.searchables;
972

3+
import com.blamejared.searchables.api.SearchableComponent;
4+
import com.blamejared.searchables.api.SearchableType;
5+
import com.blamejared.searchables.api.autcomplete.AutoCompletingEditBox;
986
import net.minecraft.client.gui.Font;
997
import net.minecraft.client.gui.components.AbstractWidget;
1008
import net.minecraft.client.gui.components.EditBox;
9+
import net.minecraft.core.component.DataComponents;
10+
import net.minecraft.core.registries.BuiltInRegistries;
11+
import net.minecraft.resources.Identifier;
10112
import net.minecraft.world.item.ItemStack;
13+
import red.jackf.chesttracker.impl.config.ChestTrackerConfig;
10214
import red.jackf.chesttracker.impl.gui.widget.CustomEditBox;
15+
import red.jackf.chesttracker.impl.gui.widget.WidgetZOffsetWrapper;
10316
import red.jackf.chesttracker.impl.util.ItemStacks;
10417

10518
import java.util.List;
19+
import java.util.Optional;
10620
import java.util.function.Consumer;
10721
import java.util.function.Predicate;
10822
import java.util.function.Supplier;
10923

11024
public class SearchablesUtil {
111-
public static final DummySearchableType ITEM_STACK = new DummySearchableType();
25+
public static final SearchableType<ItemStack> ITEM_STACK = buildType();
26+
27+
private static SearchableType<ItemStack> buildType() {
28+
return new SearchableType.Builder<ItemStack>()
29+
.defaultComponent(SearchableComponent.create("text", ItemStacks::defaultPredicate))
30+
.component(SearchableComponent.create("name", SearchablesUtil::stackNameSuggestions, ItemStacks::namePredicate))
31+
.component(SearchableComponent.create("tooltip", ItemStacks::tooltipPredicate))
32+
.component(SearchableComponent.create("id", stack -> Optional.of(BuiltInRegistries.ITEM.getKey(stack.getItem())
33+
.getPath())))
34+
.component(SearchableComponent.create("tag", ItemStacks::tagPredicate))
35+
.component(SearchableComponent.create("mod", stack -> Optional.of(BuiltInRegistries.ITEM.getKey(stack.getItem()))
36+
.map(Identifier::getNamespace)))
37+
.component(SearchableComponent.create("enchantment", ItemStacks::enchantmentPredicate))
38+
.component(SearchableComponent.create("potion", ItemStacks::potionOrEffectPredicate))
39+
.build();
40+
}
41+
42+
private static Optional<String> stackNameSuggestions(ItemStack stack) {
43+
if (stack.has(DataComponents.CUSTOM_NAME) || ChestTrackerConfig.INSTANCE.instance().gui.autocompleteShowsRegularNames)
44+
return Optional.of(stack.getHoverName().getString());
45+
return Optional.empty();
46+
}
11247

11348
public static EditBox getEditBox(
11449
Font font,
@@ -118,42 +53,42 @@ public static EditBox getEditBox(
11853
int height,
11954
EditBox previous,
12055
Supplier<List<ItemStack>> itemSupplier,
121-
Consumer<String> callback
122-
) {
123-
CustomEditBox box = new CustomEditBox(
56+
Consumer<String> callback) {
57+
AutoCompletingEditBox<ItemStack> box = new AutoCompletingEditBox<>(
12458
font,
12559
x,
12660
y,
12761
width,
12862
height,
12963
previous,
130-
CustomEditBox.SEARCH_MESSAGE
64+
CustomEditBox.SEARCH_MESSAGE,
65+
ITEM_STACK,
66+
itemSupplier
13167
);
13268

133-
box.setHint(CustomEditBox.SEARCH_MESSAGE);
134-
box.setResponder(callback);
69+
var formatter = SearchablesUtil.getFormatter();
70+
box.addResponder(formatter);
71+
box.addFormatter(formatter::apply);
72+
73+
box.addResponder(callback);
74+
13575
return box;
13676
}
13777

13878
public static CustomSearchablesFormatter getFormatter() {
139-
return new CustomSearchablesFormatter(null);
79+
return new CustomSearchablesFormatter(ITEM_STACK);
14080
}
14181

14282
public static boolean ifSearchables(EditBox box, Predicate<AbstractWidget> ifSearchablesBox) {
143-
return false;
83+
if (box instanceof AutoCompletingEditBox<?> autoCompletingEditBox) {
84+
return ifSearchablesBox.test(autoCompletingEditBox.autoComplete());
85+
} else {
86+
return false;
87+
}
14488
}
14589

14690
public static AbstractWidget getWrappedAutocomplete(EditBox search) {
147-
return (AbstractWidget) search;
148-
}
149-
150-
public static class DummySearchableType {
151-
public List<ItemStack> filterEntries(List<ItemStack> items, String filter) {
152-
String lowered = filter == null ? "" : filter.toLowerCase();
153-
154-
return items.stream()
155-
.filter(stack -> ItemStacks.defaultPredicate(stack, lowered))
156-
.toList();
157-
}
91+
//noinspection unchecked
92+
return new WidgetZOffsetWrapper<>(((AutoCompletingEditBox<ItemStack>) search).autoComplete(), 250);
15893
}
15994
}

src/client/resources/fabric.mod.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"ponuing"
1010
],
1111
"contributors": [
12-
"WinTone01 - Turkish Translations "
12+
"WinTone01 - Turkish Translations"
1313
],
1414
"contact": {
1515
"homepage": "https://modrinth.com/mod/chest-tracker-port",

0 commit comments

Comments
 (0)