Search in sources :

Example 11 with OBJState

use of net.minecraftforge.client.model.obj.OBJModel.OBJState in project ImmersiveEngineering by BluSunrize.

the class TileEntityFluidPipe method getStateFromKey.

// @Override
// public HashMap<String, String> getTextureReplacements()
// {
// if(pipeCover!=null)
// {
// HashMap<String,String> map = new HashMap<String,String>();
// //			map.put("cover","minecraft:blocks/stone");
// Block b = Block.getBlockFromItem(pipeCover.getItem());
// IBlockState state = b!=null?b.getStateFromMeta(pipeCover.getMetadata()): Blocks.STONE.getDefaultState();
// IBakedModel model = Minecraft.getMinecraft().getBlockRendererDispatcher().getBlockModelShapes().getModelForState(state);
// if(model!=null && model.getParticleTexture()!=null)
// map.put("cover", model.getParticleTexture().getIconName());
// 
// return map;
// }
// return null;
// }
public static OBJState getStateFromKey(String key) {
    if (!cachedOBJStates.containsKey(key)) {
        ArrayList<String> parts = new ArrayList();
        // new Matrix4();
        Matrix4 rotationMatrix = new Matrix4(TRSRTransformation.identity().getMatrix());
        short connections = getConnectionsFromKey(key);
        // if(pipeCover!=null)
        // parts.add("cover");
        int totalConnections = Integer.bitCount(connections & 255);
        boolean straightY = (connections & 3) == 3;
        boolean straightZ = (connections & 12) == 12;
        boolean straightX = (connections & 48) == 48;
        switch(totalConnections) {
            case // stub
            0:
                parts.add("center");
                break;
            case // stopper
            1:
                parts.add("stopper");
                // default: y-
                if (// y+
                (connections & 2) != 0)
                    rotationMatrix.rotate(Math.PI, 0, 0, 1);
                else if (// z-
                (connections & 4) != 0)
                    rotationMatrix.rotate(Math.PI / 2, 1, 0, 0);
                else if (// z+
                (connections & 8) != 0)
                    rotationMatrix.rotate(-Math.PI / 2, 1, 0, 0);
                else if (// x-
                (connections & 16) != 0)
                    rotationMatrix.rotate(-Math.PI / 2, 0, 0, 1);
                else if (// x+
                (connections & 32) != 0)
                    rotationMatrix.rotate(Math.PI / 2, 0, 0, 1);
                parts.add("con_yMin");
                break;
            case // straight or curve
            2:
                if (straightY) {
                    parts.add("pipe_y");
                    if (getConnectionStyle(0, connections) == 1)
                        parts.add("con_yMin");
                    if (getConnectionStyle(1, connections) == 1)
                        parts.add("con_yMax");
                } else if (straightZ) {
                    parts.add("pipe_z");
                    if (getConnectionStyle(2, connections) == 1)
                        parts.add("con_zMin");
                    if (getConnectionStyle(3, connections) == 1)
                        parts.add("con_zMax");
                } else if (straightX) {
                    parts.add("pipe_x");
                    if (getConnectionStyle(4, connections) == 1)
                        parts.add("con_xMin");
                    if (getConnectionStyle(5, connections) == 1)
                        parts.add("con_xMax");
                } else {
                    parts.add("curve");
                    parts.add("con_yMin");
                    parts.add("con_zMin");
                    byte connectTo = (byte) (connections & 60);
                    if (// curve to top or bottom
                    (connections & 3) != 0) {
                        if (// x-
                        connectTo == 16)
                            rotationMatrix.rotate(Math.PI / 2, 0, 1, 0);
                        else if (// x+
                        connectTo == 32)
                            rotationMatrix.rotate(-Math.PI / 2, 0, 1, 0);
                        else if (// z+
                        connectTo == 8)
                            rotationMatrix.rotate(Math.PI, 0, 1, 0);
                        if (// flip to top
                        (connections & 2) != 0)
                            rotationMatrix.rotate(Math.PI, 0, 0, 1);
                    // default: Curve to z-
                    } else // curve to horizontal
                    {
                        rotationMatrix.rotate(-Math.PI / 2, 0, 0, 1);
                        if (// z+ to x+
                        connectTo == 40)
                            rotationMatrix.rotate(Math.PI, 1, 0, 0);
                        else if (// z+ to x-
                        connectTo == 24)
                            rotationMatrix.rotate(-Math.PI / 2, 1, 0, 0);
                        else if (// z- to x+
                        connectTo == 36)
                            rotationMatrix.rotate(Math.PI / 2, 1, 0, 0);
                    // default: z- to x-
                    }
                }
                break;
            case // tcross or tcurve
            3:
                if (// has straight connect
                straightX || straightZ || straightY) {
                    parts.add("tcross");
                    parts.add("con_yMin");
                    parts.add("con_zMin");
                    parts.add("con_zMax");
                    if (straightX) {
                        rotationMatrix.rotate(Math.PI / 2, 0, 1, 0);
                        if (// z-
                        (connections & 4) != 0)
                            rotationMatrix.rotate(Math.PI / 2, 0, 0, 1);
                        else if (// z+
                        (connections & 8) != 0)
                            rotationMatrix.rotate(-Math.PI / 2, 0, 0, 1);
                        else if (// y+
                        (connections & 2) != 0)
                            rotationMatrix.rotate(Math.PI, 0, 0, 1);
                    // default: Curve to y-
                    } else if (straightY) {
                        rotationMatrix.rotate(Math.PI / 2, 1, 0, 0);
                        if (// x-
                        (connections & 16) != 0)
                            rotationMatrix.rotate(-Math.PI / 2, 0, 0, 1);
                        else if (// x+
                        (connections & 32) != 0)
                            rotationMatrix.rotate(Math.PI / 2, 0, 0, 1);
                        else if (// z+
                        (connections & 8) != 0)
                            rotationMatrix.rotate(Math.PI, 0, 0, 1);
                    // default: Curve to z-
                    } else // default:z straight
                    {
                        if (// x-
                        (connections & 16) != 0)
                            rotationMatrix.rotate(-Math.PI / 2, 0, 0, 1);
                        else if (// x+
                        (connections & 32) != 0)
                            rotationMatrix.rotate(Math.PI / 2, 0, 0, 1);
                        else if (// y+
                        (connections & 2) != 0)
                            rotationMatrix.rotate(Math.PI, 0, 0, 1);
                    // default: Curve to y-
                    }
                } else // tcurve
                {
                    parts.add("tcurve");
                    parts.add("con_yMin");
                    parts.add("con_zMin");
                    parts.add("con_xMax");
                    // default y-, z-, x+
                    if (// z+
                    (connections & 8) != 0) {
                        if (// x-
                        (connections & 16) != 0)
                            rotationMatrix.rotate(Math.PI, 0, 1, 0);
                        else
                            rotationMatrix.rotate(-Math.PI / 2, 0, 1, 0);
                    } else // z-
                    {
                        if (// x-
                        (connections & 16) != 0)
                            rotationMatrix.rotate(Math.PI / 2, 0, 1, 0);
                    }
                    if (// y+
                    (connections & 2) != 0)
                        rotationMatrix.rotate(Math.PI / 2, 0, 0, 1);
                }
                break;
            case // cross or complex tcross
            4:
                boolean cross = (straightX && straightZ) || (straightX && straightY) || (straightZ && straightY);
                if (cross) {
                    parts.add("cross");
                    parts.add("con_yMin");
                    parts.add("con_yMax");
                    parts.add("con_zMin");
                    parts.add("con_zMax");
                    if (// x and z
                    !straightY)
                        rotationMatrix.rotate(Math.PI / 2, 0, 0, 1);
                    else if (// x and y
                    straightX)
                        rotationMatrix.rotate(Math.PI / 2, 0, 1, 0);
                } else {
                    parts.add("tcross2");
                    parts.add("con_yMin");
                    parts.add("con_zMin");
                    parts.add("con_zMax");
                    parts.add("con_xMax");
                    if (straightZ) {
                        // default y- z+- x+
                        if (// x-
                        (connections & 16) != 0)
                            rotationMatrix.rotate(Math.PI, 0, 1, 0);
                        if (// y+
                        (connections & 2) != 0)
                            rotationMatrix.rotate(Math.PI / 2, 0, 0, 1);
                    } else if (straightY) {
                        rotationMatrix.rotate(Math.PI / 2, 1, 0, 0);
                        // default y+- z- x+
                        if (// z+
                        (connections & 8) != 0) {
                            rotationMatrix.rotate(Math.PI / 2, 0, 0, 1);
                            if (// x-
                            (connections & 16) != 0)
                                rotationMatrix.rotate(Math.PI / 2, 0, 0, 1);
                        } else if (// x-
                        (connections & 16) != 0)
                            rotationMatrix.rotate(-Math.PI / 2, 0, 0, 1);
                    } else {
                        rotationMatrix.rotate(Math.PI / 2, 0, 1, 0);
                        // default y- z- x+-
                        if (// z+
                        (connections & 8) != 0)
                            rotationMatrix.rotate(Math.PI, 0, 1, 0);
                        if (// y+
                        (connections & 2) != 0)
                            rotationMatrix.rotate(Math.PI / 2, 0, 0, 1);
                    }
                }
                break;
            case // complete tcross
            5:
                parts.add("tcross3");
                parts.add("con_yMin");
                parts.add("con_yMax");
                parts.add("con_zMin");
                parts.add("con_zMax");
                parts.add("con_xMax");
                // default y+- z+- x+
                if (straightZ) {
                    if (straightY) {
                        if (// x-
                        (connections & 16) != 0)
                            rotationMatrix.rotate(Math.PI, 0, 1, 0);
                    } else if (straightX)
                        rotationMatrix.rotate(((connections & 2) != 0) ? (Math.PI / 2) : (-Math.PI / 2), 0, 0, 1);
                } else if (straightX) {
                    rotationMatrix.rotate(Math.PI / 2, 0, 1, 0);
                    if (// z+
                    (connections & 8) != 0)
                        rotationMatrix.rotate(Math.PI, 0, 1, 0);
                }
                break;
            case // Full Crossing
            6:
                parts.add("con_yMin");
                parts.add("con_yMax");
                parts.add("con_zMin");
                parts.add("con_zMax");
                parts.add("con_xMin");
                parts.add("con_xMax");
                break;
        }
        // connetionParts
        // for(int i=0; i<6; i++)
        // if(((TileEntityFluidPipe)tile).getConnectionStyle(i)==1)
        // connectionCaps.add(CONNECTIONS[i]);
        Matrix4 tempMatr = new Matrix4();
        tempMatr.m03 = tempMatr.m13 = tempMatr.m23 = .5f;
        rotationMatrix.leftMultiply(tempMatr);
        tempMatr.invert();
        rotationMatrix = rotationMatrix.multiply(tempMatr);
        cachedOBJStates.put(key, new OBJState(parts, true, new TRSRTransformation(rotationMatrix.toMatrix4f())));
    }
    return cachedOBJStates.get(key);
}
Also used : TRSRTransformation(net.minecraftforge.common.model.TRSRTransformation) OBJState(net.minecraftforge.client.model.obj.OBJModel.OBJState) Matrix4(blusunrize.immersiveengineering.common.util.chickenbones.Matrix4)

Example 12 with OBJState

use of net.minecraftforge.client.model.obj.OBJModel.OBJState in project ImmersiveEngineering by BluSunrize.

the class ConveyorChute method modifyQuads.

@Override
@SideOnly(Side.CLIENT)
public List<BakedQuad> modifyQuads(List<BakedQuad> baseModel, @Nullable TileEntity tile, EnumFacing facing) {
    if (!initTextures) {
        for (BlockTypes_MetalsAll metal : BlockTypes_MetalsAll.values()) TEXTURE_GETTERS[metal.getMeta()] = rl -> Minecraft.getMinecraft().getTextureMapBlocks().getAtlasSprite("immersiveengineering:blocks/sheetmetal_" + metal.getName());
        initTextures = true;
    }
    if (this.sheetmetalType < 0 || this.sheetmetalType >= TEXTURE_GETTERS.length)
        return baseModel;
    Function<ResourceLocation, TextureAtlasSprite> textureGetter = TEXTURE_GETTERS[this.sheetmetalType];
    if (chuteModel[this.sheetmetalType] == null)
        try {
            IModel iModel = ModelLoaderRegistry.getModel(new ResourceLocation("immersiveengineering:block/metal_device/chute.obj"));
            chuteModel[this.sheetmetalType] = new IBakedModel[] { iModel.bake(new OBJState(ImmutableList.of("base"), true, ModelRotation.X0_Y180), DefaultVertexFormats.ITEM, textureGetter), iModel.bake(new OBJState(ImmutableList.of("base"), true, ModelRotation.X0_Y0), DefaultVertexFormats.ITEM, textureGetter), iModel.bake(new OBJState(ImmutableList.of("base"), true, ModelRotation.X0_Y90), DefaultVertexFormats.ITEM, textureGetter), iModel.bake(new OBJState(ImmutableList.of("base"), true, ModelRotation.X0_Y270), DefaultVertexFormats.ITEM, textureGetter) };
        } catch (Exception ignored) {
        }
    float[] colour = { 1, 1, 1, 1 };
    Matrix4 matrix = new Matrix4(facing);
    baseModel.clear();
    if (diagonal) {
        IBlockState bs = tile != null && tile.getWorld() != null ? tile.getWorld().getBlockState(tile.getPos()) : IEContent.blockConveyor.getDefaultState();
        if (chuteModel[this.sheetmetalType] != null && facing.ordinal() >= 2)
            baseModel.addAll(chuteModel[this.sheetmetalType][facing.ordinal() - 2].getQuads(bs, null, 0));
    } else {
        Function<EnumFacing, TextureAtlasSprite> getSprite = f -> textureGetter.apply(null);
        baseModel.addAll(ClientUtils.createBakedBox(new Vector3f(0, 0, 0), new Vector3f(.0625f, 1, .0625f), matrix, facing, getSprite, colour));
        baseModel.addAll(ClientUtils.createBakedBox(new Vector3f(0, 0, .9375f), new Vector3f(.0625f, 1, 1), matrix, facing, getSprite, colour));
        baseModel.addAll(ClientUtils.createBakedBox(new Vector3f(.9375f, 0, 0), new Vector3f(1, 1, .0625f), matrix, facing, getSprite, colour));
        baseModel.addAll(ClientUtils.createBakedBox(new Vector3f(.9375f, 0, .9375f), new Vector3f(1, 1, 1), matrix, facing, getSprite, colour));
        if (renderWall(tile, EnumFacing.NORTH, facing))
            baseModel.addAll(ClientUtils.createBakedBox(new Vector3f(.0625f, 0, 0), new Vector3f(.9375f, 1, .0625f), matrix, facing, getSprite, colour));
        if (renderWall(tile, EnumFacing.SOUTH, facing))
            baseModel.addAll(ClientUtils.createBakedBox(new Vector3f(.0625f, 0, .9375f), new Vector3f(.9375f, 1, 1), matrix, facing, getSprite, colour));
        if (renderWall(tile, EnumFacing.WEST, facing))
            baseModel.addAll(ClientUtils.createBakedBox(new Vector3f(0, 0, .0625f), new Vector3f(.0625f, 1, .9375f), matrix, facing, getSprite, colour));
        if (renderWall(tile, EnumFacing.EAST, facing))
            baseModel.addAll(ClientUtils.createBakedBox(new Vector3f(.9375f, 0, .0625f), new Vector3f(1, 1, .9375f), matrix, facing, getSprite, colour));
    }
    return baseModel;
}
Also used : IBakedModel(net.minecraft.client.renderer.block.model.IBakedModel) IEContent(blusunrize.immersiveengineering.common.IEContent) AxisAlignedBB(net.minecraft.util.math.AxisAlignedBB) EnumHand(net.minecraft.util.EnumHand) Function(java.util.function.Function) ClientUtils(blusunrize.immersiveengineering.client.ClientUtils) ArrayList(java.util.ArrayList) DefaultVertexFormats(net.minecraft.client.renderer.vertex.DefaultVertexFormats) ItemStack(net.minecraft.item.ItemStack) ImmutableList(com.google.common.collect.ImmutableList) Block(net.minecraft.block.Block) Minecraft(net.minecraft.client.Minecraft) Side(net.minecraftforge.fml.relauncher.Side) IConveyorTile(blusunrize.immersiveengineering.api.tool.ConveyorHandler.IConveyorTile) BlockTypes_MetalsAll(blusunrize.immersiveengineering.common.blocks.BlockTypes_MetalsAll) SideOnly(net.minecraftforge.fml.relauncher.SideOnly) SoundCategory(net.minecraft.util.SoundCategory) ConveyorHandler(blusunrize.immersiveengineering.api.tool.ConveyorHandler) Nullable(javax.annotation.Nullable) TextureAtlasSprite(net.minecraft.client.renderer.texture.TextureAtlasSprite) EntityItem(net.minecraft.entity.item.EntityItem) NBTTagCompound(net.minecraft.nbt.NBTTagCompound) Entity(net.minecraft.entity.Entity) IESounds(blusunrize.immersiveengineering.common.util.IESounds) Utils(blusunrize.immersiveengineering.common.util.Utils) OBJState(net.minecraftforge.client.model.obj.OBJModel.OBJState) ModelLoaderRegistry(net.minecraftforge.client.model.ModelLoaderRegistry) EnumFacing(net.minecraft.util.EnumFacing) BakedQuad(net.minecraft.client.renderer.block.model.BakedQuad) IModel(net.minecraftforge.client.model.IModel) IBlockState(net.minecraft.block.state.IBlockState) List(java.util.List) Vector3f(org.lwjgl.util.vector.Vector3f) Matrix4(blusunrize.immersiveengineering.common.util.chickenbones.Matrix4) EntityPlayer(net.minecraft.entity.player.EntityPlayer) ResourceLocation(net.minecraft.util.ResourceLocation) TileEntity(net.minecraft.tileentity.TileEntity) ModelRotation(net.minecraft.client.renderer.block.model.ModelRotation) Collections(java.util.Collections) IModel(net.minecraftforge.client.model.IModel) IBlockState(net.minecraft.block.state.IBlockState) TextureAtlasSprite(net.minecraft.client.renderer.texture.TextureAtlasSprite) EnumFacing(net.minecraft.util.EnumFacing) BlockTypes_MetalsAll(blusunrize.immersiveengineering.common.blocks.BlockTypes_MetalsAll) Matrix4(blusunrize.immersiveengineering.common.util.chickenbones.Matrix4) ResourceLocation(net.minecraft.util.ResourceLocation) Vector3f(org.lwjgl.util.vector.Vector3f) IBakedModel(net.minecraft.client.renderer.block.model.IBakedModel) OBJState(net.minecraftforge.client.model.obj.OBJModel.OBJState) SideOnly(net.minecraftforge.fml.relauncher.SideOnly)

Example 13 with OBJState

use of net.minecraftforge.client.model.obj.OBJModel.OBJState in project ImmersiveEngineering by BluSunrize.

the class TileRenderTurret method renderModelPart.

public static void renderModelPart(final BlockRendererDispatcher blockRenderer, Tessellator tessellator, VertexBuffer worldRenderer, World world, IBlockState state, IBakedModel model, BlockPos pos, String... parts) {
    if (state instanceof IExtendedBlockState)
        state = ((IExtendedBlockState) state).withProperty(Properties.AnimationProperty, new OBJState(Arrays.asList(parts), true));
    RenderHelper.disableStandardItemLighting();
    GlStateManager.blendFunc(770, 771);
    GlStateManager.enableBlend();
    GlStateManager.disableCull();
    if (Minecraft.isAmbientOcclusionEnabled())
        GlStateManager.shadeModel(7425);
    else
        GlStateManager.shadeModel(7424);
    worldRenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK);
    worldRenderer.setTranslation(-.5 - pos.getX(), -.5 - pos.getY(), -.5 - pos.getZ());
    worldRenderer.color(255, 255, 255, 255);
    blockRenderer.getBlockModelRenderer().renderModel(world, model, state, pos, worldRenderer, true);
    worldRenderer.setTranslation(0.0D, 0.0D, 0.0D);
    tessellator.draw();
}
Also used : IExtendedBlockState(net.minecraftforge.common.property.IExtendedBlockState) OBJState(net.minecraftforge.client.model.obj.OBJModel.OBJState)

Example 14 with OBJState

use of net.minecraftforge.client.model.obj.OBJModel.OBJState in project ImmersiveEngineering by BluSunrize.

the class TileRenderAutoWorkbench method renderModelPart.

public static void renderModelPart(final BlockRendererDispatcher blockRenderer, Tessellator tessellator, VertexBuffer worldRenderer, World world, IBlockState state, IBakedModel model, BlockPos pos, String... parts) {
    if (state instanceof IExtendedBlockState)
        state = ((IExtendedBlockState) state).withProperty(Properties.AnimationProperty, new OBJState(Arrays.asList(parts), true));
    RenderHelper.disableStandardItemLighting();
    GlStateManager.blendFunc(770, 771);
    GlStateManager.enableBlend();
    GlStateManager.disableCull();
    if (Minecraft.isAmbientOcclusionEnabled())
        GlStateManager.shadeModel(7425);
    else
        GlStateManager.shadeModel(7424);
    worldRenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK);
    worldRenderer.setTranslation(-.5 - pos.getX(), -.5 - pos.getY(), -.5 - pos.getZ());
    worldRenderer.color(255, 255, 255, 255);
    blockRenderer.getBlockModelRenderer().renderModel(world, model, state, pos, worldRenderer, true);
    worldRenderer.setTranslation(0.0D, 0.0D, 0.0D);
    tessellator.draw();
}
Also used : IExtendedBlockState(net.minecraftforge.common.property.IExtendedBlockState) OBJState(net.minecraftforge.client.model.obj.OBJModel.OBJState)

Example 15 with OBJState

use of net.minecraftforge.client.model.obj.OBJModel.OBJState in project Immersive-Tech by FerroO2000.

the class BlockITTileProvider method getExtendedState.

@Override
public IBlockState getExtendedState(IBlockState state, IBlockAccess world, BlockPos pos) {
    state = super.getExtendedState(state, world, pos);
    if (state instanceof IExtendedBlockState) {
        IExtendedBlockState extended = (IExtendedBlockState) state;
        TileEntity te = world.getTileEntity(pos);
        if (te != null) {
            if (te instanceof IConfigurableSides)
                for (int i = 0; i < 6; i++) if (extended.getUnlistedNames().contains(IEProperties.SIDECONFIG[i]))
                    extended = extended.withProperty(IEProperties.SIDECONFIG[i], ((IConfigurableSides) te).getSideConfig(i));
            if (te instanceof IAdvancedHasObjProperty)
                extended = extended.withProperty(Properties.AnimationProperty, ((IAdvancedHasObjProperty) te).getOBJState());
            else if (te instanceof IHasObjProperty)
                extended = extended.withProperty(Properties.AnimationProperty, new OBJState(((IHasObjProperty) te).compileDisplayList(), true));
            if (te instanceof IDynamicTexture)
                extended = extended.withProperty(IEProperties.OBJ_TEXTURE_REMAP, ((IDynamicTexture) te).getTextureReplacements());
            if (te instanceof IOBJModelCallback)
                extended = extended.withProperty(IOBJModelCallback.PROPERTY, (IOBJModelCallback) te);
            if (te.hasCapability(CapabilityShader.SHADER_CAPABILITY, null))
                extended = extended.withProperty(CapabilityShader.BLOCKSTATE_PROPERTY, te.getCapability(CapabilityShader.SHADER_CAPABILITY, null));
            if (te instanceof IPropertyPassthrough && ((IExtendedBlockState) state).getUnlistedNames().contains(IEProperties.TILEENTITY_PASSTHROUGH))
                extended = extended.withProperty(IEProperties.TILEENTITY_PASSTHROUGH, te);
            if (te instanceof TileEntityImmersiveConnectable && ((IExtendedBlockState) state).getUnlistedNames().contains(IEProperties.CONNECTIONS))
                extended = extended.withProperty(IEProperties.CONNECTIONS, ((TileEntityImmersiveConnectable) te).genConnBlockstate());
        }
        state = extended;
    }
    return state;
}
Also used : TileEntity(net.minecraft.tileentity.TileEntity) TileEntityImmersiveConnectable(blusunrize.immersiveengineering.api.energy.wires.TileEntityImmersiveConnectable) IDynamicTexture(blusunrize.immersiveengineering.common.blocks.IEBlockInterfaces.IDynamicTexture) IPropertyPassthrough(blusunrize.immersiveengineering.common.blocks.IEBlockInterfaces.IPropertyPassthrough) IOBJModelCallback(blusunrize.immersiveengineering.client.models.IOBJModelCallback) IExtendedBlockState(net.minecraftforge.common.property.IExtendedBlockState) IAdvancedHasObjProperty(blusunrize.immersiveengineering.common.blocks.IEBlockInterfaces.IAdvancedHasObjProperty) IHasObjProperty(blusunrize.immersiveengineering.common.blocks.IEBlockInterfaces.IHasObjProperty) IConfigurableSides(blusunrize.immersiveengineering.common.blocks.IEBlockInterfaces.IConfigurableSides) OBJState(net.minecraftforge.client.model.obj.OBJModel.OBJState)

Aggregations

OBJState (net.minecraftforge.client.model.obj.OBJModel.OBJState)20 IExtendedBlockState (net.minecraftforge.common.property.IExtendedBlockState)17 IBlockState (net.minecraft.block.state.IBlockState)10 IBakedModel (net.minecraft.client.renderer.block.model.IBakedModel)10 BlockPos (net.minecraft.util.math.BlockPos)7 BakedQuad (net.minecraft.client.renderer.block.model.BakedQuad)6 EnumFacing (net.minecraft.util.EnumFacing)5 Matrix4 (blusunrize.immersiveengineering.common.util.chickenbones.Matrix4)3 Block (net.minecraft.block.Block)3 TileEntity (net.minecraft.tileentity.TileEntity)3 TileEntityImmersiveConnectable (blusunrize.immersiveengineering.api.energy.wires.TileEntityImmersiveConnectable)2 IPlantHandler (blusunrize.immersiveengineering.api.tool.BelljarHandler.IPlantHandler)2 IESmartObjModel (blusunrize.immersiveengineering.client.models.IESmartObjModel)2 IOBJModelCallback (blusunrize.immersiveengineering.client.models.IOBJModelCallback)2 ArrayList (java.util.ArrayList)2 HashMap (java.util.HashMap)2 ItemStack (net.minecraft.item.ItemStack)2 TRSRTransformation (net.minecraftforge.common.model.TRSRTransformation)2 ConveyorHandler (blusunrize.immersiveengineering.api.tool.ConveyorHandler)1 IConveyorTile (blusunrize.immersiveengineering.api.tool.ConveyorHandler.IConveyorTile)1