mirror of
https://github.com/GTNewHorizons/NotEnoughCharacters.git
synced 2026-11-14 01:04:09 +00:00
ignore "," when searching numbers + support searching some elements by pinyin + a special searching mode to search voltage names and machine names separate (#4)
This commit is contained in:
1 parent
5942eb4673
commit
5888e3b697
5 files changed
+142
-20
No files matched your search
@@ -1,6 +1,7 @@
|
||||
package net.moecraft.nechar;
|
||||
|
||||
import static net.moecraft.nechar.NotEnoughCharacters.CONTEXT;
|
||||
import static net.moecraft.nechar.NecharUtils.contain;
|
||||
import static net.vfyjxf.nechar.NechConfig.enableVoltageSpecialSearchName;
|
||||
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
@@ -22,7 +23,7 @@ public class NecharDisplayFilter extends PatternItemFilter {
|
||||
public boolean matches(ItemStack itemStack) {
|
||||
String displayName = EnumChatFormatting.getTextWithoutFormattingCodes(itemStack.getDisplayName());
|
||||
|
||||
if (!displayName.isEmpty() && CONTEXT.contains(displayName, this.searchText)) {
|
||||
if (!displayName.isEmpty() && contain(displayName, this.searchText, enableVoltageSpecialSearchName)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -31,12 +32,11 @@ public class NecharDisplayFilter extends PatternItemFilter {
|
||||
itemStack.getItem()
|
||||
.getItemStackDisplayName(itemStack));
|
||||
|
||||
if (displayName.isEmpty() && CONTEXT.contains(displayName, this.searchText)) {
|
||||
if (!displayName.isEmpty() && contain(displayName, this.searchText, enableVoltageSpecialSearchName)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return super.matches(itemStack);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package net.moecraft.nechar;
|
||||
|
||||
import static net.moecraft.nechar.NotEnoughCharacters.CONTEXT;
|
||||
import static net.moecraft.nechar.NecharUtils.contain;
|
||||
import static net.vfyjxf.nechar.NechConfig.enableVoltageSpecialSearchTooltips;
|
||||
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
@@ -19,7 +20,8 @@ public class NecharTooltipFilter extends TooltipFilter {
|
||||
|
||||
@Override
|
||||
public boolean matches(ItemStack itemStack) {
|
||||
return CONTEXT.contains(getSearchTooltip(itemStack), this.searchText) || super.matches(itemStack);
|
||||
return contain(getSearchTooltip(itemStack), this.searchText, enableVoltageSpecialSearchTooltips)
|
||||
|| super.matches(itemStack);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
package net.moecraft.nechar;
|
||||
|
||||
import static net.moecraft.nechar.NotEnoughCharacters.CONTEXT;
|
||||
import static net.vfyjxf.nechar.NechConfig.enableIgnoreComma;
|
||||
|
||||
public class NecharUtils {
|
||||
|
||||
private static String deleteComma(String str) {
|
||||
return str.replaceAll("(?<=[0-9]),(?=[0-9])", "");
|
||||
}
|
||||
|
||||
private static String replaceExtraChars(String str) {
|
||||
|
||||
if (str.contains("\ud872")) {
|
||||
str = str.replaceAll("\ud872\udf3b", "\ue900") // 钅卢
|
||||
.replaceAll("\ud872\udf4a", "\ue901") // 钅杜
|
||||
.replaceAll("\ud872\udf73", "\ue902") // 钅喜
|
||||
.replaceAll("\ud872\udf5b", "\ue903") // 钅波
|
||||
.replaceAll("\ud872\udf76", "\ue904") // 钅黑
|
||||
.replaceAll("\ud872\udf2d", "\ue907"); // 钅仑
|
||||
}
|
||||
|
||||
if (str.contains("\ud86d")) {
|
||||
str = str.replaceAll("\ud86d\udffc", "\ue906") // 钅达
|
||||
.replaceAll("\ud86d\udce7", "\ue90a") // 钅夫
|
||||
.replaceAll("\ud86d\udff7", "\ue90c"); // 钅仑
|
||||
}
|
||||
|
||||
return str;
|
||||
}
|
||||
|
||||
private static boolean containWithVoltage(String voltage, String sourseText, String searchText) {
|
||||
if (!searchText.contains(voltage)) {
|
||||
return false;
|
||||
}
|
||||
if (!sourseText.contains(voltage)) {
|
||||
return false;
|
||||
} // check if [voltage] can be found
|
||||
String[] sList = searchText.split(voltage, 2); // check if texts between "max" can be found
|
||||
if (sList.length == 2 && !CONTEXT.contains(sourseText, sList[1])) {
|
||||
return false;
|
||||
}
|
||||
return CONTEXT.contains(sourseText, sList[0]);
|
||||
}
|
||||
|
||||
private static String[] voltageListWithLetterV = { "ulv", "lv", "mv", "hv", "ev", "iv", "luv", "uv", "uhv", "uev",
|
||||
"uiv", "umv", "uxv" };
|
||||
|
||||
public static boolean contain(String sourseText, String searchText, Boolean enableSpecialSearch) {
|
||||
|
||||
sourseText = replaceExtraChars(sourseText);
|
||||
searchText = replaceExtraChars(searchText);
|
||||
|
||||
if (enableIgnoreComma && !searchText.contains(",")) {
|
||||
sourseText = deleteComma(sourseText);
|
||||
searchText = deleteComma(searchText);
|
||||
}
|
||||
|
||||
if (CONTEXT.contains(sourseText, searchText)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// may be very slow, only try to find 1 voltage level
|
||||
if (!enableSpecialSearch) {
|
||||
return false;
|
||||
}
|
||||
|
||||
sourseText = sourseText.toLowerCase();
|
||||
searchText = searchText.toLowerCase();
|
||||
|
||||
if (containWithVoltage("zpm", sourseText, searchText) || containWithVoltage("max", sourseText, searchText)) {
|
||||
return true;
|
||||
}
|
||||
if (!(sourseText.contains("v") || searchText.contains("v"))) {
|
||||
return false;
|
||||
}
|
||||
for (String name : voltageListWithLetterV) {
|
||||
if (containWithVoltage(name, sourseText, searchText)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
// return CONTEXT.contains(sourseText, searchText);
|
||||
|
||||
}
|
||||
@@ -34,20 +34,34 @@ public class NotEnoughCharacters {
|
||||
@Override
|
||||
public void load(BiConsumer<Character, String[]> feed) {
|
||||
super.load(feed);
|
||||
feed.accept('\ue900', new String[] { "lu2", "jinlu" }); // 钅卢
|
||||
feed.accept('\ue901', new String[] { "du4", "jindu" }); // 钅杜
|
||||
feed.accept('\ue902', new String[] { "xi3", "jinxi" }); // 钅喜
|
||||
feed.accept('\ue903', new String[] { "bo1", "jinbo" }); // 钅波
|
||||
feed.accept('\ue904', new String[] { "hei1", "jinhei" }); // 钅黑
|
||||
feed.accept('\u9fcf', new String[] { "mai4", "jinmai" });// 钅麦
|
||||
feed.accept('\ue906', new String[] { "da2", "jinda" });// 钅达
|
||||
feed.accept('\ue907', new String[] { "lun2", "jinlun" });// 钅仑
|
||||
feed.accept('\u9fd4', new String[] { "ge1", "jinge" });// 钅哥
|
||||
feed.accept('\u9fed', new String[] { "ni3", "jiner" });// 钅尔
|
||||
feed.accept('\ue90a', new String[] { "fu1", "jinfu" });// 钅夫
|
||||
feed.accept('\ue90c', new String[] { "li4", "jinli" });// 钅立
|
||||
feed.accept('\u9fec', new String[] { "tian2", "shitian" });// 石田
|
||||
feed.accept('\u9feb', new String[] { "ao4", "qiao", "aoqi" });// 气奥
|
||||
// 钅卢
|
||||
feed.accept('\ue900', new String[] { "lu2", "jinlu" });
|
||||
// 钅杜
|
||||
feed.accept('\ue901', new String[] { "du4", "jindu" });
|
||||
// 钅喜
|
||||
feed.accept('\ue902', new String[] { "xi3", "jinxi" });
|
||||
// 钅波
|
||||
feed.accept('\ue903', new String[] { "bo1", "jinbo" });
|
||||
// 钅黑
|
||||
feed.accept('\ue904', new String[] { "hei1", "jinhei" });
|
||||
// 钅麦
|
||||
feed.accept('\u9fcf', new String[] { "mai4", "jinmai" });
|
||||
// 钅达
|
||||
feed.accept('\ue906', new String[] { "da2", "jinda" });
|
||||
// 钅仑
|
||||
feed.accept('\ue907', new String[] { "lun2", "jinlun" });
|
||||
// 钅哥
|
||||
feed.accept('\u9fd4', new String[] { "ge1", "jinge" });
|
||||
// 钅尔
|
||||
feed.accept('\u9fed', new String[] { "ni3", "jiner" });
|
||||
// 钅夫
|
||||
feed.accept('\ue90a', new String[] { "fu1", "jinfu" });
|
||||
// 钅立
|
||||
feed.accept('\ue90c', new String[] { "li4", "jinli" });
|
||||
// 石田
|
||||
feed.accept('\u9fec', new String[] { "tian2", "shitian" });
|
||||
// 气奥
|
||||
feed.accept('\u9feb', new String[] { "ao4", "qiao", "aoqi" });
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -17,6 +17,9 @@ public class NechConfig {
|
||||
public static boolean EnableFIng2In = false;
|
||||
public static boolean EnableFEng2En = false;
|
||||
public static boolean EnableFU2V = false;
|
||||
public static boolean enableIgnoreComma = false;
|
||||
public static boolean enableVoltageSpecialSearchName = false;
|
||||
public static boolean enableVoltageSpecialSearchTooltips = false;
|
||||
public static Spell KeyboardType = Spell.QUANPIN;
|
||||
public static String[] neiAllowedLanguages = new String[0];
|
||||
public static String[] transformerRegExpAdditionalList = new String[0];
|
||||
@@ -147,6 +150,23 @@ public class NechConfig {
|
||||
neiAllowedLanguages = config
|
||||
.get("nei", "allowedLanguages", new String[] { "zh_CN", "zh_TW" }, "List of languages PinIn is used for")
|
||||
.getStringList();
|
||||
enableIgnoreComma = config
|
||||
.get("search", "enableIgnoreComma", false, "Set to true to enable ignore comma between numbers")
|
||||
.getBoolean();
|
||||
enableVoltageSpecialSearchName = config
|
||||
.get(
|
||||
"search",
|
||||
"enableVoltageSpecialSearchName",
|
||||
false,
|
||||
"!Slow! Set to true to search Voltage names separately for item names")
|
||||
.getBoolean();
|
||||
enableVoltageSpecialSearchTooltips = config
|
||||
.get(
|
||||
"search",
|
||||
"enableVoltageSpecialSearchTooltips",
|
||||
false,
|
||||
"!Slow! Set to true to search Voltage names separately for tooltips")
|
||||
.getBoolean();
|
||||
|
||||
if (config.hasChanged()) config.save();
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user