diff --git a/.gitignore b/.gitignore index d615ba1..00543ed 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,4 @@ bin/ run/ /logs/ +/remappedSrc/ diff --git a/src/main/java/markil3/immersive_hud/ConfigManager.java b/src/main/java/markil3/immersive_hud/ConfigManager.java index 6bfb889..5a79211 100644 --- a/src/main/java/markil3/immersive_hud/ConfigManager.java +++ b/src/main/java/markil3/immersive_hud/ConfigManager.java @@ -1,6 +1,10 @@ package markil3.immersive_hud; +import net.minecraft.item.Item; +import net.minecraft.item.Items; +import net.minecraft.util.Identifier; import net.minecraft.util.math.MathHelper; +import net.minecraft.util.registry.Registry; //import me.sargunvohra.mcmods.autoconfig1u.AutoConfig; @@ -8,6 +12,12 @@ import me.sargunvohra.mcmods.autoconfig1u.AutoConfig; import static markil3.immersive_hud.Main.TICKS_PER_SECOND; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + /** * Configuration manager of this mod, which reads from and writes to this mod's * configuration file. @@ -90,6 +100,7 @@ public class ConfigManager private boolean showArmor = true; private double minHealth = 0.5; private int minHunger = 17; + private Identifier[] ignoredItems = new Identifier[]{Registry.ITEM.getId(Items.FIREWORK_ROCKET)}; /** * Returns the instance of this class. @@ -103,7 +114,7 @@ public class ConfigManager if (Class.forName("me.sargunvohra.mcmods.autoconfig1u.AutoConfig") != null) { return AutoConfig.getConfigHolder(ConfigManagerCloth.class) - .getConfig(); + .getConfig(); } else { @@ -250,6 +261,16 @@ public class ConfigManager return this.minHunger; } + /** + * Obtains a collection of items that won't cause hands and crosshairs to show when used. + * + * @return A set of ignored items. + */ + public Set getIgnoredItems() + { + return Arrays.stream(ignoredItems).map(Registry.ITEM::get).collect(Collectors.toSet()); + } + /** * Sets the time that the hands are allowed to display. * @@ -321,6 +342,16 @@ public class ConfigManager { this.minHunger = MathHelper.clamp(boundary, 0, 20); } + + /** + * Sets which items won't cause the hands and crosshairs to show when used. + * + * @param items - A set of ignored items. + */ + public void setIgnoredItems(Item... items) + { + this.ignoredItems = Arrays.stream(items).map(Registry.ITEM::getId).toArray(Identifier[]::new); + } /** * Saves changes to this mod's configuration. */ diff --git a/src/main/java/markil3/immersive_hud/TimerUtils.java b/src/main/java/markil3/immersive_hud/TimerUtils.java index 3f75891..c01d45d 100644 --- a/src/main/java/markil3/immersive_hud/TimerUtils.java +++ b/src/main/java/markil3/immersive_hud/TimerUtils.java @@ -48,7 +48,9 @@ import net.minecraft.util.math.MathHelper; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; +import java.util.List; import java.util.Optional; +import java.util.Set; /** * Contains the logic for changing the HUD. @@ -304,6 +306,7 @@ public class TimerUtils LivingEntity entity; Item item; Iterator hands; + Set ignored; if (mc.getCameraEntity() instanceof LivingEntity) { entity = (LivingEntity) mc.getCameraEntity(); @@ -329,6 +332,14 @@ public class TimerUtils .map(ItemStack::getItem) .orElse(null); } + if (item != null) + { + ignored = ConfigManager.getInstance().getIgnoredItems(); + if (ignored.contains(item)) + { + return; + } + } crosshairTime = ConfigManager.getInstance().getCrosshairTime(); if (hand == Hand.MAIN_HAND) {