summaryrefslogtreecommitdiff
path: root/src/main/java/luckyblock/action/triggers/TrappedRoomTrigger.java
blob: 818fb07e7cdfbfe1bd539361eb6763edde68aeb7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package luckyblock.action.triggers;


import luckyblock.action.LuckyActionHolder;
import net.minecraft.core.BlockPos;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.state.BlockState;

public class TrappedRoomTrigger implements ILuckyTrigger {
    @Override
    public String getName() {
        return "trapped_room";
    }

    @Override
    public void execute(ServerLevel level, BlockPos pos, LuckyActionHolder holder, RandomSource random) {
        Block block = BuiltInRegistries.BLOCK.get(new ResourceLocation(holder.wall_block));
        BlockState wallState = (block != null) ? block.defaultBlockState() : Blocks.STONE_BRICKS.defaultBlockState();
        int r = holder.radius;
        for (int x = -r; x <= r; x++) {
            for (int y = 0; y <= r * 2; y++) {
                for (int z = -r; z <= r; z++) {
                    BlockPos targetPos = pos.offset(x, y, z);
                    if (Math.abs(x) == r || Math.abs(z) == r || y == 0 || y == r * 2) {
                        level.setBlock(targetPos, wallState, 3);
                    } else {
                        level.setBlock(targetPos, Blocks.AIR.defaultBlockState(), 3);
                    }
                }
            }
        }
    }
}