40 lines
1.3 KiB
Java
40 lines
1.3 KiB
Java
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<NoneFeatureConfiguration> {
|
|
public EndPlatformFeature(Codec<NoneFeatureConfiguration> codec) {
|
|
super(codec);
|
|
}
|
|
|
|
@Override
|
|
public boolean place(FeaturePlaceContext<NoneFeatureConfiguration> 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);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|