Added a proper logger, added the beginnings of a "SubBlocks" layer for blocks with metadata.

This commit is contained in:
Adubbz 2014-03-15 19:38:24 +11:00
parent cbaa851f98
commit 9e1de9a173
9 changed files with 244 additions and 205 deletions

View File

@ -1,7 +1,7 @@
package biomesoplenty.common.blocks;
import java.util.Random;
import biomesoplenty.BiomesOPlenty;
import biomesoplenty.api.BOPItemHelper;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
@ -12,8 +12,8 @@ import net.minecraft.item.Item;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import biomesoplenty.BiomesOPlenty;
import biomesoplenty.api.BOPItemHelper;
import java.util.Random;
public class BlockAsh extends Block
{
@ -21,14 +21,14 @@ public class BlockAsh extends Block
{
//TODO: Material.sand
super(Material.sand);
//TODO: this.setHardness
this.setHardness(0.4F);
this.setHarvestLevel("shovel", 0);
//TODO setStepSound(Block.soundSandFootstep)
this.setStepSound(Block.soundTypeSand);
//TODO: this.setCreativeTab()
this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty);
}

View File

@ -1,80 +1,52 @@
package biomesoplenty.common.blocks;
import java.util.List;
import java.util.Random;
import biomesoplenty.api.BOPItemHelper;
import biomesoplenty.common.blocks.utils.BOPBlock;
import biomesoplenty.common.blocks.utils.SubBlock;
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.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
import biomesoplenty.BiomesOPlenty;
import biomesoplenty.api.BOPItemHelper;
public class BlockMud extends Block
import java.util.Random;
public class BlockMud extends BOPBlock
{
private static final String[] types = new String[] {"mud", "quicksand"};
private IIcon[] textures;
public BlockMud()
{
//TODO: Material.sand
super(Material.sand);
//TODO: this.setHardness
this.setHardness(0.6F);
this.setHarvestLevel("shovel", 0);
//TODO setStepSound(Block.soundSandFootstep)
this.setStepSound(Block.soundTypeSand);
//TODO: this.setCreativeTab()
this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty);
}
@Override
protected void initializeSubBlocks()
{
this.registerSubBlock(0, "mud");
this.registerSubBlock(1, "quicksand");
}
@Override
//TODO: registerIcons()
public void registerBlockIcons(IIconRegister iconRegister)
{
textures = new IIcon[types.length];
SubBlock mud = getSubBlock(0);
for (int i = 0; i < types.length; ++i)
{
textures[i] = iconRegister.registerIcon("biomesoplenty:"+ types[i]);
}
mud.setMainIcon(iconRegister.registerIcon("biomesoplenty:mud"));
SubBlock quicksand = getSubBlock(1);
quicksand.setMainIcon(iconRegister.registerIcon("biomesoplenty:quicksand"));
}
@Override
//TODO: getIcon()
public IIcon getIcon(int side, int meta)
{
if (meta < 0 || meta >= textures.length) {
meta = 0;
}
return textures[meta];
}
@Override
//TODO: getSubBlocks()
public void getSubBlocks(Item block, CreativeTabs creativeTabs, List list)
{
for (int i = 0; i < types.length; ++i)
{
list.add(new ItemStack(block, 1, i));
}
}
@Override
//TODO: getCollisionBoundingBoxFromPool
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z)
{
if (world.getBlockMetadata(x, y, z) == 0)
@ -87,7 +59,6 @@ public class BlockMud extends Block
}
@Override
//TODO: onEntityCollidedWithBlock()
public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity)
{
if (world.getBlockMetadata(x, y, z) == 0)
@ -111,24 +82,15 @@ public class BlockMud extends Block
}
}
//@Override
//TODO: getItemDropped()
@Override
public Item getItemDropped(int metadata, Random random, int fortune)
{
if (metadata == 0)
return BOPItemHelper.get("mudball");
else
//TODO: getItemFromBlock()
return Item.getItemFromBlock(this);
}
@Override
//TODO damageDropped()
public int damageDropped(int meta)
{
return meta;
}
@Override
public int quantityDropped(int meta, int fortune, Random random)
{

View File

@ -0,0 +1,83 @@
package biomesoplenty.common.blocks.utils;
import biomesoplenty.BiomesOPlenty;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import java.util.List;
public abstract class BOPBlock extends Block
{
private SubBlock[] subBlocks = new SubBlock[16];
public BOPBlock(Material material)
{
super(material);
initializeSubBlocks();
this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty);
}
protected void initializeSubBlocks()
{
}
public SubBlock registerSubBlock(int metadata, String name)
{
if (subBlocks[metadata] == null)
{
SubBlock subBlock = new SubBlock(this, metadata, name);
return subBlocks[metadata] = subBlock;
}
else
{
throw new RuntimeException("Metadata " + metadata + " already occupied");
}
}
public SubBlock[] getSubBlocks()
{
return subBlocks;
}
public SubBlock getSubBlock(int metadata)
{
return getSubBlocks()[metadata];
}
@Override
public int damageDropped(int meta)
{
return meta;
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(int side, int metadata)
{
SubBlock subBlock = getSubBlock(metadata);
if (subBlock.getIcons()[side] != null) return subBlock.getIcons()[side];
else if (subBlock.getMainIcon() != null) return subBlock.getMainIcon();
else return super.getIcon(side, metadata);
}
@Override
@SideOnly(Side.CLIENT)
public void getSubBlocks(Item block, CreativeTabs creativeTabs, List list)
{
for (SubBlock subBlock : subBlocks)
{
if (subBlock != null) list.add(new ItemStack(block, 1, subBlock.getMetadata()));
}
}
}

View File

@ -0,0 +1,15 @@
package biomesoplenty.common.blocks.utils;
public class BlockPos
{
public int x;
public int y;
public int z;
public BlockPos(int x, int y, int z)
{
this.x = x;
this.y = y;
this.z = z;
}
}

View File

@ -0,0 +1,62 @@
package biomesoplenty.common.blocks.utils;
import net.minecraft.block.Block;
import net.minecraft.util.IIcon;
public class SubBlock
{
private Block parent;
private int metadata;
private String name;
private IIcon mainIcon;
private IIcon[] icons = new IIcon[6];
public SubBlock(Block parent, int metadata, String name)
{
this.parent = parent;
this.metadata = metadata;
this.name = name;
}
public void setMainIcon(IIcon mainIcon)
{
this.mainIcon = mainIcon;
}
public void setSidedIcon(IIcon sidedIcon, int side)
{
this.icons[side] = sidedIcon;
}
public Block getParent()
{
return parent;
}
public int getMetadata()
{
return metadata;
}
public String getName()
{
return name;
}
public IIcon getMainIcon()
{
return mainIcon;
}
public IIcon[] getIcons()
{
return icons;
}
public IIcon getIconForSide(int side)
{
return getIcons()[side];
}
}

View File

@ -1,96 +1,20 @@
package biomesoplenty.common.core;
import biomesoplenty.api.BOPBlockHelper;
import biomesoplenty.common.blocks.*;
import biomesoplenty.common.blocks.BlockBOPColorizedLeaves.ColourizedLeafCategory;
import biomesoplenty.common.blocks.BlockBOPGeneric.BlockType;
import biomesoplenty.common.blocks.BlockBOPLeaves.LeafCategory;
import biomesoplenty.common.blocks.BlockBOPLog.LogCategory;
import biomesoplenty.common.blocks.BlockBOPSlab.SlabCategory;
import biomesoplenty.common.blocks.BlockBOPStairs.Category;
import biomesoplenty.common.itemblocks.*;
import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemBlock;
import org.apache.logging.log4j.Level;
import biomesoplenty.api.BOPBlockHelper;
import biomesoplenty.common.blocks.BlockAsh;
import biomesoplenty.common.blocks.BlockBOPAppleLeaves;
import biomesoplenty.common.blocks.BlockBOPColorizedLeaves;
import biomesoplenty.common.blocks.BlockBOPColorizedLeaves.ColourizedLeafCategory;
import biomesoplenty.common.blocks.BlockBOPColorizedSapling;
import biomesoplenty.common.blocks.BlockBOPCoral;
import biomesoplenty.common.blocks.BlockBOPFlower;
import biomesoplenty.common.blocks.BlockBOPFlower2;
import biomesoplenty.common.blocks.BlockBOPFoliage;
import biomesoplenty.common.blocks.BlockBOPGems;
import biomesoplenty.common.blocks.BlockBOPGeneric;
import biomesoplenty.common.blocks.BlockBOPGeneric.BlockType;
import biomesoplenty.common.blocks.BlockBOPGrass;
import biomesoplenty.common.blocks.BlockBOPLeaves;
import biomesoplenty.common.blocks.BlockBOPLeaves.LeafCategory;
import biomesoplenty.common.blocks.BlockBOPLog;
import biomesoplenty.common.blocks.BlockBOPLog.LogCategory;
import biomesoplenty.common.blocks.BlockBOPMushroom;
import biomesoplenty.common.blocks.BlockBOPPersimmonLeaves;
import biomesoplenty.common.blocks.BlockBOPPetals;
import biomesoplenty.common.blocks.BlockBOPPlank;
import biomesoplenty.common.blocks.BlockBOPPlant;
import biomesoplenty.common.blocks.BlockBOPRedRock;
import biomesoplenty.common.blocks.BlockBOPSapling;
import biomesoplenty.common.blocks.BlockBOPSkystone;
import biomesoplenty.common.blocks.BlockBOPSlab;
import biomesoplenty.common.blocks.BlockBOPSlab.SlabCategory;
import biomesoplenty.common.blocks.BlockBOPStairs;
import biomesoplenty.common.blocks.BlockBOPStairs.Category;
import biomesoplenty.common.blocks.BlockBamboo;
import biomesoplenty.common.blocks.BlockBones;
import biomesoplenty.common.blocks.BlockCloud;
import biomesoplenty.common.blocks.BlockFlesh;
import biomesoplenty.common.blocks.BlockGrave;
import biomesoplenty.common.blocks.BlockHive;
import biomesoplenty.common.blocks.BlockHoney;
import biomesoplenty.common.blocks.BlockIvy;
import biomesoplenty.common.blocks.BlockLongGrass;
import biomesoplenty.common.blocks.BlockMoss;
import biomesoplenty.common.blocks.BlockMud;
import biomesoplenty.common.blocks.BlockOriginGrass;
import biomesoplenty.common.blocks.BlockOvergrownNetherrack;
import biomesoplenty.common.blocks.BlockPromisedPortal;
import biomesoplenty.common.blocks.BlockStoneFormations;
import biomesoplenty.common.blocks.BlockTreeMoss;
import biomesoplenty.common.blocks.BlockTurnip;
import biomesoplenty.common.blocks.BlockWillow;
import biomesoplenty.common.itemblocks.ItemBlockAppleLeaves;
import biomesoplenty.common.itemblocks.ItemBlockBamboo;
import biomesoplenty.common.itemblocks.ItemBlockBones;
import biomesoplenty.common.itemblocks.ItemBlockColorizedLeaves;
import biomesoplenty.common.itemblocks.ItemBlockColorizedSapling;
import biomesoplenty.common.itemblocks.ItemBlockCoral;
import biomesoplenty.common.itemblocks.ItemBlockFlower;
import biomesoplenty.common.itemblocks.ItemBlockFlower2;
import biomesoplenty.common.itemblocks.ItemBlockFoliage;
import biomesoplenty.common.itemblocks.ItemBlockGems;
import biomesoplenty.common.itemblocks.ItemBlockGrave;
import biomesoplenty.common.itemblocks.ItemBlockHive;
import biomesoplenty.common.itemblocks.ItemBlockIvy;
import biomesoplenty.common.itemblocks.ItemBlockLeaves;
import biomesoplenty.common.itemblocks.ItemBlockLog;
import biomesoplenty.common.itemblocks.ItemBlockMoss;
import biomesoplenty.common.itemblocks.ItemBlockMud;
import biomesoplenty.common.itemblocks.ItemBlockMushroom;
import biomesoplenty.common.itemblocks.ItemBlockPersimmonLeaves;
import biomesoplenty.common.itemblocks.ItemBlockPetals;
import biomesoplenty.common.itemblocks.ItemBlockPlank;
import biomesoplenty.common.itemblocks.ItemBlockPlant;
import biomesoplenty.common.itemblocks.ItemBlockRedRock;
import biomesoplenty.common.itemblocks.ItemBlockSapling;
import biomesoplenty.common.itemblocks.ItemBlockSkystone;
import biomesoplenty.common.itemblocks.ItemBlockSlab;
import biomesoplenty.common.itemblocks.ItemBlockStoneFormations;
import biomesoplenty.common.itemblocks.ItemBlockWillow;
import cpw.mods.fml.common.FMLLog;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.LoaderException;
import cpw.mods.fml.common.LoaderState;
import cpw.mods.fml.common.registry.GameData;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.ReflectionHelper;
public class BOPBlocks
{
public static void init()
@ -101,9 +25,6 @@ public class BOPBlocks
private static void registerBlocks()
{
// Block declaration
//TODO: setBlockName
registerBlock(new BlockMud().setBlockName("mud"), ItemBlockMud.class);
//TODO: rock
registerBlock(new BlockBOPGeneric(Material.rock, BlockType.DRIED_DIRT).setBlockName("driedDirt"));
@ -272,19 +193,16 @@ public class BOPBlocks
public static void registerBlock(Block block)
{
//TODO: getUnlocalizedName()
GameRegistry.registerBlock(block, block.getUnlocalizedName().replace("tile.", ""));
}
public static void registerBlock(Block block, Class<? extends ItemBlock> itemBlockClass)
{
//TODO: getUnlocalizedName()
GameRegistry.registerBlock(block, itemBlockClass, block.getUnlocalizedName().replace("tile.", ""));
}
public static void registerBlock(Block block, Class<? extends ItemBlock> itemBlockClass, Object... constructorArgs)
{
//TODO: getUnlocalizedName()
GameRegistry.registerBlock(block, itemBlockClass, block.getUnlocalizedName().replace("tile.", ""), null, constructorArgs);
}
}

View File

@ -0,0 +1,45 @@
package biomesoplenty.common.utils;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class BOPLogger
{
private static Logger bopLogger = LogManager.getLogger("BiomesOPlenty");
public static void log(Level level, String format, Object... data)
{
bopLogger.log(level, format, data);
}
public static void severe(String format, Object... data)
{
log(Level.ERROR, format, data);
}
public static void warning(String format, Object... data)
{
log(Level.WARN, format, data);
}
public static void info(String format, Object... data)
{
log(Level.INFO, format, data);
}
public static void fine(String format, Object... data)
{
log(Level.DEBUG, format, data);
}
public static void finer(String format, Object... data)
{
log(Level.TRACE, format, data);
}
public static Logger getLogger()
{
return bopLogger;
}
}

View File

@ -1,22 +0,0 @@
package biomesoplenty.common.utils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map.Entry;
import net.minecraft.item.ItemStack;
public class ListUtils
{
public static <T> T getItemStackMapValue(HashMap<ItemStack, T> list, ItemStack stack)
{
for (Entry<ItemStack, T> entry : list.entrySet())
{
ItemStack stackToCompareTo = entry.getKey();
if (stackToCompareTo.getItem() == stack.getItem() && (stack.getItemDamage() == 32767 || stackToCompareTo.getItemDamage() == stack.getItemDamage())) return entry.getValue();
}
return null;
}
}

View File

@ -1,24 +0,0 @@
package biomesoplenty.common.utils;
import java.util.Random;
/**
* @prevent crashes in non overworld biome generation
* due to calls to decorator getting -1 height values
* Random.nextInt(-1) = crash
*/
public class RandomFiltered extends Random{
public RandomFiltered(long par2) {
super(par2);
}
@Override
public int nextInt() {
return this.nextInt(1);
}
@Override
public int nextInt (int n) {
if (n > 0) {
return super.nextInt(n);
}
return 0;
}
}