Register:
public void onJump() consume(COST_JUMP); public void onAttack() consume(COST_ATTACK); public void onBreakBlock() consume(COST_BREAK);
public int getEnergy() return energy; public int getMaxEnergy() return MAX_ENERGY; public void setEnergy(int amount) this.energy = Math.min(MAX_ENERGY, Math.max(0, amount)); public void addEnergy(int amount) setEnergy(energy + amount); public boolean consume(int amount) if (energy >= amount) energy -= amount; return true; return false; energy client minecraft
// Text context.drawTextWithShadow(client.textRenderer, Text.literal("⚡ " + energy + "/" + maxEnergy), x + width + 5, y + 1, 0xFFFFFF);
@Override public void serverTick() if (player.isCreative() Register: public void onJump() consume(COST_JUMP)
int x = 10; int y = 10; int width = 100; int height = 10; int filledWidth = (int)((energy / (float)maxEnergy) * width);
// EnergyHudOverlay.java package com.example.energyclient.client; import com.example.energyclient.EnergyClientMod; import com.example.energyclient.component.EnergyComponent; import com.mojang.blaze3d.systems.RenderSystem; import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.render.RenderTickCounter; import net.minecraft.text.Text; import net.minecraft.util.Identifier; public void onAttack() consume(COST_ATTACK)
@Override public TypedActionResult<ItemStack> use(World world, PlayerEntity user, Hand hand) ItemStack stack = user.getStackInHand(hand); EnergyComponent energy = EnergyClientMod.ENERGY.get(user); if (energy.getEnergy() < energy.getMaxEnergy()) energy.addEnergy(charge); stack.decrementUnlessCreative(1, user); return TypedActionResult.success(stack); return TypedActionResult.fail(stack);