diff options
| author | Anhgelus Morhtuuzh <william@herges.fr> | 2025-10-13 15:16:13 +0200 |
|---|---|---|
| committer | Anhgelus Morhtuuzh <william@herges.fr> | 2025-10-13 15:16:13 +0200 |
| commit | d51f3acc89146aae496ce5e038af4f4818d5462f (patch) | |
| tree | b0c58d4f7d380597412806cbd7c8cd186bcd5d37 /src/main/java/world | |
| parent | 598403aa5aa307b1ac95e8368a4635572af00a52 (diff) | |
refactor(hearts): convert stack into heart instead of creating a new one
Diffstat (limited to 'src/main/java/world')
| -rw-r--r-- | src/main/java/world/anhgelus/lifesteal/LifeStealer.java | 7 | ||||
| -rw-r--r-- | src/main/java/world/anhgelus/lifesteal/mixin/ItemMixin.java | 4 |
2 files changed, 8 insertions, 3 deletions
diff --git a/src/main/java/world/anhgelus/lifesteal/LifeStealer.java b/src/main/java/world/anhgelus/lifesteal/LifeStealer.java index 2d1268a..409e3d6 100644 --- a/src/main/java/world/anhgelus/lifesteal/LifeStealer.java +++ b/src/main/java/world/anhgelus/lifesteal/LifeStealer.java @@ -60,9 +60,14 @@ public class LifeStealer { } public ItemStack getHeart() { + return turnsIntoHeart(new ItemStack(Items.NETHER_STAR)); + } + + public ItemStack turnsIntoHeart(ItemStack is) { + if (!is.isOf(Items.NETHER_STAR)) + throw new IllegalArgumentException("Cannot convert a stack into an heart if it's not a nether star"); final var nbt = new NbtCompound(); nbt.putString(PLAYER_KEY, player.getUuid().toString()); - final var is = new ItemStack(Items.NETHER_STAR); is.set(DataComponentTypes.CUSTOM_NAME, Text.empty().append(Text.of("Heart of ")).append(player.getName())); is.set(DataComponentTypes.CUSTOM_DATA, NbtComponent.of(nbt)); return is; diff --git a/src/main/java/world/anhgelus/lifesteal/mixin/ItemMixin.java b/src/main/java/world/anhgelus/lifesteal/mixin/ItemMixin.java index d6de2ce..9f6effb 100644 --- a/src/main/java/world/anhgelus/lifesteal/mixin/ItemMixin.java +++ b/src/main/java/world/anhgelus/lifesteal/mixin/ItemMixin.java @@ -19,11 +19,11 @@ public class ItemMixin { public void craft(ItemStack is, PlayerEntity player, CallbackInfo ci) { if (!is.isOf(Items.NETHER_STAR)) return; // assuming that the nether star cannot be crafted final var lifestealer = LifeStealer.Manager.getLifeStealer((ServerPlayerEntity) player); - player.getInventory().removeOne(is); if (LifeSteal.CAN_CRAFT_HEARTS_ABOVE_VANILLA_MAX || lifestealer.getHealthModifier() < 0) { - player.giveOrDropStack(lifestealer.getHeart()); + lifestealer.turnsIntoHeart(is); return; } + player.getInventory().removeOne(is); final var ingots = new ItemStack(Items.NETHERITE_INGOT); ingots.setCount(4); player.giveOrDropStack(ingots); |
