chore: move regex filters from Highlighter to utils
This commit is contained in:
parent
bfc6d4fef6
commit
3638f7f9c1
2 changed files with 48 additions and 33 deletions
|
@ -4,6 +4,7 @@ import com.mojang.blaze3d.matrix.MatrixStack;
|
||||||
import com.mojang.blaze3d.systems.RenderSystem;
|
import com.mojang.blaze3d.systems.RenderSystem;
|
||||||
|
|
||||||
import ftbsc.bscv.modules.AbstractModule;
|
import ftbsc.bscv.modules.AbstractModule;
|
||||||
|
import ftbsc.bscv.tools.Inventory;
|
||||||
import ftbsc.bscv.tools.Setting;
|
import ftbsc.bscv.tools.Setting;
|
||||||
import net.minecraft.client.gui.screen.inventory.ContainerScreen;
|
import net.minecraft.client.gui.screen.inventory.ContainerScreen;
|
||||||
import net.minecraft.inventory.container.Slot;
|
import net.minecraft.inventory.container.Slot;
|
||||||
|
@ -48,38 +49,6 @@ public class Highlighter extends AbstractModule {
|
||||||
this.pattern = Pattern.compile(this.query.get());
|
this.pattern = Pattern.compile(this.query.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<String> enchantments(ItemStack stack) {
|
|
||||||
final ListNBT tags;
|
|
||||||
if (Items.ENCHANTED_BOOK.equals(stack.getItem())) {
|
|
||||||
tags = EnchantedBookItem.getEnchantments(stack); // special case to also search book enchants
|
|
||||||
} else {
|
|
||||||
tags = stack.getEnchantmentTags();
|
|
||||||
}
|
|
||||||
|
|
||||||
List<String> out = new ArrayList<>();
|
|
||||||
for (int i = 0; i < tags.size(); i++) {
|
|
||||||
CompoundNBT tag = tags.getCompound(i);
|
|
||||||
out.add(String.format("%s %s", tag.getString("id"), tag.getInt("lvl")));
|
|
||||||
}
|
|
||||||
|
|
||||||
return out;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean matches(ItemStack stack) {
|
|
||||||
if (stack.isEmpty()) return false;
|
|
||||||
|
|
||||||
String displayName = stack.getDisplayName().getString();
|
|
||||||
if (this.pattern.matcher(displayName).find()) return true;
|
|
||||||
|
|
||||||
if (Items.ENCHANTED_BOOK.equals(stack.getItem()) || stack.isEnchanted()) {
|
|
||||||
for (String ench : this.enchantments(stack)) {
|
|
||||||
if (this.pattern.matcher(ench).find()) return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public void onGuiContainerDraw(GuiContainerEvent.DrawBackground event) {
|
public void onGuiContainerDraw(GuiContainerEvent.DrawBackground event) {
|
||||||
MatrixStack matrix = event.getMatrixStack();
|
MatrixStack matrix = event.getMatrixStack();
|
||||||
|
@ -91,7 +60,7 @@ public class Highlighter extends AbstractModule {
|
||||||
|
|
||||||
for (Slot slot : screen.getMenu().slots) {
|
for (Slot slot : screen.getMenu().slots) {
|
||||||
ItemStack stack = slot.getItem();
|
ItemStack stack = slot.getItem();
|
||||||
if (this.matches(stack)) {
|
if (Inventory.matchItem(this.pattern, stack)) {
|
||||||
GuiUtils.drawGradientRect(
|
GuiUtils.drawGradientRect(
|
||||||
matrix.last().pose(), 0,
|
matrix.last().pose(), 0,
|
||||||
slot.x, slot.y, slot.x + 16, slot.y + 16,
|
slot.x, slot.y, slot.x + 16, slot.y + 16,
|
||||||
|
|
|
@ -7,13 +7,19 @@ import net.minecraft.enchantment.Enchantments;
|
||||||
import net.minecraft.entity.ai.attributes.AttributeModifier;
|
import net.minecraft.entity.ai.attributes.AttributeModifier;
|
||||||
import net.minecraft.entity.ai.attributes.Attributes;
|
import net.minecraft.entity.ai.attributes.Attributes;
|
||||||
import net.minecraft.inventory.EquipmentSlotType;
|
import net.minecraft.inventory.EquipmentSlotType;
|
||||||
|
import net.minecraft.inventory.container.ClickType;
|
||||||
import net.minecraft.inventory.container.Slot;
|
import net.minecraft.inventory.container.Slot;
|
||||||
|
import net.minecraft.item.EnchantedBookItem;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.item.Items;
|
||||||
import net.minecraft.nbt.CompoundNBT;
|
import net.minecraft.nbt.CompoundNBT;
|
||||||
import net.minecraft.nbt.INBT;
|
import net.minecraft.nbt.INBT;
|
||||||
|
import net.minecraft.nbt.ListNBT;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
public class Inventory implements ICommons {
|
public class Inventory implements ICommons {
|
||||||
|
|
||||||
|
@ -68,4 +74,44 @@ public class Inventory implements ICommons {
|
||||||
|
|
||||||
return damage / (1. + speed);
|
return damage / (1. + speed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static List<String> itemEnchantments(ItemStack stack) {
|
||||||
|
final ListNBT tags;
|
||||||
|
if (Items.ENCHANTED_BOOK.equals(stack.getItem())) {
|
||||||
|
tags = EnchantedBookItem.getEnchantments(stack); // special case to also search book enchants
|
||||||
|
} else {
|
||||||
|
tags = stack.getEnchantmentTags();
|
||||||
|
}
|
||||||
|
|
||||||
|
List<String> out = new ArrayList<>();
|
||||||
|
for (int i = 0; i < tags.size(); i++) {
|
||||||
|
CompoundNBT tag = tags.getCompound(i);
|
||||||
|
out.add(String.format("%s %s", tag.getString("id"), tag.getInt("lvl")));
|
||||||
|
}
|
||||||
|
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void clickSLot(Slot slot, ClickType click) { clickSlot(0, slot, 0, click); }
|
||||||
|
public static void clickSLot(Slot slot, int button, ClickType click) { clickSlot(0, slot, button, click); }
|
||||||
|
public static void clickSLot(int container, Slot slot, ClickType click) { clickSlot(container, slot, 0, click); }
|
||||||
|
|
||||||
|
public static void clickSlot(int container, Slot slot, int button, ClickType click) {
|
||||||
|
MC.gameMode.handleInventoryMouseClick(container, slot.index, button, click, MC.player);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean matchItem(Pattern pattern, ItemStack stack) {
|
||||||
|
if (stack.isEmpty()) return false;
|
||||||
|
|
||||||
|
String displayName = stack.getDisplayName().getString();
|
||||||
|
if (pattern.matcher(displayName).find()) return true;
|
||||||
|
|
||||||
|
if (Items.ENCHANTED_BOOK.equals(stack.getItem()) || stack.isEnchanted()) {
|
||||||
|
for (String ench : itemEnchantments(stack)) {
|
||||||
|
if (pattern.matcher(ench).find()) return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue