diff options
Diffstat (limited to 'src/main/java/kubatech')
5 files changed, 69 insertions, 50 deletions
diff --git a/src/main/java/kubatech/api/network/CustomTileEntityPacket.java b/src/main/java/kubatech/api/network/CustomTileEntityPacket.java index 9236594647..cd7bfd3389 100644 --- a/src/main/java/kubatech/api/network/CustomTileEntityPacket.java +++ b/src/main/java/kubatech/api/network/CustomTileEntityPacket.java @@ -59,6 +59,10 @@ public class CustomTileEntityPacket implements IMessage { addData(bytes); } + public void addData(boolean data) { + customdata.writeBoolean(data); + } + public void getData(byte[] bytes) { customdata.readBytes(bytes); } @@ -77,6 +81,10 @@ public class CustomTileEntityPacket implements IMessage { return new String(getData(getDataInt()), StandardCharsets.UTF_8); } + public boolean getDataBoolean() { + return customdata.readBoolean(); + } + @Override public void fromBytes(ByteBuf buf) { w = buf.readInt(); diff --git a/src/main/java/kubatech/api/utils/MobUtils.java b/src/main/java/kubatech/api/utils/MobUtils.java index 3e20adac1c..0b20364484 100644 --- a/src/main/java/kubatech/api/utils/MobUtils.java +++ b/src/main/java/kubatech/api/utils/MobUtils.java @@ -17,6 +17,16 @@ public class MobUtils { @SideOnly(Side.CLIENT) public static float getDesiredScale(EntityLiving e, float desiredHeight) { + return getDesiredScale(getMobHeight(e), desiredHeight); + } + + @SideOnly(Side.CLIENT) + public static float getDesiredScale(float entityHeight, float desiredHeight) { + return desiredHeight / entityHeight; + } + + @SideOnly(Side.CLIENT) + public static float getMobHeight(EntityLiving e) { try { if (mainmodelfield == null) { mainmodelfield = RendererLivingEntity.class.getDeclaredField( @@ -49,7 +59,7 @@ public class MobUtils { } } } - return desiredHeight / eheight; + return eheight; } catch (Exception ex) { return 1f; } diff --git a/src/main/java/kubatech/client/effect/EntityRenderer.java b/src/main/java/kubatech/client/effect/EntityRenderer.java index 23f1a6e44a..ed545b3cb6 100644 --- a/src/main/java/kubatech/client/effect/EntityRenderer.java +++ b/src/main/java/kubatech/client/effect/EntityRenderer.java @@ -1,6 +1,7 @@ package kubatech.client.effect; import static net.minecraft.client.renderer.entity.RenderManager.*; +import static org.lwjgl.opengl.GL11.GL_MODELVIEW_STACK_DEPTH; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -127,16 +128,25 @@ public class EntityRenderer extends EntityFX { GL11.glColor4f(1f, 1f, 1f, 1F); RenderHelper.enableStandardItemLighting(); GL11.glMatrixMode(GL11.GL_MODELVIEW); + int stackdepth = GL11.glGetInteger(GL_MODELVIEW_STACK_DEPTH); GL11.glPushMatrix(); GL11.glTranslatef( (float) (this.posX - renderPosX), (float) (this.posY - renderPosY), (float) (this.posZ - renderPosZ)); GL11.glEnable(GL12.GL_RESCALE_NORMAL); float desiredScale = MobUtils.getDesiredScale(entityToRender, 2f); if (desiredScale < 1f) GL11.glScalef(desiredScale, desiredScale, desiredScale); + try { + instance.renderEntityWithPosYaw(entityToRender, 0f, 0f, 0f, f1, p_147936_2_); + } catch (Throwable ex) { + Tessellator tes = Tessellator.instance; + try { + tes.draw(); + } catch (Exception ignored) { + } + } - instance.renderEntityWithPosYaw(entityToRender, 0f, 0f, 0f, f1, p_147936_2_); - - GL11.glPopMatrix(); + stackdepth -= GL11.glGetInteger(GL_MODELVIEW_STACK_DEPTH); + if (stackdepth < 0) for (; stackdepth < 0; stackdepth++) GL11.glPopMatrix(); GL11.glDisable(GL11.GL_LIGHTING); GL11.glDisable(GL11.GL_COLOR_MATERIAL); diff --git a/src/main/java/kubatech/nei/Mob_Handler.java b/src/main/java/kubatech/nei/Mob_Handler.java index 78294326c9..5418aa1488 100644 --- a/src/main/java/kubatech/nei/Mob_Handler.java +++ b/src/main/java/kubatech/nei/Mob_Handler.java @@ -38,6 +38,7 @@ import java.util.List; import kubatech.api.LoaderReference; import kubatech.api.utils.FastRandom; import kubatech.api.utils.InfernalHelper; +import kubatech.api.utils.MobUtils; import kubatech.api.utils.ModUtils; import kubatech.kubatech; import kubatech.loaders.MobRecipeLoader; @@ -45,12 +46,7 @@ import kubatech.tileentity.gregtech.multiblock.GT_MetaTileEntity_ExtremeExtermin import net.minecraft.client.Minecraft; import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.gui.inventory.GuiInventory; -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelBox; -import net.minecraft.client.model.ModelRenderer; import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.entity.Render; -import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RendererLivingEntity; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.EntityList; @@ -279,36 +275,9 @@ public class Mob_Handler extends TemplateRecipeHandler { try { EntityLiving e = currentrecipe.mob; - float eheight = e.height; - float ewidth = e.width; - - Render r = RenderManager.instance.getEntityRenderObject(e); - if (r instanceof RendererLivingEntity && mainmodelfield != null) { - ModelBase mainmodel = (ModelBase) mainmodelfield.get(r); - for (Object box : mainmodel.boxList) { - if (box instanceof ModelRenderer) { - float minY = 999f; - float minX = 999f; - float maxY = -999f; - float maxX = -999f; - for (Object cube : ((ModelRenderer) box).cubeList) { - if (cube instanceof ModelBox) { - if (minY > ((ModelBox) cube).posY1) minY = ((ModelBox) cube).posY1; - if (minX > ((ModelBox) cube).posX1) minX = ((ModelBox) cube).posX1; - if (maxY < ((ModelBox) cube).posY2) maxY = ((ModelBox) cube).posY2; - if (maxX < ((ModelBox) cube).posX2) maxX = ((ModelBox) cube).posX2; - } - } - float cubeheight = (maxY - minY) / 10f; - float cubewidth = (maxX - minX) / 10f; - if (eheight < cubeheight) eheight = cubeheight; - if (ewidth < cubewidth) ewidth = cubewidth; - } - } - } - int desiredheight = 27; - int scaled = (int) (desiredheight / eheight); + float eheight = MobUtils.getMobHeight(e); + float scaled = MobUtils.getDesiredScale(eheight, 27); // // int maxwidth = 15; // scaled = (int) Math.min(scaled, maxwidth / ewidth); @@ -317,7 +286,12 @@ public class Mob_Handler extends TemplateRecipeHandler { e.setPosition(mc.thePlayer.posX + 5, mc.thePlayer.posY, mc.thePlayer.posZ); // ARGS: x, y, scale, rot, rot, entity GuiInventory.func_147046_a( - mobx, moby, scaled, (float) (x + mobx) - mouseX, (float) (y + moby - eheight * scaled) - mouseZ, e); + mobx, + moby, + Math.round(scaled), + (float) (x + mobx) - mouseX, + (float) (y + moby - eheight * scaled) - mouseZ, + e); } catch (Throwable ex) { Tessellator tes = Tessellator.instance; try { diff --git a/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_ExtremeExterminationChamber.java b/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_ExtremeExterminationChamber.java index b4ed94058b..29104036f5 100644 --- a/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_ExtremeExterminationChamber.java +++ b/src/main/java/kubatech/tileentity/gregtech/multiblock/GT_MetaTileEntity_ExtremeExterminationChamber.java @@ -130,9 +130,13 @@ public class GT_MetaTileEntity_ExtremeExterminationChamber 1))) .addElement( 'g', - LoaderReference.Bartworks - ? BorosilicateGlass.ofBoroGlassAnyTier() - : ofBlock(Blocks.glass, 0)) + ofChain( + onElementPass( + t -> t.mGlasDetected = true, + LoaderReference.Bartworks + ? BorosilicateGlass.ofBoroGlassAnyTier() + : ofBlock(Blocks.glass, 0)), + ofBlock(GregTech_API.sBlockCasings2, 0))) .addElement( 's', LoaderReference.ExtraUtilities @@ -144,8 +148,10 @@ public class GT_MetaTileEntity_ExtremeExterminationChamber private TileEntity tileAltar = null; private boolean isInRitualMode = false; private int mCasing = 0; + private boolean mGlasDetected = false; private EntityRenderer entityRenderer = null; + private boolean renderEntity = false; @Override public void saveNBTData(NBTTagCompound aNBT) { @@ -266,7 +272,7 @@ public class GT_MetaTileEntity_ExtremeExterminationChamber public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { super.onPostTick(aBaseMetaTileEntity, aTick); if (aBaseMetaTileEntity.isClientSide()) { - if (aBaseMetaTileEntity.isActive() && aTick % 40 == 0) { + if (renderEntity && aBaseMetaTileEntity.isActive() && aTick % 40 == 0) { setupEntityRenderer(aBaseMetaTileEntity, 40); } } @@ -275,12 +281,21 @@ public class GT_MetaTileEntity_ExtremeExterminationChamber @SideOnly(Side.CLIENT) @Override public void HandleCustomPacket(CustomTileEntityPacket message) { - String mobType = message.getDataString(); - MobRecipeLoader.MobRecipe r = MobNameToRecipeMap.get(mobType); - if (r != null) { - if (entityRenderer == null) setupEntityRenderer(getBaseMetaTileEntity(), 40); - entityRenderer.setEntity(r.entity); - } else entityRenderer.setEntity(null); + if (message.getDataBoolean()) { + renderEntity = true; + String mobType = message.getDataString(); + MobRecipeLoader.MobRecipe r = MobNameToRecipeMap.get(mobType); + if (r != null) { + if (entityRenderer == null) setupEntityRenderer(getBaseMetaTileEntity(), 40); + entityRenderer.setEntity(r.entity); + } else entityRenderer.setEntity(null); + } else { + renderEntity = false; + if (entityRenderer != null) { + entityRenderer.setDead(); + entityRenderer = null; + } + } } @Override @@ -392,7 +407,8 @@ public class GT_MetaTileEntity_ExtremeExterminationChamber if (mobPacket == null) mobPacket = new CustomTileEntityPacket((TileEntity) this.getBaseMetaTileEntity(), null); mobPacket.resetHelperData(); - mobPacket.addData(mobType); + mobPacket.addData(mGlasDetected); + if (mGlasDetected) mobPacket.addData(mobType); mobPacket.sendToAllAround(16); return true; @@ -430,6 +446,7 @@ public class GT_MetaTileEntity_ExtremeExterminationChamber @Override public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) { + mGlasDetected = false; if (!checkPiece(STRUCTURE_PIECE_MAIN, 2, 6, 0)) return false; if (mCasing < 10 || mMaintenanceHatches.size() != 1 || mEnergyHatches.size() == 0) return false; if (isInRitualMode) connectToRitual(); |