Compare commits

...

5 Commits

Author SHA1 Message Date
Markil3
02dddb3257 Update gradle.properties 2021-08-30 22:30:24 -06:00
Markil3
59d2a3934c Allows some items to not trigger a hand/crosshair update.
This is helpful if one is using Firework rockets to fly around the landscape.
2021-08-30 22:23:13 -06:00
Markil3
c4fe9992b0 Changes how the mod handles status bars slightly.
This should somewhat increase compatibility with the AppleSkin mod.
2021-07-22 13:37:28 -06:00
Markil3
8646ac8ec8 Update build.yml 2021-06-18 09:32:53 -06:00
Markil3
241b8c8357 Update build.yml for 1.17 workflows 2021-06-18 09:29:19 -06:00
7 changed files with 120 additions and 9 deletions

View File

@@ -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]

View File

@@ -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

View File

@@ -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.
*/

View File

@@ -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();
};
}

View File

@@ -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)
{

View File

@@ -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

View File

@@ -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"
}