perromercenary00 Posted June 26, 2023 Posted June 26, 2023 (edited) hi well i dont have idea of have to do it i was googling and cannot figure it out by myself i want this item to spawn a village whit an small wall adapting the shape to the terrain variables step one already have made code to fix the land to slabs and remove trees step two) made the paths and the sewers i have made this two nbt structures /home/usuario/workspace/1.19.4/mercblk-mdk/run/saves/Mundo Juego/generated/minecraft/structures/tunel00.nbt /home/usuario/workspace/1.19.4/mercblk-mdk/run/saves/Mundo Juego/generated/minecraft/structures/tunel01.nbt the plan is to loop spawn this two structures next each other until it forms a grass path whit a sewer tunnel below having in count the terrain heighs there must be a forge class already existing to spawn nbt structures in to the world something like : ForgeUtils.something.spawnStructureAt( "run/saves/Mundo Juego/generated/minecraft/structures/tunel00.nbt" , position, rotation ); but i dont know what it is and cannot figure it out form the structure block code for step tree i need to spawn some houses step four is the wall itself ######################################################## more exactly i need an example of how to spawn an structure in the world so i can use it whit a custome rod // ########## ########## ########## ########## @Override public InteractionResultHolder<ItemStack> use(Level warudo, Player pe, InteractionHand hand) { //System.out.println("public InteractionResultHolder<ItemStack> use "); //if (!warudo.isClientSide) { // && !warudo.isClientSide Target target = new Target(warudo, pe, 10); Postate rp = target.get_postate(); if (rp != null ) { lever_this_land ltl = new lever_this_land(warudo, rp.get_blockpos(), 32 ); High_Map hm = ltl.getHm(); hm.print(); Block_Map bm = ltl.getBm(); bm.setBlocks(); } } return InteractionResultHolder.pass(pe.getItemInHand(hand)); } thanks for your attention Edited June 27, 2023 by perromercenary00 Quote
perromercenary00 Posted June 26, 2023 Author Posted June 26, 2023 currently trying this from a custome stick dont works but also dont return error // ########## ########## ########## ########## @Override public InteractionResultHolder<ItemStack> use(Level warudo, Player pe, InteractionHand hand) { System.out.println("public InteractionResultHolder<ItemStack> use " + warudo.isClientSide() ); if (!warudo.isClientSide) { // && !warudo.isClientSide Target target = new Target(warudo, pe, 10); Postate rp = target.get_postate(); String Name = "test2"; // /home/usuario/workspace/1.19.4/mercblk-mdk/src/main/resources/data/mercblk/structures/test2.nbt //ResourceLocation structureName; if (rp != null) { BlockPos blockpos1 = rp.get_blockpos();//blockpos.offset(this.structurePos); // /home/usuario/workspace/1.19.4/mercblk-mdk/src/main/resources/data/mercblk/structures/house00.nbt StructureBlockEntity sbe = (StructureBlockEntity)newBlockEntity(blockpos1, Blocks.STRUCTURE_BLOCK.defaultBlockState() ); sbe.setStructureName("mercblk:tunel01"); sbe.setIgnoreEntities(false); sbe.setStructurePos( blockpos1 ); sbe.loadStructure( ((ServerLevel)warudo) ); System.out.println( sbe.getStructurePos() ); System.out.println( sbe.getStructureName() ); } } } Quote
perromercenary00 Posted June 27, 2023 Author Posted June 27, 2023 just updathing kinda make it works but don't like the way it works if i manually create the tileentity and cast it into the world it don't works you have to create an structure block or you have to create an structure block then get the tile entity form it and set the values the other weird thing its you have to call two times sbe.loadStructure( ((ServerLevel)warudo) ); sbe.loadStructure( ((ServerLevel)warudo) ); other way it only highlights the area where the structure gonna appear for the other side looks like i can reuse the StructureBlockEntity manytimes now the other thing is how i get a list of the minecraft nbt structures included on minecraft ?? // ########## ########## ########## ########## @Override public InteractionResultHolder<ItemStack> use(Level warudo, Player pe, InteractionHand hand) { System.out.println("public InteractionResultHolder<ItemStack> use " + warudo.isClientSide() ); if (!warudo.isClientSide) { // && !warudo.isClientSide Target target = new Target(warudo, pe, 10); Postate rp = target.get_postate(); String Name = "tunel00"; // /home/usuario/workspace/1.19.4/mercblk-mdk/src/main/resources/data/mercblk/structures/test2.nbt //ResourceLocation structureName; if (rp != null) { BlockPos blockpos1 = rp.get_blockpos();//blockpos.offset(this.structurePos); rp.setBlockState( Blocks.STRUCTURE_BLOCK ); rp.setBlock(2); //warudo.setBlockEntity( new StructureBlockEntity(blockpos1, Blocks.STRUCTURE_BLOCK.defaultBlockState() ) ); BlockEntity be = warudo.getBlockEntity(blockpos1); StructureBlockEntity sbe = (StructureBlockEntity)be; //"structures/" + ResourceLocation structureName = new ResourceLocation(mercblk.MOD_ID, Name ); // /home/usuario/workspace/1.19.4/mercblk-mdk/src/main/resources/data/mercblk/structures/house00.nbt sbe.setStructureName(structureName); sbe.setIgnoreEntities(false); sbe.setStructurePos( new BlockPos(0, -4, 0) ); sbe.loadStructure( ((ServerLevel)warudo) ); sbe.loadStructure( ((ServerLevel)warudo) ); System.out.println( sbe.getStructurePos() ); System.out.println( sbe.getStructureName() ); warudo.removeBlockEntity(blockpos1); //structure_void //structure_block } } return InteractionResultHolder.pass(pe.getItemInHand(hand)); } Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.