@Mixin(ClientPlayerInteractionManager.class) public class BreakBlockMixin @Inject(method = "breakBlock", at = @At("HEAD")) private void onBreakBlock(BlockPos pos, CallbackInfoReturnable<Boolean> cir) MinecraftClient.getInstance().player.ifPresent(player -> EnergyComponent comp = EnergyClientMod.ENERGY.get(player); comp.onBreakBlock(); );
// BatteryItem.java public class BatteryItem extends Item private final int charge; public BatteryItem(Settings settings, int charge) super(settings); this.charge = charge;
@Mixin(MinecraftClient.class) public class AttackMixin @Inject(method = "doAttack", at = @At("HEAD")) private void onAttack(CallbackInfoReturnable<Boolean> cir) if (this.player != null) EnergyComponent comp = EnergyClientMod.ENERGY.get(this.player); comp.onAttack();
public class EnergyClientMod implements ModInitializer, EntityComponentInitializer public static final ComponentKey<EnergyComponent> ENERGY = ComponentRegistry.getOrCreate(Identifier.of("energyclient", "energy"), EnergyComponent.class);
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;
"custom": "cardinal-components": [ "energyclient:energy" ]
EnergyComponent energyComp = EnergyClientMod.ENERGY.get(client.player); int energy = energyComp.getEnergy(); int maxEnergy = energyComp.getMaxEnergy();
// 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;
@Mixin(ClientPlayerInteractionManager.class) public class BreakBlockMixin @Inject(method = "breakBlock", at = @At("HEAD")) private void onBreakBlock(BlockPos pos, CallbackInfoReturnable<Boolean> cir) MinecraftClient.getInstance().player.ifPresent(player -> EnergyComponent comp = EnergyClientMod.ENERGY.get(player); comp.onBreakBlock(); );
// BatteryItem.java public class BatteryItem extends Item private final int charge; public BatteryItem(Settings settings, int charge) super(settings); this.charge = charge;
@Mixin(MinecraftClient.class) public class AttackMixin @Inject(method = "doAttack", at = @At("HEAD")) private void onAttack(CallbackInfoReturnable<Boolean> cir) if (this.player != null) EnergyComponent comp = EnergyClientMod.ENERGY.get(this.player); comp.onAttack();
public class EnergyClientMod implements ModInitializer, EntityComponentInitializer public static final ComponentKey<EnergyComponent> ENERGY = ComponentRegistry.getOrCreate(Identifier.of("energyclient", "energy"), EnergyComponent.class);
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;
"custom": "cardinal-components": [ "energyclient:energy" ]
EnergyComponent energyComp = EnergyClientMod.ENERGY.get(client.player); int energy = energyComp.getEnergy(); int maxEnergy = energyComp.getMaxEnergy();
// 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;