Skip to content

Commit

Permalink
Small fixes & changes (#523)
Browse files Browse the repository at this point in the history
* fix hotkeys

* code cleanup

* fix recipe tooltip overlay

* search item by original name

* overlay button refactoring

* fix subset filter

* change keyname; issue 524

* cleanup code

* move overlayformat logic

---------

Co-authored-by: slprime <[email protected]>
  • Loading branch information
slprime and slprime authored Sep 1, 2024
1 parent bd5e991 commit 65652e5
Show file tree
Hide file tree
Showing 15 changed files with 166 additions and 98 deletions.
14 changes: 6 additions & 8 deletions src/main/java/codechicken/nei/BookmarkPanel.java
Original file line number Diff line number Diff line change
Expand Up @@ -2500,20 +2500,19 @@ public Map<String, String> handleHotkeys(GuiContainer gui, int mousex, int mouse
translate("bookmark.group.toggle_crafting_chain.key"),
translate("bookmark.group.toggle_crafting_chain"));

String keyName = NEIClientConfig.getKeyName(NEIClientConfig.getKeyBinding("gui.remove_recipe"), true);
String keyName = NEIClientConfig.getKeyName("gui.remove_recipe");
if (keyName != null) {
hotkeys.put(keyName, translate("bookmark.group.remove_recipe"));
}

if (BookmarkContainerInfo.getBookmarkContainerHandler(gui) != null) {

keyName = NEIClientConfig.getKeyName(NEIClientConfig.getKeyBinding("gui.bookmark_pull_items"), true);
keyName = NEIClientConfig.getKeyName("gui.bookmark_pull_items");
if (keyName != null) {
hotkeys.put(keyName, translate("bookmark.group.pull_items"));
}

keyName = NEIClientConfig
.getKeyName(NEIClientConfig.getKeyBinding("gui.bookmark_pull_items_ingredients"), true);
keyName = NEIClientConfig.getKeyName("gui.bookmark_pull_items_ingredients");
if (keyName != null) {
hotkeys.put(keyName, translate("bookmark.group.pull_items_ingredients"));
}
Expand All @@ -2536,20 +2535,19 @@ public Map<String, String> handleHotkeys(GuiContainer gui, int mousex, int mouse
hotkeys.put(translate("bookmark.group.sorting.key"), translate("bookmark.group.sorting"));
}

String keyName = NEIClientConfig.getKeyName(NEIClientConfig.getKeyBinding("gui.remove_recipe"), true);
String keyName = NEIClientConfig.getKeyName("gui.remove_recipe");
if (keyName != null) {
hotkeys.put(keyName, translate("bookmark.group.remove_recipe"));
}

if (BookmarkContainerInfo.getBookmarkContainerHandler(gui) != null) {
keyName = NEIClientConfig.getKeyName(NEIClientConfig.getKeyBinding("gui.bookmark_pull_items"), true);
keyName = NEIClientConfig.getKeyName("gui.bookmark_pull_items");

if (keyName != null) {
hotkeys.put(keyName, translate("bookmark.group.pull_items"));
}

keyName = NEIClientConfig
.getKeyName(NEIClientConfig.getKeyBinding("gui.bookmark_pull_items_ingredients"), true);
keyName = NEIClientConfig.getKeyName("gui.bookmark_pull_items_ingredients");
if (keyName != null) {
hotkeys.put(keyName, translate("bookmark.group.pull_items_ingredients"));
}
Expand Down
1 change: 0 additions & 1 deletion src/main/java/codechicken/nei/ClientHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,6 @@ public static void load() {

public static void postInit() {
loadHandlerOrdering();
loadPluginsList();
GuiContainerManager.registerReloadResourceListener();
}

Expand Down
14 changes: 13 additions & 1 deletion src/main/java/codechicken/nei/ItemList.java
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,19 @@ public PatternItemFilter(Pattern pattern) {
@Override
public boolean matches(ItemStack item) {
String displayName = EnumChatFormatting.getTextWithoutFormattingCodes(item.getDisplayName());
return !displayName.isEmpty() && pattern.matcher(displayName).find();

if (!displayName.isEmpty() && pattern.matcher(displayName).find()) {
return true;
}

if (item.hasDisplayName()) {
displayName = EnumChatFormatting
.getTextWithoutFormattingCodes(item.getItem().getItemStackDisplayName(item));

return !displayName.isEmpty() && pattern.matcher(displayName).find();
}

return false;
}
}

Expand Down
7 changes: 3 additions & 4 deletions src/main/java/codechicken/nei/ItemZoom.java
Original file line number Diff line number Diff line change
Expand Up @@ -73,11 +73,10 @@ public void draw(int mx, int my) {

if (NEIClientConfig.getBooleanSetting("inventory.itemzoom.enabled")
&& NEIClientConfig.getBooleanSetting("inventory.itemzoom.helpText")) {
int key = NEIClientConfig.getKeyBinding("gui.itemzoom_toggle");
String keyName = NEIClientConfig.getKeyName("gui.itemzoom_toggle");

if (key > 0) {
String helpText = NEIClientUtils
.translate("itemzoom.toggle", NEIClientConfig.getKeyName(key, true));
if (keyName != null) {
String helpText = NEIClientUtils.translate("itemzoom.toggle", keyName);
List<String> lines = fontRenderer.listFormattedStringToWidth(helpText, this.availableAreaWidth);

for (String line : lines) {
Expand Down
34 changes: 7 additions & 27 deletions src/main/java/codechicken/nei/NEIClientConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,7 @@ public String getButtonText() {
});

tag.getTag("inventory.search.subsetsSearchMode").setComment("Search mode for Item Subsets (prefix: %)")
.getIntValue(2);
.getIntValue(1);
API.addOption(new OptionCycled("inventory.search.subsetsSearchMode", 3, true) {

@Override
Expand Down Expand Up @@ -631,34 +631,14 @@ public static boolean isKeyHashDown(String string) {
return hash != Keyboard.CHAR_NONE && hash == NEIClientUtils.getKeyHash();
}

public static String getKeyName(int keyBind, boolean useHash) {
return getKeyName(keyBind, useHash, false);
}

public static String getKeyName(int keyBind, boolean useHash, boolean showOnlyHash) {
String keyText = "";
public static String getKeyName(String keyBind) {
final int hash = getKeyBinding(keyBind);

if (useHash) {
final String DELIMITER = " + ";
if ((keyBind & NEIClientUtils.CTRL_HASH) != 0) {
keyText += NEIClientUtils.translate(Minecraft.isRunningOnMac ? "key.ctrl.mac" : "key.ctrl") + DELIMITER;
}
if ((keyBind & NEIClientUtils.SHIFT_HASH) != 0) {
keyText += "SHIFT" + DELIMITER;
}
if ((keyBind & NEIClientUtils.ALT_HASH) != 0) {
keyText += "ALT" + DELIMITER;
}
}

if (!showOnlyHash) {
keyText += Keyboard.getKeyName(unHashKey(keyBind));
if (hash == Keyboard.CHAR_NONE) {
return null;
}
return keyText;
}

public static int unHashKey(int keyBind) {
return keyBind & ~(NEIClientUtils.CTRL_HASH | NEIClientUtils.SHIFT_HASH | NEIClientUtils.ALT_HASH);
return NEIClientUtils.getKeyName(hash);
}

public static void bootNEI(World world) {
Expand All @@ -685,7 +665,7 @@ public void run() {
config.loadConfig();
NEIModContainer.plugins.add(config);
logger.debug("Loaded {}", clazz.getName());
} catch (Exception e) {
} catch (Throwable e) {
logger.error("Failed to Load {}", clazz.getName(), e);
}
});
Expand Down
39 changes: 39 additions & 0 deletions src/main/java/codechicken/nei/NEIClientUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.StringJoiner;
import java.util.stream.Collectors;

import net.minecraft.client.Minecraft;
Expand Down Expand Up @@ -450,6 +451,44 @@ public static int getKeyHash() {
return Keyboard.CHAR_NONE;
}

public static String getKeyHashName(int keyBind) {
StringJoiner keyText = new StringJoiner(" + ");

if ((keyBind & CTRL_HASH) != 0) {
keyText.add(translate(Minecraft.isRunningOnMac ? "key.ctrl.mac" : "key.ctrl"));
}

if ((keyBind & SHIFT_HASH) != 0) {
keyText.add(translate("key.shift"));
}

if ((keyBind & ALT_HASH) != 0) {
keyText.add(translate("key.alt"));
}

return keyText.toString();
}

public static String getKeyName(int keyBind) {
StringJoiner keyText = new StringJoiner(" + ");
String hashText = getKeyHashName(keyBind);
int keyID = unHashKey(keyBind);

if (!hashText.isEmpty()) {
keyText.add(hashText);
}

if (keyID != Keyboard.CHAR_NONE || hashText.isEmpty()) {
keyText.add(Keyboard.getKeyName(keyID));
}

return keyText.toString();
}

public static int unHashKey(int keyBind) {
return keyBind & ~(CTRL_HASH | SHIFT_HASH | ALT_HASH);
}

public static void playClickSound() {
mc().getSoundHandler()
.playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
Expand Down
1 change: 1 addition & 0 deletions src/main/java/codechicken/nei/NEIModContainer.java
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ public void postInit(FMLPostInitializationEvent event) {
public void loadComplete(FMLLoadCompleteEvent event) {
if (CommonUtils.isClient()) {
GuiRecipeTab.loadHandlerInfo();
ClientHandler.loadPluginsList();
}
}

Expand Down
12 changes: 8 additions & 4 deletions src/main/java/codechicken/nei/SearchField.java
Original file line number Diff line number Diff line change
Expand Up @@ -243,18 +243,18 @@ public static Pattern getPattern(String search, int patternMode) {
search = search.substring(2, search.length() - 1);
} else {
final Matcher matcher = Pattern.compile("(\\?|\\*)").matcher(search);
String cleanedString = "";
StringBuilder cleanedString = new StringBuilder();
int lastEndIndex = 0;

while (matcher.find()) {
cleanedString += Pattern.quote(search.substring(lastEndIndex, matcher.start()));
cleanedString.append(Pattern.quote(search.substring(lastEndIndex, matcher.start())));

switch (matcher.group(0).charAt(0)) {
case '?':
cleanedString += ".";
cleanedString.append(".");
break;
case '*':
cleanedString += ".+?";
cleanedString.append(".+?");
break;
default:
break;
Expand All @@ -266,6 +266,8 @@ public static Pattern getPattern(String search, int patternMode) {
search = cleanedString + Pattern.quote(search.substring(lastEndIndex, search.length()));
}
break;
default:
break;
}

if (!search.isEmpty()) {
Expand Down Expand Up @@ -300,6 +302,8 @@ public static String getEscapedSearchText(String text) {
case 2:
text = text.replaceAll("[{}()\\[\\].+*?^$\\\\|]", "\\\\$0");
break;
default:
break;
}

if (text.contains(" ") && NEIClientConfig.getBooleanSetting("inventory.search.quoteDropItemName")) {
Expand Down
10 changes: 5 additions & 5 deletions src/main/java/codechicken/nei/SubsetWidget.java
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ protected void slotClicked(int slot, int button, int mx, int my, int count) {
if (slot < sorted.size()) {
SubsetTag tag = sorted.get(slot);
if (NEIClientUtils.shiftKey()) {
LayoutManager.searchField.setText("%" + tag.fullname);
LayoutManager.searchField.setText("%" + tag.fullname.replaceAll("\\s+", ""));
} else if (button == 0 && count >= 2) {
SubsetWidget.showOnly(tag);
} else {
Expand Down Expand Up @@ -175,7 +175,7 @@ public String parent() {
private SubsetTag getTag(String name) {
int idx = name.indexOf('.');
String childname = idx > 0 ? name.substring(0, idx) : name;
SubsetTag child = children.get(childname.replaceAll(" ", "").toLowerCase());
SubsetTag child = children.get(childname.replaceAll("\\s+", "").toLowerCase());
if (child == null) return null;

return idx > 0 ? child.getTag(name.substring(idx + 1)) : child;
Expand All @@ -192,18 +192,18 @@ private void addTag(SubsetTag tag) {
int idx = name.indexOf('.');

if (idx < 0) { // add or replace tag
SubsetTag prev = children.put(name.replaceAll(" ", "").toLowerCase(), tag);
SubsetTag prev = children.put(name.replaceAll("\\s+", "").toLowerCase(), tag);
if (prev != null) { // replaced, load children
tag.children = prev.children;
tag.sorted = prev.sorted;
}
recacheChildren();
} else {
String childname = name.substring(0, idx);
SubsetTag child = children.get(childname.replaceAll(" ", "").toLowerCase());
SubsetTag child = children.get(childname.replaceAll("\\s+", "").toLowerCase());
if (child == null) {
children.put(
childname.replaceAll(" ", "").toLowerCase(),
childname.replaceAll("\\s+", "").toLowerCase(),
child = new SubsetTag(fullname == null ? childname : fullname + '.' + childname));
}
recacheChildren();
Expand Down
12 changes: 6 additions & 6 deletions src/main/java/codechicken/nei/api/IOverlayHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,20 @@
import java.util.stream.Collectors;

import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;

import codechicken.nei.PositionedStack;
import codechicken.nei.recipe.GuiOverlayButton.ItemOverlayState;
import codechicken.nei.recipe.IRecipeHandler;

public interface IOverlayHandler {

void overlayRecipe(GuiContainer firstGui, IRecipeHandler recipe, int recipeIndex, boolean shift);

default List<Boolean> presenceOverlay(GuiContainer firstGui, IRecipeHandler recipe, int recipeIndex) {
final List<Boolean> itemPresenceSlots = new ArrayList<>();
default List<ItemOverlayState> presenceOverlay(GuiContainer firstGui, IRecipeHandler recipe, int recipeIndex) {
final List<ItemOverlayState> itemPresenceSlots = new ArrayList<>();
final List<PositionedStack> ingredients = recipe.getIngredientStacks(recipeIndex);
final List<ItemStack> invStacks = ((List<Slot>) firstGui.inventorySlots.inventorySlots).stream()
final List<ItemStack> invStacks = firstGui.inventorySlots.inventorySlots.stream()
.filter(
s -> s != null && s.getStack() != null
&& s.getStack().stackSize > 0
Expand All @@ -29,9 +29,9 @@ default List<Boolean> presenceOverlay(GuiContainer firstGui, IRecipeHandler reci

for (PositionedStack stack : ingredients) {
Optional<ItemStack> used = invStacks.stream().filter(is -> is.stackSize > 0 && stack.contains(is))
.findFirst();
.findAny();

itemPresenceSlots.add(used.isPresent());
itemPresenceSlots.add(new ItemOverlayState(stack, used.isPresent()));

if (used.isPresent()) {
ItemStack is = used.get();
Expand Down
9 changes: 6 additions & 3 deletions src/main/java/codechicken/nei/config/OptionKeyBind.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@

import org.lwjgl.input.Keyboard;

import codechicken.nei.NEIClientConfig;
import codechicken.nei.NEIClientUtils;

public class OptionKeyBind extends OptionButton {
Expand Down Expand Up @@ -122,8 +121,12 @@ public void drawButton(int mx, int my) {

@Override
public String getButtonText() {
final int metahash = Math.max(editing ? NEIClientUtils.getMetaHash() : getValue(), 0);
return NEIClientConfig.getKeyName(metahash, useHash, editing);

if (editing) {
return NEIClientUtils.getKeyHashName(NEIClientUtils.getMetaHash());
}

return NEIClientUtils.getKeyName(Math.max(getValue(), 0));
}

@Override
Expand Down
Loading

0 comments on commit 65652e5

Please sign in to comment.