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

[1.14] Stop Rendering


playerbase
 Share

Recommended Posts

Hi, so I was wondering if it's possible to stop rendering all the tile entities in a world? I want to stop all and any blocks or entities from being loaded in so I am able to get the total MC Client's CPU usage down to 1%-5%
I just want to know if this is possible, if so, how can it be done? 
I still want to be able to see things in my inventory, just don't want to render any of the textures in the world itself.

I'd want it to look something like in the image provided.
The imagine provided is something someone else had sent me.
download.png.28ad24386990e917d7d9b0bd0fdcec81.png

I'll probably end up back porting this to 1.12 then I guess.

 

Edited by playerbase
dont want the 2nd image in there.
Link to comment
Share on other sites

Hi

 

Yeah it's possible if you're willing to poke deep into the vanilla code.  Your code can do basically anything it wants; use Reflection to change the access levels of fields and then you can modify the render structures to your heart's content.

Look at WorldRenderer and especially WorldRenderer ::updateCameraAndRender.

The problem with doing this is that it often isn't robust, and will likely make your mod incompatible with others.  Thread safety can be difficult as well.  But it's for sure possible.

 

Cheers

  TGG

 

 

 

 

 

 

 

Link to comment
Share on other sites

If you are just looking for a way to AFK in Hypixel SkyBlock (as indicated by the picture) then there are mods out there that disables the client rendering at all (even the window itself).

However, If you want to make a general mod for disabling parts of the rendering, you need to use reflection to change certain aspects like the WorldRenderer (as TGG mentioned above), or unbind renderers from TEs if you want to disable TESRs from rendering while keeping world rendering the same. You might want to check out https://github.com/davidmaamoaix/StopRender (the code is for 1.12.2, but the concept haven’t change much).

Some tips:

Spoiler

Modder Support:

Spoiler

1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code.

2. Always post your code.

3. Never copy and paste code. You won't learn anything from doing that.

4. 

Quote

Programming via Eclipse's hotfixes will get you nowhere

5. Learn to use your IDE, especially the debugger.

6.

Quote

The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it.

Support & Bug Reports:

Spoiler

1. Read the EAQ before asking for help. Remember to provide the appropriate log(s).

2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.

 

 

Link to comment
Share on other sites

I peaked at the StopRender mod from the link you provided before and now, yet when I entered in different TileEntities, nothing actually worked I always seemed to get an error, this is when I used 1.12.2 as well, if you understand it, perhaps you could show me a working example? Cause even the example provided by the mod developer on curseforge, it doesn't work so I'm unsure how to progress from here.

 

  

6 hours ago, DavidM said:

If you are just looking for a way to AFK in Hypixel SkyBlock (as indicated by the picture) then there are mods out there that disables the client rendering at all (even the window itself).

However, If you want to make a general mod for disabling parts of the rendering, you need to use reflection to change certain aspects like the WorldRenderer (as TGG mentioned above), or unbind renderers from TEs if you want to disable TESRs from rendering while keeping world rendering the same. You might want to check out https://github.com/davidmaamoaix/StopRender (the code is for 1.12.2, but the concept haven’t change much).

Do you know if any mods that disables the client rendering like you had said above? Like including the window itself? If so could you perhaps list one? It'd be quite useful and I'd appreciate the assistance.

Edited by playerbase
Had to add more info and didn't want to double post.
Link to comment
Share on other sites

  • 1 year later...

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

    • MegaMiner is just my playground mod. Here's the entire MegaMinerEvents class. It's just a static event receiver.   package nu.rydin.explodingarrows.common.events; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.Tag; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.level.LevelAccessor; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraftforge.event.TickEvent; import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; import nu.rydin.explodingarrows.common.Main; import nu.rydin.explodingarrows.common.enchantments.ModEnchantments; import java.util.LinkedList; @Mod.EventBusSubscriber(modid = Main.MOD_ID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class MegaMinerEvents { private static final class BlockToBreak { private final BlockPos pos; private final Player player; public BlockToBreak(final BlockPos pos, final Player player) { this.pos = pos; this.player = player; } } private static final LinkedList<BlockToBreak> queue = new LinkedList<>(); @SubscribeEvent public static void onProjectileImpact(final BlockEvent.BreakEvent e) { final LevelAccessor world = e.getWorld(); if (world.isClientSide()) { return; } for (final Tag t : e.getPlayer().getMainHandItem().getEnchantmentTags()) { final CompoundTag ct = (CompoundTag) t; if (ct.getString("id") .equals(ModEnchantments.MEGA_MINER.get().getRegistryName().toString())) { MegaMinerEvents.mineNeighborhood(e.getPos(), e.getPlayer(), e.getState().getBlock()); } } } @SubscribeEvent public static void onTick(final TickEvent.ServerTickEvent e) { if (MegaMinerEvents.queue.isEmpty()) { return; } final BlockToBreak b = MegaMinerEvents.queue.removeFirst(); final Level world = b.player.level; final BlockState bs = world.getBlockState(b.pos); bs.getBlock().playerDestroy(world, b.player, b.pos, bs, null, b.player.getMainHandItem()); world.removeBlock(b.pos, true); // MegaMinerEvents.mineNeighborhood(b.pos, b.player, bs.getBlock()); System.out.println(MegaMinerEvents.queue.size()); } private static void mineNeighborhood( final BlockPos pos, final Player player, final Block blockType) { final float x0 = pos.getX(); final float y0 = pos.getY(); final float z0 = pos.getZ(); for (float z = z0 - 1.0F; z <= z0 + 1; z += 1.0) { for (float y = y0 - 1.0F; y <= y0 + 1; y += 1.0) { for (float x = x0 - 1.0F; x <= x0 + 1; x += 1.0) { final BlockState b = player.getLevel().getBlockState(pos); if (b.is(blockType)) { MegaMinerEvents.queue.addLast(new BlockToBreak(pos, player)); } } } } } }  
    • i am playing modded and NOT ON A SERVER but everytime i join a world my game crashes and the error message is: Exception in server tick loop  
    • Do you know what OneDrive is? It's a cloud storage service. Do not put your Minecraft server there, as the files will be changing frequently and if conflicts occur, the minecraft server executable will probably just corrupt everything.
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

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