Compare commits
5 Commits
v1.1.1-1.1
...
1.17-fabri
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
02dddb3257 | ||
|
|
59d2a3934c | ||
|
|
c4fe9992b0 | ||
|
|
8646ac8ec8 | ||
|
|
241b8c8357 |
6
.github/workflows/build.yml
vendored
6
.github/workflows/build.yml
vendored
@@ -12,9 +12,9 @@ jobs:
|
||||
matrix:
|
||||
# Use these Java versions
|
||||
java: [
|
||||
1.8, # Minimum supported by Minecraft
|
||||
11, # Current Java LTS
|
||||
15 # Latest version
|
||||
1.16, # Minimum supported by Minecraft
|
||||
16, # Current Java LTS
|
||||
16 # Latest version
|
||||
]
|
||||
# and run on both Linux and Windows
|
||||
os: [ubuntu-20.04, windows-latest]
|
||||
|
||||
@@ -11,6 +11,6 @@ cloth_version=5.0.34
|
||||
modmenu_version=2.0.2
|
||||
|
||||
# Mod Properties
|
||||
mod_version = 1.1.1
|
||||
mod_version = 1.2
|
||||
maven_group = markil3
|
||||
archives_base_name = immersive_hud
|
||||
|
||||
@@ -1,11 +1,19 @@
|
||||
package markil3.immersive_hud;
|
||||
|
||||
import static markil3.immersive_hud.Main.TICKS_PER_SECOND;
|
||||
|
||||
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 java.util.Arrays;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import me.shedaniel.autoconfig.AutoConfig;
|
||||
|
||||
import static markil3.immersive_hud.Main.TICKS_PER_SECOND;
|
||||
|
||||
/**
|
||||
* Configuration manager of this mod, which reads from and writes to this mod's
|
||||
* configuration file.
|
||||
@@ -88,6 +96,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.
|
||||
@@ -247,6 +256,26 @@ 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<Item> getIgnoredItems()
|
||||
{
|
||||
return Arrays.stream(ignoredItems).map(Registry.ITEM::get).collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
/**
|
||||
* Obtains a collection of items that won't cause hands and crosshairs to show when used.
|
||||
*
|
||||
* @return An array of identifiers.
|
||||
*/
|
||||
public Identifier[] getIgnoredIdentifiers()
|
||||
{
|
||||
return this.ignoredItems;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the time that the hands are allowed to display.
|
||||
*
|
||||
@@ -318,6 +347,26 @@ 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);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets which items won't cause the hands and crosshairs to show when used.
|
||||
*
|
||||
* @param items - A set of ignored items.
|
||||
*/
|
||||
public void setIgnoredItems(String... items)
|
||||
{
|
||||
this.ignoredItems = Arrays.stream(items).map(Identifier::new).filter(i -> Registry.ITEM.getOrEmpty(i).isPresent()).toArray(Identifier[]::new);
|
||||
}
|
||||
/**
|
||||
* Saves changes to this mod's configuration.
|
||||
*/
|
||||
|
||||
@@ -3,7 +3,11 @@ package markil3.immersive_hud;
|
||||
import com.terraformersmc.modmenu.api.ConfigScreenFactory;
|
||||
import com.terraformersmc.modmenu.api.ModMenuApi;
|
||||
|
||||
import net.minecraft.item.Items;
|
||||
import net.minecraft.text.TranslatableText;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.InvalidIdentifierException;
|
||||
import net.minecraft.util.registry.Registry;
|
||||
|
||||
import me.shedaniel.autoconfig.AutoConfig;
|
||||
import me.shedaniel.clothconfig2.api.ConfigBuilder;
|
||||
@@ -13,6 +17,10 @@ import me.shedaniel.clothconfig2.gui.entries.DoubleListEntry;
|
||||
|
||||
import static markil3.immersive_hud.Main.TICKS_PER_SECOND;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class ModMenu implements ModMenuApi
|
||||
{
|
||||
|
||||
@@ -185,6 +193,31 @@ public class ModMenu implements ModMenuApi
|
||||
.setSaveConsumer(val -> instance.shouldShowArmor(val))
|
||||
.build());
|
||||
|
||||
general.addEntry(entryBuilder
|
||||
.startStrList(new TranslatableText("option.immersive_hud.ignoreList"), Arrays
|
||||
.asList(instance
|
||||
.getIgnoredIdentifiers()).stream().map(Identifier::toString)
|
||||
.collect(Collectors.toList()))
|
||||
.setDefaultValue(Arrays
|
||||
.asList(Registry.ITEM.getId(Items.FIREWORK_ROCKET).toString()))
|
||||
.setTooltip(new TranslatableText("tooltip.immersive_hud.ignoreList"))
|
||||
.setSaveConsumer(val -> instance.setIgnoredItems(val.toArray(new String[0]))).setErrorSupplier(val -> {
|
||||
try
|
||||
{
|
||||
Optional<String> item = val.stream().filter(i -> !Registry.ITEM.getOrEmpty(new Identifier(i)).isPresent()).findFirst();
|
||||
if (item.isPresent())
|
||||
{
|
||||
return Optional.of(new TranslatableText("error.immersive_hud.ignoreList.unknownItem"));
|
||||
}
|
||||
}
|
||||
catch (InvalidIdentifierException e)
|
||||
{
|
||||
return Optional.of(new TranslatableText("error.immersive_hud.ignoreList.illegalId"));
|
||||
}
|
||||
return Optional.empty();
|
||||
})
|
||||
.build());
|
||||
|
||||
return builder.build();
|
||||
};
|
||||
}
|
||||
|
||||
@@ -49,6 +49,7 @@ import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* Contains the logic for changing the HUD.
|
||||
@@ -250,6 +251,8 @@ public class TimerUtils
|
||||
ConfigManager.getInstance().getExperienceTime();
|
||||
ConfigManager.TimeValues jump =
|
||||
ConfigManager.getInstance().getJumpTime();
|
||||
ConfigManager.TimeValues healthTimes = ConfigManager.getInstance().getHealthTime();
|
||||
ConfigManager.TimeValues hungerTimes = ConfigManager.getInstance().getHungerTime();
|
||||
|
||||
float hotbarAlpha = Main.getAlpha(hotbarTime,
|
||||
hotbar.getMaxTime(),
|
||||
@@ -263,8 +266,21 @@ public class TimerUtils
|
||||
jump.getMaxTime(),
|
||||
jump.getFadeInTime(),
|
||||
jump.getFadeOutTime());
|
||||
float statusAlpha = Main.getAlpha(healthTime,
|
||||
healthTimes.getMaxTime(),
|
||||
healthTimes.getFadeInTime(),
|
||||
healthTimes.getFadeOutTime());
|
||||
statusAlpha = Math.max(statusAlpha, Main.getAlpha(hungerTime,
|
||||
hungerTimes.getMaxTime(),
|
||||
hungerTimes.getFadeInTime(),
|
||||
hungerTimes.getFadeOutTime()));
|
||||
/*
|
||||
* Draw it in its standard location until it is completely transparent, then move it
|
||||
* instantly.
|
||||
*/
|
||||
statusAlpha = (float) Math.ceil(statusAlpha);
|
||||
return 7 * (1 - Math.max(experienceAlpha,
|
||||
jumpAlpha)) + 22 * (1 - hotbarAlpha);
|
||||
jumpAlpha)) + 22 * (1 - hotbarAlpha) + 42 * (1 - statusAlpha);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -289,6 +305,7 @@ public class TimerUtils
|
||||
LivingEntity entity;
|
||||
Item item;
|
||||
Iterator<ItemStack> hands;
|
||||
Set<Item> ignored;
|
||||
if (mc.getCameraEntity() instanceof LivingEntity)
|
||||
{
|
||||
entity = (LivingEntity) mc.getCameraEntity();
|
||||
@@ -314,6 +331,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)
|
||||
{
|
||||
|
||||
@@ -338,7 +338,7 @@ public class HudHook
|
||||
@Inject(method = "renderStatusBars(Lnet/minecraft/client/util" +
|
||||
"/math/MatrixStack;)V", at = @At(value = "INVOKE", target = "Lnet" +
|
||||
"/minecraft/util/profiler/Profiler;swap(Ljava/lang/String;)V",
|
||||
ordinal = 1))
|
||||
ordinal = 1, shift = At.Shift.BY, by = 3))
|
||||
public void renderFood(MatrixStack matrices, CallbackInfo callbackInfo)
|
||||
{
|
||||
try
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
"option.immersive_hud.minHealth": "Minimum Health Fade",
|
||||
"option.immersive_hud.minHunger": "Minimum Hunger Fade",
|
||||
"option.immersive_hud.showArmor": "Show Armor",
|
||||
"option.immersive_hud.ignoreList": "Ignored Items",
|
||||
"tooltip.immersive_hud.hotbarMaxTime": "How long the hotbar can be displayed on screen in seconds",
|
||||
"tooltip.immersive_hud.hotbarFadeIn": "How many seconds it takes for the hotbar to fade in",
|
||||
"tooltip.immersive_hud.hotbarFadeOut": "How many seconds it takes for the hotbar to move out",
|
||||
@@ -49,5 +50,8 @@
|
||||
"tooltip.immersive_hud.hideHands": "Whether or not hands should be hidden after a period of time",
|
||||
"tooltip.immersive_hud.minHealth": "When the percentage of health goes below this level, the health bar won't fade away",
|
||||
"tooltip.immersive_hud.minHunger": "When the hunger level goes below this level, the hunger bar won't fade away",
|
||||
"tooltip.immersive_hud.showArmor": "Whether or not the armor bar should display on the HUD"
|
||||
"tooltip.immersive_hud.showArmor": "Whether or not the armor bar should display on the HUD",
|
||||
"tooltip.immersive_hud.ignoreList": "Which items will not trigger the arm and crosshairs when used",
|
||||
"error.immersive_hud.ignoreList.unknownItem": "Unknown item %s",
|
||||
"error.immersive_hud.ignoreList.illegalId": "%s is not a legal item identifier"
|
||||
}
|
||||
Reference in New Issue
Block a user