generated from tilera/1710mod
624 lines
23 KiB
Java
624 lines
23 KiB
Java
package net.anvilcraft.thaummach.blocks;
|
|
|
|
import java.util.Arrays;
|
|
import java.util.List;
|
|
import java.util.Random;
|
|
import java.util.function.Function;
|
|
|
|
import net.anvilcraft.alec.jalec.factories.AlecUnexpectedRuntimeErrorExceptionFactory;
|
|
import net.anvilcraft.thaummach.render.BlockApparatusRenderer;
|
|
import net.anvilcraft.thaummach.render.apparatus.IApparatusRenderer;
|
|
import net.anvilcraft.thaummach.render.apparatus.SimpleBlockApparatusRenderer;
|
|
import net.anvilcraft.thaummach.tiles.TileEnchanter;
|
|
import net.anvilcraft.thaummach.tiles.TileSeal;
|
|
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.item.Item;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.tileentity.TileEntity;
|
|
import net.minecraft.util.AxisAlignedBB;
|
|
import net.minecraft.util.IIcon;
|
|
import net.minecraft.world.IBlockAccess;
|
|
import net.minecraft.world.World;
|
|
import net.minecraftforge.common.util.ForgeDirection;
|
|
|
|
public class BlockApparatusStone extends BlockApparatus {
|
|
public IIcon iconEldritchStone;
|
|
public IIcon iconEnchanterBottom;
|
|
public IIcon iconEnchanterSide;
|
|
public IIcon iconEnchanterTop;
|
|
|
|
public BlockApparatusStone() {
|
|
super(Material.rock);
|
|
this.setHardness(2.0F);
|
|
this.setResistance(15.0F);
|
|
this.setStepSound(Block.soundTypeStone);
|
|
}
|
|
|
|
@Override
|
|
public void registerBlockIcons(IIconRegister register) {
|
|
Function<String, IIcon> reg = (s) -> register.registerIcon("thaummach:" + s);
|
|
|
|
this.iconEldritchStone = reg.apply("eldritch_stone");
|
|
this.iconEnchanterBottom = reg.apply("enchanter_bottom");
|
|
this.iconEnchanterSide = reg.apply("enchanter_side");
|
|
this.iconEnchanterTop = reg.apply("enchanter_top");
|
|
}
|
|
|
|
@Override
|
|
public IApparatusRenderer getApparatusRenderer(int meta_) {
|
|
MetaVals meta = MetaVals.get(meta_);
|
|
switch (meta) {
|
|
case ELDRITCH_STONE:
|
|
case ENCHANTER:
|
|
return SimpleBlockApparatusRenderer.INSTANCE;
|
|
|
|
default:
|
|
return null;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean onBlockActivated(
|
|
World world,
|
|
int i,
|
|
int j,
|
|
int k,
|
|
EntityPlayer entityplayer,
|
|
|
|
// useless parameters
|
|
int alec1,
|
|
float alec2,
|
|
float alec3,
|
|
float alec4
|
|
) {
|
|
TileEntity te = world.getTileEntity(i, j, k);
|
|
int meta = world.getBlockMetadata(i, j, k);
|
|
//if (meta == 8 && entityplayer.inventory.getCurrentItem() != null) {
|
|
// boolean filled = false;
|
|
// if (entityplayer.inventory.getCurrentItem().isItemEqual(new ItemStack(Items.bucket)
|
|
// )) {
|
|
// entityplayer.inventory.setInventorySlotContents(
|
|
// entityplayer.inventory.currentItem, new ItemStack(Items.water_bucket)
|
|
// );
|
|
// filled = true;
|
|
// } else if (entityplayer.inventory.getCurrentItem().isItemEqual(
|
|
// new ItemStack(Items.glass_bottle)
|
|
// )) {
|
|
// if (entityplayer.inventory.decrStackSize(entityplayer.inventory.currentItem, 1)
|
|
// == null) {
|
|
// entityplayer.inventory.setInventorySlotContents(
|
|
// entityplayer.inventory.currentItem, new ItemStack(Items.potionitem)
|
|
// );
|
|
// } else if (!entityplayer.inventory.addItemStackToInventory(new
|
|
// ItemStack(Item.potionitem
|
|
// ))) {
|
|
// entityplayer.dropPlayerItem(new ItemStack(Item.potion.shiftedIndex, 1, 0));
|
|
// }
|
|
|
|
// filled = true;
|
|
// } else {
|
|
// ItemStack filler = this.getOtherWaterContainer(entityplayer.inventory);
|
|
// if (filler != null) {
|
|
// entityplayer.inventory.decrStackSize(entityplayer.inventory.currentItem, 1);
|
|
// if (!entityplayer.inventory.addItemStackToInventory(
|
|
// new ItemStack(filler.getItem(), 1, filler.getItemDamage())
|
|
// )) {
|
|
// entityplayer.dropPlayerItem(
|
|
// new ItemStack(filler.getItem(), 1, filler.getItemDamage())
|
|
// );
|
|
// }
|
|
|
|
// filled = true;
|
|
// }
|
|
// }
|
|
|
|
// if (filled) {
|
|
// int auraX = i >> 4;
|
|
// int auraZ = k >> 4;
|
|
// SIAuraChunk ac = (SIAuraChunk) mod_ThaumCraft.AuraHM.get(
|
|
// Arrays.asList(auraX, auraZ, ThaumCraftCore.getDimension(world))
|
|
// );
|
|
// if (ac != null) {
|
|
// ++ac.badVibes;
|
|
// }
|
|
|
|
// return true;
|
|
// }
|
|
|
|
//}
|
|
|
|
return super.onBlockActivated(world, i, j, k, entityplayer, alec1, alec2, alec3, alec4);
|
|
}
|
|
|
|
// TODO: WTF
|
|
//private ItemStack getOtherWaterContainer(InventoryPlayer inventory) {
|
|
// if (ItemInterface.getItem("waxCapsule") != null
|
|
// && inventory.getCurrentItem().isItemEqual(ItemInterface.getItem("waxCapsule"))) {
|
|
// return ItemInterface.getItem("waxCapsuleWater");
|
|
// } else if (ItemInterface.getItem("refractoryEmpty") != null &&
|
|
// inventory.getCurrentItem().isItemEqual(ItemInterface.getItem("refractoryEmpty"))) {
|
|
// return ItemInterface.getItem("refractoryWater");
|
|
// } else if (ItemInterface.getItem("canEmpty") != null &&
|
|
// inventory.getCurrentItem().isItemEqual(ItemInterface.getItem("canEmpty"))) {
|
|
// return ItemInterface.getItem("canWater");
|
|
// } else {
|
|
// return Items.getItem("cell") != null
|
|
// && inventory.getCurrentItem().isItemEqual(Items.getItem("cell"))
|
|
// ? ItemInterface.getItem("waterCell")
|
|
// : null;
|
|
// }
|
|
//}
|
|
|
|
@Override
|
|
public float getBlockHardness(World world, int x, int y, int z) {
|
|
MetaVals meta = MetaVals.get(world.getBlockMetadata(x, y, z));
|
|
return meta == MetaVals.ELDRITCH_STONE ? 10.0f : super.getBlockHardness(world, x, y, z);
|
|
}
|
|
|
|
@Override
|
|
public TileEntity createNewTileEntity(World world, int md) {
|
|
MetaVals meta = MetaVals.get(md);
|
|
|
|
switch (meta) {
|
|
case ELDRITCH_STONE:
|
|
return null;
|
|
|
|
case ENCHANTER:
|
|
return new TileEnchanter();
|
|
|
|
default:
|
|
throw AlecUnexpectedRuntimeErrorExceptionFactory.PLAIN.createAlecException(
|
|
"Invalid meta!"
|
|
);
|
|
}
|
|
|
|
//if (md == 1) {
|
|
// return new TileInfuser();
|
|
//} else if (md == 2) {
|
|
// return new TileInfuserDark();
|
|
//} else if (md == 3) {
|
|
// return new TileEnchanter();
|
|
//} else if (md == 4) {
|
|
// return new TileResearcher();
|
|
//} else if (md == 6) {
|
|
// return new TileDarknessGenenerator();
|
|
//} else if (md == 7) {
|
|
// return new TileEnchanterAdvanced();
|
|
//} else {
|
|
// return (TileEntity) (md == 8 ? new TileUrn() : super.getBlockEntity(md));
|
|
//}
|
|
}
|
|
|
|
@Override
|
|
public int getRenderType() {
|
|
return BlockApparatusRenderer.RI;
|
|
}
|
|
|
|
// TODO: WTF
|
|
//public int getBlockTextureFromSide(int i) {
|
|
// return 31;
|
|
//}
|
|
|
|
@Override
|
|
public IIcon getIcon(int i, int j) {
|
|
MetaVals meta = MetaVals.get(j);
|
|
ForgeDirection side = ForgeDirection.getOrientation(i);
|
|
|
|
switch (meta) {
|
|
case ELDRITCH_STONE:
|
|
return this.iconEldritchStone;
|
|
|
|
case ENCHANTER:
|
|
switch (side) {
|
|
case UP:
|
|
return this.iconEnchanterTop;
|
|
|
|
case DOWN:
|
|
return this.iconEnchanterBottom;
|
|
|
|
case NORTH:
|
|
case EAST:
|
|
case SOUTH:
|
|
case WEST:
|
|
return this.iconEnchanterSide;
|
|
|
|
default:
|
|
return null;
|
|
}
|
|
|
|
default:
|
|
return null;
|
|
}
|
|
|
|
//if (j == 0) {
|
|
// return 46;
|
|
//} else if (j == 4) {
|
|
// return 93;
|
|
//} else if (j == 6) {
|
|
// return i < 2 ? 105 : 108;
|
|
//} else if (j == 8) {
|
|
// if (i == 0) {
|
|
// return 159;
|
|
// } else {
|
|
// return i == 1 ? 158 : 157;
|
|
// }
|
|
//} else {
|
|
// return super.getBlockTextureFromSideAndMetadata(i, j);
|
|
//}
|
|
}
|
|
|
|
@Override
|
|
public IIcon getIcon(IBlockAccess iblockaccess, int i, int j, int k, int side) {
|
|
int meta = iblockaccess.getBlockMetadata(i, j, k);
|
|
//if (meta == 3) {
|
|
// if (side == 0) {
|
|
// return 162;
|
|
// } else {
|
|
// return side == 1 ? 161 : 160;
|
|
// }
|
|
//} else if (meta == 7) {
|
|
// if (side == 0) {
|
|
// return 162;
|
|
// } else {
|
|
// return side == 1 ? 164 : 163;
|
|
// }
|
|
//} else {
|
|
// TileInfuser ti;
|
|
// HelperLocation loc;
|
|
// TileEntity te;
|
|
// if (meta == 1) {
|
|
// if (side == 0) {
|
|
// return 53;
|
|
// } else if (side == 1) {
|
|
// return 54;
|
|
// } else {
|
|
// ti = (TileInfuser) iblockaccess.getBlockTileEntity(i, j, k);
|
|
// loc = new HelperLocation(ti);
|
|
// switch (side) {
|
|
// case 2:
|
|
// loc.facing = HelperFacing.NEGZ;
|
|
// break;
|
|
// case 3:
|
|
// loc.facing = HelperFacing.POSZ;
|
|
// break;
|
|
// case 4:
|
|
// loc.facing = HelperFacing.NEGX;
|
|
// break;
|
|
// case 5:
|
|
// loc.facing = HelperFacing.POSX;
|
|
// }
|
|
|
|
// if (!ti.getConnectable(loc.facing)) {
|
|
// return 55;
|
|
// } else {
|
|
// te = loc.getConnectableTile(iblockaccess);
|
|
// return te != null ? 56 : 55;
|
|
// }
|
|
// }
|
|
// } else if (meta == 2) {
|
|
// if (side == 0) {
|
|
// return 59;
|
|
// } else if (side == 1) {
|
|
// return 60;
|
|
// } else {
|
|
// ti = (TileInfuser) iblockaccess.getBlockTileEntity(i, j, k);
|
|
// loc = new HelperLocation(ti);
|
|
// switch (side) {
|
|
// case 2:
|
|
// loc.facing = HelperFacing.NEGZ;
|
|
// break;
|
|
// case 3:
|
|
// loc.facing = HelperFacing.POSZ;
|
|
// break;
|
|
// case 4:
|
|
// loc.facing = HelperFacing.NEGX;
|
|
// break;
|
|
// case 5:
|
|
// loc.facing = HelperFacing.POSX;
|
|
// }
|
|
|
|
// if (!ti.getConnectable(loc.facing)) {
|
|
// return 61;
|
|
// } else {
|
|
// te = loc.getConnectableTile(iblockaccess);
|
|
// return te != null ? 62 : 61;
|
|
// }
|
|
// }
|
|
// } else if (meta == 4) {
|
|
// if (side == 0) {
|
|
// return 93;
|
|
// } else {
|
|
// return side == 1 ? 91 : 92;
|
|
// }
|
|
// } else {
|
|
// return super.getBlockTexture(iblockaccess, i, j, k, side);
|
|
// }
|
|
//}
|
|
return this.getIcon(side, meta);
|
|
}
|
|
|
|
@Override
|
|
@SuppressWarnings({ "rawtypes", "unchecked" })
|
|
public void getSubBlocks(Item arg0, CreativeTabs arg1, List list) {
|
|
Arrays.stream(MetaVals.values())
|
|
.map((m) -> new ItemStack(this, 1, m.ordinal()))
|
|
.forEach(list::add);
|
|
}
|
|
|
|
@Override
|
|
public void addCollisionBoxesToList(
|
|
World world, int x, int y, int z, AxisAlignedBB axisalignedbb, List list, Entity entity
|
|
) {
|
|
int meta = world.getBlockMetadata(x, y, z);
|
|
if (meta == 0) {
|
|
TileEntity te = world.getTileEntity(x, y, z);
|
|
int l = 1;
|
|
if (te != null && te instanceof TileSeal) {
|
|
l = ((TileSeal) te).orientation;
|
|
}
|
|
|
|
float thickness = 0.0625F;
|
|
if (l == 0) {
|
|
this.setBlockBounds(0.3F, 1.0F - thickness, 0.3F, 0.7F, 1.0F, 0.7F);
|
|
}
|
|
|
|
if (l == 1) {
|
|
this.setBlockBounds(0.3F, 0.0F, 0.3F, 0.7F, thickness, 0.7F);
|
|
}
|
|
|
|
if (l == 2) {
|
|
this.setBlockBounds(0.3F, 0.3F, 1.0F - thickness, 0.7F, 0.7F, 1.0F);
|
|
}
|
|
|
|
if (l == 3) {
|
|
this.setBlockBounds(0.3F, 0.3F, 0.0F, 0.7F, 0.7F, thickness);
|
|
}
|
|
|
|
if (l == 4) {
|
|
this.setBlockBounds(1.0F - thickness, 0.3F, 0.3F, 1.0F, 0.7F, 0.7F);
|
|
}
|
|
|
|
if (l == 5) {
|
|
this.setBlockBounds(0.0F, 0.3F, 0.3F, thickness, 0.7F, 0.7F);
|
|
}
|
|
|
|
super.addCollisionBoxesToList(world, x, y, z, axisalignedbb, list, entity);
|
|
} else if (meta == 3) {
|
|
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.75F, 1.0F);
|
|
super.addCollisionBoxesToList(world, x, y, z, axisalignedbb, list, entity);
|
|
} else if (meta == 4) {
|
|
this.setBlockBounds(0.0F, 0.375F, 0.0F, 1.0F, 0.625F, 1.0F);
|
|
super.addCollisionBoxesToList(world, x, y, z, axisalignedbb, list, entity);
|
|
this.setBlockBounds(0.2F, 0.0F, 0.2F, 0.8F, 0.375F, 0.8F);
|
|
super.addCollisionBoxesToList(world, x, y, z, axisalignedbb, list, entity);
|
|
} else if (meta != 1 && meta != 2) {
|
|
if (meta == 8) {
|
|
this.setBlockBounds(0.3125F, 0.5625F, 0.3125F, 0.6875F, 1.0F, 0.6875F);
|
|
super.addCollisionBoxesToList(world, x, y, z, axisalignedbb, list, entity);
|
|
this.setBlockBounds(0.125F, 0.0F, 0.125F, 0.875F, 0.5625F, 0.875F);
|
|
super.addCollisionBoxesToList(world, x, y, z, axisalignedbb, list, entity);
|
|
} else {
|
|
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
|
super.addCollisionBoxesToList(world, x, y, z, axisalignedbb, list, entity);
|
|
this.setBlockBoundsForItemRender();
|
|
}
|
|
} else {
|
|
float w1 = 0.0625F;
|
|
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F - w1, 1.0F);
|
|
super.addCollisionBoxesToList(world, x, y, z, axisalignedbb, list, entity);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void setBlockBoundsBasedOnState(IBlockAccess iblockaccess, int i, int j, int k) {
|
|
int md = iblockaccess.getBlockMetadata(i, j, k);
|
|
if (md == 3) {
|
|
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.75F, 1.0F);
|
|
} else {
|
|
float w1;
|
|
if (md != 1 && md != 2) {
|
|
if (md == 6) {
|
|
w1 = 0.0625F;
|
|
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F - w1, 1.0F);
|
|
} else if (md == 4) {
|
|
this.setBlockBounds(0.0F, 0.375F, 0.0F, 1.0F, 0.625F, 1.0F);
|
|
} else if (md == 8) {
|
|
this.setBlockBounds(0.125F, 0.0F, 0.125F, 0.875F, 0.5625F, 0.875F);
|
|
} else {
|
|
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
|
}
|
|
} else {
|
|
w1 = 0.0625F;
|
|
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F - w1, 1.0F);
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public AxisAlignedBB getSelectedBoundingBoxFromPool(World w, int i, int j, int k) {
|
|
int md = w.getBlockMetadata(i, j, k);
|
|
if (md == 3) {
|
|
AxisAlignedBB.getBoundingBox(0.0, 0.0, 0.0, 1.0, 0.75, 1.0);
|
|
} else {
|
|
float w1;
|
|
if (md != 1 && md != 2) {
|
|
if (md == 4) {
|
|
AxisAlignedBB.getBoundingBox(0.0, 0.375, 0.0, 1.0, 0.625, 1.0);
|
|
} else if (md == 6) {
|
|
w1 = 0.0625F;
|
|
AxisAlignedBB.getBoundingBox(0.0, 0.0, 0.0, 1.0, (double) (0.5F - w1), 1.0);
|
|
} else if (md == 8) {
|
|
AxisAlignedBB.getBoundingBox(0.3125, 0.5625, 0.3125, 0.6875, 1.0, 0.6875);
|
|
AxisAlignedBB.getBoundingBox(0.125, 0.0, 0.125, 0.875, 0.5625, 0.875);
|
|
} else {
|
|
AxisAlignedBB.getBoundingBox(0.0, 0.0, 0.0, 1.0, 1.0, 1.0);
|
|
}
|
|
} else {
|
|
w1 = 0.0625F;
|
|
AxisAlignedBB.getBoundingBox(0.0, 0.0, 0.0, 1.0, (double) (1.0F - w1), 1.0);
|
|
}
|
|
}
|
|
|
|
return super.getSelectedBoundingBoxFromPool(w, i, j, k);
|
|
}
|
|
|
|
@Override
|
|
public void setBlockBoundsForItemRenderBasedOnMeta(int meta) {
|
|
MetaVals md = MetaVals.get(meta);
|
|
if (md == MetaVals.ENCHANTER) {
|
|
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.75F, 1.0F);
|
|
} else {
|
|
float w1;
|
|
if (md != MetaVals.INFUSER && md != MetaVals.INFUSER_DARK) {
|
|
if (md == MetaVals.DARKNESS_GENERATOR) {
|
|
w1 = 0.0625F;
|
|
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F - w1, 1.0F);
|
|
} else if (md == MetaVals.URN) {
|
|
this.setBlockBounds(0.125F, 0.0F, 0.125F, 0.875F, 0.5625F, 0.875F);
|
|
} else {
|
|
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
|
}
|
|
} else {
|
|
w1 = 0.0625F;
|
|
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F - w1, 1.0F);
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void setBlockBoundsForItemRender() {
|
|
this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
|
}
|
|
|
|
@Override
|
|
public void randomDisplayTick(World w, int i, int j, int k, Random r) {
|
|
//int meta = w.getBlockMetadata(i, j, k);
|
|
//if ((meta == 3 || meta == 4 || meta == 7) && r.nextBoolean()) {
|
|
// for (int ll = i - 2; ll <= i + 2; ++ll) {
|
|
// for (int i1 = k - 2; i1 <= k + 2; ++i1) {
|
|
// if (ll > i - 2 && ll < i + 2 && i1 == k - 1) {
|
|
// i1 = k + 2;
|
|
// }
|
|
|
|
// for (int j1 = j; j1 <= j + 1; ++j1) {
|
|
// if ((w.getBlockId(ll, j1, i1) == Block.bookShelf.blockID
|
|
// || w.getBlockId(ll, j1, i1) == mod_ThaumCraft.blockAppFragile.blockID
|
|
// && w.getBlockMetadata(ll, j1, i1) == 4)
|
|
// && (w.getBlockId(ll, j1, i1) != Block.bookShelf.blockID
|
|
// || r.nextInt(16) == 0)
|
|
// && (w.getBlockId(ll, j1, i1) != mod_ThaumCraft.blockAppFragile.blockID
|
|
// || r.nextInt(8) == 0)) {
|
|
// if (!w.isAirBlock((ll - i) / 2 + i, j1, (i1 - k) / 2 + k)) {
|
|
// break;
|
|
// }
|
|
|
|
// w.spawnParticle(
|
|
// "enchantmenttable",
|
|
// (double) i + 0.5,
|
|
// (double) j + 2.0,
|
|
// (double) k + 0.5,
|
|
// (double) ((float) (ll - i) + r.nextFloat()) - 0.5,
|
|
// (double) ((float) (j1 - j) - r.nextFloat() - 1.0F),
|
|
// (double) ((float) (i1 - k) + r.nextFloat()) - 0.5
|
|
// );
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
//}
|
|
}
|
|
|
|
@Override
|
|
public boolean isBlockSolid(IBlockAccess world, int x, int y, int z, int side) {
|
|
MetaVals md = MetaVals.get(world.getBlockMetadata(x, y, z));
|
|
switch (md) {
|
|
case ENCHANTER:
|
|
case URN:
|
|
return false;
|
|
|
|
default:
|
|
return true;
|
|
}
|
|
}
|
|
|
|
//public boolean canPlaceBlockOnSide(World world, int i, int j, int k, int l) {
|
|
// if (l == 0 && world.isBlockSolidOnSide(i, j + 1, k, 0)) {
|
|
// return true;
|
|
// } else if (l == 1 && world.isBlockSolidOnSide(i, j - 1, k, 1)) {
|
|
// return true;
|
|
// } else if (l == 2 && world.isBlockSolidOnSide(i, j, k + 1, 2)) {
|
|
// return true;
|
|
// } else if (l == 3 && world.isBlockSolidOnSide(i, j, k - 1, 3)) {
|
|
// return true;
|
|
// } else if (l == 4 && world.isBlockSolidOnSide(i + 1, j, k, 4)) {
|
|
// return true;
|
|
// } else {
|
|
// return l == 5 && world.isBlockSolidOnSide(i - 1, j, k, 5);
|
|
// }
|
|
//}
|
|
|
|
//public boolean canPlaceBlockAt(World world, int i, int j, int k) {
|
|
// if (world.isBlockSolidOnSide(i - 1, j, k, 5)) {
|
|
// return true;
|
|
// } else if (world.isBlockSolidOnSide(i + 1, j, k, 4)) {
|
|
// return true;
|
|
// } else if (world.isBlockSolidOnSide(i, j, k - 1, 3)) {
|
|
// return true;
|
|
// } else if (world.isBlockSolidOnSide(i, j, k + 1, 2)) {
|
|
// return true;
|
|
// } else {
|
|
// return world.isBlockSolidOnSide(i, j - 1, k, 1)
|
|
// ? true
|
|
// : world.isBlockSolidOnSide(i, j + 1, k, 0);
|
|
// }
|
|
//}
|
|
|
|
private boolean checkIfAttachedToBlock(World world, int i, int j, int k) {
|
|
if (!this.canPlaceBlockAt(world, i, j, k)) {
|
|
this.dropBlockAsItem(world, i, j, k, world.getBlockMetadata(i, j, k), 0);
|
|
world.setBlockToAir(i, j, k);
|
|
return false;
|
|
} else {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public int getLightValue(IBlockAccess iba, int i, int j, int k) {
|
|
MetaVals md = MetaVals.get(iba.getBlockMetadata(i, j, k));
|
|
return md == MetaVals.ELDRITCH_STONE ? 12 : super.getLightValue(iba, i, j, k);
|
|
}
|
|
|
|
@Override
|
|
public float getExplosionResistance(
|
|
Entity exploder, World world, int x, int y, int z, double srcX, double srcY, double srcZ
|
|
) {
|
|
MetaVals md = MetaVals.get(world.getBlockMetadata(x, y, z));
|
|
return md == MetaVals.ELDRITCH_STONE ? 100.0F : 15.0F;
|
|
}
|
|
|
|
public static enum MetaVals {
|
|
__SEAL, // 0
|
|
INFUSER, // 1
|
|
INFUSER_DARK, // 2
|
|
ENCHANTER, // 3
|
|
__RESEARCHER, // 4
|
|
ELDRITCH_STONE, // 5
|
|
DARKNESS_GENERATOR, // 6
|
|
ENCHANTER_ADVANCED, // 7
|
|
URN; // 8
|
|
|
|
public static MetaVals get(int meta) {
|
|
if (meta < 0 || meta >= MetaVals.values().length)
|
|
return null;
|
|
|
|
return MetaVals.values()[meta];
|
|
}
|
|
}
|
|
}
|