aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/kekztech/common/blocks/BlockLargeHexPlate.java
blob: 46750d6a526527ce5247153e95c51d81c63fcddb (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
package kekztech.common.blocks;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;

import cpw.mods.fml.common.registry.GameRegistry;

public class BlockLargeHexPlate extends Block {

    private static final BlockLargeHexPlate INSTANCE = new BlockLargeHexPlate();
    private static final int BATCH_SIZE = 4;

    private final IIcon[][] parts = new IIcon[BATCH_SIZE][BATCH_SIZE];

    private BlockLargeHexPlate() {
        super(Material.rock);
    }

    public static Block registerBlock() {
        final String blockName = "kekztech_largehextile_block";
        INSTANCE.setBlockName(blockName);
        INSTANCE.setCreativeTab(CreativeTabs.tabMisc);
        INSTANCE.setHardness(6.0f);
        INSTANCE.setResistance(10.0f);
        GameRegistry.registerBlock(INSTANCE, blockName);

        return INSTANCE;
    }

    @Override
    public void registerBlockIcons(IIconRegister ir) {
        for (int x = 0; x < BATCH_SIZE; x++) {
            for (int z = 0; z < BATCH_SIZE; z++) {
                parts[x][z] = ir.registerIcon("kekztech:LargeHexTile_" + x + "_" + z);
            }
        }
    }

    @Override
    public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) {
        final int xMod = x >= 0 ? Math.abs(x % BATCH_SIZE)
            : Math.abs((Math.abs(x) % BATCH_SIZE) - BATCH_SIZE) % BATCH_SIZE;
        final int yMod = y >= 0 ? Math.abs(y % BATCH_SIZE)
            : Math.abs((Math.abs(y) % BATCH_SIZE) - BATCH_SIZE) % BATCH_SIZE;
        final int zMod = z >= 0 ? Math.abs(z % BATCH_SIZE)
            : Math.abs((Math.abs(z) % BATCH_SIZE) - BATCH_SIZE) % BATCH_SIZE;

        if (side == 0 || side == 1) {
            return parts[xMod][zMod];
        } else if (side == 2 || side == 3) {
            return parts[xMod][yMod];
        } else {
            return parts[zMod][yMod];
        }
    }

    @Override
    public IIcon getIcon(int side, int meta) {
        return parts[(int) Math.ceil(BATCH_SIZE / 2)][(int) Math.ceil(BATCH_SIZE / 2)];
    }
}