aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/tectech/util/TextureUpdateRequester.java
blob: 250686686f5f15831c710ad0c14c726833f10125 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package tectech.util;

import java.util.HashSet;

import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;

import org.apache.commons.lang3.tuple.Pair;
import org.lwjgl.opengl.GL11;

import com.gtnewhorizon.gtnhlib.client.renderer.CapturingTessellator;
import com.gtnewhorizon.gtnhlib.client.renderer.TessellatorManager;
import com.gtnewhorizon.gtnhlib.client.renderer.vertex.DefaultVertexFormat;

// Ugly hack to wake up angelica/hodgepodge to update the texture by fake rendering out a block
public class TextureUpdateRequester {

    private final HashSet<Pair<Block, Integer>> blocks = new HashSet<>();

    public void add(Block block, int meta) {
        blocks.add(Pair.of(block, meta));
    }

    // Using capturing tesselator just to make sure we dont render anything out
    public void requestUpdate() {
        GL11.glPushMatrix();
        TessellatorManager.startCapturing();
        CapturingTessellator tess = (CapturingTessellator) TessellatorManager.get();
        FaceCulledRenderBlocks renderer = new FaceCulledRenderBlocks(Minecraft.getMinecraft().theWorld);
        renderer.setFaceVisibility(new FaceVisibility());
        for (Pair<Block, Integer> block : blocks) {
            renderer.renderBlockAsItem(block.getLeft(), block.getRight(), 1f);
        }
        tess.setTranslation(0, 0, 0);
        TessellatorManager.stopCapturingToBuffer(DefaultVertexFormat.POSITION_TEXTURE_NORMAL);
        GL11.glPopMatrix();
    }
}