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

[1.7.10]Changing minecraft window rendering


Taji34
 Share

Recommended Posts

I am creating a mod that would give users more functionality with how the minecraft window is handled (Borderless Window, Default resolution, etc.) which would require me to change some base minecraft code, could someone point me toward a tutorial on how to do this with forge?

Link to comment
Share on other sites

I am creating a mod that would give users more functionality with how the minecraft window is handled (Borderless Window, Default resolution, etc.) which would require me to change some base minecraft code, could someone point me toward a tutorial on how to do this with forge?

You cant edit base files.

I'm back from being gone for... I think its been about a year. I'm pretty sure nobody remembers me, but hello anybody who does!

Link to comment
Share on other sites

Well ofc. you can (ASM in runtime, which is NOT Forge), BUT stuff like "Borderless Window" - This is going like VERY deep into most basic classes. And "Default resolution" - what is that? Window can be resized, GUIs have scaling? I mean - what do you want more?

 

Also - there alredy is fullscreen mode.

1.7.10 is no longer supported by forge, you are on your own.

Link to comment
Share on other sites

Well ofc. you can (ASM in runtime, which is NOT Forge), BUT stuff like "Borderless Window" - This is going like VERY deep into most basic classes. And "Default resolution" - what is that? Window can be resized, GUIs have scaling? I mean - what do you want more?

 

Also - there alredy is fullscreen mode.

Sorry. Let me rephrase my previous statement. It is highly recommend not to edit base files. But I agree with the fact that changing the windows into border less would be hard and if you do do it would probably be a very hacky method and not clean at all.

I'm back from being gone for... I think its been about a year. I'm pretty sure nobody remembers me, but hello anybody who does!

Link to comment
Share on other sites

Well ofc. you can (ASM in runtime, which is NOT Forge), BUT stuff like "Borderless Window" - This is going like VERY deep into most basic classes. And "Default resolution" - what is that? Window can be resized, GUIs have scaling? I mean - what do you want more?

 

Also - there alredy is fullscreen mode.

The stuff I need to add to is in minecraft.java, which I'm assuming is off limits as far as changes go, and yes, I do want more. I want to be able to play "Fullscreen" and be able to alt-tab away, or go to a second monitor and not have minecraft freak out.

 

-snip-

Sorry. Let me rephrase my previous statement. It is highly recommend not to edit base files. But I agree with the fact that changing the windows into border less would be hard and if you do do it would probably be a very hacky method and not clean at all.

Well it's actually relatively simple. Just add System.setProperty("org.lwjgl.opengl.Window.undecorated","true"); and change the window to not be re-sizable (the re-sizable part is mainly just for windows, as from research it seems the first part does the trick on Mac and Linux, while windows leaves a border since it is still re-sizable). The default resolution Default Window Size (See explaination at bottom) is the solution to the making the window not re-sizable. I would also, in this mode, need to center the minecraft window to the center of the screen, rather than the upper right corner. Then of course I would add menu options or a config file to change all of these things.

 

I would not be removing anything from the file or modifying existing code, just adding two or three lines to the minecraft.java file, and the rest would be through forge. Is this not advisable? If not, thank you for the help.

 

EDIT: Explaination: I realized that Defaut Resolution was not the best wording. I would not be changing how minecraft rendered anything, what I meant to get across was a default window size, so that you could specify how big you wanted the window to be, since it would not be re-sizable. This is so I can make the window fill my screen if I want, or I can make it a 800x500 window on my screen if I want. Hopefully that makes sense.

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.
Note: Your post will require moderator approval before it will be visible.

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

    • public class ManaOverlay extends Gui implements IIngameOverlay { private final Minecraft mc; private Font font = null; public int left_height = 39; public int right_height = 49; private RenderGameOverlayEvent eventParent; public static final ResourceLocation GUI_MANA_LOCATION = new ResourceLocation("textures/gui/icons.png"); private static final ManaOverlay INSTANCE = new ManaOverlay(Minecraft.getInstance()); public ManaOverlay(Minecraft p_93005_) { super(p_93005_); this.mc = Minecraft.getInstance(); this.font = mc.font; OverlayRegistry.registerOverlayTop("Mana ", (gui, mStack, partialTicks, screenWidth, screenHeight) -> { boolean isMounted = gui.minecraft.player.getVehicle() instanceof LivingEntity; if (!isMounted && !gui.minecraft.options.hideGui && gui.shouldDrawSurvivalElements()) { setupOverlayRenderState(true, false); renderMana(screenWidth, screenHeight, mStack); } }); } public void setupOverlayRenderState(boolean blend, boolean depthText) { setupOverlayRenderState(blend, depthText, GUI_MANA_LOCATION); } public void setupOverlayRenderState(boolean blend, boolean depthTest, @Nullable ResourceLocation texture) { if (blend) { RenderSystem.enableBlend(); RenderSystem.defaultBlendFunc(); } else { RenderSystem.disableBlend(); } if (depthTest) { RenderSystem.enableDepthTest(); } else { RenderSystem.disableDepthTest(); } if (texture != null) { RenderSystem.enableTexture(); bind(texture); } else { RenderSystem.disableTexture(); } RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); RenderSystem.setShader(GameRenderer::getPositionTexShader); } public static void init() { MinecraftForge.EVENT_BUS.register(INSTANCE); } public void renderMana(int width, int height, PoseStack mStack) { minecraft.getProfiler().push("mana"); Player player = (Player)this.minecraft.getCameraEntity(); RenderSystem.enableBlend(); int left = width / 2 + 91; int top = height - right_height ; boolean unused = false;// Unused flag in vanilla, seems to be part of a 'fade out' mechanic FoodData stats = minecraft.player.getFoodData(); int level = stats.getFoodLevel(); for (int i = 0; i < 10; ++i) { int idx = i * 2 + 1; int x = left - i * 8 - 9; int y = top; int icon = 16; byte background = 0; if (minecraft.player.hasEffect(MobEffects.HUNGER)) { icon += 36; background = 13; } if (unused) background = 1; //Probably should be a += 1 but vanilla never uses this if (player.getFoodData().getSaturationLevel() <= 0.0F && tickCount % (level * 3 + 1) == 0) { y = top + (random.nextInt(3) - 1); } blit(mStack, x, y, 16 + background * 9, 27, 9, 9); if (idx < level) blit(mStack, x, y, icon + 36, 27, 9, 9); else if (idx == level) blit(mStack, x, y, icon + 45, 27, 9, 9); } RenderSystem.disableBlend(); minecraft.getProfiler().pop(); } @Override public void render(ForgeIngameGui gui, PoseStack pStack, float partialTicks, int width, int height) { this.screenWidth = this.minecraft.getWindow().getGuiScaledWidth(); this.screenHeight = this.minecraft.getWindow().getGuiScaledHeight(); eventParent = new RenderGameOverlayEvent(pStack, partialTicks, this.minecraft.getWindow()); if (pre(ALL, pStack)) return; font = minecraft.font; this.random.setSeed(tickCount * 312871L); OverlayRegistry.orderedEntries().forEach(entry -> { try { if (!entry.isEnabled()) return; IIngameOverlay overlay = entry.getOverlay(); if (pre(overlay, pStack)) return; //overlay.render(this, pStack, partialTicks, screenWidth, screenHeight); post(overlay, pStack); } catch(Exception e) { } }); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); post(ALL, pStack); } private boolean pre(RenderGameOverlayEvent.ElementType type, PoseStack mStack) { return MinecraftForge.EVENT_BUS.post(new RenderGameOverlayEvent.Pre(mStack, eventParent, type)); } private void post(RenderGameOverlayEvent.ElementType type, PoseStack mStack) { MinecraftForge.EVENT_BUS.post(new RenderGameOverlayEvent.Post(mStack, eventParent, type)); } private boolean pre(IIngameOverlay overlay, PoseStack mStack) { return MinecraftForge.EVENT_BUS.post(new RenderGameOverlayEvent.PreLayer(mStack, eventParent, overlay)); } private void post(IIngameOverlay overlay, PoseStack mStack) { MinecraftForge.EVENT_BUS.post(new RenderGameOverlayEvent.PostLayer(mStack, eventParent, overlay)); } private void bind(ResourceLocation res) { RenderSystem.setShaderTexture(0, res); } } Thanks to you, I was able to display it. However, the bar that uses the full stomach ground keeps shaking. I wonder why that is? Then I feel like it's getting heavier ...
    • It's the "Width on the screen" and "Height on the screen", so in this case the screen width and height.
    • I was able to post the 4 others, so they are on there now.
    • Could be "write", check vanilla for examples, or provide details of which version you're currently on.
    • I am trying to update a mod, and there does not seem to be any save() function in BlockEntity. What do I use instead?
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

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