From 553814dad85aa3b47769e315db3b404b60a2e52f Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Mon, 28 Jun 2021 14:13:08 -0500 Subject: [PATCH] Eating glow berries adds glow effect Resolves #428 --- ...Eating-glow-berries-adds-glow-effect.patch | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 patches/server/0219-Eating-glow-berries-adds-glow-effect.patch diff --git a/patches/server/0219-Eating-glow-berries-adds-glow-effect.patch b/patches/server/0219-Eating-glow-berries-adds-glow-effect.patch new file mode 100644 index 000000000..2a5c38cb8 --- /dev/null +++ b/patches/server/0219-Eating-glow-berries-adds-glow-effect.patch @@ -0,0 +1,71 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: William Blake Galbreath +Date: Mon, 28 Jun 2021 14:07:35 -0500 +Subject: [PATCH] Eating glow berries adds glow effect + + +diff --git a/src/main/java/net/minecraft/world/item/Items.java b/src/main/java/net/minecraft/world/item/Items.java +index 6322251336a4300649f207efdb4d404d25023c9a..35abd27226d953f42ca52476042c0d417fd35778 100644 +--- a/src/main/java/net/minecraft/world/item/Items.java ++++ b/src/main/java/net/minecraft/world/item/Items.java +@@ -1069,7 +1069,7 @@ public class Items { + public static final Item LANTERN = registerBlock(Blocks.LANTERN, CreativeModeTab.TAB_DECORATIONS); + public static final Item SOUL_LANTERN = registerBlock(Blocks.SOUL_LANTERN, CreativeModeTab.TAB_DECORATIONS); + public static final Item SWEET_BERRIES = registerItem("sweet_berries", new ItemNameBlockItem(Blocks.SWEET_BERRY_BUSH, (new Item.Properties()).tab(CreativeModeTab.TAB_FOOD).food(Foods.SWEET_BERRIES))); +- public static final Item GLOW_BERRIES = registerItem("glow_berries", new ItemNameBlockItem(Blocks.CAVE_VINES, (new Item.Properties()).food(Foods.GLOW_BERRIES).tab(CreativeModeTab.TAB_FOOD))); ++ public static final Item GLOW_BERRIES = registerItem("glow_berries", new net.pl3x.purpur.item.GlowBerryItem(Blocks.CAVE_VINES, (new Item.Properties()).food(Foods.GLOW_BERRIES).tab(CreativeModeTab.TAB_FOOD))); // Purpur + public static final Item CAMPFIRE = registerBlock(Blocks.CAMPFIRE, CreativeModeTab.TAB_DECORATIONS); + public static final Item SOUL_CAMPFIRE = registerBlock(Blocks.SOUL_CAMPFIRE, CreativeModeTab.TAB_DECORATIONS); + public static final Item SHROOMLIGHT = registerBlock(Blocks.SHROOMLIGHT, CreativeModeTab.TAB_DECORATIONS); +diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +index fee63c51d52da28ca6c72216a95c874e8e55e52d..273ef02ba9f3bc5aea17ef082cf87005005d0927 100644 +--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java ++++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +@@ -163,6 +163,7 @@ public class PurpurWorldConfig { + public int enderPearlCooldown = 20; + public int enderPearlCooldownCreative = 20; + public float enderPearlEndermiteChance = 0.05F; ++ public int glowBerriesEatGlowDuration = 0; + private void itemSettings() { + itemImmuneToCactus.clear(); + getList("gameplay-mechanics.item.immune.cactus", new ArrayList<>()).forEach(key -> { +@@ -206,6 +207,7 @@ public class PurpurWorldConfig { + enderPearlCooldown = getInt("gameplay-mechanics.item.ender-pearl.cooldown", enderPearlCooldown); + enderPearlCooldownCreative = getInt("gameplay-mechanics.item.ender-pearl.creative-cooldown", enderPearlCooldownCreative); + enderPearlEndermiteChance = (float) getDouble("gameplay-mechanics.item.ender-pearl.endermite-spawn-chance", enderPearlEndermiteChance); ++ glowBerriesEatGlowDuration = getInt("gameplay-mechanics.item.glow_berries.eat-glow-duration", glowBerriesEatGlowDuration); + } + + public double minecartMaxSpeed = 0.4D; +diff --git a/src/main/java/net/pl3x/purpur/item/GlowBerryItem.java b/src/main/java/net/pl3x/purpur/item/GlowBerryItem.java +new file mode 100644 +index 0000000000000000000000000000000000000000..d45a39afbef10ae6888e2941faa4b9769ab4a832 +--- /dev/null ++++ b/src/main/java/net/pl3x/purpur/item/GlowBerryItem.java +@@ -0,0 +1,26 @@ ++package net.pl3x.purpur.item; ++ ++import net.minecraft.server.level.ServerPlayer; ++import net.minecraft.world.effect.MobEffectInstance; ++import net.minecraft.world.effect.MobEffects; ++import net.minecraft.world.entity.LivingEntity; ++import net.minecraft.world.item.ItemNameBlockItem; ++import net.minecraft.world.item.ItemStack; ++import net.minecraft.world.level.Level; ++import net.minecraft.world.level.block.Block; ++import org.bukkit.event.entity.EntityPotionEffectEvent; ++ ++public class GlowBerryItem extends ItemNameBlockItem { ++ public GlowBerryItem(Block block, Properties settings) { ++ super(block, settings); ++ } ++ ++ @Override ++ public ItemStack finishUsingItem(ItemStack stack, Level world, LivingEntity user) { ++ ItemStack result = super.finishUsingItem(stack, world, user); ++ if (world.purpurConfig.glowBerriesEatGlowDuration > 0 && user instanceof ServerPlayer player) { ++ player.addEffect(new MobEffectInstance(MobEffects.GLOWING, world.purpurConfig.glowBerriesEatGlowDuration), EntityPotionEffectEvent.Cause.FOOD); ++ } ++ return result; ++ } ++}