Jump to content

[Solved]Disable block rendering using metadata & Rendering TESR when not in FOV


Recommended Posts

Posted

I have two questions involving rendering.

 

1. Is there a way to prevent a blocks texture from rendering based on its state.

Normally when i use a custom model for a tile i would use.

@Override
public int getRenderType() {
return -1;
}

But what i need is something like

@Override
public int getRenderType(int metadata) {
if (metadata == 1)
             return -1;
        else
             super.getRenderType(int metadata)
}

Is there a way to do this?

 

2. How can i make a TESR render if the block the tile belongs to is not in the players FOV?

I know this is possible because beacons do it (when you look up the beam dose not disappear) I would check the beacon code but for some reason ether a bug in the forge version im using or a problem with my dev environment i cant look at a lot of the minecraft src code.

 

 

I am the author of Draconic Evolution

Posted

I have two questions involving rendering.

 

1. Is there a way to prevent a blocks texture from rendering based on its state.

Normally when i use a custom model for a tile i would use.

@Override
public int getRenderType() {
return -1;
}

But what i need is something like

@Override
public int getRenderType(int metadata) {
if (metadata == 1)
             return -1;
        else
             super.getRenderType(int metadata)
}

Is there a way to do this?

 

2. How can i make a TESR render if the block the tile belongs to is not in the players FOV?

I know this is possible because beacons do it (when you look up the beam dose not disappear) I would check the beacon code but for some reason ether a bug in the forge version im using or a problem with my dev environment i cant look at a lot of the minecraft src code.

 

 

 

There is no way to do this. You have to either render your whole block manually, or not. All metadata distinguishing has to be done in your renderer.

 

Decided to reopen this thread because it turns out there is actually a way to do this and it may prove useful to some people.

 

It uses "shouldSideBeRendered" in the block class which gives you the world the x, y, z coords of the adjacent block and the side of the block the adjacent block is on. if you return false the side of the block wont be rendered (this is called for every side of the block being rendered)

 

With that information you can use ForgeDirection to get the coords of the block being rendered which allows you to get the block metadata or TileEntity

The following is an example of how to use this to prevent a block from rendering if its metadata == 1.

 

@Override
@SideOnly(Side.CLIENT)
public boolean shouldSideBeRendered(IBlockAccess world, int x, int y, int z, int side) {
        int meta = world.getBlockMetadata(x - ForgeDirection.getOrientation(side).offsetX, y - ForgeDirection.getOrientation(side).offsetY, z - ForgeDirection.getOrientation(side).offsetZ)

        if (meta == 1) return false;
        else return super.shouldSideBeRendered(world, x, y, z, side);
}

 

If there is a problem with this please let me know but so far it seems to work just fine in my tests.

     

I am the author of Draconic Evolution

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

    • I've been using this modpack for a few days now with no issues, it was working properly just an hour or two ago and now all of a sudden when I try to load it I get this error: 'The game crashed: exception in server tick loop Error: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $' debug log: https://pastebin.com/1htBuhsP crash report: https://pastebin.com/QggHKYDg
    • Everything worked fine until I decided to install supplementaries squared, amendments and a couple other mods like artifacts, and compats for it. I'm having a hard time fixing this, and I get this crash whenever I try to enter a world. Not even a new world is feasible. Any help would be highly appreciated!! https://pastebin.com/7KXYZ6fM
    • Internal Exception: com.google.gson.JsonParseException: Error loading registry data: Unknown element: ResourceKey[minecraft:worldgen/configured_feature / minecraft:crimson_forest_vegetation]   This error is there when i try to join my friends server. We had some mods and it was okay but after 3 days i cant join.
    • It just says the mod i had but i dont have now.. and i didnt even use these mods and it still was crashing with the mods  
    • Hello,   I've been back and forth in emails with some CurseForge support staff on the issue but there's been no progress. In the CurseForge app, I have custom profiles and some public modpacks that will not load no matter what. I've goen through every link sent to me, I've reinstalled Minecraft, reinstalled the launcher, repaired the installations individually, uninstalled and reinstalled the public modpacks, downloaded the latest Java--all of it. But each time, I'm always met with either "java runtime exception", "exit code 1" on the rare occasions Minecraft does launch, or "java is out of date" (which literally cannot be possible since I reinstalled the latest version a few different times.) Making a new profile works, but I want to be able to play the ones I had before.  I had gotten one of the old public Minecraft modpacks to work, the prehistoric one about dinosaurs being featured right now, but then it only worked once. I've tried to retrace my steps and it just would not work. I have genuinely no clue what's going on.
  • Topics

×
×
  • Create New...

Important Information

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