Skip 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.

All Activity

This stream auto-updates

  1. Today

  2. _LugerT_ joined the community
  3. Forge 1.20.1 World Generation Architecture Review — Dynamic Rising Sea Level SystemHello. I am developing a Forge 1.20.1 mod called World FloodEnd. The core mechanic of the mod is a gradually rising global ocean level. Every 5 in-game days the global water level increases by 1 block. Example: Day 0: Sea level Y=63 Day 5: Sea level Y=64 Day 10: Sea level Y=65 ... The main challenge is performance. I do not want to use the common approach: Increase water level | v Scan the entire world | v Place millions of water blocks because this will eventually destroy TPS on large worlds. The goal is to make the rising ocean behave like a world generation parameter, not like a giant block update operation. Intended architectureThe world should have a global value: FloodLevel = current ocean height This value is stored by the mod and increases every 5 Minecraft days. The system is divided into three cases: FloodWorldData | | Current FloodLevel | ┌────────────────┼────────────────┐ | | | v v v New unexplored Loaded chunks Unloaded chunks chunks around players stored on disk World generation FloodManager No processing uses current handles gradual while inactive FloodLevel flooding 1. New unexplored chunksWhen a player travels into unexplored territory, the chunk should already generate with the current ocean level. Example: Day 100 FloodLevel = Y=100 Player travels far away New chunks should generate already matching Y=100 The goal is: Chunk generation | v Current FloodLevel applied | v Chunk appears already flooded Not: Generate chunk | v Place thousands of water blocks afterwards because that causes huge performance spikes. Currently I am investigating the world generation stage. I created a Mixin into: NoiseBasedChunkGenerator.fillFromNoise() Example: @Inject(method = "fillFromNoise", at = @At("HEAD")) private void worldFloodEnd$fillFromNoise( Executor executor, Blender blender, RandomState randomState, StructureManager structureManager, ChunkAccess chunk, CallbackInfoReturnable<CompletableFuture<ChunkAccess>> cir ) { int waterLevel = FloodWorldData.getWaterLevel(); WorldFloodEnd.LOGGER.info( "[WorldFloodEnd] New chunk {} {} | Water Level {}", chunk.getPos().x, chunk.getPos().z, waterLevel ); } However, this is currently only for testing. The idea is not to manually place water inside this method. The intended solution is to make the generator itself use the current FloodLevel. Possible approaches I am considering: dynamically replacing NoiseGeneratorSettings.seaLevel; overriding ChunkGenerator#getSeaLevel() through Mixin; another Forge-supported world generation hook. 2. Already generated and currently loaded chunksThese chunks are handled differently. A separate FloodManager should only work with chunks that are currently loaded around players. Example: Player base area loaded | v FloodManager gradually updates these chunks | v Water level increases smoothly The FloodManager should: process only active chunks; use a limited queue; avoid large TPS spikes; never scan the whole world. The goal is that the player sees the ocean slowly advancing, while the server remains stable. 3. Previously generated but unloaded chunksThis is an important part. I do not want unloaded chunks to be constantly processed. Example: Day 100 FloodLevel = Y=100 Chunk was generated years ago Player leaves Chunk unloads ↓ No background flooding process Later: Player returns ↓ Chunk loads again ↓ Chunk should know the current FloodLevel ↓ It updates to the correct state The world should not require a full scan after every ocean level increase. Desired final behaviorThe complete system should work like this: Every 5 days: FloodLevel +1 | | New chunks: generated with new water height Loaded chunks: FloodManager gradually updates them Unloaded chunks: wait until loaded again, then synchronize Questions for experienced Forge developersI would appreciate feedback on the architecture before continuing development. Is using dynamic NoiseGeneratorSettings.seaLevel the correct approach for making new chunks generate with a higher ocean level? Is NoiseBasedChunkGenerator.fillFromNoise() a good place to hook into, or is there a better generation stage? Would overriding ChunkGenerator#getSeaLevel() with Mixin be safe, or could it create compatibility issues with other world generation mods? What is the recommended Forge approach for unloaded chunks: storing a FloodLevel value in chunk NBT? using capabilities? another chunk lifecycle event? Could this approach interfere with: structures; villages; custom terrain generators; biome generation mods; aquifers? Is the architecture: Generation modification for new chunks + FloodManager for active chunks + state synchronization for unloaded chunks a reasonable way to implement a dynamic rising ocean without destroying server performance? Environment: Minecraft Forge 1.20.1 Java 17 I am not asking for a complete implementation. I mainly want an architecture review from people familiar with Minecraft world generation and Forge internals. Thank you.
  4. Malfe23 joined the community
  5. God_of_Arise joined the community
  6. Yesterday

  7. I've tried it, it lost like 75% of the posts.
  8. Rianbowpix2 joined the community
  9. Last week

  10. cassocool joined the community
  11. Carterburritos joined the community
  12. nsjessi joined the community
  13. If you have afterburner, rivatuner or similar programs, just close it. Close also the Minecraft launcher, start the minecraft launcher again and start the game. It worked for me. I hope it's helps
  14. ycarriickp joined the community
  15. zandey joined the community
  16. The 234th episode of Hunger Games on the road to 1000 episodes! Lets see if we can hit that goal! https://www.youtube.com/watch?v=4tQIgj8pBmM
  17. the server works fine but two dependancies are required, modopedia and guideme. When added individually it works fine and just says that the other is needed by x mod. But when both are added it fails and doesnt make a crash report. i can add any additional details 1.21.1 neoforge appears to be a mixin issue?
  18. Half the "my server is lagging" posts here would be solved in five minutes with a profile. Install spark. Then: /spark tps — MSPT is the number that matters, not TPS. Budget is 50ms a tick. Sitting at 60+ means everyone can feel it. /spark profiler start, let it run while it's bad, /spark profiler stop. You get a link. /spark heapsummary — tells you if it's actually a memory problem or not. Nine times out of ten it's not RAM. It's a few thousand loose items from a broken sorting system, or one guy's Create contraption, or view-distance sitting at 16 because nobody changed it. Drop that to 10 first, it's free. Over-allocating is a real thing too. Give a 10 GB pack 24 GB and the GC just has more to walk through when it finally fires. Longer freezes instead of small hiccups, which feels worse. Rough numbers I actually use: light plugins 3-4 GB, mid-size pack 6-8, ATM10 tier 10-12 and 16 if you can. Java 21, G1GC, Aikar's flags as a starting point. Also worth profiling while things are fine so you've got something to compare against later. Nobody does this including me until it's too late. What's the dumbest thing that turned out to be eating your tick? Mine was a Create contraption running against a wall doing nothing for six weeks.
  19. is this possible with commands?
  20. My log: https://mclo.gs/KHSngF8 His log: https://mclo.gs/ex1Emsy He did crash once again from turning on shaders and had to rejoin.
  21. Weirdly enough, disabling AllTheTrims, Supplementaries, Supplementaries Squared and Lost Architects fixed the issue for now, but my friend still timed out twice before successfully joining.
  22. Okey i fixed it i had to downgrade some mods bcs i found that sodium and aeronautics on newest version having some issue but i finally make it work
  23. Maybe an issue with supplementaries in connection with JEI or allthetrims Make a test without supplementaries or allthetrims
  24. Forge Minecraft 1.20.1 PrismLauncher Hello, I added a few new mods (More Axolotl Variants, MAV API, AllTheTrims, Cushion Backport, Macaw's Paintings and Ferdinands Flowers) to my instance, and updated the mods on my friend's machine too. Before this update, my friend would sometimes take too long to connect and then disconnect, only for it to work fine the second or third time he tried. Now when joining he times out every single time (with just the message 'Disconnected.) I tried allowing "-Dfml.readTimeout=600" on both machines in the Java arguments and made sure Minecraft wasn't blocked by the firewall, but I'm still running into the same issue. Is there a way to keep my friend from timing out? I believe this is happening because the world has gotten too large for his machine to handle. My Prism log: https://mclo.gs/hMpOJAf His Prism log: https://mclo.gs/7fjYqMQ
  25. Earlier

  26. Forge requires Forge mods to work, NeoForge is not the same
  27. Unfortunately, the issue did seem to just be survival island, even though i was hoping otherwise considering it was one of the main points of the modpack... but no biggie! Thanks for the help.
  28. Even though I changed nothing the mods no longer show up on the list and oddly enough out of all the mods (fantasyfurniture-21.11.1 missing_blocks-2.0.0-neoforge-1.21.8 OptiFine_1.21.11_HD_U_J9 refurbished_furniture-neoforge-1.21.11-1.0.23 supplementaries-neoforge-1.21.1-3.8.2 worldedit-mod-7.4.2) only optifine works despite not even being on the mods list, im using forge-1.21.11-61.1.0 (not app)
  29. well i guess i will be playing premade modpacks
  30. Embeddium is by default not compatible with Veil
  31. i tried embiddium it works but when i only download create and aeronautics it will tell me that mod veil isn't compatible
  32. okey so i update the mods of the modpack you send me and first launch didn't work bcs it needed the higher version of neoforge so i update it and game launched but world didn't load up and crash for a create with not updated modpack it will needed to update some mods to make it work even i install the mod automatically didn't work

Account

Navigation

Search

Search

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.