Pegasus amulet now defaults to a half charge rather than needing to fully recharge it after crafting

This commit is contained in:
Sollace 2023-03-05 01:28:26 +00:00
parent 97496239b4
commit b728416c17
2 changed files with 15 additions and 2 deletions

View file

@ -22,6 +22,10 @@ public interface ChargeableItem {
return setEnergy(stack, getMaxCharge()); return setEnergy(stack, getMaxCharge());
} }
default ItemStack recharge(ItemStack stack, float amount) {
return setEnergy(stack, getEnergy(stack) + amount);
}
default boolean canCharge(ItemStack stack) { default boolean canCharge(ItemStack stack) {
return isChargable() && getEnergy(stack) < getMaxCharge(); return isChargable() && getEnergy(stack) < getMaxCharge();
} }
@ -41,12 +45,16 @@ public interface ChargeableItem {
} }
} }
static int getDefaultCharge(ItemStack stack) {
return stack.getItem() instanceof ChargeableItem c ? c.getDefaultCharge() : 0;
}
static float getEnergy(ItemStack stack) { static float getEnergy(ItemStack stack) {
return stack.hasNbt() && stack.getNbt().contains("energy") ? stack.getNbt().getFloat("energy") : (stack.getItem() instanceof ChargeableItem c) ? c.getDefaultCharge() : 0; return stack.hasNbt() && stack.getNbt().contains("energy") ? stack.getNbt().getFloat("energy") : getDefaultCharge(stack);
} }
static ItemStack setEnergy(ItemStack stack, float energy) { static ItemStack setEnergy(ItemStack stack, float energy) {
if (energy <= 0) { if (energy <= 0 && getDefaultCharge(stack) <= 0) {
stack.removeSubNbt("energy"); stack.removeSubNbt("energy");
} else { } else {
stack.getOrCreateNbt().putFloat("energy", energy); stack.getOrCreateNbt().putFloat("energy", energy);

View file

@ -25,6 +25,11 @@ public class PegasusAmuletItem extends AmuletItem implements ItemTracker.Trackab
} }
@Override
public int getDefaultCharge() {
return getMaxCharge() / 2;
}
@Override @Override
public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) { public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) {
if (entity.world.getTime() % 6 == 0 && entity instanceof LivingEntity living && isApplicable(living)) { if (entity.world.getTime() % 6 == 0 && entity instanceof LivingEntity living && isApplicable(living)) {