123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- package com.zjinja.mcmod.decor.element_base;
- import com.zjinja.mcmod.decor.ZJinJaDecoration;
- import com.zjinja.mcmod.decor.utils.model_dir_util.BoundingBoxVector;
- import com.zjinja.mcmod.decor.utils.model_dir_util.ModelDirectionUtil;
- import net.minecraft.block.Block;
- import net.minecraft.block.ITileEntityProvider;
- import net.minecraft.block.material.Material;
- import net.minecraft.client.renderer.texture.IIconRegister;
- import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
- import net.minecraft.creativetab.CreativeTabs;
- import net.minecraft.tileentity.TileEntity;
- import net.minecraft.util.AxisAlignedBB;
- import net.minecraft.util.MovingObjectPosition;
- import net.minecraft.util.Vec3;
- import net.minecraft.world.IBlockAccess;
- import net.minecraft.world.World;
- public class EBaseTileBlock extends EBaseBlock implements ITileEntityProvider {
- public Class<? extends TileEntity> TEClass;
- public ModelDirectionUtil DirUtil;
- public String TextureLocation = "";
- public String IconLocation = "";
- public EBaseTileBlock(Material material, Class<? extends TileEntity> teClass) {
- super(material);
- TEClass = teClass;
- this.isBlockContainer = true;
- DirUtil = new ModelDirectionUtil();
- }
- @Override
- public void Regist(String blockName, CreativeTabs creativeTabs[]){
- super.Regist(blockName, creativeTabs);
- setIconLocation(blockName);
- setTextureLocationLocation(blockName);
- }
- public boolean AutoBindRenderer() { return true; }
- public TileEntitySpecialRenderer GetTileRenderer(){
- return new EBaseTileRenderer();
- }
- protected void setTextureLocationLocation(String blockName){
- this.TextureLocation = ZJinJaDecoration.MODID + ":" + blockName.toLowerCase();
- }
- protected void setIconLocation(String blockName){
- this.IconLocation = ZJinJaDecoration.MODID + ":" + blockName.toLowerCase();
- }
- public TileEntity createNewTileEntity(World world, int meta) {
- try {
- return TEClass.newInstance();
- } catch (InstantiationException e) {
- return null;
- } catch (IllegalAccessException e) {
- return null;
- }
- }
- @Override
- public void registerBlockIcons(IIconRegister icon){
- this.blockIcon = icon.registerIcon(this.IconLocation);
- }
- @Override
- public int getRenderType() {return -1; }
- @Override
- public boolean isOpaqueCube() {return false; }
- @Override
- public boolean renderAsNormalBlock(){ return false;}
- protected void setBoundsByMeta(int meta){
- BoundingBoxVector bbv = DirUtil.GetAbsBoundingBoxByMeta(meta);
- setBlockBounds(bbv.x1, bbv.y1, bbv.z1, bbv.x2, bbv.y2, bbv.z2);
- }
- @Override
- public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z){
- this.setBlockBoundsBasedOnState(world, x, y, z);
- return AxisAlignedBB.getBoundingBox(
- x + this.minX, y + this.minY, z + this.minZ,
- x + this.maxX, y + this.maxY, z + this.maxZ
- );
- }
- @Override
- public MovingObjectPosition collisionRayTrace(World world, int x, int y, int z, Vec3 src, Vec3 dst){
- this.setBlockBoundsBasedOnState(world, x, y, z);
- return super.collisionRayTrace(world, x, y, z, src, dst);
- }
- @Override
- public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z){
- int meta = world.getBlockMetadata(x, y, z);
- setBoundsByMeta(meta);
- }
- @Override
- public void onBlockAdded(World world, int x, int y, int z){
- super.onBlockAdded(world, x, y, z);
- }
- @Override
- public void breakBlock(World world, int x, int y, int z, Block block, int flag){
- super.breakBlock(world, x, y, z, block, flag);
- world.removeTileEntity(x, y, z);
- }
- @Override
- public boolean onBlockEventReceived(World world, int x, int y, int z, int i, int j){
- super.onBlockEventReceived(world, x, y, z, i, j);
- TileEntity tileEntity = world.getTileEntity(x, y, z);
- if(tileEntity != null){
- return tileEntity.receiveClientEvent(i, j);
- }else {
- return false;
- }
- }
- }
|