mirror of
https://github.com/KAMKEEL/CustomNPC-Gecko-Addon.git
synced 2026-11-13 06:37:35 +00:00
Linked the renderTile rendering to the BlockScriptedRenderer via mixins
This commit is contained in:
1 parent
4852454ee0
commit
b1e091c248
2 files changed
+53
-1
No files matched your search
@@ -0,0 +1,50 @@
|
||||
package com.goodbird.npcgecko.mixin.impl;
|
||||
|
||||
import com.goodbird.npcgecko.tile.TileEntityCustomModel;
|
||||
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.client.MinecraftForgeClient;
|
||||
import noppes.npcs.blocks.tiles.TileScripted;
|
||||
import noppes.npcs.client.renderer.blocks.BlockScriptedRenderer;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
import software.bernie.geckolib3.renderers.geo.RenderBlockItem;
|
||||
|
||||
import static net.minecraftforge.client.IItemRenderer.ItemRenderType.ENTITY;
|
||||
|
||||
@Mixin(BlockScriptedRenderer.class)
|
||||
public abstract class MixinBlockScriptedRenderer {
|
||||
|
||||
@Shadow(remap = false)
|
||||
protected abstract boolean overrideModel();
|
||||
|
||||
@Inject(method = "renderTileEntityAt", at = @At(value = "INVOKE", target = "Lnoppes/npcs/client/renderer/blocks/BlockScriptedRenderer;renderItem(Lnet/minecraft/tileentity/TileEntity;Lnet/minecraft/item/ItemStack;)V", remap = false))
|
||||
public void geckoModelRendering(TileEntity te, double x, double y, double z, float partialTicks, CallbackInfo ci) {
|
||||
if(!(te instanceof TileScripted)) return;
|
||||
TileScripted tileScripted = (TileScripted) te;
|
||||
if(tileScripted.itemModel == null) return;
|
||||
if(!(MinecraftForgeClient.getItemRenderer(tileScripted.itemModel, ENTITY) instanceof RenderBlockItem) || overrideModel()) return;
|
||||
GL11.glTranslated(0, -0.5, 0);
|
||||
GL11.glScaled(2, 2, 2);
|
||||
}
|
||||
|
||||
@Inject(method = "renderTileEntityAt", at = @At(value = "HEAD"), cancellable = true)
|
||||
public void customGeckoModelRendering(TileEntity te, double x, double y, double z, float partialTicks, CallbackInfo ci) {
|
||||
if(overrideModel()) return;
|
||||
if(!(te instanceof TileScripted)) return;
|
||||
TileScripted tileScripted = (TileScripted) te;
|
||||
if(!(tileScripted.renderTile instanceof TileEntityCustomModel)) return;
|
||||
GL11.glPushMatrix();
|
||||
GL11.glRotatef((float)tileScripted.rotationY, 0.0F, 1.0F, 0.0F);
|
||||
GL11.glRotatef((float)tileScripted.rotationX, 1.0F, 0.0F, 0.0F);
|
||||
GL11.glRotatef((float)tileScripted.rotationZ, 0.0F, 0.0F, 1.0F);
|
||||
GL11.glScalef(tileScripted.scaleX, tileScripted.scaleY, tileScripted.scaleZ);
|
||||
TileEntityRendererDispatcher.instance.renderTileEntityAt(tileScripted.renderTile, x, y, z, partialTicks);
|
||||
GL11.glPopMatrix();
|
||||
ci.cancel();
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user