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.

Skyriis

Members
  • Joined

  • Last visited

  1. oh well, the whole structure is at least 3 chunks long so i probably need to use a custom structure instead of a feature. correct?
  2. alright so i've changed my place method to this: @Override public boolean place(FeaturePlaceContext<NoneFeatureConfiguration> pContext) { BlockPos origin = pContext.origin(); WorldGenLevel level = pContext.level(); StructureTemplateManager templateManager = level.getServer().getStructureManager(); BulkSectionAccess sectionAccess = new BulkSectionAccess(level); // Get structure parts StructureTemplate entranceTemplate = templateManager.getOrCreate(ENTRANCE); StructureTemplate understairTemplate = templateManager.getOrCreate(UNDERSTAIR); StructureTemplate roomTemplate = templateManager.getOrCreate(ROOMS[level.getRandom().nextIntBetweenInclusive(0, ROOMS.length - 1)]); Vec3i entranceSize = entranceTemplate.getSize(); // Ensure we can write in the entrance structure area for (int x = 0; x < entranceSize.getX(); x++) { for (int y = 0; y < entranceSize.getY(); y++) { for (int z = 0; z < entranceSize.getZ(); z++) { if (!level.ensureCanWrite(origin.offset(x, y, z))) return false; } } } // Check top and bottom (front) is covered for (int i = -1; i < entranceSize.getX(); i++) { if (safeBlockStateCheck(sectionAccess, origin.offset(i, -1, 0), BlockBehaviour.BlockStateBase::isAir, true)) return false; if (safeBlockStateCheck(sectionAccess, origin.offset(i, entranceSize.getY(), 0), BlockBehaviour.BlockStateBase::isAir, true)) return false; } // check left and right (front) is covered for (int i = -1; i < entranceSize.getY(); i++) { if (safeBlockStateCheck(sectionAccess, origin.offset(-1, i, 0), BlockBehaviour.BlockStateBase::isAir, true)) return false; if (safeBlockStateCheck(sectionAccess, origin.offset(entranceSize.getX(), i, 0), BlockBehaviour.BlockStateBase::isAir, true)) return false; } // Ensure air is in front of the cave entrance for (int x = 2; x < entranceSize.getX() - 2; x++) { for (int y = 2; y < entranceSize.getY() - 2; y++) { if (safeBlockStateCheck(sectionAccess, origin.offset(x, y, 0), blockState -> !blockState.isAir())) return false; } } boolean entrancePlaceSuccess = entranceTemplate.placeInWorld(level, origin, origin, new StructurePlaceSettings(), level.getRandom(), 2); return false; } private boolean safeBlockStateCheck(BulkSectionAccess sectionAccess, BlockPos pos, Predicate<BlockState> check) { return safeBlockStateCheck(sectionAccess, pos, check, false); } private boolean safeBlockStateCheck(BulkSectionAccess sectionAccess, BlockPos pos, Predicate<BlockState> check, boolean resultWhenInaccessible) { LevelChunkSection chunkSection = sectionAccess.getSection(pos); // Ensure chunk section exists if (chunkSection == null) return resultWhenInaccessible; // Get target block state BlockState targetState = chunkSection.getBlockState( SectionPos.sectionRelative(pos.getX()), SectionPos.sectionRelative(pos.getY()), SectionPos.sectionRelative(pos.getZ()) ); // Return test result return check.test(targetState); } and now i'm getting those errors in the first for loop (the ensure write thing): why is that?
  3. alright so... i got this as my feature: @Override public boolean place(FeaturePlaceContext<NoneFeatureConfiguration> pContext) { BlockPos origin = pContext.origin(); ServerLevel level = pContext.level().getLevel(); StructureTemplateManager templateManager = level.getStructureManager(); // Get structure parts StructureTemplate entranceTemplate = templateManager.getOrCreate(ENTRANCE); StructureTemplate understairTemplate = templateManager.getOrCreate(UNDERSTAIR); StructureTemplate roomTemplate = templateManager.getOrCreate(ROOMS[level.getRandom().nextIntBetweenInclusive(0, ROOMS.length - 1)]); Vec3i entranceSize = entranceTemplate.getSize(); // Check top and bottom entrance for (int i = -1; i < entranceSize.getX(); i++) { BlockState bottomState = level.getBlockState(origin.offset(i, -1, 0)); BlockState topState = level.getBlockState(origin.offset(i, entranceSize.getY(), 0)); // Exit if air if (bottomState.isAir() || topState.isAir()) return false; } // check left and right entrance for (int i = -1; i < entranceSize.getY(); i++) { BlockState leftState = level.getBlockState(origin.offset(-1, i, 0)); BlockState rightState = level.getBlockState(origin.offset(entranceSize.getX(), i, 0)); //Exit if air if (leftState.isAir() || rightState.isAir()) return false; } // Ensure air is in front of the cave entrance for (int x = 1; x < entranceSize.getX() - 1; x++) { for (int y = 1; y < entranceSize.getY() - 1; y++) { if (!level.getBlockState(origin.offset(x, y, -1)).isAir()) return false; } } boolean entrancePlaceSuccess = entranceTemplate.placeInWorld(level, origin, origin, new StructurePlaceSettings(), level.getRandom(), 2); return false; } and the place method get's invoked (i checked that with a break point and the intellij debugger) problem is that the world gen get's stuck When i create a new world it get's stuck here: Any ideas what cause this?
  4. i already got the nbt files but how do i place them in a feature? I got no clue how to check and generate them in the Feature#place method
  5. how would i make a jigsaw structure a feature? or... how would i make a feature 1.19 anyway How would i generate the nbt files (like a jigsaw structure would do it) and then check the size and blocks around?
  6. i'm using the json stuff to generate my structure. i got no clue how i would access the level from that?
  7. How would i check that area?
  8. Hey Guys, i'm trying to generate my structure only on places which make sense. My Structure is basically a small cave which should only generate on the bottom of hills in the wall. How it looks right now: How it should look: https://prnt.sc/O7A7FfdhneAv How would i do that?
  9. Oh damn I would never have found the error without you thank you so much
  10. Hey Guys, it looks like i broke something in my mod but i got no idea what. This happends if i try to join the `runServer` Server with my `runClient` Client Full Error (Client Side): https://mclo.gs/AjEXFD1 GitHub: https://github.com/ManasMods/reincarnated_mod/tree/dev/smithing-bench Any ideas what could cause that?
  11. Hey Guys, i'm working on a BlockEntity which processes Items into "Molten Material" and one or two Molten Material(s) into a (new) Item. Right now i'm working with custom json files in my data folder for the processing: Molten Material Class: ItemStack -> MoltenMaterial "Recipe" class: MoltenMaterial(s) -> ItemStack "Recipe" class: Screenshots: The thing is... i want to use JEI to display my Recipes but that's only possible if i make the melting and smelting classes to true recipes but i got no clue how to check the "MoltenMaterial" values from the BlockEntity within the Recipe class
  12. Hey Guys, i'm working on grass stairs and struggle a bit on the Model The bottom versions work without a problem but the upside-down version are a bit cursed: How would i fix that tinting issue? Model file: https://github.com/ManasMods/ManasCore/blob/master/src/main/resources/assets/manascore/models/block/overlay_stairs.json
  13. Well, good point. I'm gonna do that in an update. I'm happy if something works somehow ^^" Nice thank you
  14. https://github.com/ManasMods/vanilla_plus

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.