Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package net.fabricmc.example;
- import java.util.Random;
- import net.fabricmc.api.ModInitializer;
- import net.fabricmc.fabric.api.command.v1.CommandRegistrationCallback;
- import net.minecraft.server.command.CommandManager;
- import net.minecraft.server.network.ServerPlayerEntity;
- import net.minecraft.server.world.ServerWorld;
- import net.minecraft.structure.StructurePiece;
- import net.minecraft.structure.StructureStart;
- import net.minecraft.util.math.BlockBox;
- import net.minecraft.util.math.BlockPos;
- import net.minecraft.util.math.ChunkPos;
- import net.minecraft.world.gen.StructureAccessor;
- import net.minecraft.world.gen.chunk.ChunkGenerator;
- import net.minecraft.world.gen.chunk.StructureConfig;
- import net.minecraft.world.gen.feature.DefaultFeatureConfig;
- import net.minecraft.world.gen.feature.StructureFeature;
- public class TechnicalBlocks implements ModInitializer {
- @Override
- public void onInitialize() {
- CommandRegistrationCallback.EVENT.register((dispatcher, dedicated) -> {
- dispatcher.register(CommandManager.literal("spawnfeature").executes(context -> {
- ServerPlayerEntity player = context.getSource().getPlayer();
- ServerWorld world = (ServerWorld) player.getEntityWorld();
- BlockPos pos = player.getBlockPos();
- StructureAccessor accessor = world.getStructureAccessor();
- ChunkPos chunk = new ChunkPos(pos);
- ChunkGenerator generator = world.getChunkManager().getChunkGenerator();
- StructureFeature<DefaultFeatureConfig> feat = StructureFeature.DESERT_PYRAMID;
- StructureConfig config = generator.getStructuresConfig().getForType(feat);
- try {
- BlockBox box = BlockBox.create(pos.getX(), pos.getY() - 5, pos.getZ(), pos.getX() + 30,
- pos.getY() + 5, pos.getZ() + 30);
- StructureStart<?> structureStart = feat.getStructureStartFactory().create(feat, chunk.x, chunk.z,
- BlockBox.empty(), 1, 0);
- structureStart.init(world.getRegistryManager(), generator, world.getStructureManager(), chunk.x,
- chunk.z, world.getBiome(pos), null);
- structureStart.generateStructure(world, accessor, generator, new Random(), box, new ChunkPos(pos));
- for (StructurePiece child : structureStart.getChildren()) {
- child.generate(world, accessor, generator, new Random(), box, new ChunkPos(pos), pos);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- return 1;
- }));
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment