diff --git a/src/main/java/vazkii/botania/client/render/tile/RenderTileLightRelay.java b/src/main/java/vazkii/botania/client/render/tile/RenderTileLightRelay.java index ba48dbeb0..199cf8590 100644 --- a/src/main/java/vazkii/botania/client/render/tile/RenderTileLightRelay.java +++ b/src/main/java/vazkii/botania/client/render/tile/RenderTileLightRelay.java @@ -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); diff --git a/src/main/java/vazkii/botania/common/block/BlockLightLauncher.java b/src/main/java/vazkii/botania/common/block/BlockLightLauncher.java index 3df3bff96..4111cf53f 100644 --- a/src/main/java/vazkii/botania/common/block/BlockLightLauncher.java +++ b/src/main/java/vazkii/botania/common/block/BlockLightLauncher.java @@ -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); diff --git a/src/main/java/vazkii/botania/common/block/BlockLightRelay.java b/src/main/java/vazkii/botania/common/block/BlockLightRelay.java index 00cd5ba08..1ef3d0ee3 100644 --- a/src/main/java/vazkii/botania/common/block/BlockLightRelay.java +++ b/src/main/java/vazkii/botania/common/block/BlockLightRelay.java @@ -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; } - + } diff --git a/src/main/java/vazkii/botania/common/block/tile/TileLightRelay.java b/src/main/java/vazkii/botania/common/block/tile/TileLightRelay.java index 65573f8a8..8965abab4 100644 --- a/src/main/java/vazkii/botania/common/block/tile/TileLightRelay.java +++ b/src/main/java/vazkii/botania/common/block/tile/TileLightRelay.java @@ -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); diff --git a/src/main/resources/assets/botania/lang/en_US.lang b/src/main/resources/assets/botania/lang/en_US.lang index 889108a71..19c5e6f58 100644 --- a/src/main/resources/assets/botania/lang/en_US.lang +++ b/src/main/resources/assets/botania/lang/en_US.lang @@ -129,6 +129,8 @@ botaniamisc.completed=Completed botaniamisc.notCompleted=Not Completed botaniamisc.info=Info botaniamisc.challengeInfo=Learn about the challenges +botaniamisc.notSkyblock=You need to be in a Garden of Glass world to do that. +botaniamisc.alreadyHasSkyblock=You already have a skyblock. # NEI INTEGRATION botania.nei.brewery=Botanical Brewery @@ -996,8 +998,9 @@ tile.botania:sparkChanger.name=Spark Tinkerer tile.botania:root.name=Living Root tile.botania:felPumpkin.name=Fel Pumpkin tile.botania:cocoon.name=Cocoon of Caprice -tile.botania:lightRelay.name=Luminizer -tile.botania:lightLauncher.name=Luminize Launcher +tile.botania:lightRelay0.name=Luminizer +tile.botania:lightRelay1.name=Detector Luminizer +tile.botania:lightLauncher.name=Luminizer Launcher # FLOWER NAMES tile.botania:flower..name=Botania Flower diff --git a/src/main/resources/assets/botania/textures/blocks/lightRelay2.png b/src/main/resources/assets/botania/textures/blocks/lightRelay2.png new file mode 100644 index 000000000..aefb2d29d Binary files /dev/null and b/src/main/resources/assets/botania/textures/blocks/lightRelay2.png differ diff --git a/src/main/resources/assets/botania/textures/blocks/lightRelay3.png b/src/main/resources/assets/botania/textures/blocks/lightRelay3.png new file mode 100644 index 000000000..9653f498e Binary files /dev/null and b/src/main/resources/assets/botania/textures/blocks/lightRelay3.png differ