Rendering purged

This commit is contained in:
Waterpicker 2022-06-23 00:22:38 -05:00
parent 48bf5bc58f
commit 84d649f245
2 changed files with 35 additions and 29 deletions

View File

@ -10,6 +10,7 @@ import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.renderer.block.model.BakedQuad;
import net.minecraft.client.renderer.block.model.ItemCameraTransforms; import net.minecraft.client.renderer.block.model.ItemCameraTransforms;
import net.minecraft.client.renderer.block.model.ItemOverrideList; import net.minecraft.client.renderer.block.model.ItemOverrideList;
import net.minecraft.client.renderer.block.model.ItemOverrides;
import net.minecraft.client.renderer.block.model.ItemTransforms; import net.minecraft.client.renderer.block.model.ItemTransforms;
import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.client.renderer.texture.TextureAtlas;
import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureAtlasSprite;
@ -142,8 +143,8 @@ public class ScreenBaker implements IModelBaker {
@Override @Override
@Nonnull @Nonnull
public ItemOverrideList getOverrides() { public ItemOverrides getOverrides() {
return ItemOverrideList.NONE; return ItemOverrides.EMPTY;
} }
} }

View File

@ -6,6 +6,8 @@ package net.montoyo.wd.client.renderers;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.*; import com.mojang.blaze3d.vertex.*;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer;
import net.minecraft.client.renderer.blockentity.BlockEntityRenderers; import net.minecraft.client.renderer.blockentity.BlockEntityRenderers;
import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.AABB;
import net.montoyo.wd.WebDisplays; import net.montoyo.wd.WebDisplays;
@ -14,23 +16,24 @@ import net.montoyo.wd.entity.TileEntityScreen;
import net.montoyo.wd.utilities.Vector3f; import net.montoyo.wd.utilities.Vector3f;
import net.montoyo.wd.utilities.Vector3i; import net.montoyo.wd.utilities.Vector3i;
import static com.mojang.math.Vector3f.*;
import static org.lwjgl.opengl.GL11.*; import static org.lwjgl.opengl.GL11.*;
public class ScreenRenderer extends BlockEntityRenderers<TileEntityScreen> { public class ScreenRenderer implements BlockEntityRenderer<TileEntityScreen> {
private final Vector3f mid = new Vector3f(); private final Vector3f mid = new Vector3f();
private final Vector3i tmpi = new Vector3i(); private final Vector3i tmpi = new Vector3i();
private final Vector3f tmpf = new Vector3f(); private final Vector3f tmpf = new Vector3f();
@Override @Override
public void render(TileEntityScreen te, double x, double y, double z, float partialTicks, int destroyStage, float alpha) { public void render(TileEntityScreen te, float partialTick, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay) {
if(!te.isLoaded()) if(!te.isLoaded())
return; return;
//Disable lighting //Disable lighting
glEnable(GL_TEXTURE_2D); RenderSystem.enableTexture();
glDisable(GL_CULL_FACE); RenderSystem.disableCull();
glDisable(GL_BLEND); RenderSystem.disableBlend();
for(int i = 0; i < te.screenCount(); i++) { for(int i = 0; i < te.screenCount(); i++) {
TileEntityScreen.Screen scr = te.getScreen(i); TileEntityScreen.Screen scr = te.getScreen(i);
@ -51,38 +54,38 @@ public class ScreenRenderer extends BlockEntityRenderers<TileEntityScreen> {
tmpi.addMul(scr.side.up, scr.size.y); tmpi.addMul(scr.side.up, scr.size.y);
tmpf.set(tmpi); tmpf.set(tmpi);
mid.set(x + 0.5, y + 0.5, z + 0.5); mid.set(0.5, 0.5, 0.5);
mid.addMul(tmpf, 0.5f); mid.addMul(tmpf, 0.5f);
tmpf.set(scr.side.left); tmpf.set(scr.side.left);
mid.addMul(tmpf, 0.5f); mid.addMul(tmpf, 0.5f);
tmpf.set(scr.side.down); tmpf.set(scr.side.down);
mid.addMul(tmpf, 0.5f); mid.addMul(tmpf, 0.5f);
glPushMatrix(); poseStack.pushPose();
glTranslatef(mid.x, mid.y, mid.z); poseStack.translate(mid.x, mid.y, mid.z);
switch(scr.side) { switch(scr.side) {
case BOTTOM: case BOTTOM:
glRotatef(90.f, 1.f, 0.f, 0.f); poseStack.mulPose(XP.rotation(90.f));
break; break;
case TOP: case TOP:
glRotatef(-90.f, 1.f, 0.f, 0.f); poseStack.mulPose(XN.rotation(90.f));
break; break;
case NORTH: case NORTH:
glRotatef(180.f, 0.f, 1.f, 0.f); poseStack.mulPose(YN.rotationDegrees(180.f));
break; break;
case SOUTH: case SOUTH:
break; break;
case WEST: case WEST:
glRotatef(-90.f, 0.f, 1.f, 0.f); poseStack.mulPose(YN.rotationDegrees(90.f));
break; break;
case EAST: case EAST:
glRotatef(90.f, 0.f, 1.f, 0.f); poseStack.mulPose(YP.rotationDegrees(90.f));
break; break;
} }
@ -110,16 +113,19 @@ public class ScreenRenderer extends BlockEntityRenderers<TileEntityScreen> {
sh = tmp; sh = tmp;
} }
Tesselator tesselator = Tesselator.getInstance();
BufferBuilder builder = tesselator.getBuilder();
//TODO: Use tesselator //TODO: Use tesselator
glBindTexture(GL_TEXTURE_2D, scr.browser.getTextureID()); RenderSystem.setShaderTexture(0, scr.browser.getTextureID());
glBegin(GL_QUADS); builder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR_TEX);
glColor4f(1.f, 1.f, 1.f, 1.f); glTexCoord2f(0.f, 1.f); glVertex3f(-sw, -sh, 0.505f);
glColor4f(1.f, 1.f, 1.f, 1.f); glTexCoord2f(1.f, 1.f); glVertex3f( sw, -sh, 0.505f); builder.vertex(-sw, -sh, 0.505f).color(1.f, 1.f, 1.f, 1.f).uv(0.f, 1.f).endVertex();
glColor4f(1.f, 1.f, 1.f, 1.f); glTexCoord2f(1.f, 0.f); glVertex3f( sw, sh, 0.505f); builder.vertex( sw, -sh, 0.505f).color(1.f, 1.f, 1.f, 1.f).uv(1.f, 1.f).endVertex();
glColor4f(1.f, 1.f, 1.f, 1.f); glTexCoord2f(0.f, 0.f); glVertex3f(-sw, sh, 0.505f); builder.vertex( sw, sh, 0.505f).color(1.f, 1.f, 1.f, 1.f).uv(1.f, 0.f).endVertex();
glEnd(); builder.vertex(-sw, sh, 0.505f).color(1.f, 1.f, 1.f, 1.f).uv(0.f, 0.f).endVertex();
builder.end();
RenderSystem.bindTexture(0); //Minecraft does shit with mah texture otherwise... RenderSystem.bindTexture(0); //Minecraft does shit with mah texture otherwise...
glPopMatrix(); poseStack.popPose();
} }
/* /*
@ -131,7 +137,7 @@ public class ScreenRenderer extends BlockEntityRenderers<TileEntityScreen> {
*/ */
//Re-enable lighting //Re-enable lighting
glEnable(GL_CULL_FACE); RenderSystem.enableCull();
} }
public void renderAABB(AABB bb) { public void renderAABB(AABB bb) {
@ -190,11 +196,10 @@ public class ScreenRenderer extends BlockEntityRenderers<TileEntityScreen> {
glDisable(GL_BLEND); glDisable(GL_BLEND);
} }
@Override // @Override
public boolean isGlobalRenderer(TileEntityScreen te) { // public boolean isGlobalRenderer(TileEntityScreen te) {
//I don't like making it a global renderer for performance reasons, //I don't like making it a global renderer for performance reasons,
//but Minecraft's AABB-in-view-frustum checking is crappy as hell. //but Minecraft's AABB-in-view-frustum checking is crappy as hell.
return te.isLoaded(); // return te.isLoaded();
} // }
} }