aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gtPlusPlus/core/block
diff options
context:
space:
mode:
authoriouter <62897714+iouter@users.noreply.github.com>2022-01-07 12:36:06 +0800
committerGitHub <noreply@github.com>2022-01-07 12:36:06 +0800
commit0834d4b8b45a881f36ed5b295ac0fb38df49fa9a (patch)
tree6fb4a45cf17dd22748148417bc7bb0efb850cea3 /src/main/java/gtPlusPlus/core/block
parentea1439a4195c8f77c45625ea2593a232bf19984e (diff)
parent9b2e050151ad93170e84321d067d1e9d4ded4ba5 (diff)
downloadGT5-Unofficial-0834d4b8b45a881f36ed5b295ac0fb38df49fa9a.tar.gz
GT5-Unofficial-0834d4b8b45a881f36ed5b295ac0fb38df49fa9a.tar.bz2
GT5-Unofficial-0834d4b8b45a881f36ed5b295ac0fb38df49fa9a.zip
Merge branch 'GTNewHorizons:master' into master
Diffstat (limited to 'src/main/java/gtPlusPlus/core/block')
-rw-r--r--src/main/java/gtPlusPlus/core/block/ModBlocks.java162
-rw-r--r--src/main/java/gtPlusPlus/core/block/base/AdvancedBlock.java39
-rw-r--r--src/main/java/gtPlusPlus/core/block/base/BasicBlock.java81
-rw-r--r--src/main/java/gtPlusPlus/core/block/base/BasicTileBlockWithTooltip.java328
-rw-r--r--src/main/java/gtPlusPlus/core/block/base/BlockBaseFluid.java103
-rw-r--r--src/main/java/gtPlusPlus/core/block/base/BlockBaseModular.java211
-rw-r--r--src/main/java/gtPlusPlus/core/block/base/BlockBaseNBT.java81
-rw-r--r--src/main/java/gtPlusPlus/core/block/base/BlockBaseOre.java229
-rw-r--r--src/main/java/gtPlusPlus/core/block/base/MetaBlock.java35
-rw-r--r--src/main/java/gtPlusPlus/core/block/base/MultiTextureBlock.java37
-rw-r--r--src/main/java/gtPlusPlus/core/block/general/BlockCompressedObsidian.java94
-rw-r--r--src/main/java/gtPlusPlus/core/block/general/BlockNet.java37
-rw-r--r--src/main/java/gtPlusPlus/core/block/general/BlockSuperLight.java220
-rw-r--r--src/main/java/gtPlusPlus/core/block/general/BlockTankXpConverter.java192
-rw-r--r--src/main/java/gtPlusPlus/core/block/general/FirePit.java230
-rw-r--r--src/main/java/gtPlusPlus/core/block/general/FluidTankInfinite.java136
-rw-r--r--src/main/java/gtPlusPlus/core/block/general/HellFire.java557
-rw-r--r--src/main/java/gtPlusPlus/core/block/general/LightGlass.java144
-rw-r--r--src/main/java/gtPlusPlus/core/block/general/MiningExplosives.java172
-rw-r--r--src/main/java/gtPlusPlus/core/block/general/PlayerDoors.java467
-rw-r--r--src/main/java/gtPlusPlus/core/block/general/antigrief/BlockWitherProof.java166
-rw-r--r--src/main/java/gtPlusPlus/core/block/general/antigrief/TowerDevice.java293
-rw-r--r--src/main/java/gtPlusPlus/core/block/general/fluids/BlockFluidSludge.java63
-rw-r--r--src/main/java/gtPlusPlus/core/block/general/redstone/BlockGenericRedstone.java370
-rw-r--r--src/main/java/gtPlusPlus/core/block/general/redstone/BlockGenericRedstoneDetector.java131
-rw-r--r--src/main/java/gtPlusPlus/core/block/general/redstone/BlockGenericRedstoneEmitter.java5
-rw-r--r--src/main/java/gtPlusPlus/core/block/general/redstone/BlockGenericRedstoneTest.java201
-rw-r--r--src/main/java/gtPlusPlus/core/block/machine/BlockGtFrameBox.java42
-rw-r--r--src/main/java/gtPlusPlus/core/block/machine/CircuitProgrammer.java159
-rw-r--r--src/main/java/gtPlusPlus/core/block/machine/DecayablesChest.java223
-rw-r--r--src/main/java/gtPlusPlus/core/block/machine/EggBox.java175
-rw-r--r--src/main/java/gtPlusPlus/core/block/machine/FishTrap.java152
-rw-r--r--src/main/java/gtPlusPlus/core/block/machine/HeliumGenerator.java95
-rw-r--r--src/main/java/gtPlusPlus/core/block/machine/Machine_ModularityTable.java103
-rw-r--r--src/main/java/gtPlusPlus/core/block/machine/Machine_PestKiller.java137
-rw-r--r--src/main/java/gtPlusPlus/core/block/machine/Machine_PooCollector.java182
-rw-r--r--src/main/java/gtPlusPlus/core/block/machine/Machine_ProjectTable.java164
-rw-r--r--src/main/java/gtPlusPlus/core/block/machine/Machine_RoundRobinator.java131
-rw-r--r--src/main/java/gtPlusPlus/core/block/machine/Machine_SuperJukebox.java579
-rw-r--r--src/main/java/gtPlusPlus/core/block/machine/Machine_TradeTable.java86
-rw-r--r--src/main/java/gtPlusPlus/core/block/machine/Machine_WireiusDeletus.java5
-rw-r--r--src/main/java/gtPlusPlus/core/block/machine/Machine_Workbench.java152
-rw-r--r--src/main/java/gtPlusPlus/core/block/machine/Machine_WorkbenchAdvanced.java111
-rw-r--r--src/main/java/gtPlusPlus/core/block/machine/VolumetricFlaskSetter.java164
-rw-r--r--src/main/java/gtPlusPlus/core/block/machine/bedrock/Mining_Head_Fake.java159
-rw-r--r--src/main/java/gtPlusPlus/core/block/machine/bedrock/Mining_Pipe_Fake.java136
46 files changed, 7739 insertions, 0 deletions
diff --git a/src/main/java/gtPlusPlus/core/block/ModBlocks.java b/src/main/java/gtPlusPlus/core/block/ModBlocks.java
new file mode 100644
index 0000000000..b51915bb7b
--- /dev/null
+++ b/src/main/java/gtPlusPlus/core/block/ModBlocks.java
@@ -0,0 +1,162 @@
+package gtPlusPlus.core.block;
+
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.core.block.general.BlockCompressedObsidian;
+import gtPlusPlus.core.block.general.BlockNet;
+import gtPlusPlus.core.block.general.BlockTankXpConverter;
+import gtPlusPlus.core.block.general.FirePit;
+import gtPlusPlus.core.block.general.FluidTankInfinite;
+import gtPlusPlus.core.block.general.HellFire;
+import gtPlusPlus.core.block.general.LightGlass;
+import gtPlusPlus.core.block.general.MiningExplosives;
+import gtPlusPlus.core.block.general.PlayerDoors;
+import gtPlusPlus.core.block.general.antigrief.BlockWitherProof;
+import gtPlusPlus.core.block.general.redstone.BlockGenericRedstoneDetector;
+import gtPlusPlus.core.block.general.redstone.BlockGenericRedstoneTest;
+import gtPlusPlus.core.block.machine.*;
+import gtPlusPlus.core.block.machine.bedrock.Mining_Head_Fake;
+import gtPlusPlus.core.block.machine.bedrock.Mining_Pipe_Fake;
+import gtPlusPlus.core.fluids.FluidRegistryHandler;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+import gtPlusPlus.xmod.gregtech.common.Meta_GT_Proxy;
+import net.minecraft.block.Block;
+import net.minecraft.block.material.Material;
+import net.minecraftforge.fluids.Fluid;
+
+public final class ModBlocks {
+
+ public static Block blockRoundRobinator;
+ public static Block blockCircuitProgrammer;
+ public static Block blockVolumetricFlaskSetter;
+ public static Block blockFakeMiningPipe;
+ public static Block blockFakeMiningHead;
+
+ public static Block blockFishTrap;
+ public static Block blockWorkbench;
+ public static Block blockWorkbenchAdvanced;
+ public static Block blockDecayablesChest;
+ public static Block blockEggBox;
+
+ //Blocks
+ //public static Block blockBloodSteel;
+ //public static Block blockStaballoy;
+ // WIP TODO public static Block blockToolBuilder;
+ public static Block blockGriefSaver;
+
+ public static Block blockCasingsMisc;
+ public static Block blockCasings2Misc;
+ public static Block blockCasings3Misc;
+ public static Block blockCasings4Misc;
+ public static Block blockCasings5Misc;
+ public static Block blockCasingsTieredGTPP;
+ public static Block blockSpecialMultiCasings;
+ public static Block blockCustomMachineCasings;
+
+ public static Block blockMetaTileEntity;
+ public static Block blockHeliumGenerator;
+ public static Block blockNHG;
+ public static Block blockCharger;
+
+ public static Block MatterFabricatorEffectBlock;
+
+ public static Fluid fluidSludge = new Fluid("fluid.sludge");
+ public static Block blockFluidSludge;
+
+ public static Block blockFirePit;
+
+ public static Block blockOreFluorite;
+
+ public static Block blockMiningExplosive;
+
+ public static Block blockHellfire;
+ public static Block blockInfiniteFLuidTank;
+ public static Block blockProjectTable;
+ public static Block blockTradeTable;
+ public static Block blockModularTable;
+
+ public static Block blockWitherGuard;
+ public static Block blockXpConverter;
+ public static Block blockCompressedObsidian;
+ public static Block blockNet;
+
+ public static Block blockPlayerDoorWooden;
+ public static Block blockPlayerDoorIron;
+ public static Block blockPlayerDoorCustom_Glass;
+ public static Block blockPlayerDoorCustom_Ice;
+ public static Block blockPlayerDoorCustom_Cactus;
+
+ public static Block blockCustomMobSpawner;
+ public static Block blockCustomSuperLight;
+ public static Block blockCustomJukebox;
+
+ public static Block blockPooCollector;
+
+ public static Block blockPestKiller;
+
+ public static void init() {
+ Logger.INFO("Initializing Blocks.");
+ //blockGriefSaver = new TowerDevice().setBlockName("blockGriefSaver").setCreativeTab(AddToCreativeTab.tabBlock).setBlockTextureName("blockDefault");
+
+ registerBlocks();
+ }
+
+ public static void registerBlocks(){
+
+ Logger.INFO("Registering Blocks.");
+ MatterFabricatorEffectBlock = new LightGlass(false);
+
+ //Fluids
+ FluidRegistryHandler.registerFluids();
+
+ //Workbench
+ blockWorkbench = new Machine_Workbench().setHardness(1.5F);
+ blockWorkbenchAdvanced = new Machine_WorkbenchAdvanced().setHardness(2.5F);
+ blockHeliumGenerator = new HeliumGenerator();
+ blockFirePit = new FirePit();
+ blockFishTrap = new FishTrap();
+ blockInfiniteFLuidTank = new FluidTankInfinite();
+ //blockOreFluorite = new BlockBaseOre.oldOreBlock("oreFluorite", "Fluorite", Material.rock, BlockTypes.ORE, Utils.rgbtoHexValue(120, 120, 30), 3);
+ blockMiningExplosive = new MiningExplosives();
+ blockHellfire = new HellFire();
+ blockProjectTable = new Machine_ProjectTable();
+ blockTradeTable = new Machine_TradeTable();
+ blockModularTable = new Machine_ModularityTable();
+ blockWitherGuard = new BlockWitherProof();
+ blockXpConverter = new BlockTankXpConverter();
+ blockCompressedObsidian = new BlockCompressedObsidian();
+ blockNet = new BlockNet();
+
+ blockFakeMiningPipe = new Mining_Pipe_Fake();
+ blockFakeMiningHead = new Mining_Head_Fake();
+
+ blockCircuitProgrammer = new CircuitProgrammer();
+
+ blockDecayablesChest = new DecayablesChest();
+ blockEggBox = new EggBox();
+
+ blockPlayerDoorWooden = new PlayerDoors(Material.wood, "door_wood", true);
+ blockPlayerDoorIron = new PlayerDoors(Material.iron, "door_iron", true);
+ blockPlayerDoorCustom_Glass = new PlayerDoors(Material.glass, "door_glass", false);
+ blockPlayerDoorCustom_Ice = new PlayerDoors(Material.ice, "door_ice", false);
+ blockPlayerDoorCustom_Cactus = new PlayerDoors(Material.cactus, "door_cactus", false, 0.6f, Block.soundTypeGrass, "Cactus");
+
+ //blockCustomSuperLight = new BlockSuperLight();
+ blockCustomJukebox = new Machine_SuperJukebox();
+
+ blockPooCollector = new Machine_PooCollector();
+
+ blockPestKiller = new Machine_PestKiller();
+
+ blockRoundRobinator = new Machine_RoundRobinator();
+
+ if (Meta_GT_Proxy.sDoesVolumetricFlaskExist) {
+ blockVolumetricFlaskSetter = new VolumetricFlaskSetter();
+ }
+
+ new BlockGenericRedstoneDetector();
+ new BlockGenericRedstoneTest();
+
+ }
+
+
+} \ No newline at end of file
diff --git a/src/main/java/gtPlusPlus/core/block/base/AdvancedBlock.java b/src/main/java/gtPlusPlus/core/block/base/AdvancedBlock.java
new file mode 100644
index 0000000000..f63762a2d7
--- /dev/null
+++ b/src/main/java/gtPlusPlus/core/block/base/AdvancedBlock.java
@@ -0,0 +1,39 @@
+package gtPlusPlus.core.block.base;
+
+import net.minecraft.block.Block;
+import net.minecraft.block.material.Material;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.EnumCreatureType;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.world.IBlockAccess;
+import net.minecraft.world.World;
+
+import gtPlusPlus.core.lib.CORE;
+
+public class AdvancedBlock extends Block {
+
+ protected AdvancedBlock(final String unlocalizedName, final Material material, final CreativeTabs x, final float blockHardness, final float blockResistance, final float blockLightLevel,
+ final String blockHarvestTool, final int blockHarvestLevel, final SoundType BlockSound) {
+ super(material);
+ this.setBlockName(unlocalizedName);
+ this.setBlockTextureName(CORE.MODID + ":" + unlocalizedName);
+ this.setCreativeTab(x);
+ this.setHardness(blockHardness); //block Hardness
+ this.setResistance(blockResistance);
+ this.setLightLevel(blockLightLevel);
+ this.setHarvestLevel(blockHarvestTool, blockHarvestLevel);
+ this.setStepSound(BlockSound);
+ }
+
+ @Override
+ public boolean onBlockActivated(final World p_149727_1_, final int p_149727_2_, final int p_149727_3_, final int p_149727_4_, final EntityPlayer p_149727_5_, final int p_149727_6_, final float p_149727_7_, final float p_149727_8_, final float p_149727_9_)
+ {
+ return false;
+ }
+
+ @Override
+ public boolean canCreatureSpawn(final EnumCreatureType type, final IBlockAccess world, final int x, final int y, final int z) {
+ return false;
+ }
+
+}
diff --git a/src/main/java/gtPlusPlus/core/block/base/BasicBlock.java b/src/main/java/gtPlusPlus/core/block/base/BasicBlock.java
new file mode 100644
index 0000000000..6014388cda
--- /dev/null
+++ b/src/main/java/gtPlusPlus/core/block/base/BasicBlock.java
@@ -0,0 +1,81 @@
+package gtPlusPlus.core.block.base;
+
+import net.minecraft.block.BlockContainer;
+import net.minecraft.block.material.Material;
+import net.minecraft.entity.EnumCreatureType;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.IBlockAccess;
+import net.minecraft.world.World;
+
+import gtPlusPlus.core.creative.AddToCreativeTab;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.Utils;
+
+public class BasicBlock extends BlockContainer {
+
+ public BasicBlock(final String unlocalizedName, final Material material) {
+ this(BlockTypes.STANDARD, unlocalizedName, material, 2);
+ }
+
+ public BasicBlock(final BlockTypes type, final String unlocalizedName, final Material material) {
+ this(type, unlocalizedName, material, 2);
+ }
+
+ public BasicBlock(BlockTypes type, final String unlocalizedName, final Material material, final int harvestLevel) {
+ super(material);
+ this.setBlockName(Utils.sanitizeString(unlocalizedName));
+
+ if (type != BlockTypes.ORE && !unlocalizedName.toLowerCase().contains("ore")) {
+ this.setBlockTextureName(CORE.MODID + ":" + unlocalizedName);
+ }
+
+ this.setCreativeTab(AddToCreativeTab.tabBlock);
+ this.setResistance(6.0F);
+ this.setLightLevel(0.0F);
+ this.setHardness(1.0f*harvestLevel);
+ this.setHarvestLevel("pickaxe", harvestLevel);
+ this.setStepSound(soundTypeMetal);
+ }
+
+
+ public static enum BlockTypes {
+ STANDARD("blockBlock", "pickaxe", soundTypeMetal),
+ FRAME("blockFrameGt", "wrench", soundTypeMetal),
+ ORE("blockStone", "pickaxe", soundTypeStone);
+
+ private String TEXTURE_NAME;
+ private String HARVEST_TOOL;
+ private SoundType soundOfBlock;
+ private BlockTypes (final String textureName, final String harvestTool, final SoundType blockSound)
+ {
+ this.TEXTURE_NAME = textureName;
+ this.HARVEST_TOOL = harvestTool;
+ this.soundOfBlock = blockSound;
+ }
+
+ public String getTexture() {
+ return this.TEXTURE_NAME;
+ }
+
+ public String getHarvestTool(){
+ return this.HARVEST_TOOL;
+ }
+
+ public SoundType getBlockSoundType(){
+ return this.soundOfBlock;
+ }
+
+ }
+
+
+ @Override
+ public TileEntity createNewTileEntity(final World p_149915_1_, final int p_149915_2_) {
+ return null;
+ }
+
+ @Override
+ public boolean canCreatureSpawn(final EnumCreatureType type, final IBlockAccess world, final int x, final int y, final int z) {
+ return false;
+ }
+
+}
diff --git a/src/main/java/gtPlusPlus/core/block/base/BasicTileBlockWithTooltip.java b/src/main/java/gtPlusPlus/core/block/base/BasicTileBlockWithTooltip.java
new file mode 100644
index 0000000000..2bfd09d848
--- /dev/null
+++ b/src/main/java/gtPlusPlus/core/block/base/BasicTileBlockWithTooltip.java
@@ -0,0 +1,328 @@
+package gtPlusPlus.core.block.base;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+
+import cpw.mods.fml.common.registry.GameRegistry;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import gtPlusPlus.api.interfaces.ITileTooltip;
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.api.objects.data.AutoMap;
+import gtPlusPlus.api.objects.minecraft.CubicObject;
+import gtPlusPlus.api.objects.minecraft.SafeTexture;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.Utils;
+import gtPlusPlus.core.util.minecraft.InventoryUtils;
+import gtPlusPlus.core.util.minecraft.ItemUtils;
+import net.minecraft.block.Block;
+import net.minecraft.block.BlockContainer;
+import net.minecraft.block.material.Material;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.EnumCreatureType;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemBlock;
+import net.minecraft.item.ItemStack;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.IIcon;
+import net.minecraft.world.IBlockAccess;
+import net.minecraft.world.World;
+
+public abstract class BasicTileBlockWithTooltip extends BlockContainer implements ITileTooltip {
+
+ /**
+ * Each mapped object holds the data for the six sides.
+ */
+ @SideOnly(Side.CLIENT)
+ private AutoMap<CubicObject<SafeTexture>> mSidedTextureArray;
+
+ /**
+ * Holds the data for the six sides, each side holds an array of data for each respective meta.
+ */
+ @SideOnly(Side.CLIENT)
+ private AutoMap<CubicObject<String>> mSidedTexturePathArray;
+
+ /**
+ * Does this block have any meta at all?
+ * @return
+ */
+ public final boolean hasMeta() {
+ return getMetaCount() > 0;
+ }
+
+ /**
+ * The amount of meta this block has.
+ * @return
+ */
+ public abstract int getMetaCount();
+
+ /**
+ * Does this {@link Block} require special {@link ItemBlock} handling?
+ * @return The {@link Class} that will be used for this {@link Block}.
+ */
+ public Class<? extends ItemBlock> getItemBlockClass() {
+ return ItemBlock.class;
+ }
+
+ /**
+ * A lazy way to declare the unlocal name for the block, makes boilerplating easy.
+ * @return The internal name for this block.
+ */
+ public abstract String getUnlocalBlockName();
+
+ /**
+ * Does this Block have {@link ITileTooltip} support?
+ * @return {@link boolean} that represents if this block supports {@link ITileTooltip} or not.
+ */
+ public final boolean hasTooltip() {
+ return getTooltipID() >= -1;
+ }
+
+ /**
+ * Lazy Boilerplating.
+ * @return Block Hardness.
+ */
+ protected abstract float initBlockHardness();
+
+ /**
+ * Lazy Boilerplating.
+ * @return Block Resistance.
+ */
+ protected abstract float initBlockResistance();
+
+ /**
+ * Lazy Boilerplating.
+ * @return The {@link CreativeTab} this Block is shown on.
+ */
+ protected abstract CreativeTabs initCreativeTab();
+
+ /**
+ * The ID used by the {@link ITileTooltip} handler. Return -1 if you are not providing a custom {@link ItemBlock} in {@link #getItemBlockClass}().
+ * @return
+ */
+ @Override
+ public abstract int getTooltipID();
+
+ public BasicTileBlockWithTooltip(Material aBlockMat){
+ super(aBlockMat);
+ //Use Abstract method values
+ this.setHardness(initBlockHardness());
+ this.setResistance(initBlockResistance());
+ this.setBlockName(getUnlocalBlockName());
+ this.setCreativeTab(initCreativeTab());
+ // Register the block last.
+ GameRegistry.registerBlock(this, getItemBlockClass(), getUnlocalBlockName());
+ Logger.INFO("Registered "+getTileEntityName()+".");
+ if (Utils.isClient()) {
+ // Handle Textures
+ handleTextures();
+ }
+ }
+
+ /**
+ * The name of the Tile Entity.
+ * @return
+ */
+ protected abstract String getTileEntityName();
+
+ /**
+ * The String used for texture pathing.
+ * @return Sanitized {@link String}, containing no spaces or illegal characters.
+ */
+ private final String getTileEntityNameForTexturePathing() {
+ return Utils.sanitizeString(getTileEntityName().replace(" ", ""));
+ }
+
+ /**
+ * An array of CubicObjects, one for each meta, else just a single cell array.
+ * Expected to be null regularly, as the default texture handling should suffice.
+ * Handy if re-using textures or using a non-standard structure for them. FULL texture path must be used,
+ * inclusive of the MODID and a colon.
+ * @return
+ */
+ public CubicObject<String>[] getCustomTextureDirectoryObject(){
+ return null;
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public final IIcon getIcon(final int aSide, final int aMeta) {
+ return mSidedTextureArray.get(aMeta).get(aSide).getIcon();
+ }
+
+ @Override
+ public IIcon getIcon(IBlockAccess aWorld, int aX, int aY, int aZ, int aSide) {
+ return super.getIcon(aWorld, aX, aY, aZ, aSide);
+ }
+
+ @SideOnly(Side.CLIENT)
+ private final void handleTextures() {
+
+ Logger.INFO("[TeTexture] Building Texture Maps for "+getTileEntityName()+".");
+
+ // Init on the Client side only, to prevent Field initialisers existing in the Server side bytecode.
+ mSidedTextureArray = new AutoMap<CubicObject<SafeTexture>>();
+ mSidedTexturePathArray = new AutoMap<CubicObject<String>>();
+
+
+ //Store them in forge order
+ //DOWN, UP, NORTH, SOUTH, WEST, EAST
+
+ // Default Path Name, this will make us look inside 'miscutils\textures\blocks'
+ final String aPrefixTexPath = CORE.MODID + ":";
+ // Default Path Name, this will make us look in the sub-directory for this Tile Entity.
+ final String aTexPathMid = "TileEntities"+CORE.SEPERATOR+getTileEntityNameForTexturePathing()+CORE.SEPERATOR;
+ // Construct a full path
+ String aTexPathBuilt = aPrefixTexPath + aTexPathMid;
+ // File Name Suffixes, without meta tags
+ String aStringBot;
+ String aStringTop;
+ String aStringBack;
+ String aStringFront;
+ String aStringLeft;
+ String aStringRight;
+ // Do we provide a matrix of custom data to be used for texture processing instead?
+ if (getCustomTextureDirectoryObject() != null) {
+ // Get custom provided texture data.
+ CubicObject<String>[] aDataMap = getCustomTextureDirectoryObject();
+ Logger.INFO("[TeTexture] Found custom texture data, using this instead. Size: "+aDataMap.length);
+ // Map each meta string data to the main map.
+ for (int i=0;i<aDataMap.length;i++) {
+ mSidedTexturePathArray.put(aDataMap[i]);
+ Logger.INFO("Mapped value for meta "+i+".");
+ }
+ }
+ else {
+ Logger.INFO("[TeTexture] Processing "+(1+getMetaCount())+" sets.");
+ // Iterate once for each meta
+ for (int i=0;i<(1+getMetaCount());i++) {
+
+ // File Name Suffixes, without meta tags
+ aStringBot = "Bottom";
+ aStringTop = "Top";
+ aStringBack = "Back";
+ aStringFront = "Front";
+ aStringLeft = "Left";
+ aStringRight = "Right";
+
+ // Add tails if we have meta
+ if (hasMeta()) {
+ aStringBot = aStringBot + "_"+i;
+ aStringTop = aStringTop + "_"+i;
+ aStringBack = aStringBack + "_"+i;
+ aStringFront = aStringFront + "_"+i;
+ aStringLeft = aStringLeft + "_"+i;
+ aStringRight = aStringRight + "_"+i;
+ }
+ // Append the full path
+ aStringBot = aTexPathBuilt + aStringBot;
+ aStringTop = aTexPathBuilt + aStringTop;
+ aStringBack = aTexPathBuilt + aStringBack;
+ aStringFront = aTexPathBuilt + aStringFront;
+ aStringLeft = aTexPathBuilt + aStringLeft;
+ aStringRight = aTexPathBuilt + aStringRight;
+ // Convenience Blob
+ CubicObject<String> aMetaBlob = new CubicObject<String>(aStringBot, aStringTop, aStringBack, aStringFront, aStringLeft, aStringRight);
+ mSidedTexturePathArray.put(aMetaBlob);
+ Logger.INFO("[TeTexture] Added Texture Path data to map for meta "+i);
+ }
+ }
+ Logger.INFO("[TeTexture] Map size for pathing: "+mSidedTexturePathArray.size());
+
+ // Iteration Index
+ int aIndex = 0;
+
+ // Iterate each CubicObject, holding the six texture paths for each meta.
+ for (CubicObject<String> aMetaBlob : mSidedTexturePathArray) {
+ // Make a Safe Texture for each side
+ SafeTexture aBottom = SafeTexture.register(aMetaBlob.DOWN);
+ SafeTexture aTop = SafeTexture.register(aMetaBlob.UP);
+ SafeTexture aBack = SafeTexture.register(aMetaBlob.NORTH);
+ SafeTexture aFont = SafeTexture.register(aMetaBlob.SOUTH);
+ SafeTexture aWest = SafeTexture.register(aMetaBlob.WEST);
+ SafeTexture aEast = SafeTexture.register(aMetaBlob.EAST);
+ // Store them in an Array
+ SafeTexture[] aInjectBlob = new SafeTexture[] {
+ aBottom,
+ aTop,
+ aBack,
+ aFont,
+ aWest,
+ aEast
+ };
+ // Convenience Blob
+ CubicObject<SafeTexture> aMetaBlob2 = new CubicObject<SafeTexture>(aInjectBlob);
+ // Store this Blob into
+ mSidedTextureArray.put(aMetaBlob2);
+ Logger.INFO("[TeTexture] Added SafeTexture data to map for meta "+(aIndex++));
+ }
+ Logger.INFO("[TeTexture] Map size for registration: "+mSidedTextureArray.size());
+
+
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public final void registerBlockIcons(final IIconRegister aRegisterer){
+ this.blockIcon = aRegisterer.registerIcon(CORE.MODID + ":" + "net");
+ }
+
+ @Override
+ public abstract TileEntity createNewTileEntity(final World world, final int p_149915_2_);
+
+ /**
+ * Called when {@link #breakBlock}() is called, but before {@link InventoryUtils#dropInventoryItems} and the super call.
+ */
+ public void onBlockBreak() {
+
+ }
+
+ @Override