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 7697b892..5ca41559 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 class ItemWalrusRender implements IItemRenderer { @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 class ItemWalrusRender implements IItemRenderer { 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 146a58d6..06a7694f 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 class RenderBlockWalrus extends TileEntitySpecialRenderer { 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 00000000..d7ff621e --- /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 125dc248..8c01023f 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.ItemCertusQuartzTankRender; 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 4151090a..9cbfcc1f 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 static com.glodblock.github.common.Config.reStockTime; 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 class ClientProxy extends CommonProxy { (new ListenerLoader()).run(); (new RenderLoader()).run(); (new KeybindLoader()).run(); - modelWalrus = AdvancedModelLoader.loadModel(FluidCraft.resource("models/walrus.obj")); } @Override @@ -58,8 +54,4 @@ public class ClientProxy extends CommonProxy { refreshTick = System.currentTimeMillis(); } } - - public static IModelCustom getWalrusModel() { - return modelWalrus; - } }