Detector Luminizer.

This commit is contained in:
Lizbeth Rika committed 2015-07-17 18:35:35 +01:00
1 parent 8ee4ee14be
commit c4df9709ed
7 files changed
+91 -14

No files matched your search

@@ -29,7 +29,7 @@ public class RenderTileLightRelay extends TileEntitySpecialRenderer {
@Override
public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float pticks) {
Minecraft mc = Minecraft.getMinecraft();
IIcon iicon = BlockLightRelay.worldIcon;
IIcon iicon = tile.getBlockMetadata() > 0 ? BlockLightRelay.worldIconRed : BlockLightRelay.worldIcon;
GL11.glPushMatrix();
GL11.glTranslated(x + 0.5, y + 0.3, z + 0.5);
@@ -18,6 +18,7 @@ import net.minecraft.block.material.Material;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import vazkii.botania.common.block.tile.TileLightRelay;
@@ -39,6 +40,16 @@ public class BlockLightLauncher extends BlockMod {
return false;
}
@Override
public boolean renderAsNormalBlock() {
return false;
}
@Override
public boolean getBlocksMovement(IBlockAccess p_149655_1_, int p_149655_2_, int p_149655_3_, int p_149655_4_) {
return false;
}
@Override
public void onNeighborBlockChange(World world, int x, int y, int z, Block block) {
boolean power = world.isBlockIndirectlyGettingPowered(x, y, z) || world.isBlockIndirectlyGettingPowered(x, y + 1, z);
@@ -10,9 +10,16 @@
*/
package vazkii.botania.common.block;
import java.util.List;
import java.util.Random;
import cpw.mods.fml.common.registry.GameRegistry;
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.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
@@ -25,56 +32,106 @@ import vazkii.botania.api.wand.IWandable;
import vazkii.botania.client.core.helper.IconHelper;
import vazkii.botania.client.lib.LibRenderIDs;
import vazkii.botania.common.block.tile.TileLightRelay;
import vazkii.botania.common.item.block.ItemBlockWithMetadataAndName;
import vazkii.botania.common.lib.LibBlockNames;
public class BlockLightRelay extends BlockModContainer implements IWandable {
public static IIcon invIcon, worldIcon;
public static IIcon invIcon, worldIcon, invIconRed, worldIconRed;
protected BlockLightRelay() {
super(Material.glass);
float f = 5F / 16F;
setBlockBounds(f, f, f, 1F - f, 1F - f, 1F - f);
setBlockName(LibBlockNames.LIGHT_RELAY);
}
@Override
public Block setBlockName(String par1Str) {
register(par1Str);
return super.setBlockName(par1Str);
}
void register(String name) {
GameRegistry.registerBlock(this, ItemBlockWithMetadataAndName.class, name);
}
@Override
public void getSubBlocks(Item item, CreativeTabs tab, List list) {
for(int i = 0; i < 2; i++)
list.add(new ItemStack(item, 1, i));
}
@Override
protected boolean shouldRegisterInNameSet() {
return false;
}
@Override
public boolean getBlocksMovement(IBlockAccess p_149655_1_, int p_149655_2_, int p_149655_3_, int p_149655_4_) {
return false;
}
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int s, float xs, float ys, float zs) {
((TileLightRelay) world.getTileEntity(x, y, z)).mountEntity(player);
return true;
}
@Override
public AxisAlignedBB getCollisionBoundingBoxFromPool(World p_149668_1_, int p_149668_2_, int p_149668_3_, int p_149668_4_) {
return null;
}
@Override
public int tickRate(World p_149738_1_) {
return 2;
}
@Override
public void updateTick(World world, int x, int y, int z, Random rand) {
world.setBlockMetadataWithNotify(x, y, z, world.getBlockMetadata(x, y, z) & -9, 1 | 2);
}
@Override
public boolean canProvidePower() {
return true;
}
@Override
public int isProvidingWeakPower(IBlockAccess world, int x, int y, int z, int s) {
int meta = world.getBlockMetadata(x, y, z);
return (meta & 8) != 0 ? 15 : 0;
}
@Override
public void registerBlockIcons(IIconRegister par1IconRegister) {
invIcon = IconHelper.forBlock(par1IconRegister, this, 0);
worldIcon = IconHelper.forBlock(par1IconRegister, this, 1);
invIconRed = IconHelper.forBlock(par1IconRegister, this, 2);
worldIconRed = IconHelper.forBlock(par1IconRegister, this, 3);
}
@Override
public IIcon getIcon(int p_149691_1_, int p_149691_2_) {
return invIcon;
public IIcon getIcon(int side, int meta) {
return meta > 0 ? invIconRed : invIcon;
}
@Override
public boolean renderAsNormalBlock() {
return false;
}
@Override
public boolean isOpaqueCube() {
return false;
}
@Override
public int getRenderType() {
return LibRenderIDs.idLightRelay;
}
@Override
public TileEntity createNewTileEntity(World world, int meta) {
return new TileLightRelay();
@@ -84,5 +141,5 @@ public class BlockLightRelay extends BlockModContainer implements IWandable {
public boolean onUsedByWand(EntityPlayer player, ItemStack stack, World world, int x, int y, int z, int side) {
return false;
}
}
@@ -179,6 +179,12 @@ public class TileLightRelay extends TileMod implements IWandBindable {
if(tile != null && tile instanceof TileLightRelay) {
worldObj.playSoundAtEntity(this, "random.orb", 0.2F, (float) Math.random() * 0.3F + 0.7F);
int meta = worldObj.getBlockMetadata(x, y, z);
if(meta > 0) {
worldObj.setBlockMetadataWithNotify(x, y, z, meta | 8, 1 | 2);
worldObj.scheduleBlockUpdate(x, y, z, tile.getBlockType(), tile.getBlockType().tickRate(worldObj));
}
ChunkCoordinates bind = ((TileLightRelay) tile).getBinding();
if(bind != null) {
setExit(bind.posX, bind.posY, bind.posZ);