Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Forge networked Block mapping suggestion


AtomicStryker
 Share

Recommended Posts

With forge (in theory) eliminating all interclass-incompatibilities there is another very major problem the bigger mods face:

 

Block IDs. If you install all major mods, you will most certainly experience some overlap, and already some mods (like Redpower) automatically (and unilaterally) remap their blockIDs.

 

 

Now what if Forge did the mapping - instead of each mod registering it's own BlockIDs globally, they register their needed BlockIDs with Forge (starting with 0, per-mod blabla). Forge then serves as provider for whatever BlockID is needed, and more importantly, what BlockID stands for what Block.

 

What's the use? If a client connects to a server, he gets a one-time transmission of what BlockIDs are mapped to what Block, thus forever eliminating the need to keep server (in some case even world) specific blockID configs.

 

Since BlockID's are the same per-mod, you wouldnt even need to transmit ALL Blocks, just the BlockID at which mod x's range starts.

 

 

 

Here's a simple example: Both client and server have 2 mods, derpcraft and herpcraft.

derpcraft used to occupy Block IDs {100,101,102}, herpcraft occupied {101,102,103}. There was a lot of problems with that, saves got corrupted etc etc

New process:

derpcraft and herpcraft both register mod-specific Blocks of IDs {1,2,3}. Forge serverside starts distributing Blocks at 100, and maps 100-102 to derpcraft and 103-105 to herpcraft.

If a client now connects, he gets a packet telling him: derpcraft: 100; herpcraft: 103. His client then maps 100-102 to derpcraft and 103-105 to herpcraft.

 

 

 

EDIT:

 

Sort of an automatic save converter would be needed aswell. When mods change and for example derpcraft suddenly demands 5 Blocks, forge could rework the world-savefile and move herpcraft's BlockIDs 2 up. And for this, some kind of structure in the savefile keeping track of what the mod-BlockIDs were last mapped to.

 

 

 

This is just a proposal though. If you'd rather wait for the 4k BlockIds to actually happen, then yell at mod makers to keep their shit apart .. i can work with that.

Why, that makes no sense at all.

Link to comment
Share on other sites

This is an excellent idea.

 

I would further suggest that the id mapping should be kept with the world save. That way you can load someone else's world save in single player and get all the right mappings. And Forge could warn you if you are missing the mod corresponding to any of the mappings.

Link to comment
Share on other sites

This is an excellent idea.

 

I would further suggest that the id mapping should be kept with the world save. That way you can load someone else's world save in single player and get all the right mappings. And Forge could warn you if you are missing the mod corresponding to any of the mappings.

It actually already does store IDs per world save in his pull request, it is still being finished.

Link to comment
Share on other sites

I totally agree with this. Maybe forge should also implement more block IDs so it would be a easy to adds more blocks than the limitation. (eg. 4096 fix)

 

No, MC is already adding that and mDiyo already has a patch for it for SP.

 

I thought MC 1.3 is going to add its own API? What would forge be when that happens?

Link to comment
Share on other sites

I totally agree with this. Maybe forge should also implement more block IDs so it would be a easy to adds more blocks than the limitation. (eg. 4096 fix)

 

No, MC is already adding that and mDiyo already has a patch for it for SP.

 

I thought MC 1.3 is going to add its own API? What would forge be when that happens?

 

They are adding their own API in parts, the server part will be first, forge will still be useful for a long long time to come, especially since the API keeps getting pushed off.

Link to comment
Share on other sites

this is a very good ideal. Running a server one of the hardest parts are configs. If someone even has one setting off they will crash on connect, crafting or using a GUI. This usually scares players off from using mods or playing smp with mods. So I've  been working on in a few of my mods having the config changed by server packets. For example my ComeCloser mod controls render range of the player name. My original way of changing the range setting was with a config and with the mod version containing the config number. Now with packets i can send the range setting when the player logs in, and Since the render player name is called every update it will use the new setting. this way the player doesn't have to change the setting for range ever server he logs into.

    However, i don't think this would work with blocks since there ids are registered when the game starts. Unless someone rewrites the blocks to not be register till the player loads a world. This in mind a mod could be written that would get the config list from a server and send it to the player. Then backing up the old configs first, delete them and write over with a new temp list. The player can then restart his client and connect to the server with the correct settings. Once logged out the mod will then store the server list in a folder called "ServerConfigs/ServerName". Which can be retrieved latter if the player decides to restore the original configs.

  Another option playing on the same ideal is to redirect where minecraft looks for its mod configs to a new folder containing the servers configs. This way the player doesn't have to restart twice after switching the configs folder from the server.

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • how do I go about making a block need a tool with a harvest level of 5. I have made a tool with a harvest level of 5, but I can't find anything about making my block need a harvest level of 5
    • I can run forge server jar and server runs, but i want to allocate certan ram to it and use BAT   What seems to be the problem, what should I do? Thanks   I always used bat the past days, but when i stopped server and re ran it and it Keeps saying PAUSE, This is the .bat file text,   [16:57:51] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher running: args [--gameDir, ., --launchTarget, fmlserver, --fml.forgeVersion, 36.2.8, --fml.mcpVersion, 20210115.111550, --fml.mcVersion, 1.16.5, --fml.forgeGroup, net.minecraftforge, nogui] [16:57:51] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher 8.0.9+86+master.3cf110c starting: java version 1.8.0_301 by Oracle Corporation [16:57:52] [main/INFO] [ne.mi.fm.lo.FixSSL/CORE]: Added Lets Encrypt root certificates as additional trust [16:57:52] [main/INFO] [mixin/]: SpongePowered MIXIN Subsystem Version=0.8.4 Source=file:/C:/Users/Jon/Desktop/Server/libraries/org/spongepowered/mixin/0.8.4/mixin-0.8.4.jar Service=ModLauncher Env=SERVER Exception in thread "main" [16:57:52] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: java.lang.RuntimeException: Failed to load FML config from C:\Users\Jon\Desktop\Server\config\fml.toml [16:57:52] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]:         at net.minecraftforge.fml.loading.FMLConfig.loadFrom(FMLConfig.java:64) [16:57:52] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]:         at net.minecraftforge.fml.loading.FMLConfig.load(FMLConfig.java:77) [16:57:52] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]:         at net.minecraftforge.fml.loading.FMLServiceProvider.initialize(FMLServiceProvider.java:81) [16:57:52] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]:         at cpw.mods.modlauncher.TransformationServiceDecorator.onInitialize(TransformationServiceDecorator.java:68) [16:57:52] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]:         at cpw.mods.modlauncher.TransformationServicesHandler.lambda$initialiseTransformationServices$7(TransformationServicesHandler.java:107) [16:57:52] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]:         at java.util.HashMap$Values.forEach(Unknown Source) [16:57:52] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]:         at cpw.mods.modlauncher.TransformationServicesHandler.initialiseTransformationServices(TransformationServicesHandler.java:107) [16:57:52] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]:         at cpw.mods.modlauncher.TransformationServicesHandler.initializeTransformationServices(TransformationServicesHandler.java:59) [16:57:52] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]:         at cpw.mods.modlauncher.Launcher.run(Launcher.java:76) [16:57:52] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]:         at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [16:57:52] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]:         at net.minecraftforge.server.ServerMain$Runner.runLauncher(ServerMain.java:63) [16:57:52] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]:         at net.minecraftforge.server.ServerMain$Runner.access$100(ServerMain.java:60) [16:57:52] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]:         at net.minecraftforge.server.ServerMain.main(ServerMain.java:57) [16:57:52] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]: Caused by: com.electronwill.nightconfig.core.io.ParsingException: Not enough data available [16:57:52] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]:         at com.electronwill.nightconfig.core.io.ParsingException.notEnoughData(ParsingException.java:22) [16:57:52] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]:         at com.electronwill.nightconfig.core.io.ReaderInput.directReadChar(ReaderInput.java:36) [16:57:52] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]:         at com.electronwill.nightconfig.core.io.AbstractInput.readChar(AbstractInput.java:49) [16:57:52] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]:         at com.electronwill.nightconfig.core.io.AbstractInput.readCharsUntil(AbstractInput.java:123) [16:57:52] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]:         at com.electronwill.nightconfig.toml.TableParser.parseKey(TableParser.java:166) [16:57:52] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]:         at com.electronwill.nightconfig.toml.TableParser.parseDottedKey(TableParser.java:145) [16:57:52] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]:         at com.electronwill.nightconfig.toml.TableParser.parseNormal(TableParser.java:55) [16:57:52] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]:         at com.electronwill.nightconfig.toml.TomlParser.parse(TomlParser.java:44) [16:57:52] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]:         at com.electronwill.nightconfig.toml.TomlParser.parse(TomlParser.java:37) [16:57:52] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]:         at com.electronwill.nightconfig.core.io.ConfigParser.parse(ConfigParser.java:113) [16:57:52] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]:         at com.electronwill.nightconfig.core.io.ConfigParser.parse(ConfigParser.java:219) [16:57:52] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]:         at com.electronwill.nightconfig.core.io.ConfigParser.parse(ConfigParser.java:202) [16:57:52] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]:         at com.electronwill.nightconfig.core.file.WriteSyncFileConfig.load(WriteSyncFileConfig.java:73) [16:57:52] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]:         at com.electronwill.nightconfig.core.file.AutoreloadFileConfig.load(AutoreloadFileConfig.java:41) [16:57:52] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]:         at com.electronwill.nightconfig.core.file.AutosaveCommentedFileConfig.load(AutosaveCommentedFileConfig.java:85) [16:57:52] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]:         at net.minecraftforge.fml.loading.FMLConfig.loadFrom(FMLConfig.java:60) [16:57:52] [main/INFO] [STDERR/]: [java.lang.ThreadGroup:uncaughtException:-1]:         ... 12 more C:\Users\Jon\Desktop\Server>PAUSE Press any key to continue . . .  
    • Thank you! Both of you were very helpful.
    • When I install Forge 1.12.2 i installs into the folder with the log, library, forge.jar thing, and the minecraft server jar. wont run so it wont install the mods folder the eula or anything i will only run the minecraft server.jar. Help me please im trying to play a game with one of my friends.
    • Well, if you mean this, it doesn't work either. public static final RegistryObject<Block> GRIMSTONESTAIRS= BLOCKS.register("grimstone_bricks_stairs",() -> new StairBlock(GRIMSTONEBRICK.get(), BlockBehaviour.Properties.of(Material.HEAVY_METAL).strength(1.5f,0.5f).sound(SoundType.DEEPSLATE)));  
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.