Skip to content

Commit

Permalink
Actually implement dna_entangled blocking
Browse files Browse the repository at this point in the history
  • Loading branch information
legobmw99 committed Jan 25, 2025
1 parent 74a76b5 commit 4f26cae
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 5 deletions.
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
package com.legobmw99.allomancy.modules.consumables.item;

import com.legobmw99.allomancy.Allomancy;
import com.legobmw99.allomancy.modules.powers.data.AllomancerAttachment;
import com.legobmw99.allomancy.util.ItemDisplay;
import net.minecraft.ChatFormatting;
import net.minecraft.core.component.DataComponents;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
Expand Down Expand Up @@ -46,13 +49,20 @@ public LerasiumItem(Item.Properties props) {

@Override
public InteractionResult use(Level world, Player player, InteractionHand hand) {
if (!player.getData(AllomancerAttachment.ALLOMANCY_DATA).isMistborn()) {
if (world instanceof ServerLevel level && player instanceof ServerPlayer sp) {
if (player.getData(AllomancerAttachment.ALLOMANCY_DATA).isMistborn()) {
return InteractionResult.FAIL;
}

var entangled = level.getServer().getAdvancements().get(Allomancy.rl("main/dna_entangled"));
if (entangled != null && sp.getAdvancements().getOrStartProgress(entangled).isDone()) {
return InteractionResult.FAIL;
}

player.startUsingItem(hand);
return InteractionResult.SUCCESS;
}

return InteractionResult.FAIL;

return InteractionResult.PASS;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,17 @@
import com.legobmw99.allomancy.modules.consumables.item.component.FlakeStorage;
import com.legobmw99.allomancy.modules.powers.data.AllomancerAttachment;
import com.legobmw99.allomancy.test.util.AllomancyTestHelper;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.gametest.framework.GameTest;
import net.minecraft.network.chat.Component;
import net.minecraft.world.Difficulty;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraft.world.phys.Vec2;
import net.minecraft.world.phys.Vec3;
import net.neoforged.testframework.annotation.ForEachTest;
import net.neoforged.testframework.annotation.TestHolder;
import net.neoforged.testframework.gametest.EmptyTemplate;
Expand Down Expand Up @@ -45,6 +49,37 @@ public static void lerasiumMakesMistborn(AllomancyTestHelper helper) {
.thenSucceed();
}

@GameTest
@EmptyTemplate("1x3x1")
@TestHolder(description = "Tests that players with the dna_entangled advancement can't consume lerasium")
public static void entangledDnaCantEatLerasium(AllomancyTestHelper helper) {
var player = helper.makeTickingPlayer();

var dna = Allomancy.rl("main/dna_entangled");

helper
.startSequence()
.thenExecute(() -> helper.getLevel().getServer().getPlayerList().op(player.getGameProfile()))
.thenExecute(() -> helper
.getLevel()
.getServer()
.getCommands()
.performPrefixedCommand(new CommandSourceStack(player.commandSource(),
Vec3.atCenterOf(player.blockPosition()),
Vec2.ZERO, helper.getLevel(), 4, "Testing",
Component.literal("Testing"),
helper.getLevel().getServer(), null),
"/advancement grant @p only " + dna))
.thenExecute(() -> helper.assertPlayerHasAdvancement(player, dna))
.thenIdle(1)
.thenMap(() -> helper.useItem(player, ConsumeSetup.LERASIUM_NUGGET))
.thenExecute(
() -> helper.assertFalse(player.getData(AllomancerAttachment.ALLOMANCY_DATA).isMistborn(),
"player got invested"))
.thenExecute(res -> helper.assertValueEqual(res, InteractionResult.FAIL, "Still consumed lerasium"))
.thenExecute(() -> helper.assertPlayerHasItem(player, ConsumeSetup.LERASIUM_NUGGET.get()))
.thenSucceed();
}

@GameTest
@EmptyTemplate("1x3x1")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ public GameTestPlayer makeMistbornPlayer() {
public void assertPlayerHasAdvancement(ServerPlayer player, ResourceLocation advancement) {
var advancementHolder = player.getServer().getAdvancements().get(advancement);
this.assertTrue(player.getAdvancements().getOrStartProgress(advancementHolder).isDone(),
"Player did not have " + advancement.toString());
"Player did not have " + advancement);
}

}

0 comments on commit 4f26cae

Please sign in to comment.