Skip to content

Commit

Permalink
Provide access to player for hud elements and strings
Browse files Browse the repository at this point in the history
  • Loading branch information
pupnewfster committed Dec 20, 2021
1 parent 58c334b commit d91bb11
Show file tree
Hide file tree
Showing 22 changed files with 43 additions and 40 deletions.
8 changes: 6 additions & 2 deletions src/api/java/mekanism/api/gear/ICustomModule.java
Expand Up @@ -57,21 +57,25 @@ default void tickClient(IModule<MODULE> module, PlayerEntity player) {
* Called to collect any HUD strings that should be displayed. This will only be called if {@link ModuleData#rendersHUD()} is {@code true}.
*
* @param module Module instance.
* @param player Player using the Meka-Tool or wearing the MekaSuit. In general this will be the client player, but is passed to make sidedness safer and
* easier.
* @param hudStringAdder Accepts and adds HUD strings.
*/
default void addHUDStrings(IModule<MODULE> module, Consumer<ITextComponent> hudStringAdder) {
default void addHUDStrings(IModule<MODULE> module, PlayerEntity player, Consumer<ITextComponent> hudStringAdder) {
}

/**
* Called to collect any HUD elements that should be displayed when the MekaSuit is rendering the HUD. This will only be called if {@link ModuleData#rendersHUD()} is
* {@code true}.
*
* @param module Module instance.
* @param player Player using the Meka-Tool or wearing the MekaSuit. In general this will be the client player, but is passed to make sidedness safer and
* easier.
* @param hudElementAdder Accepts and adds HUD elements.
*
* @apiNote See {@link IModuleHelper} for various helpers to create HUD elements.
*/
default void addHUDElements(IModule<MODULE> module, Consumer<IHUDElement> hudElementAdder) {
default void addHUDElements(IModule<MODULE> module, PlayerEntity player, Consumer<IHUDElement> hudElementAdder) {
}

/**
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/mekanism/client/render/HUDRenderer.java
Expand Up @@ -109,14 +109,14 @@ private void renderMekaSuitModuleIcons(MatrixStack matrix, float partialTick, in
for (EquipmentSlotType type : EnumUtils.ARMOR_SLOTS) {
ItemStack stack = getStack(type);
if (stack.getItem() instanceof ItemMekaSuitArmor) {
elements.addAll(((ItemMekaSuitArmor) stack.getItem()).getHUDElements(stack));
elements.addAll(((ItemMekaSuitArmor) stack.getItem()).getHUDElements(minecraft.player, stack));
}
}
//Add any elements that might be on modules in the meka tool when it is held
for (EquipmentSlotType type : EnumUtils.HAND_SLOTS) {
ItemStack stack = getStack(type);
if (stack.getItem() instanceof ItemMekaTool) {
elements.addAll(((ItemMekaTool) stack.getItem()).getHUDElements(stack));
elements.addAll(((ItemMekaTool) stack.getItem()).getHUDElements(minecraft.player, stack));
}
}

Expand Down
Expand Up @@ -181,7 +181,7 @@ public void renderOverlay(RenderGameOverlayEvent.Post event) {
ItemStack stack = minecraft.player.getItemBySlot(slotType);
if (stack.getItem() instanceof IItemHUDProvider) {
List<ITextComponent> list = new ArrayList<>();
((IItemHUDProvider) stack.getItem()).addHUDStrings(list, stack, slotType);
((IItemHUDProvider) stack.getItem()).addHUDStrings(list, minecraft.player, stack, slotType);
int size = list.size();
if (size > 0) {
renderStrings.put(slotType, list);
Expand Down
Expand Up @@ -20,6 +20,7 @@
import mekanism.common.util.ItemDataUtils;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.inventory.EquipmentSlotType;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundNBT;
Expand Down Expand Up @@ -99,19 +100,19 @@ default void addModule(ItemStack stack, ModuleData<?> type) {
}

@Override
default void addHUDStrings(List<ITextComponent> list, ItemStack stack, EquipmentSlotType slotType) {
default void addHUDStrings(List<ITextComponent> list, PlayerEntity player, ItemStack stack, EquipmentSlotType slotType) {
for (Module<?> module : getModules(stack)) {
if (module.renderHUD()) {
module.addHUDStrings(list);
module.addHUDStrings(player, list);
}
}
}

default List<IHUDElement> getHUDElements(ItemStack stack) {
default List<IHUDElement> getHUDElements(PlayerEntity player, ItemStack stack) {
List<IHUDElement> ret = new ArrayList<>();
for (Module<?> module : getModules(stack)) {
if (module.renderHUD()) {
module.addHUDElements(ret);
module.addHUDElements(player, ret);
}
}
return ret;
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/mekanism/common/content/gear/Module.java
Expand Up @@ -264,12 +264,12 @@ public List<ModuleConfigItem<?>> getConfigItems() {
return configItems;
}

public void addHUDStrings(List<ITextComponent> list) {
customModule.addHUDStrings(this, list::add);
public void addHUDStrings(PlayerEntity player, List<ITextComponent> list) {
customModule.addHUDStrings(this, player, list::add);
}

public void addHUDElements(List<IHUDElement> list) {
customModule.addHUDElements(this, list::add);
public void addHUDElements(PlayerEntity player, List<IHUDElement> list) {
customModule.addHUDElements(this, player, list::add);
}

public void changeMode(@Nonnull PlayerEntity player, @Nonnull ItemStack stack, int shift, boolean displayChangeMessage) {
Expand Down
Expand Up @@ -7,14 +7,13 @@
import mekanism.api.gear.IHUDElement;
import mekanism.api.gear.IHUDElement.HUDColor;
import mekanism.api.gear.IModule;
import mekanism.client.MekanismClient;
import mekanism.common.capabilities.Capabilities;
import mekanism.common.lib.radiation.RadiationManager;
import mekanism.common.util.CapabilityUtils;
import mekanism.common.util.MekanismUtils;
import mekanism.common.util.MekanismUtils.ResourceType;
import mekanism.common.util.UnitDisplayUtils;
import mekanism.common.util.UnitDisplayUtils.RadiationUnit;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.ResourceLocation;

@ParametersAreNonnullByDefault
Expand All @@ -23,9 +22,9 @@ public class ModuleDosimeterUnit implements ICustomModule<ModuleDosimeterUnit> {
private static final ResourceLocation icon = MekanismUtils.getResource(ResourceType.GUI_HUD, "dosimeter.png");

@Override
public void addHUDElements(IModule<ModuleDosimeterUnit> module, Consumer<IHUDElement> hudElementAdder) {
public void addHUDElements(IModule<ModuleDosimeterUnit> module, PlayerEntity player, Consumer<IHUDElement> hudElementAdder) {
if (module.isEnabled()) {
CapabilityUtils.getCapability(MekanismClient.tryGetClientPlayer(), Capabilities.RADIATION_ENTITY_CAPABILITY, null).ifPresent(capability -> {
player.getCapability(Capabilities.RADIATION_ENTITY_CAPABILITY).ifPresent(capability -> {
double radiation = capability.getRadiation();
hudElementAdder.accept(MekanismAPI.getModuleHelper().hudElement(icon, UnitDisplayUtils.getDisplayShort(radiation, RadiationUnit.SV, 2),
radiation < RadiationManager.MIN_MAGNITUDE ? HUDColor.REGULAR : (radiation < 0.1 ? HUDColor.WARNING : HUDColor.DANGER)));
Expand Down
Expand Up @@ -7,7 +7,6 @@
import mekanism.api.gear.IHUDElement;
import mekanism.api.gear.IHUDElement.HUDColor;
import mekanism.api.gear.IModule;
import mekanism.client.MekanismClient;
import mekanism.common.lib.radiation.RadiationManager;
import mekanism.common.util.MekanismUtils;
import mekanism.common.util.MekanismUtils.ResourceType;
Expand All @@ -22,14 +21,11 @@ public class ModuleGeigerUnit implements ICustomModule<ModuleGeigerUnit> {
private static final ResourceLocation icon = MekanismUtils.getResource(ResourceType.GUI_HUD, "geiger_counter.png");

@Override
public void addHUDElements(IModule<ModuleGeigerUnit> module, Consumer<IHUDElement> hudElementAdder) {
public void addHUDElements(IModule<ModuleGeigerUnit> module, PlayerEntity player, Consumer<IHUDElement> hudElementAdder) {
if (module.isEnabled()) {
PlayerEntity player = MekanismClient.tryGetClientPlayer();
if (player != null) {
double magnitude = MekanismAPI.getRadiationManager().getRadiationLevel(player);
hudElementAdder.accept(MekanismAPI.getModuleHelper().hudElement(icon, UnitDisplayUtils.getDisplayShort(magnitude, RadiationUnit.SV, 2),
magnitude < RadiationManager.MIN_MAGNITUDE ? HUDColor.REGULAR : (magnitude < 0.1 ? HUDColor.WARNING : HUDColor.DANGER)));
}
double magnitude = MekanismAPI.getRadiationManager().getRadiationLevel(player);
hudElementAdder.accept(MekanismAPI.getModuleHelper().hudElement(icon, UnitDisplayUtils.getDisplayShort(magnitude, RadiationUnit.SV, 2),
magnitude < RadiationManager.MIN_MAGNITUDE ? HUDColor.REGULAR : (magnitude < 0.1 ? HUDColor.WARNING : HUDColor.DANGER)));
}
}
}
Expand Up @@ -34,7 +34,7 @@ public void init(IModule<ModuleGravitationalModulatingUnit> module, ModuleConfig
}

@Override
public void addHUDElements(IModule<ModuleGravitationalModulatingUnit> module, Consumer<IHUDElement> hudElementAdder) {
public void addHUDElements(IModule<ModuleGravitationalModulatingUnit> module, PlayerEntity player, Consumer<IHUDElement> hudElementAdder) {
hudElementAdder.accept(MekanismAPI.getModuleHelper().hudElementEnabled(icon, module.isEnabled()));
}

Expand Down
Expand Up @@ -30,7 +30,7 @@ public void init(IModule<ModuleJetpackUnit> module, ModuleConfigItemCreator conf
}

@Override
public void addHUDElements(IModule<ModuleJetpackUnit> module, Consumer<IHUDElement> hudElementAdder) {
public void addHUDElements(IModule<ModuleJetpackUnit> module, PlayerEntity player, Consumer<IHUDElement> hudElementAdder) {
if (module.isEnabled()) {
ItemStack container = module.getContainer();
GasStack stored = ((ItemMekaSuitArmor) container.getItem()).getContainedGas(container, MekanismGases.HYDROGEN.get());
Expand Down
Expand Up @@ -42,7 +42,7 @@ public void tickServer(IModule<ModuleNutritionalInjectionUnit> module, PlayerEnt
}

@Override
public void addHUDElements(IModule<ModuleNutritionalInjectionUnit> module, Consumer<IHUDElement> hudElementAdder) {
public void addHUDElements(IModule<ModuleNutritionalInjectionUnit> module, PlayerEntity player, Consumer<IHUDElement> hudElementAdder) {
if (module.isEnabled()) {
ItemStack container = module.getContainer();
GasStack stored = ((ItemMekaSuitArmor) container.getItem()).getContainedGas(container, MekanismGases.NUTRITIONAL_PASTE.get());
Expand Down
Expand Up @@ -25,7 +25,7 @@ public void tickServer(IModule<ModuleVisionEnhancementUnit> module, PlayerEntity
}

@Override
public void addHUDElements(IModule<ModuleVisionEnhancementUnit> module, Consumer<IHUDElement> hudElementAdder) {
public void addHUDElements(IModule<ModuleVisionEnhancementUnit> module, PlayerEntity player, Consumer<IHUDElement> hudElementAdder) {
hudElementAdder.accept(MekanismAPI.getModuleHelper().hudElementEnabled(icon, module.isEnabled()));
}

Expand Down
Expand Up @@ -11,6 +11,7 @@
import mekanism.api.text.IHasTextComponent;
import mekanism.api.text.TextComponentUtil;
import mekanism.common.MekanismLang;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.text.ITextComponent;

@ParametersAreNonnullByDefault
Expand All @@ -29,7 +30,7 @@ public int getDamage() {
}

@Override
public void addHUDStrings(IModule<ModuleAttackAmplificationUnit> module, Consumer<ITextComponent> hudStringAdder) {
public void addHUDStrings(IModule<ModuleAttackAmplificationUnit> module, PlayerEntity player, Consumer<ITextComponent> hudStringAdder) {
if (module.isEnabled()) {
hudStringAdder.accept(MekanismLang.MODULE_DAMAGE.translateColored(EnumColor.DARK_GRAY, EnumColor.INDIGO, attackDamage.get().getDamage()));
}
Expand Down
Expand Up @@ -43,7 +43,7 @@ public void changeMode(IModule<ModuleExcavationEscalationUnit> module, PlayerEnt
}

@Override
public void addHUDStrings(IModule<ModuleExcavationEscalationUnit> module, Consumer<ITextComponent> hudStringAdder) {
public void addHUDStrings(IModule<ModuleExcavationEscalationUnit> module, PlayerEntity player, Consumer<ITextComponent> hudStringAdder) {
if (module.isEnabled()) {
hudStringAdder.accept(MekanismLang.DISASSEMBLER_EFFICIENCY.translateColored(EnumColor.DARK_GRAY, EnumColor.INDIGO, excavationMode.get().getEfficiency()));
}
Expand Down
Expand Up @@ -22,6 +22,7 @@
import mekanism.common.util.WorldUtils;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.vector.Vector3d;
import net.minecraft.util.text.ITextComponent;
Expand Down Expand Up @@ -81,7 +82,7 @@ public static Set<BlockPos> findPositions(BlockState state, BlockPos location, W
}

@Override
public void addHUDStrings(IModule<ModuleVeinMiningUnit> module, Consumer<ITextComponent> hudStringAdder) {
public void addHUDStrings(IModule<ModuleVeinMiningUnit> module, PlayerEntity player, Consumer<ITextComponent> hudStringAdder) {
//Only add hud string for extended vein mining if enabled in config
if (module.isEnabled() && MekanismConfig.gear.mekaToolExtendedMining.getAsBoolean()) {
hudStringAdder.accept(MekanismLang.MODULE_EXTENDED_ENABLED.translateColored(EnumColor.DARK_GRAY,
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/mekanism/common/item/ItemConfigurator.java
Expand Up @@ -202,7 +202,7 @@ public boolean doesSneakBypassUse(ItemStack stack, IWorldReader world, BlockPos
}

@Override
public void addHUDStrings(List<ITextComponent> list, ItemStack stack, EquipmentSlotType slotType) {
public void addHUDStrings(List<ITextComponent> list, PlayerEntity player, ItemStack stack, EquipmentSlotType slotType) {
list.add(MekanismLang.MODE.translateColored(EnumColor.PINK, getMode(stack)));
}

Expand Down
Expand Up @@ -234,7 +234,7 @@ public Multimap<Attribute, AttributeModifier> getAttributeModifiers(@Nonnull Equ
}

@Override
public void addHUDStrings(List<ITextComponent> list, ItemStack stack, EquipmentSlotType slotType) {
public void addHUDStrings(List<ITextComponent> list, PlayerEntity player, ItemStack stack, EquipmentSlotType slotType) {
DisassemblerMode mode = getMode(stack);
list.add(MekanismLang.MODE.translateColored(EnumColor.GRAY, EnumColor.INDIGO, mode));
list.add(MekanismLang.DISASSEMBLER_EFFICIENCY.translateColored(EnumColor.GRAY, EnumColor.INDIGO, mode.getEfficiency()));
Expand Down
Expand Up @@ -138,7 +138,7 @@ public boolean getFireState(ItemStack stack) {
}

@Override
public void addHUDStrings(List<ITextComponent> list, ItemStack stack, EquipmentSlotType slotType) {
public void addHUDStrings(List<ITextComponent> list, PlayerEntity player, ItemStack stack, EquipmentSlotType slotType) {
list.add(MekanismLang.FIRE_MODE.translateColored(EnumColor.PINK, OnOff.of(getFireState(stack))));
}

Expand Down
Expand Up @@ -102,7 +102,7 @@ public ICapabilityProvider initCapabilities(ItemStack stack, CompoundNBT nbt) {
}

@Override
public void addHUDStrings(List<ITextComponent> list, ItemStack stack, EquipmentSlotType slotType) {
public void addHUDStrings(List<ITextComponent> list, PlayerEntity player, ItemStack stack, EquipmentSlotType slotType) {
boolean hasGas = false;
Optional<IGasHandler> capability = stack.getCapability(Capabilities.GAS_HANDLER_CAPABILITY).resolve();
if (capability.isPresent()) {
Expand Down
Expand Up @@ -100,7 +100,7 @@ public void setMode(ItemStack itemStack, FreeRunnerMode mode) {
}

@Override
public void addHUDStrings(List<ITextComponent> list, ItemStack stack, EquipmentSlotType slotType) {
public void addHUDStrings(List<ITextComponent> list, PlayerEntity player, ItemStack stack, EquipmentSlotType slotType) {
if (slotType == getSlot()) {
list.add(MekanismLang.FREE_RUNNERS_MODE.translateColored(EnumColor.GRAY, getMode(stack).getTextComponent()));
StorageUtils.addStoredEnergy(stack, list, true, MekanismLang.FREE_RUNNERS_STORED);
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/mekanism/common/item/gear/ItemJetpack.java
Expand Up @@ -94,7 +94,7 @@ public void setMode(ItemStack stack, JetpackMode mode) {
}

@Override
public void addHUDStrings(List<ITextComponent> list, ItemStack stack, EquipmentSlotType slotType) {
public void addHUDStrings(List<ITextComponent> list, PlayerEntity player, ItemStack stack, EquipmentSlotType slotType) {
if (slotType == getSlot()) {
ItemJetpack jetpack = (ItemJetpack) stack.getItem();
list.add(MekanismLang.JETPACK_MODE.translateColored(EnumColor.DARK_GRAY, jetpack.getMode(stack)));
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/mekanism/common/item/gear/ItemScubaTank.java
Expand Up @@ -85,7 +85,7 @@ public void setFlowing(ItemStack stack, boolean flowing) {
}

@Override
public void addHUDStrings(List<ITextComponent> list, ItemStack stack, EquipmentSlotType slotType) {
public void addHUDStrings(List<ITextComponent> list, PlayerEntity player, ItemStack stack, EquipmentSlotType slotType) {
if (slotType == getSlot()) {
ItemScubaTank scubaTank = (ItemScubaTank) stack.getItem();
list.add(MekanismLang.SCUBA_TANK_MODE.translateColored(EnumColor.DARK_GRAY, OnOff.of(scubaTank.getFlowing(stack), true)));
Expand Down
@@ -1,11 +1,12 @@
package mekanism.common.item.interfaces;

import java.util.List;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.inventory.EquipmentSlotType;
import net.minecraft.item.ItemStack;
import net.minecraft.util.text.ITextComponent;

public interface IItemHUDProvider {

void addHUDStrings(List<ITextComponent> list, ItemStack stack, EquipmentSlotType slotType);
void addHUDStrings(List<ITextComponent> list, PlayerEntity player, ItemStack stack, EquipmentSlotType slotType);
}

0 comments on commit d91bb11

Please sign in to comment.