- 28
- 0
Добрейшего времени суток уважаемые читатели и обыватели этого прекрасного и чудесного форума, возникла проблема с рендерингом предмета от 1 и 3 лица соответственно, на данный момент я имею дополнительный слот под вторую руку в инвентаре, на данный момент имеется задача рендерить объект помещаемый в данный слот в левой части экрана от 1 лица и в левой руке от 3 лица, к сожалению на данный момент когда я помещаю вещь в данный слот у меня пропадает текстура в инвентаре и не рендерится ничего в руке, с чем это связано я примерно понимаю, но как это исправить нет
код вызова класса рендера с проверкой ячейки на пустоту
Код класса рендера
код вызова класса рендера с проверкой ячейки на пустоту
Java:
@SubscribeEvent
public void RenderLeftHand(RenderHandEvent event){
EntityPlayerSP player = Minecraft.getMinecraft().thePlayer;
GuiRender guiRender = new GuiRender(null, null);
InventoryPantheon baubles = PlayerHandler.getPlayerBaubles(player);
if(baubles.getStackInSlot(3) !=null){
MinecraftForgeClient.registerItemRenderer(baubles.getStackInSlot(3).getItem(), guiRender);
}
}
Java:
public class GuiRender implements IItemRenderer {
TileEntitySpecialRenderer render;
private TileEntity te;
private RenderItem itemRenderer;
public GuiRender(TileEntitySpecialRenderer render, TileEntity te) {
this.render = render;
this.te = te;
}
@Override
public boolean handleRenderType(ItemStack item, ItemRenderType type) {
return true;
}
@Override
public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
return true;
}
@Override
public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
if (itemRenderer == null) {
itemRenderer = new RenderItem();
}
IIcon icon = item.getIconIndex();
Tessellator tessellator = Tessellator.instance;
if (type == ItemRenderType.EQUIPPED) {
ItemRenderer.renderItemIn2D(tessellator,
icon.getMaxU(),
icon.getMinV(),
icon.getMinU(),
icon.getMaxV(),
icon.getIconWidth(),
icon.getIconHeight(), 16F/256F);
GL11.glTranslatef(0.5F, 0.0F, 0.5F); // Делаем так, чтобы рука игрока держалась за центр блока
}
if (type == ItemRenderType.INVENTORY) {
GL11.glEnable(GL11.GL_ALPHA_TEST);
// GL11.glEnable(GL11.GL_BLEND);
itemRenderer.renderIcon(0, 0, icon, 16, 16);
GL11.glColor3f(1, 1, 1);
ItemRenderer.renderItemIn2D(tessellator,
icon.getMaxU(),
icon.getMinV(),
icon.getMinU(),
icon.getMaxV(),
icon.getIconWidth(),
icon.getIconHeight(), 16F/256F);
itemRenderer.renderIcon(0, 0, icon, 16, 16);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_ALPHA_TEST);
GL11.glDisable(GL11.GL_BLEND);
GL11.glTranslatef(0.0F, 0.0F, 0.0F); // Чутка опустим предмет вниз, чтобы он нормально отображался в слоте инвентаря
}
if (type == ItemRenderType.EQUIPPED_FIRST_PERSON) {
ItemRenderer.renderItemIn2D(tessellator,
icon.getMaxU(),
icon.getMinV(),
icon.getMinU(),
icon.getMaxV(),
icon.getIconWidth(),
icon.getIconHeight(), 16F/256F);
GL11.glTranslatef(5.0F, 0.35F, 0.5F); // Смещаем центр предмета в руке, чтобы он рисовался там же, где и все остальные блоки, когда их держит юзер
GL11.glScalef(1.3F, 1.3F, 1.3F);
}
}
}