From 680916880e9d6ed2dfa2e2d92c347d341d32d292 Mon Sep 17 00:00:00 2001 From: FX Date: Thu, 18 Feb 2021 21:12:06 -0500 Subject: [PATCH 1/2] Added Rule `lightningKillsDrops` Which fixes [MC-206922](https://bugs.mojang.com/browse/MC-206922) --- src/main/java/carpet/CarpetSettings.java | 7 +++++++ src/main/java/carpet/mixins/ItemEntityMixin.java | 13 +++++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/main/java/carpet/CarpetSettings.java b/src/main/java/carpet/CarpetSettings.java index 848d0d4d..7bdf1c95 100644 --- a/src/main/java/carpet/CarpetSettings.java +++ b/src/main/java/carpet/CarpetSettings.java @@ -856,4 +856,11 @@ public class CarpetSettings validate = Validator.NONNEGATIVE_NUMBER.class ) public static double structureBlockOutlineDistance = 96d; + + @Rule( + desc = "Lightning kills the items that drop when lightning kills an entity", + extra = {"Setting to false will prevent lightning from killing drops", "Fixes (https://bugs.mojang.com/browse/MC-195640)."}, + category = {BUGFIX} + ) + public static boolean lightningKillsDropsFix = false; } diff --git a/src/main/java/carpet/mixins/ItemEntityMixin.java b/src/main/java/carpet/mixins/ItemEntityMixin.java index 5105a381..2fd31ad6 100644 --- a/src/main/java/carpet/mixins/ItemEntityMixin.java +++ b/src/main/java/carpet/mixins/ItemEntityMixin.java @@ -7,8 +7,10 @@ import net.minecraft.block.ShulkerBoxBlock; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityType; import net.minecraft.entity.ItemEntity; +import net.minecraft.entity.LightningEntity; import net.minecraft.item.BlockItem; import net.minecraft.item.ItemStack; +import net.minecraft.server.world.ServerWorld; import net.minecraft.world.World; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -29,6 +31,17 @@ public abstract class ItemEntityMixin extends Entity implements ItemEntityInterf super(entityType_1, world_1); } + @Override + public void onStruckByLightning(ServerWorld world, LightningEntity lightning) { + if (CarpetSettings.lightningKillsDropsFix) { + if (this.age > 8) { //Only kill item if its older then 8 ticks + super.onStruckByLightning(world, lightning); + } + } else { + super.onStruckByLightning(world, lightning); + } + } + @Override public int getAgeCM() { return this.age; From b61d69c90404dbaf0f46c0dd39a9282a5b7b57a4 Mon Sep 17 00:00:00 2001 From: gnembon <41132274+gnembon@users.noreply.github.com> Date: Thu, 18 Feb 2021 22:15:59 -0400 Subject: [PATCH 2/2] Update src/main/java/carpet/CarpetSettings.java --- src/main/java/carpet/CarpetSettings.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/carpet/CarpetSettings.java b/src/main/java/carpet/CarpetSettings.java index 7bdf1c95..ad82104a 100644 --- a/src/main/java/carpet/CarpetSettings.java +++ b/src/main/java/carpet/CarpetSettings.java @@ -859,7 +859,7 @@ public class CarpetSettings @Rule( desc = "Lightning kills the items that drop when lightning kills an entity", - extra = {"Setting to false will prevent lightning from killing drops", "Fixes (https://bugs.mojang.com/browse/MC-195640)."}, + extra = {"Setting to true will prevent lightning from killing drops", "Fixes (https://bugs.mojang.com/browse/MC-195640)."}, category = {BUGFIX} ) public static boolean lightningKillsDropsFix = false;