Jump to content

Recommended Posts

Posted

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.

Posted

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.

Posted
  On 4/27/2012 at 1:02 AM, gcewing said:

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.

Posted
  On 5/3/2012 at 1:00 AM, calclavia said:

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.

Posted
  On 5/3/2012 at 1:05 AM, OvermindDL1 said:

  Quote

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?

Posted
  On 5/3/2012 at 4:58 AM, calclavia said:

  Quote

  Quote

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.

Posted

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.

 

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

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

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Hey guys, i'm currently developping a mod with forge 1.12.2 2860 and i'm using optifine and gradle 4.9. The thing is i'm trying to figure out how to show the player's body in first person. So far everything's going well since i've try to use a shader. The player's body started to blink dark when using a shader. I've try a lot of shader like chocapic, zeus etc etc but still the same issue. So my question is : How should i apply the current shader to the body ? At the same time i'm also drawing a HUD so maybe it could be the problem?   Here is the issue :    And here is the code where i'm trying to display the body :    private static void renderFirstPersonBody(EntityPlayerSP player, float partialTicks) { Minecraft mc = Minecraft.getMinecraft(); GlStateManager.pushMatrix(); GlStateManager.pushAttrib(); try { // Préparation OpenGL GlStateManager.enableDepth(); GlStateManager.depthMask(true); GlStateManager.enableAlpha(); GlStateManager.alphaFunc(GL11.GL_GREATER, 0.1F); GlStateManager.enableBlend(); GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); // Éclairage correct pour shaders GlStateManager.enableLighting(); RenderHelper.enableStandardItemLighting(); GlStateManager.enableRescaleNormal(); // Active la lightmap pour les shaders mc.entityRenderer.enableLightmap(); // Position de rendu interpolée double px = player.lastTickPosX + (player.posX - player.lastTickPosX) * partialTicks; double py = player.lastTickPosY + (player.posY - player.lastTickPosY) * partialTicks; double pz = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * partialTicks; GlStateManager.translate( px - mc.getRenderManager().viewerPosX, py - mc.getRenderManager().viewerPosY, pz - mc.getRenderManager().viewerPosZ ); // Rendu du joueur sans la tête Render<?> render = mc.getRenderManager().getEntityRenderObject(player); if (render instanceof RenderPlayer) { RenderPlayer renderPlayer = (RenderPlayer) render; boolean oldHeadHidden = renderPlayer.getMainModel().bipedHead.isHidden; boolean oldHeadwearHidden = renderPlayer.getMainModel().bipedHeadwear.isHidden; renderPlayer.getMainModel().bipedHead.isHidden = true; renderPlayer.getMainModel().bipedHeadwear.isHidden = true; setArmorHeadVisibility(renderPlayer, false); renderPlayer.doRender(player, 0, 0, 0, player.rotationYaw, partialTicks); renderPlayer.getMainModel().bipedHead.isHidden = oldHeadHidden; renderPlayer.getMainModel().bipedHeadwear.isHidden = oldHeadwearHidden; setArmorHeadVisibility(renderPlayer, !oldHeadwearHidden); } // Nettoyage post rendu mc.entityRenderer.disableLightmap(); GlStateManager.disableRescaleNormal(); } catch (Exception e) { // silent fail } finally { GlStateManager.popAttrib(); GlStateManager.popMatrix(); } }   Ty for your help. 
    • Item successfully registered, but there was a problem with the texture of the item, it did not insert and has just the wrong texture.     
    • Keep on using the original Launcher Run Vanilla 1.12.2 once and close the game Download Optifine and run optifine as installer (click on the optifine jar) Start the launcher and make sure the Optifine profile is selected - then test it again  
    • Hi everyone, I’m hoping to revisit an old version of Minecraft — specifically around Beta 1.7.3 — for nostalgia’s sake. I’ve heard you can do this through the official Minecraft Launcher, but I’m unsure how to do it safely without affecting my current installation or save files. Are there any compatibility issues I should watch out for when switching between versions? Would really appreciate any tips or advice from anyone who’s done this before! – Adam
    • hello! i was trying to recreate item-in-hand feature for my custom mob. i figured out that my mob needs a custom iteminhandlayer. i created it - but the main problem is.. well.. you can see all on screenshots any idea how i can fix that? is there any implemented method to render the item perfect to hand? public void render(@NotNull PoseStack pPoseStack, @NotNull MultiBufferSource pBufferSource, int pPackedLight, @NotNull TuneGolemRenderState pRenderState, float pYRot, float pXRot) { ItemStackRenderState item = pRenderState.heldItem; if (!item.isEmpty()) { pPoseStack.pushPose(); ModelPart leftArm = this.getParentModel().leftArm; pPoseStack.translate(0.35,0.5,-1.25); pPoseStack.mulPose(Axis.XP.rotationDegrees(180.0F)); pPoseStack.mulPose(Axis.YP.rotationDegrees(90.0F)); leftArm.translateAndRotate(pPoseStack); // pPoseStack.translate(0,0,0); leftArm.translateAndRotate(pPoseStack); if (TuneGolemRenderState.hornPlaying) { pPoseStack.translate(0, -0.5, 0.65); pPoseStack.scale(1.25F,1.25F,1.25F); } // Minecraft.getInstance().player.displayClientMessage(Component.literal(leftArm.xRot + " " + leftArm.yRot + " " + leftArm.zRot), true); item.render(pPoseStack, pBufferSource, pPackedLight, OverlayTexture.NO_OVERLAY); pPoseStack.popPose(); // -1.0F, -2.0F, -3.0F } }  
  • Topics

×
×
  • Create New...

Important Information

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