package net.minecraft.world.level.levelgen.feature; import com.mojang.serialization.Codec; import net.minecraft.core.BlockPos; import net.minecraft.world.level.ServerLevelAccessor; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; public class EndPlatformFeature extends Feature { public EndPlatformFeature(Codec codec) { super(codec); } @Override public boolean place(FeaturePlaceContext context) { createEndPlatform(context.level(), context.origin(), false); return true; } public static void createEndPlatform(ServerLevelAccessor level, BlockPos pos, boolean dropBlocks) { BlockPos.MutableBlockPos mutableBlockPos = pos.mutable(); for (int i = -2; i <= 2; i++) { for (int j = -2; j <= 2; j++) { for (int k = -1; k < 3; k++) { BlockPos blockPos = mutableBlockPos.set(pos).move(j, k, i); Block block = k == -1 ? Blocks.OBSIDIAN : Blocks.AIR; if (!level.getBlockState(blockPos).is(block)) { if (dropBlocks) { level.destroyBlock(blockPos, true, null); } level.setBlock(blockPos, block.defaultBlockState(), 3); } } } } } }