Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[KindaSolved][1.19.4] how to use forge alredy existing tools to spawn structures from code

Featured Replies

Posted

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 by perromercenary00

  • Author

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() );
	 
	}
	}
	}
	 
	

  • Author

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));
}
	

 

 

 

 

 

 

  • perromercenary00 changed the title to [KindaSolved][1.19.4] how to use forge alredy existing tools to spawn structures from code

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

Important Information

By using this site, you agree to our Terms of Use.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.