aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/world
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/world')
-rw-r--r--src/main/java/world/anhgelus/lifesteal/LifeStealer.java7
-rw-r--r--src/main/java/world/anhgelus/lifesteal/mixin/ItemMixin.java4
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);