diff options
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/world/anhgelus/lifesteal/LifeSteal.java | 8 | ||||
| -rw-r--r-- | src/main/java/world/anhgelus/lifesteal/mixin/ItemMixin.java | 14 |
2 files changed, 21 insertions, 1 deletions
diff --git a/src/main/java/world/anhgelus/lifesteal/LifeSteal.java b/src/main/java/world/anhgelus/lifesteal/LifeSteal.java index 062278d..f5f8892 100644 --- a/src/main/java/world/anhgelus/lifesteal/LifeSteal.java +++ b/src/main/java/world/anhgelus/lifesteal/LifeSteal.java @@ -47,6 +47,14 @@ public class LifeSteal implements ModInitializer { GRACE_PERIOD = rule.get(); }) ); + public static boolean CAN_CRAFT_HEARTS_ABOVE_VANILLA_MAX = false; + public static final GameRules.Key<GameRules.BooleanRule> RULE_CAN_CRAFT_HEARTS_MAX = GameRuleRegistry.register( + MOD_ID + ":canCraftHeartsAboveVanillaMax", + GameRules.Category.MISC, + GameRuleFactory.createBooleanRule(CAN_CRAFT_HEARTS_ABOVE_VANILLA_MAX, (server, rule) -> { + CAN_CRAFT_HEARTS_ABOVE_VANILLA_MAX = rule.get(); + }) + ); @Override public void onInitialize() { diff --git a/src/main/java/world/anhgelus/lifesteal/mixin/ItemMixin.java b/src/main/java/world/anhgelus/lifesteal/mixin/ItemMixin.java index a405637..3ad1697 100644 --- a/src/main/java/world/anhgelus/lifesteal/mixin/ItemMixin.java +++ b/src/main/java/world/anhgelus/lifesteal/mixin/ItemMixin.java @@ -5,10 +5,12 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.text.Text; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import world.anhgelus.lifesteal.LifeSteal; import world.anhgelus.lifesteal.LifeStealer; @Mixin(Item.class) @@ -18,6 +20,16 @@ public class ItemMixin { 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); - player.giveOrDropStack(lifestealer.getHeart()); + if (LifeSteal.CAN_CRAFT_HEARTS_ABOVE_VANILLA_MAX && lifestealer.getHealthModifier() < 0) { + player.giveOrDropStack(lifestealer.getHeart()); + return; + } + final var netherites = new ItemStack(Items.NETHERITE_INGOT); + netherites.setCount(4); + player.giveOrDropStack(netherites); + final var shells = new ItemStack(Items.NAUTILUS_SHELL); + shells.setCount(4); + player.giveOrDropStack(shells); + player.sendMessage(Text.of("You cannot craft hearts because you at/above 10 hearts."), false); } } |
