From 43e4d0c766f8d91d12d51c9d87152cdc89adaed2 Mon Sep 17 00:00:00 2001 From: Misode Date: Fri, 27 Sep 2024 19:21:13 +0200 Subject: [PATCH] Fix #3 prevent dummies from getting the beacon advancement --- .../mixin/BeaconBlockEntityMixin.java | 30 +++++++++++++++++++ src/main/resources/packtest.mixins.json | 1 + 2 files changed, 31 insertions(+) create mode 100644 src/main/java/io/github/misode/packtest/mixin/BeaconBlockEntityMixin.java diff --git a/src/main/java/io/github/misode/packtest/mixin/BeaconBlockEntityMixin.java b/src/main/java/io/github/misode/packtest/mixin/BeaconBlockEntityMixin.java new file mode 100644 index 0000000..08f0cca --- /dev/null +++ b/src/main/java/io/github/misode/packtest/mixin/BeaconBlockEntityMixin.java @@ -0,0 +1,30 @@ +package io.github.misode.packtest.mixin; + +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import com.llamalad7.mixinextras.sugar.Local; +import io.github.misode.packtest.dummy.Dummy; +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.entity.BeaconBlockEntity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +import java.util.List; + +/** + * Prevents dummies from receiving the "Bring Home the Beacon" advancement + * due to the beacons used as part of the test status indicator + */ +@Mixin(BeaconBlockEntity.class) +public class BeaconBlockEntityMixin { + + @ModifyExpressionValue(method = "tick", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/Level;getEntitiesOfClass(Ljava/lang/Class;Lnet/minecraft/world/phys/AABB;)Ljava/util/List;")) + private static List preventBeaconAdvancement(List entities, @Local(argsOnly = true) Level level, @Local(argsOnly = true, ordinal = 0) BlockPos pos) { + BlockPos structurePos = pos.east().south().above(2); + if (level.getBlockState(structurePos).is(Blocks.STRUCTURE_BLOCK)) { + return entities.stream().filter(e -> !(e instanceof Dummy)).toList(); + } + return entities; + } +} diff --git a/src/main/resources/packtest.mixins.json b/src/main/resources/packtest.mixins.json index 39eab89..6e1963d 100644 --- a/src/main/resources/packtest.mixins.json +++ b/src/main/resources/packtest.mixins.json @@ -4,6 +4,7 @@ "compatibilityLevel": "JAVA_21", "mixins": [ "ArgumentTypeInfosMixin", + "BeaconBlockEntityMixin", "BlockPredicateArgumentBlockMixin", "BlockPredicateArgumentMixin", "BlockPredicateArgumentTagMixin",