aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesGrinderMultiblock.java
blob: 82081472365386361ad16a997950e62d19018394 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
package gtPlusPlus.xmod.gregtech.common.blocks.textures;

import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraftforge.common.util.ForgeDirection;

import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gtPlusPlus.xmod.gregtech.common.blocks.GregtechMetaCasingBlocks5;
import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock.CustomIcon;
import gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing.MTEIsaMill;

public class TexturesGrinderMultiblock {

    private static final CustomIcon GT8_1_Active = new CustomIcon("iconsets/Grinder/GRINDER_ACTIVE1");
    private static final CustomIcon GT8_1 = new CustomIcon("iconsets/Grinder/GRINDER1");
    private static final CustomIcon GT8_2_Active = new CustomIcon("iconsets/Grinder/GRINDER_ACTIVE2");
    private static final CustomIcon GT8_2 = new CustomIcon("iconsets/Grinder/GRINDER2");
    private static final CustomIcon GT8_3_Active = new CustomIcon("iconsets/Grinder/GRINDER_ACTIVE3");
    private static final CustomIcon GT8_3 = new CustomIcon("iconsets/Grinder/GRINDER3");
    private static final CustomIcon GT8_4_Active = new CustomIcon("iconsets/Grinder/GRINDER_ACTIVE4");
    private static final CustomIcon GT8_4 = new CustomIcon("iconsets/Grinder/GRINDER4");
    private static final CustomIcon GT8_5_Active = new CustomIcon("iconsets/Grinder/GRINDER_ACTIVE5");
    private static final CustomIcon GT8_5 = new CustomIcon("iconsets/Grinder/GRINDER5");
    private static final CustomIcon GT8_6_Active = new CustomIcon("iconsets/Grinder/GRINDER_ACTIVE6");
    private static final CustomIcon GT8_6 = new CustomIcon("iconsets/Grinder/GRINDER6");
    private static final CustomIcon GT8_7_Active = new CustomIcon("iconsets/Grinder/GRINDER_ACTIVE7");
    private static final CustomIcon GT8_7 = new CustomIcon("iconsets/Grinder/GRINDER7");
    private static final CustomIcon GT8_8_Active = new CustomIcon("iconsets/Grinder/GRINDER_ACTIVE8");
    private static final CustomIcon GT8_8 = new CustomIcon("iconsets/Grinder/GRINDER8");
    private static final CustomIcon GT8_9_Active = new CustomIcon("iconsets/Grinder/GRINDER_ACTIVE9");
    private static final CustomIcon GT8_9 = new CustomIcon("iconsets/Grinder/GRINDER9");

    private static final CustomIcon frontFace_0 = (GT8_1);
    private static final CustomIcon frontFaceActive_0 = (GT8_1_Active);
    private static final CustomIcon frontFace_1 = (GT8_2);
    private static final CustomIcon frontFaceActive_1 = (GT8_2_Active);
    private static final CustomIcon frontFace_2 = (GT8_3);
    private static final CustomIcon frontFaceActive_2 = (GT8_3_Active);
    private static final CustomIcon frontFace_3 = (GT8_4);
    private static final CustomIcon frontFaceActive_3 = (GT8_4_Active);
    private static final CustomIcon frontFace_4 = (GT8_5);
    private static final CustomIcon frontFaceActive_4 = (GT8_5_Active);
    private static final CustomIcon frontFace_5 = (GT8_6);
    private static final CustomIcon frontFaceActive_5 = (GT8_6_Active);
    private static final CustomIcon frontFace_6 = (GT8_7);
    private static final CustomIcon frontFaceActive_6 = (GT8_7_Active);
    private static final CustomIcon frontFace_7 = (GT8_8);
    private static final CustomIcon frontFaceActive_7 = (GT8_8_Active);
    private static final CustomIcon frontFace_8 = (GT8_9);
    private static final CustomIcon frontFaceActive_8 = (GT8_9_Active);

    CustomIcon[] GRINDER = new CustomIcon[] { frontFace_0, frontFace_1, frontFace_2, frontFace_3, frontFace_4,
        frontFace_5, frontFace_6, frontFace_7, frontFace_8 };

    CustomIcon[] GRINDER_ACTIVE = new CustomIcon[] { frontFaceActive_0, frontFaceActive_1, frontFaceActive_2,
        frontFaceActive_3, frontFaceActive_4, frontFaceActive_5, frontFaceActive_6, frontFaceActive_7,
        frontFaceActive_8 };

    private static int isIsaControllerWithSide(IBlockAccess aWorld, int aX, int aY, int aZ, ForgeDirection side) {
        TileEntity tTileEntity = aWorld.getTileEntity(aX, aY, aZ);
        if (!(tTileEntity instanceof IGregTechTileEntity tTile)) return 0;
        if (tTile.getMetaTileEntity() instanceof MTEIsaMill && tTile.getFrontFacing() == side)
            return tTile.isActive() ? 1 : 2;
        return 0;
    }

    public IIcon handleCasingsGT(final IBlockAccess aWorld, final int xCoord, final int yCoord, final int zCoord,
        final int ordinalSide, final GregtechMetaCasingBlocks5 ii) {
        final int tMeta = aWorld.getBlockMetadata(xCoord, yCoord, zCoord);
        final ForgeDirection side = ForgeDirection.getOrientation(ordinalSide);
        if (tMeta != 1) {
            return GregtechMetaCasingBlocks5.getStaticIcon(ordinalSide, tMeta);
        }
        int tInvertLeftRightMod = ordinalSide % 2 * 2 - 1;
        switch (ordinalSide / 2) {
            case 0 -> {
                for (int i = -1; i < 2; i++) {
                    for (int j = -1; j < 2; j++) {
                        if (i == 0 && j == 0) continue;
                        if (isIsaControllerWithSide(aWorld, xCoord + j, yCoord, zCoord + i, side) != 0) {
                            IMetaTileEntity tMetaTileEntity = ((IGregTechTileEntity) aWorld
                                .getTileEntity(xCoord + j, yCoord, zCoord + i)).getMetaTileEntity();
                            return getIconByIndex(tMetaTileEntity, 4 - i * 3 - j);
                        }
                    }
                }
            }
            case 1 -> {
                for (int i = -1; i < 2; i++) {
                    for (int j = -1; j < 2; j++) {
                        if (i == 0 && j == 0) continue;
                        if (isIsaControllerWithSide(aWorld, xCoord + j, yCoord + i, zCoord, side) != 0) {
                            IMetaTileEntity tMetaTileEntity = ((IGregTechTileEntity) aWorld
                                .getTileEntity(xCoord + j, yCoord + i, zCoord)).getMetaTileEntity();
                            return getIconByIndex(tMetaTileEntity, 4 + i * 3 - j * tInvertLeftRightMod);
                        }
                    }
                }
            }
            case 2 -> {
                for (int i = -1; i < 2; i++) {
                    for (int j = -1; j < 2; j++) {
                        if (i == 0 && j == 0) continue;
                        if (isIsaControllerWithSide(aWorld, xCoord, yCoord + i, zCoord + j, side) != 0) {
                            IMetaTileEntity tMetaTileEntity = ((IGregTechTileEntity) aWorld
                                .getTileEntity(xCoord, yCoord + i, zCoord + j)).getMetaTileEntity();
                            return getIconByIndex(tMetaTileEntity, 4 + i * 3 + j * tInvertLeftRightMod);
                        }
                    }
                }
            }
        }
        return TexturesGtBlock.TEXTURE_CASING_GRINDING_MILL.getIcon();
    }

    public boolean isCentrifugeRunning(IMetaTileEntity aTile) {
        if (aTile == null) {
            return false;
        } else {
            return aTile.getBaseMetaTileEntity()
                .isActive();
        }
    }

    public IIcon getIconByIndex(IMetaTileEntity aMetaTileEntity, int aIndex) {
        if (isCentrifugeRunning(aMetaTileEntity)) {
            return this.GRINDER_ACTIVE[aIndex].getIcon();
        }

        return this.GRINDER[aIndex].getIcon();
    }
}