diff --git a/src/main/java/com/glodblock/github/client/render/ItemWalrusRender.java b/src/main/java/com/glodblock/github/client/render/ItemWalrusRender.java index 7697b8928..5ca415597 100644 --- a/src/main/java/com/glodblock/github/client/render/ItemWalrusRender.java +++ b/src/main/java/com/glodblock/github/client/render/ItemWalrusRender.java @@ -1,25 +1,19 @@ package com.glodblock.github.client.render; -import net.minecraft.client.Minecraft; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.IItemRenderer; import net.minecraftforge.client.MinecraftForgeClient; import org.lwjgl.opengl.GL11; -import com.glodblock.github.FluidCraft; import com.glodblock.github.common.tile.TileWalrus; import com.glodblock.github.loader.ItemAndBlockHolder; -import com.glodblock.github.proxy.ClientProxy; import cpw.mods.fml.client.registry.ClientRegistry; public class ItemWalrusRender implements IItemRenderer { - ResourceLocation textureWalrus = FluidCraft.resource("textures/blocks/walrus.png"); - public ItemWalrusRender() { ClientRegistry.bindTileEntitySpecialRenderer(TileWalrus.class, new RenderBlockWalrus()); MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(ItemAndBlockHolder.WALRUS), this); @@ -32,7 +26,6 @@ public boolean handleRenderType(ItemStack item, ItemRenderType type) { @Override public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - Minecraft.getMinecraft().renderEngine.bindTexture(this.textureWalrus); GL11.glPushMatrix(); switch (type) { case EQUIPPED_FIRST_PERSON -> { @@ -42,7 +35,7 @@ public void renderItem(ItemRenderType type, ItemStack item, Object... data) { case INVENTORY -> GL11.glTranslatef(-0.5F, -0.5F, -0.1F); default -> {} } - ClientProxy.getWalrusModel().renderAll(); + WalrusRenderer.render(); GL11.glPopMatrix(); } diff --git a/src/main/java/com/glodblock/github/client/render/RenderBlockWalrus.java b/src/main/java/com/glodblock/github/client/render/RenderBlockWalrus.java index 146a58d69..06a7694f7 100644 --- a/src/main/java/com/glodblock/github/client/render/RenderBlockWalrus.java +++ b/src/main/java/com/glodblock/github/client/render/RenderBlockWalrus.java @@ -1,23 +1,16 @@ package com.glodblock.github.client.render; -import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; -import com.glodblock.github.FluidCraft; import com.glodblock.github.common.tile.TileWalrus; -import com.glodblock.github.proxy.ClientProxy; public class RenderBlockWalrus extends TileEntitySpecialRenderer { - ResourceLocation textureWalrus = FluidCraft.resource("textures/blocks/walrus.png"); - @Override public void renderTileEntityAt(TileEntity tileentity, double x, double y, double z, float partialTickTime) { - Minecraft.getMinecraft().renderEngine.bindTexture(this.textureWalrus); if (!(tileentity instanceof TileWalrus Tile)) return; float scale = Tile.getWalrusScale(); GL11.glPushMatrix(); @@ -40,7 +33,7 @@ public void renderTileEntityAt(TileEntity tileentity, double x, double y, double break; } GL11.glScalef(scale, scale, scale); - ClientProxy.getWalrusModel().renderAll(); + WalrusRenderer.render(); GL11.glPopMatrix(); } } diff --git a/src/main/java/com/glodblock/github/client/render/WalrusRenderer.java b/src/main/java/com/glodblock/github/client/render/WalrusRenderer.java new file mode 100644 index 000000000..d7ff621e7 --- /dev/null +++ b/src/main/java/com/glodblock/github/client/render/WalrusRenderer.java @@ -0,0 +1,28 @@ +package com.glodblock.github.client.render; + +import net.minecraft.client.Minecraft; +import net.minecraft.util.ResourceLocation; + +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; + +import com.glodblock.github.FluidCraft; +import com.gtnewhorizon.gtnhlib.client.model.wavefront.WavefrontVBOBuilder; +import com.gtnewhorizon.gtnhlib.client.renderer.vao.IVertexArrayObject; + +public final class WalrusRenderer { + + private static IVertexArrayObject walrus; + private static final ResourceLocation textureWalrus = FluidCraft.resource("textures/blocks/walrus.png"); + + public static void load() { + walrus = WavefrontVBOBuilder.compileToVBO(FluidCraft.resource("models/walrus.obj")); + } + + public static void render() { + Minecraft.getMinecraft().renderEngine.bindTexture(textureWalrus); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + + walrus.render(); + } +} diff --git a/src/main/java/com/glodblock/github/loader/RenderLoader.java b/src/main/java/com/glodblock/github/loader/RenderLoader.java index 125dc248a..8c01023f0 100644 --- a/src/main/java/com/glodblock/github/loader/RenderLoader.java +++ b/src/main/java/com/glodblock/github/loader/RenderLoader.java @@ -4,11 +4,13 @@ import com.glodblock.github.client.render.ItemDropRender; import com.glodblock.github.client.render.ItemPacketRender; import com.glodblock.github.client.render.ItemWalrusRender; +import com.glodblock.github.client.render.WalrusRenderer; public class RenderLoader implements Runnable { @Override public void run() { + WalrusRenderer.load(); new ItemDropRender(); new ItemPacketRender(); new ItemWalrusRender(); diff --git a/src/main/java/com/glodblock/github/proxy/ClientProxy.java b/src/main/java/com/glodblock/github/proxy/ClientProxy.java index 4151090a4..9cbfcc1f5 100644 --- a/src/main/java/com/glodblock/github/proxy/ClientProxy.java +++ b/src/main/java/com/glodblock/github/proxy/ClientProxy.java @@ -4,8 +4,6 @@ import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; -import net.minecraftforge.client.model.AdvancedModelLoader; -import net.minecraftforge.client.model.IModelCustom; import org.apache.commons.lang3.tuple.ImmutablePair; @@ -26,7 +24,6 @@ public class ClientProxy extends CommonProxy { private static final Minecraft mc = Minecraft.getMinecraft(); private static long refreshTick = System.currentTimeMillis(); - private static IModelCustom modelWalrus; @Override public void preInit(FMLPreInitializationEvent event) { @@ -39,7 +36,6 @@ public void init(FMLInitializationEvent event) { (new ListenerLoader()).run(); (new RenderLoader()).run(); (new KeybindLoader()).run(); - modelWalrus = AdvancedModelLoader.loadModel(FluidCraft.resource("models/walrus.obj")); } @Override @@ -58,8 +54,4 @@ public void tickEvent(TickEvent.PlayerTickEvent e) { refreshTick = System.currentTimeMillis(); } } - - public static IModelCustom getWalrusModel() { - return modelWalrus; - } }