From 680916880e9d6ed2dfa2e2d92c347d341d32d292 Mon Sep 17 00:00:00 2001 From: FX Date: Thu, 18 Feb 2021 21:12:06 -0500 Subject: [PATCH 1/3] 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 fd84a5a6d04629296365f1f20ca0c223070a38b3 Mon Sep 17 00:00:00 2001 From: gnembon Date: Thu, 18 Feb 2021 22:14:50 -0400 Subject: [PATCH 2/3] making sure custom structure limits are always working. --- src/main/java/carpet/CarpetSettings.java | 5 +++-- .../carpet/mixins/UpdateStructureBlockC2SPacketMixin.java | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/carpet/CarpetSettings.java b/src/main/java/carpet/CarpetSettings.java index 848d0d4d..d2733614 100644 --- a/src/main/java/carpet/CarpetSettings.java +++ b/src/main/java/carpet/CarpetSettings.java @@ -52,6 +52,7 @@ public class CarpetSettings public static boolean doChainStone = false; public static boolean chainStoneStickToAll = false; public static Block structureBlockIgnoredBlock = Blocks.STRUCTURE_VOID; + public static final int vanillaStructureBlockLimit = 48; private static class LanguageValidator extends Validator { @Override public String validate(ServerCommandSource source, ParsedRule currentRule, String newValue, String string) { @@ -802,7 +803,7 @@ public class CarpetSettings public static class StructureBlockLimitValidator extends Validator { @Override public Integer validate(ServerCommandSource source, ParsedRule currentRule, Integer newValue, String string) { - return (newValue >= 48) ? newValue : null; + return (newValue >= vanillaStructureBlockLimit) ? newValue : null; } @Override @@ -823,7 +824,7 @@ public class CarpetSettings validate = StructureBlockLimitValidator.class, strict = false ) - public static int structureBlockLimit = 48; + public static int structureBlockLimit = vanillaStructureBlockLimit; public static class StructureBlockIgnoredValidator extends Validator { diff --git a/src/main/java/carpet/mixins/UpdateStructureBlockC2SPacketMixin.java b/src/main/java/carpet/mixins/UpdateStructureBlockC2SPacketMixin.java index b7177773..78509307 100644 --- a/src/main/java/carpet/mixins/UpdateStructureBlockC2SPacketMixin.java +++ b/src/main/java/carpet/mixins/UpdateStructureBlockC2SPacketMixin.java @@ -38,7 +38,7 @@ public class UpdateStructureBlockC2SPacketMixin { ) private void structureBlockLimitsWrite(PacketByteBuf buf, CallbackInfo ci) { //client method, only applicable if with carpet is on the server, or running locally - if (CarpetSettings.structureBlockLimit >= 128) + if (CarpetSettings.structureBlockLimit != CarpetSettings.vanillaStructureBlockLimit) { buf.writeInt(this.offset.getX()); buf.writeInt(this.offset.getY()); 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 3/3] 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;