|
| 1 | +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 |
| 2 | +From: Aniket Joshi <arealronin@gmail.com> |
| 3 | +Date: Thu, 6 Oct 2022 14:11:41 +0530 |
| 4 | +Subject: [PATCH] Honey bottle cures and heals |
| 5 | + |
| 6 | + |
| 7 | +diff --git a/src/main/java/net/minecraft/world/item/HoneyBottleItem.java b/src/main/java/net/minecraft/world/item/HoneyBottleItem.java |
| 8 | +index c8d6b5e60b6c8c612fa8580c63a32c4a8f8b0a7b..4f9ec6b66b0d923a1c2c2e95272c3472da8840de 100644 |
| 9 | +--- a/src/main/java/net/minecraft/world/item/HoneyBottleItem.java |
| 10 | ++++ b/src/main/java/net/minecraft/world/item/HoneyBottleItem.java |
| 11 | +@@ -7,10 +7,17 @@ import net.minecraft.sounds.SoundEvents; |
| 12 | + import net.minecraft.stats.Stats; |
| 13 | + import net.minecraft.world.InteractionHand; |
| 14 | + import net.minecraft.world.InteractionResultHolder; |
| 15 | ++import net.minecraft.world.effect.MobEffect; |
| 16 | ++import net.minecraft.world.effect.MobEffectInstance; |
| 17 | + import net.minecraft.world.effect.MobEffects; |
| 18 | + import net.minecraft.world.entity.LivingEntity; |
| 19 | + import net.minecraft.world.entity.player.Player; |
| 20 | + import net.minecraft.world.level.Level; |
| 21 | ++import org.bukkit.event.entity.EntityPotionEffectEvent; |
| 22 | ++import org.bukkit.event.entity.EntityRegainHealthEvent; |
| 23 | ++ |
| 24 | ++import java.util.List; |
| 25 | ++import java.util.Map; |
| 26 | + |
| 27 | + public class HoneyBottleItem extends Item { |
| 28 | + private static final int DRINK_DURATION = 40; |
| 29 | +@@ -29,6 +36,33 @@ public class HoneyBottleItem extends Item { |
| 30 | + |
| 31 | + if (!world.isClientSide) { |
| 32 | + user.removeEffect(MobEffects.POISON, org.bukkit.event.entity.EntityPotionEffectEvent.Cause.FOOD); // Paper |
| 33 | ++ |
| 34 | ++ // Purpur start - honey bottle cures and heals |
| 35 | ++ if (world.purpurConfig.honeyBottleCures) { |
| 36 | ++ Map<MobEffect, MobEffectInstance> effects = user.activeEffects; |
| 37 | ++ if (!effects.isEmpty()) { |
| 38 | ++ for (MobEffect effect : effects.keySet()) { |
| 39 | ++ if (world.purpurConfig.honeyBottleCurableEffects.contains(effect) && |
| 40 | ++ user.hasEffect(effect)) |
| 41 | ++ user.removeEffect(effect, org.bukkit.event.entity.EntityPotionEffectEvent.Cause.FOOD); |
| 42 | ++ } |
| 43 | ++ } |
| 44 | ++ } |
| 45 | ++ |
| 46 | ++ if (world.purpurConfig.honeyBottleHeals) { |
| 47 | ++ user.heal(world.purpurConfig.honeyBottleRegenAmount, org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason.EATING); |
| 48 | ++ } |
| 49 | ++ |
| 50 | ++ if (world.purpurConfig.honeyBottleAddsPositiveEffects) { |
| 51 | ++ List<MobEffect> effects = world.purpurConfig.honeyBottleAddedEffects; |
| 52 | ++ if (!effects.isEmpty()) { |
| 53 | ++ for (MobEffect effect : effects) { |
| 54 | ++ user.addEffect(new MobEffectInstance(effect, world.purpurConfig.honeyBottlePotionEffectsDuration), |
| 55 | ++ org.bukkit.event.entity.EntityPotionEffectEvent.Cause.FOOD); |
| 56 | ++ } |
| 57 | ++ } |
| 58 | ++ } |
| 59 | ++ // Purpur end |
| 60 | + } |
| 61 | + |
| 62 | + if (stack.isEmpty()) { |
| 63 | +@@ -70,4 +104,4 @@ public class HoneyBottleItem extends Item { |
| 64 | + public InteractionResultHolder<ItemStack> use(Level world, Player user, InteractionHand hand) { |
| 65 | + return ItemUtils.startUsingInstantly(world, user, hand); |
| 66 | + } |
| 67 | +-} |
| 68 | ++} |
| 69 | +\ No newline at end of file |
| 70 | +diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java |
| 71 | +index a6356d19f0fc664be523f19c2ea1704191a7a73a..f70903ad70a0c215f313f9c5636a92a6c2decaa6 100644 |
| 72 | +--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java |
| 73 | ++++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java |
| 74 | +@@ -4,15 +4,20 @@ import gg.pufferfish.pufferfish.PufferfishConfig; |
| 75 | + import net.minecraft.core.Registry; |
| 76 | + import net.minecraft.resources.ResourceLocation; |
| 77 | + import net.minecraft.util.Mth; |
| 78 | ++import net.minecraft.world.effect.MobEffect; |
| 79 | ++import net.minecraft.world.effect.MobEffects; |
| 80 | + import net.minecraft.world.entity.Entity; |
| 81 | + import net.minecraft.world.entity.EntityType; |
| 82 | + import net.minecraft.world.item.DyeColor; |
| 83 | + import net.minecraft.world.item.Item; |
| 84 | + import net.minecraft.world.item.Items; |
| 85 | ++import net.minecraft.world.item.alchemy.Potion; |
| 86 | ++import net.minecraft.world.item.alchemy.Potions; |
| 87 | + import net.minecraft.world.level.Explosion; |
| 88 | + import net.minecraft.world.level.block.Block; |
| 89 | + import net.minecraft.world.level.block.Blocks; |
| 90 | + import net.minecraft.world.level.block.state.properties.Tilt; |
| 91 | ++import org.bukkit.potion.PotionEffectType; |
| 92 | + import org.purpurmc.purpur.entity.GlowSquidColor; |
| 93 | + import org.purpurmc.purpur.tool.Strippable; |
| 94 | + import org.purpurmc.purpur.tool.Tillable; |
| 95 | +@@ -3131,5 +3136,44 @@ public class PurpurWorldConfig { |
| 96 | + cauldronDripstoneWaterFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-water", cauldronDripstoneWaterFillChance); |
| 97 | + cauldronDripstoneLavaFillChance = (float) getDouble("blocks.cauldron.fill-chances.dripstone-lava", cauldronDripstoneLavaFillChance); |
| 98 | + } |
| 99 | +-} |
| 100 | + |
| 101 | ++ public boolean honeyBottleCures = false; |
| 102 | ++ public boolean honeyBottleHeals = false; |
| 103 | ++ public float honeyBottleRegenAmount = 1.5f; |
| 104 | ++ public boolean honeyBottleAddsPositiveEffects = true; |
| 105 | ++ public int honeyBottlePotionEffectsDuration = 200; |
| 106 | ++ public List<MobEffect> honeyBottleCurableEffects = new ArrayList<>(); |
| 107 | ++ public List<MobEffect> honeyBottleAddedEffects = new ArrayList<>(); |
| 108 | ++ private void honeyBottleSettings() { |
| 109 | ++ honeyBottleCures = getBoolean("gameplay-mechanics.item.honey-bottle.cures-effects", honeyBottleCures); |
| 110 | ++ honeyBottleHeals = getBoolean("gameplay-mechanics.item.honey-bottle.heals", honeyBottleHeals); |
| 111 | ++ honeyBottleAddsPositiveEffects = getBoolean("gameplay-mechanics.item.honey-bottle.adds-effects", honeyBottleAddsPositiveEffects); |
| 112 | ++ honeyBottleRegenAmount = (float) getDouble("gameplay-mechanics.item.honey-bottle.regen-health-amount", honeyBottleRegenAmount); |
| 113 | ++ honeyBottlePotionEffectsDuration = getInt("gameplay-mechanics.item.honey-bottle.potion-effects-duration", honeyBottlePotionEffectsDuration); |
| 114 | ++ |
| 115 | ++ getList("gameplay-mechanics.item.honey-bottle.curable-effects", new ArrayList<String>(){{ |
| 116 | ++ add("minecraft:slowness"); |
| 117 | ++ add("minecraft:mining_fatigue"); |
| 118 | ++ add("minecraft:nausea"); |
| 119 | ++ add("minecraft:blindness"); |
| 120 | ++ add("minecraft:poison"); |
| 121 | ++ add("minecraft:wither"); |
| 122 | ++ add("minecraft:levitation"); |
| 123 | ++ add("minecraft:unluck"); |
| 124 | ++ add("minecraft:bad_omen"); |
| 125 | ++ }}).forEach(key -> { |
| 126 | ++ MobEffect curableEffect = Registry.MOB_EFFECT.get(new ResourceLocation(key.toString())); |
| 127 | ++ honeyBottleCurableEffects.add(curableEffect); |
| 128 | ++ }); |
| 129 | ++ |
| 130 | ++ getList("gameplay-mechanics.item.honey-bottle.added-effects", new ArrayList<String>(){{ |
| 131 | ++ add("minecraft:strength"); |
| 132 | ++ add("minecraft:regeneration"); |
| 133 | ++ add("minecraft:saturation"); |
| 134 | ++ add("minecraft:glowing"); |
| 135 | ++ }}).forEach(key -> { |
| 136 | ++ MobEffect addedEffect = Registry.MOB_EFFECT.get(new ResourceLocation(key.toString())); |
| 137 | ++ honeyBottleAddedEffects.add(addedEffect); |
| 138 | ++ }); |
| 139 | ++ } |
| 140 | ++} |
| 141 | +\ No newline at end of file |
0 commit comments