Skip to content

Instantly share code, notes, and snippets.

@grondag
Created February 19, 2019 21:47
Show Gist options
  • Save grondag/e1b32b756787edc71639c132d2440e11 to your computer and use it in GitHub Desktop.
Save grondag/e1b32b756787edc71639c132d2440e11 to your computer and use it in GitHub Desktop.
Mesh transformer
static ThreadLocal<MeshTransformer> glowTransform = ThreadLocal.withInitial(GlowTransform::new);
static class BeTestTransform implements MeshTransformer {
static RenderMaterial matSolid = RendererAccess.INSTANCE.getRenderer().materialFinder()
.blendMode(0, SOLID).find();
static RenderMaterial matSolidGlow = RendererAccess.INSTANCE.getRenderer().materialFinder()
.blendMode(0, SOLID).disableDiffuse(0, true).disableAo(0, true).emissive(0, true).find();
static RenderMaterial matTrans = RendererAccess.INSTANCE.getRenderer().materialFinder()
.blendMode(0, TRANSLUCENT).find();
static RenderMaterial matTransGlow = RendererAccess.INSTANCE.getRenderer().materialFinder()
.blendMode(0, TRANSLUCENT).disableDiffuse(0, true).disableAo(0, true).emissive(0, true).find();
private RenderMaterial mat = null;
private RenderMaterial matGlow = null;
private int stupid[];
private boolean translucent;
@Override
public void accept(QuadMaker q) {
final int s = stupid == null ? -1 : stupid[q.tag()];
final int c = translucent ? 0x80000000 | (0xFFFFFF & s) : s;
q.material((s & 0x3) == 0 ? matGlow : mat).spriteColor(0, c, c, c, c).emit();
}
@Override
public MeshTransformer prepare(TerrainBlockView blockView, BlockState state, BlockPos pos, Supplier<Random> randomSupplier) {
if(randomSupplier.get().nextInt(4) == 0) {
mat = matTrans;
matGlow = matTransGlow;
translucent = true;
} else {
mat = matSolid;
matGlow = matSolidGlow;
translucent = false;
}
stupid = (int[])blockView.getCachedRenderData(pos);
return this;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment