diff options
author | Draknyte1 <Draknyte1@hotmail.com> | 2016-02-27 21:52:02 +1000 |
---|---|---|
committer | Draknyte1 <Draknyte1@hotmail.com> | 2016-02-27 21:52:02 +1000 |
commit | 47ff638d276f5f926640b224e443bdccfd7b8506 (patch) | |
tree | 2b39067caab27d5bf93e6b8bbb84e6e3eb342d98 | |
parent | 7711c80664fdfa703b5e60e62af437655da783ae (diff) | |
download | GT5-Unofficial-47ff638d276f5f926640b224e443bdccfd7b8506.tar.gz GT5-Unofficial-47ff638d276f5f926640b224e443bdccfd7b8506.tar.bz2 GT5-Unofficial-47ff638d276f5f926640b224e443bdccfd7b8506.zip |
Pushing more things to Git which weren't there.
ToroiseGit doesn't auto add new files to be pushed/committed unless you manually add them to a commit. :(
20 files changed, 1305 insertions, 79 deletions
diff --git a/src/Java/miscutil/core/block/antigrief/TowerDevice.java b/src/Java/miscutil/core/block/antigrief/TowerDevice.java new file mode 100644 index 0000000000..aea1d40921 --- /dev/null +++ b/src/Java/miscutil/core/block/antigrief/TowerDevice.java @@ -0,0 +1,265 @@ +package miscutil.core.block.antigrief; + +import static miscutil.core.block.ModBlocks.blockGriefSaver; + +import java.util.List; +import java.util.Random; + +import miscutil.core.creativetabs.AddToCreativeTab; +import miscutil.core.lib.Strings; +import miscutil.core.tileentities.TileEntityReverter; +import miscutil.core.util.Utils; +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.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public class TowerDevice extends Block { + private static IIcon TEX_ANTIBUILDER; + public static final int META_ANTIBUILDER = 9; + public TowerDevice() + { + super(Material.wood); + setHardness(10.0F); + setResistance(35.0F); + setStepSound(Block.soundTypeWood); + setCreativeTab(AddToCreativeTab.tabMachines); + } + + public int tickRate() + { + return 15; + } + + public IIcon getIcon(int side, int meta) + { + return TEX_ANTIBUILDER; + } + + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister par1IconRegister) + { + TEX_ANTIBUILDER = par1IconRegister.registerIcon(Strings.MODID + ":" + "blockAntiGrief"); + } + + public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List) + { + par3List.add(new ItemStack(par1, 1, 9)); + } + + public boolean onBlockActivated(World par1World, int x, int y, int z, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9) + { + int meta = par1World.getBlockMetadata(x, y, z); + return false; + } + + public float getExplosionResistance(Entity par1Entity, World world, int x, int y, int z, double explosionX, double explosionY, double explosionZ) + { + int meta = world.getBlockMetadata(x, y, z); + return super.getExplosionResistance(par1Entity, world, x, y, z, explosionX, explosionY, explosionZ); + } + + public float getBlockHardness(World world, int x, int y, int z) + { + int meta = world.getBlockMetadata(x, y, z); + return super.getBlockHardness(world, x, y, z); + } + + public static boolean areNearbyLockBlocks(World world, int x, int y, int z) + { + boolean locked = false; + for (int dx = x - 2; dx <= x + 2; dx++) { + for (int dy = y - 2; dy <= y + 2; dy++) { + for (int dz = z - 2; dz <= z + 2; dz++) { + if ((world.getBlock(dx, dy, dz) == blockGriefSaver) && (world.getBlockMetadata(dx, dy, dz) == 4)) { + locked = true; + } + } + } + } + return locked; + } + + public static void unlockBlock(World par1World, int x, int y, int z) + { + Block thereBlockID = par1World.getBlock(x, y, z); + int thereBlockMeta = par1World.getBlockMetadata(x, y, z); + if ((thereBlockID == blockGriefSaver) || (thereBlockMeta == 4)) + { + changeToBlockMeta(par1World, x, y, z, 5); + par1World.playSoundEffect(x + 0.5D, y + 0.5D, z + 0.5D, "random.click", 0.3F, 0.6F); + } + } + + private static void changeToBlockMeta(World par1World, int x, int y, int z, int meta) + { + Block thereBlockID = par1World.getBlock(x, y, z); + if ((thereBlockID == blockGriefSaver)) + { + par1World.setBlock(x, y, z, thereBlockID, meta, 3); + par1World.markBlockRangeForRenderUpdate(x, y, z, x, y, z); + par1World.notifyBlocksOfNeighborChange(x, y, z, thereBlockID); + } + } + + public void onBlockAdded(World par1World, int x, int y, int z) + { + int meta = par1World.getBlockMetadata(x, y, z); + if (!par1World.isRemote) { + + } + } + + public void onNeighborBlockChange(World par1World, int x, int y, int z, Block myBlockID) + { + int meta = par1World.getBlockMetadata(x, y, z); + if (!par1World.isRemote) + { + + } + } + + public void updateTick(World par1World, int x, int y, int z, Random par5Random) + { + if (!par1World.isRemote) + { + int meta = par1World.getBlockMetadata(x, y, z); + } + } + + private void letsBuild(World par1World, int x, int y, int z) + { + + } + + private boolean isInactiveTrapCharged(World par1World, int x, int y, int z) + { + return false; + } + + private boolean isReactorReady(World world, int x, int y, int z) + { + if ((world.getBlock(x, y + 1, z) != Blocks.redstone_block) || + (world.getBlock(x, y - 1, z) != Blocks.redstone_block) || + (world.getBlock(x + 1, y, z) != Blocks.redstone_block) || + (world.getBlock(x - 1, y, z) != Blocks.redstone_block) || + (world.getBlock(x, y, z + 1) != Blocks.redstone_block) || + (world.getBlock(x, y, z - 1) != Blocks.redstone_block)) { + return false; + } + return true; + } + + @SideOnly(Side.CLIENT) + public void randomDisplayTick(World par1World, int x, int y, int z, Random par5Random) + { + int meta = par1World.getBlockMetadata(x, y, z); + if ((meta == 3) || (meta == 1) || (meta == 9)) { + for (int i = 0; i < 1; i++) { + sparkle(par1World, x, y, z, par5Random); + } + } + } + + public void sparkle(World world, int x, int y, int z, Random rand) + { + double offset = 0.0625D; + for (int side = 0; side < 6; side++) + { + double rx = x + rand.nextFloat(); + double ry = y + rand.nextFloat(); + double rz = z + rand.nextFloat(); + if ((side == 0) && (!world.getBlock(x, y + 1, z).isOpaqueCube())) { + ry = y + 1 + offset; + } + if ((side == 1) && (!world.getBlock(x, y - 1, z).isOpaqueCube())) { + ry = y + 0 - offset; + } + if ((side == 2) && (!world.getBlock(x, y, z + 1).isOpaqueCube())) { + rz = z + 1 + offset; + } + if ((side == 3) && (!world.getBlock(x, y, z - 1).isOpaqueCube())) { + rz = z + 0 - offset; + } + if ((side == 4) && (!world.getBlock(x + 1, y, z).isOpaqueCube())) { + rx = x + 1 + offset; + } + if ((side == 5) && (!world.getBlock(x - 1, y, z).isOpaqueCube())) { + rx = x + 0 - offset; + } + if ((rx < x) || (rx > x + 1) || (ry < 0.0D) || (ry > y + 1) || (rz < z) || (rz > z + 1)) { + world.spawnParticle("reddust", rx, ry, rz, 0.0D, 0.0D, 0.0D); + } + } + } + + public static void checkAndActivateVanishBlock(World world, int x, int y, int z) + { + Block thereID = world.getBlock(x, y, z); + int thereMeta = world.getBlockMetadata(x, y, z); + } + + public static void changeToActiveVanishBlock(World par1World, int x, int y, int z, int meta) + { + changeToBlockMeta(par1World, x, y, z, meta); + par1World.playSoundEffect(x + 0.5D, y + 0.5D, z + 0.5D, "random.pop", 0.3F, 0.6F); + + Block thereBlockID = par1World.getBlock(x, y, z); + par1World.scheduleBlockUpdate(x, y, z, thereBlockID, getTickRateFor(thereBlockID, meta, par1World.rand)); + } + + private static int getTickRateFor(Block thereBlockID, int meta, Random rand) + { + return 15; + } + + public int getLightValue(IBlockAccess world, int x, int y, int z) + { + Block blockID = world.getBlock(x, y, z); + int meta = world.getBlockMetadata(x, y, z); + if (blockID != this) { + return 0; + } + return 10; + } + + public boolean hasTileEntity(int metadata) + { + return (metadata == 0); + } + + public TileEntity createTileEntity(World world, int metadata) + { + if (metadata == 0) { + Utils.LOG_INFO("I have been created. [Antigriefer]"+this.getLocalizedName()); + return new TileEntityReverter(); + } + return null; + } + + public Item getItemDropped(int meta, Random par2Random, int par3) + { + switch (meta) + { + case 0: + return null; + } + return Item.getItemFromBlock(this); + } + + public int damageDropped(int meta) + { + return meta; + } +} diff --git a/src/Java/miscutil/core/tileentities/TileEntityReverter.java b/src/Java/miscutil/core/tileentities/TileEntityReverter.java new file mode 100644 index 0000000000..4ee8eeed4b --- /dev/null +++ b/src/Java/miscutil/core/tileentities/TileEntityReverter.java @@ -0,0 +1,309 @@ +package miscutil.core.tileentities; + +import java.util.Random; + +import miscutil.core.block.ModBlocks; +import net.minecraft.block.Block; +import net.minecraft.init.Blocks; +import net.minecraft.tileentity.TileEntity; + + + +public class TileEntityReverter extends TileEntity +{ + private static final int REVERT_CHANCE = 10; + public int radius = 16; + public int diameter = 8 * this.radius + 4; + public double requiredPlayerRange = 64.0D; + public Random rand = new Random(); + private int tickCount; + private boolean slowScan; + private int ticksSinceChange; + private Block[] blockData; + private byte[] metaData; + + public boolean canUpdate(){ + return true; + } + + public void updateEntity() + { + if (anyPlayerInRange()) + { + this.tickCount += 1; + if (this.worldObj.isRemote) + { + double var1 = this.xCoord + this.worldObj.rand.nextFloat(); + double var3 = this.yCoord + this.worldObj.rand.nextFloat(); + double var5 = this.zCoord + this.worldObj.rand.nextFloat(); + + this.worldObj.spawnParticle("enchantmenttable", var1, var3, var5, 0.0D, 0.0D, 0.0D); + if (this.rand.nextInt(5) == 0) + { + makeRandomOutline(); + makeRandomOutline(); + makeRandomOutline(); + } + } + else + { + if ((this.blockData == null) || (this.metaData == null)) + { + captureBlockData(); + this.slowScan = true; + } + if ((!this.slowScan) || (this.tickCount % 20 == 0)) { + if (scanAndRevertChanges()) + { + this.slowScan = false; + this.ticksSinceChange = 0; + } + else + { + this.ticksSinceChange += 1; + if (this.ticksSinceChange > 20) { + this.slowScan = true; + } + } + } + } + } + else + { + this.blockData = null; + this.metaData = null; + + this.tickCount = 0; + } + } + + private void makeRandomOutline() + { + makeOutline(this.rand.nextInt(12)); + } + + private void makeOutline(int outline) + { + double sx = this.xCoord; + double sy = this.yCoord; + double sz = this.zCoord; + + double dx = this.xCoord; + double dy = this.yCoord; + double dz = this.zCoord; + switch (outline) + { + case 0: + sx -= this.radius; + dx -= this.radius; + sz -= this.radius; + dz += this.radius + 1; + case 8: + sx -= this.radius; + dx += this.radius + 1; + sz -= this.radius; + dz -= this.radius; + break; + case 1: + case 9: + sx -= this.radius; + dx -= this.radius; + sz -= this.radius; + dz += this.radius + 1; + break; + case 2: + case 10: + sx -= this.radius; + dx += this.radius + 1; + sz += this.radius + 1; + dz += this.radius + 1; + break; + case 3: + case 11: + sx += this.radius + 1; + dx += this.radius + 1; + sz -= this.radius; + dz += this.radius + 1; + break; + case 4: + sx -= this.radius; + dx -= this.radius; + sz -= this.radius; + dz -= this.radius; + break; + case 5: + sx += this.radius + 1; + dx += this.radius + 1; + sz -= this.radius; + dz -= this.radius; + break; + case 6: + sx += this.radius + 1; + dx += this.radius + 1; + sz += this.radius + 1; + dz += this.radius + 1; + break; + case 7: + sx -= this.radius; + dx -= this.radius; + sz += this.radius + 1; + dz += this.radius + 1; + } + switch (outline) + { + case 0: + case 1: + case 2: + case 3: + sy += this.radius + 1; + dy += this.radius + 1; + break; + case 4: + case 5: + case 6: + case 7: + sy -= this.radius; + dy += this.radius + 1; + break; + case 8: + case 9: + case 10: + case 11: + sy -= this.radius; + dy -= this.radius; + } + if (this.rand.nextBoolean()) { + drawParticleLine(this.xCoord + 0.5D, this.yCoord + 0.5D, this.zCoord + 0.5D, dx, dy, dz); + } else { + drawParticleLine(sx, sy, sz, this.xCoord + 0.5D, this.yCoord + 0.5D, this.zCoord + 0.5D); + } + drawParticleLine(sx, sy, sz, dx, dy, dz); + } + + protected void drawParticleLine(double srcX, double srcY, double srcZ, double destX, double destY, double destZ) + { + int particles = 16; + for (int i = 0; i < particles; i++) + { + double trailFactor = i / (particles - 1.0D); + + double tx = srcX + (destX - srcX) * trailFactor + this.rand.nextFloat() * 0.005D; + double ty = srcY + (destY - srcY) * trailFactor + this.rand.nextFloat() * 0.005D; + double tz = srcZ + (destZ - srcZ) * trailFactor + this.rand.nextFloat() * 0.005D; + this.worldObj.spawnParticle("portal", tx, ty, tz, 0.0D, 0.0D, 0.0D); + } + } + + private boolean scanAndRevertChanges() + { + int index = 0; + boolean reverted = false; + for (int x = -this.radius; x <= this.radius; x++) { + for (int y = -this.radius; y <= this.radius; y++) { + for (int z = -this.radius; z <= this.radius; z++) + { + Block blockID = this.worldObj.getBlock(this.xCoord + x, this.yCoord + y, this.zCoord + z); + byte meta = (byte)this.worldObj.getBlockMetadata(this.xCoord + x, this.yCoord + y, this.zCoord + z); + if (this.blockData[index] != blockID) { + if (revertBlock(this.xCoord + x, this.yCoord + y, this.zCoord + z, blockID, meta, this.blockData[index], this.metaData[index])) + { + reverted = true; + } + else + { + this.blockData[index] = blockID; + this.metaData[index] = meta; + } + } + index++; + } + } + } + return reverted; + } + + private boolean revertBlock(int x, int y, int z, Block thereBlockID, byte thereMeta, Block replaceBlockID, byte replaceMeta) + { + /*if ((thereBlockID == Blocks.air) && (!replaceBlockID.getMaterial().blocksMovement())) + { + System.out.println("Not replacing block " + replaceBlockID + " because it doesn't block movement"); + + return false; + }*/ + if (isUnrevertable(thereBlockID, thereMeta, replaceBlockID, replaceMeta)) { + return false; + } + if (this.rand.nextInt(5) == 0) + { + if (replaceBlockID != Blocks.air) + { + //replaceBlockID = null; + replaceMeta = 4; + } + this.worldObj.setBlock(x, y, z, replaceBlockID, replaceMeta, 2); + if (thereBlockID == Blocks.air) + { + this.worldObj.playAuxSFX(2001, x, y, z, Block.getIdFromBlock(replaceBlockID) + (replaceMeta << 12)); + } + else if (replaceBlockID == Blocks.air) + { + this.worldObj.playAuxSFX(2001, x, y, z, Block.getIdFromBlock(thereBlockID) + (thereMeta << 12)); + thereBlockID.dropBlockAsItem(this.worldObj, x, y, z, thereMeta, 0); + } + } + return true; + } + + private boolean isUnrevertable(Block thereBlockID, byte thereMeta, Block replaceBlockID, byte replaceMeta) + { + if ((thereBlockID == ModBlocks.blockGriefSaver) || (replaceBlockID == ModBlocks.blockGriefSaver)) { + return true; + } + /*if (((thereBlockID == towerTranslucent) && (thereMeta != 4)) || ((replaceBlockID == towerTranslucent) && (replaceMeta != 4))) { + return true; + }*/ + if ((thereBlockID == Blocks.redstone_lamp) && (replaceBlockID == Blocks.lit_redstone_lamp)) { + return true; + } + if ((thereBlockID == Blocks.lit_redstone_lamp) && (replaceBlockID == Blocks.redstone_lamp)) { + return true; + } + /*if ((thereBlockID == Blocks.water) || (replaceBlockID == Blocks.flowing_water)) { + return true; + } + if ((thereBlockID == Blocks.flowing_water) || (replaceBlockID == Blocks.water)) { + return true; + }*/ + if (replaceBlockID == Blocks.tnt) { + return true; + } + return false; + } + + private void captureBlockData() + { + this.blockData = new Block[this.diameter * this.diameter * this.diameter]; + this.metaData = new byte[this.diameter * this.diameter * this.diameter]; + + int index = 0; + for (int x = -this.radius; x <= this.radius; x++) { + for (int y = -this.radius; y <= this.radius; y++) { + for (int z = -this.radius; z <= this.radius; z++) + { + Block blockID = this.worldObj.getBlock(this.xCoord + x, this.yCoord + y, this.zCoord + z); + int meta = this.worldObj.getBlockMetadata(this.xCoord + x, this.yCoord + y, this.zCoord + z); + + this.blockData[index] = blockID; + this.metaData[index] = ((byte)meta); + + index++; + } + } + } + } + + public boolean anyPlayerInRange() + { + return this.worldObj.getClosestPlayer(this.xCoord + 0.5D, this.yCoord + 0.5D, this.zCoord + 0.5D, this.requiredPlayerRange) != null; + } +} diff --git a/src/Java/miscutil/core/util/Log.java b/src/Java/miscutil/core/util/Log.java new file mode 100644 index 0000000000..ea69618ec7 --- /dev/null +++ b/src/Java/miscutil/core/util/Log.java @@ -0,0 +1,29 @@ +package crazypants.enderio; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public final class Log +{ + public static final Logger LOGGER = LogManager.getLogger("EnderIO"); + + public static void warn(String msg) + { + LOGGER.warn(msg); + } + + public static void error(String msg) + { + LOGGER.error(msg); + } + + public static void info(String msg) + { + LOGGER.info(msg); + } + + public static void debug(String msg) + { + LOGGER.debug(msg); + } +} diff --git a/src/Java/miscutil/core/waila/IWailaInfoProvider.java b/src/Java/miscutil/core/waila/IWailaInfoProvider.java new file mode 100644 index 0000000000..90b96d4bc0 --- /dev/null +++ b/src/Java/miscutil/core/waila/IWailaInfoProvider.java @@ -0,0 +1,19 @@ +package crazypants.enderio.waila; + +import java.text.NumberFormat; +import java.util.List; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.World; + +public abstract interface IWailaInfoProvider +{ + public static final int BIT_BASIC = 1; + public static final int BIT_COMMON = 2; + public static final int BIT_DETAILED = 4; + public static final int ALL_BITS = 7; + public static final NumberFormat fmt = ; + + public abstract void getWailaInfo(List<String> paramList, EntityPlayer paramEntityPlayer, World paramWorld, int paramInt1, int paramInt2, int paramInt3); + + public abstract int getDefaultDisplayMask(World paramWorld, int paramInt1, int paramInt2, int paramInt3); +} diff --git a/src/Java/miscutil/core/waila/IWailaNBTProvider.java b/src/Java/miscutil/core/waila/IWailaNBTProvider.java new file mode 100644 index 0000000000..5b4f7dbe2b --- /dev/null +++ b/src/Java/miscutil/core/waila/IWailaNBTProvider.java @@ -0,0 +1,8 @@ +package crazypants.enderio.waila; + +import net.minecraft.nbt.NBTTagCompound; + +public abstract interface IWailaNBTProvider +{ + public abstract void getData(NBTTagCompound paramNBTTagCompound); +} diff --git a/src/Java/miscutil/core/waila/WailaCompat.java b/src/Java/miscutil/core/waila/WailaCompat.java new file mode 100644 index 0000000000..1f494f89bd --- /dev/null +++ b/src/Java/miscutil/core/waila/WailaCompat.java @@ -0,0 +1,323 @@ +package crazypants.enderio.waila; + +import crazypants.enderio.EnderIO; +import crazypants.enderio.TileEntityEio; +import crazypants.enderio.block.BlockDarkSteelAnvil; +import crazypants.enderio.conduit.ConduitUtil; +import crazypants.enderio.conduit.IConduit; +import crazypants.enderio.conduit.IConduitBundle; +import crazypants.enderio.conduit.liquid.AbstractTankConduit; +import crazypants.enderio.conduit.liquid.ConduitTank; +import crazypants.enderio.conduit.power.IPowerConduit; +import crazypants.enderio.fluid.Fluids; +import crazypants.enderio.gui.IAdvancedTooltipProvider; +import crazypants.enderio.gui.IResourceTooltipProvider; +import crazypants.enderio.gui.TooltipAddera; +import crazypants.enderio.machine.IIoConfigurable; +import crazypants.enderio.machine.IoMode; +import crazypants.enderio.machine.capbank.TileCapBank; +import crazypants.enderio.machine.power.TileCapacitorBank; +import crazypants.enderio.power.IInternalPoweredTile; +import crazypants.util.IFacade; +import crazypants.util.Lang; +import java.text.NumberFormat; +import java.util.List; +import mcp.mobius.waila.api.ITaggedList; +import mcp.mobius.waila.api.IWailaConfigHandler; +import mcp.mobius.waila.api.IWailaDataAccessor; +import mcp.mobius.waila.api.IWailaDataProvider; +import mcp.mobius.waila.api.IWailaRegistrar; +import mcp.mobius.waila.api.impl.ConfigHandler; +import net.minecraft.block.Block; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.world.World; +import net.minecraft.world.WorldSettings; +import net.minecraft.world.chunk.IChunkProvider; +import net.minecraft.world.storage.WorldInfo; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.fluids.FluidStack; + +public class WailaCompat + implements IWailaDataProvider +{ + private class WailaWorldWrapper + extends World + { + private World wrapped; + + private WailaWorldWrapper(World wrapped) + { + super(wrapped.getWorldInfo().getWorldName(), wrapped.provider, new WorldSettings(wrapped.getWorldInfo()), wrapped.theProfiler); + this.wrapped = wrapped; + this.isRemote = wrapped.isRemote; + } + + public Block getBlock(int x, int y, int z) + { + Block block = this.wrapped.getBlock(x, y, z); + if ((block instanceof IFacade)) { + return ((IFacade)block).getFacade(this.wrapped, x, y, z, -1); + } + return block; + } + + public int getBlockMetadata(int x, int y, int z) + { + Block block = this.wrapped.getBlock(x, y, z); + if ((block instanceof IFacade)) { + return ((IFacade)block).getFacadeMetadata(this.wrapped, x, y, z, -1); + } + return this.wrapped.getBlockMetadata(x, y, z); + } + + public TileEntity getTileEntity(int x, int y, int z) + { + int meta = getBlockMetadata(x, y, z); + Block block = getBlock(x, y, z); + if ((block == null) || (!block.hasTileEntity(meta))) { + return null; + } + TileEntity te = block.createTileEntity(this, meta); + if (te == null) { + return null; + } + te.setWorldObj(this); + te.xCoord = x; + te.yCoord = y; + te.zCoord = z; + + return te; + } + + protected IChunkProvider createChunkProvider() + { + return null; + } + + protected int func_152379_p() + { + return 0; + } + + public Entity getEntityByID(int p_73045_1_) + { + return null; + } + } + + public static final WailaCompat INSTANCE = new WailaCompat(); + private static IWailaDataAccessor _accessor = null; + + public static void load(IWailaRegistrar registrar) + { + registrar.registerStackProvider(INSTANCE, IFacade.class); + registrar.registerStackProvider(INSTANCE, BlockDarkSteelAnvil.class); + + registrar.registerHeadProvider(INSTANCE, Block.class); + registrar.registerBodyProvider(INSTANCE, Block.class); + registrar.registerTailProvider(INSTANCE, Block.class); + + registrar.registerNBTProvider(INSTANCE, TileEntityEio.class); + + registrar.registerSyncedNBTKey("controllerStoredEnergyRF", TileCapacitorBank.class); + + + + + ConfigHandler.instance().addConfig("Ender IO", "facades.hidden", Lang.localize("waila.config.hiddenfacades")); + IWailaInfoProvider.fmt.setMaximumFractionDigits(1); + } + + public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config) + { + MovingObjectPosition pos = accessor.getPosition(); + if (config.getConfig("facades.hidden")) + { + if ((accessor.getBlock() instanceof IFacade)) + { + if (((accessor.getTileEntity() instanceof IConduitBundle)) && (ConduitUtil.isFacadeHidden((IConduitBundle)accessor.getTileEntity(), accessor.getPlayer()))) { + return null; + } + IFacade bundle = (IFacade)accessor.getBlock(); + Block facade = bundle.getFacade(accessor.getWorld(), pos.blockX, pos.blockY, pos.blockZ, accessor.getSide().ordinal()); + if (facade != null) + { + ItemStack ret = facade.getPickBlock(pos, new WailaWorldWrapper(accessor.getWorld(), null), pos.blockX, pos.blockY, pos.blockZ); + return ret; + } + } + } + else if ((accessor.getBlock() instanceof BlockDarkSteelAnvil)) { + return accessor.getBlock().getPickBlock(accessor.getPosition(), accessor.getWorld(), accessor.getPosition().blockX, accessor.getPosition().blockY, accessor.getPosition().blockZ); + } + return null; + } + + public List<String> getWailaHead(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) + { + return currenttip; + } + + public List<String> getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) + { + _accessor = accessor; + + EntityPlayer player = accessor.getPlayer(); + MovingObjectPosition pos = accessor.getPosition(); + int x = pos.blockX;int y = pos.blockY;int z = pos.blockZ; + World world = accessor.getWorld(); + Block block = world.getBlock(x, y, z); + TileEntity te = world.getTileEntity(x, y, z); + Item item = Item.getItemFromBlock(block); + if (((te instanceof IIoConfigurable)) && (block == accessor.getBlock())) + { + IIoConfigurable machine = (IIoConfigurable)te; + ForgeDirection side = accessor.getSide(); + IoMode mode = machine.getIoMode(side); + currenttip.add(EnumChatFormatting.YELLOW + String.format(Lang.localize("gui.machine.side"), new Object[] { EnumChatFormatting.WHITE + Lang.localize(new StringBuilder().append("gui.machine.side.").append(side.name().toLowerCase()).toString()) })); + + currenttip.add(EnumChatFormatting.YELLOW + String.format(Lang.localize("gui.machine.ioMode"), new Object[] { mode.colorLocalisedName() })); + } + if ((block instanceof IWailaInfoProvider)) + { + IWailaInfoProvider info = (IWailaInfoProvider)block; + if ((block instanceof IAdvancedTooltipProvider)) + { + int mask = info.getDefaultDisplayMask(world, pos.blockX, pos.blockY, pos.blockZ); + boolean basic = (mask & 0x1) == 1; + boolean common = (mask & 0x2) == 2; + boolean detailed = (mask & 0x4) == 4; + + IAdvancedTooltipProvider adv = (IAdvancedTooltipProvider)block; + if (common) { + adv.addCommonEntries(itemStack, player, currenttip, false); + } + if ((TooltipAddera.showAdvancedTooltips()) && (detailed)) { + adv.addDetailedEntries(itemStack, player, currenttip, false); + } else if (detailed) { + TooltipAddera.addShowDetailsTooltip(currenttip); + } + if ((!TooltipAddera.showAdvancedTooltips()) && (basic)) { + adv.addBasicEntries(itemStack, player, currenttip, false); + } + } + else if ((block instanceof IResourceTooltipProvider)) + { + TooltipAddera.addInformation((IResourceTooltipProvider)block, itemStack, player, currenttip); + } + if (currenttip.size() > 0) { + currenttip.add(""); + } + info.getWailaInfo(currenttip, player, world, pos.blockX, pos.blockY, pos.blockZ); + } + else if ((block instanceof IAdvancedTooltipProvider)) + { + TooltipAddera.addInformation((IAdvancedTooltipProvider)block, itemStack, player, currenttip, false); + } + else if ((item instanceof IAdvancedTooltipProvider)) + { + TooltipAddera.addInformation((IAdvancedTooltipProvider)item, itemStack, player, currenttip, false); + } + else if ((block instanceof IResourceTooltipProvider)) + { + TooltipAddera.addInformation((IResourceTooltipProvider)block, itemStack, player, currenttip); + } + boolean removeRF = false; + if (((te instanceof IInternalPoweredTile)) && (block == accessor.getBlock()) && (accessor.getNBTData().hasKey("storedEnergyRF")) && (!(te instanceof TileCapBank))) + { + removeRF = true; + IInternalPoweredTile power = (IInternalPoweredTile)te; + if (power.displayPower()) + { + if (currenttip.size() > 4) { + currenttip.add(""); + } + int stored = (accessor.getTileEntity() instanceof TileCapacitorBank) ? power.getEnergyStored() : accessor.getNBTData().getInteger("storedEnergyRF"); + int max = power.getMaxEnergyStored(); + + currenttip.add(String.format("%s%s%s / %s%s%s RF", new Object[] { EnumChatFormatting.WHITE, IWailaInfoProvider.fmt.format(stored), EnumChatFormatting.RESET, EnumChatFormatting.WHITE, IWailaInfoProvider.fmt.format(max), EnumChatFormatting.RESET })); + } + } + else if (((te instanceof IConduitBundle)) && (itemStack != null) && (itemStack.getItem() == EnderIO.itemPowerConduit)) + { + removeRF = true; + NBTTagCompound nbtRoot = accessor.getNBTData(); + short nbtVersion = nbtRoot.getShort("nbtVersion"); + NBTTagList conduitTags = (NBTTagList)nbtRoot.getTag("conduits"); + if (conduitTags != null) { + for (int i = 0; i < conduitTags.tagCount(); i++) + { + NBTTagCompound conduitTag = conduitTags.getCompoundTagAt(i); + IConduit conduit = ConduitUtil.readConduitFromNBT(conduitTag, nbtVersion); + if ((conduit instanceof IPowerConduit)) { + currenttip.add(String.format("%s%s%s / %s%s%s RF", new Object[] { EnumChatFormatting.WHITE, IWailaInfoProvider.fmt.format(((IPowerConduit)conduit).getEnergyStored()), EnumChatFormatting.RESET, EnumChatFormatting.WHITE, IWailaInfoProvider.fmt.format(((IConduitBundle)te).getMaxEnergyStored()), EnumChatFormatting.RESET })); + } + } + } + } + else if (((te instanceof IConduitBundle)) && (itemStack != null) && (itemStack.getItem() == EnderIO.itemLiquidConduit)) + { + NBTTagCompound nbtRoot = accessor.getNBTData(); + short nbtVersion = nbtRoot.getShort("nbtVersion"); + NBTTagList conduitTags = (NBTTagList)nbtRoot.getTag("conduits"); + if (conduitTags != null) { + for (int i = 0; i < conduitTags.tagCount(); i++) + { + NBTTagCompound conduitTag = conduitTags.getCompoundTagAt(i); + IConduit conduit = ConduitUtil.readConduitFromNBT(conduitTag, nbtVersion); + if ((conduit instanceof AbstractTankConduit)) + { + AbstractTankConduit tankConduit = (AbstractTankConduit)conduit; + ConduitTank tank = tankConduit.getTank(); + if (tank.getFluid() == null) { + break; + } + String lockedStr = tankConduit.isFluidTypeLocked() ? Lang.localize("itemLiquidConduit.lockedWaila") : ""; + String fluidName = tank.getFluid().getLocalizedName(); + int fluidAmount = tank.getFluidAmount(); + if (fluidAmount > 0) { + currenttip.add(String.format("%s%s%s%s %s%s%s %s", new Object[] { lockedStr, EnumChatFormatting.WHITE, fluidName, EnumChatFormatting.RESET, EnumChatFormatting.WHITE, IWailaInfoProvider.fmt.format(fluidAmount), EnumChatFormatting.RESET, Fluids.MB() })); + } else if (tankConduit.isFluidTypeLocked()) { + currenttip.add(String.format("%s%s%s%s", new Object[] { lockedStr, EnumChatFormatting.WHITE, fluidName, EnumChatFormatting.RESET })); + } + break; + } + } + } + } + if (removeRF) { + ((ITaggedList)currenttip).removeEntries("RFEnergyStorage"); + } + return currenttip; + } + + public List<String> getWailaTail(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) + { + return currenttip; + } + + public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, int x, int y, int z) + { + if ((te instanceof IWailaNBTProvider)) { + ((IWailaNBTProvider)te).getData(tag); + } + tag.setInteger("x", x); + tag.setInteger("y", y); + tag.setInteger("z", z); + return tag; + } + + public static NBTTagCompound getNBTData() + { + return _accessor.getNBTData(); + } +} diff --git a/src/Java/miscutil/enderio/conduit/gas/AbstractGasConduit.java b/src/Java/miscutil/enderio/conduit/gas/AbstractGasConduit.java index ee7ba3d954..2bc3be3d67 100644 --- a/src/Java/miscutil/enderio/conduit/gas/AbstractGasConduit.java +++ b/src/Java/miscutil/enderio/conduit/gas/AbstractGasConduit.java @@ -1,8 +1,5 @@ package crazypants.enderio.conduit.gas; -import com.enderio.core.common.util.BlockCoord; -import com.enderio.core.common.util.DyeColor; -import cpw.mods.fml.common.Optional.Method; import crazypants.enderio.conduit.AbstractConduit; import crazypants.enderio.conduit.ConduitUtil; import crazypants.enderio.conduit.ConnectionMode; @@ -10,6 +7,8 @@ import crazypants.enderio.conduit.IConduit; import crazypants.enderio.conduit.IConduitBundle; import crazypants.enderio.machine.RedstoneControlMode; import crazypants.enderio.machine.reservoir.TileReservoir; +import crazypants.util.BlockCoord; +import crazypants.util.DyeColor; import java.util.EnumMap; import java.util.HashMap; import java.util.Map; @@ -31,14 +30,12 @@ public abstract class AbstractGasConduit protected final Map<ForgeDirection, Integer> externalRedstoneSignals = new HashMap(); protected boolean redstoneStateDirty = true; - @Optional.Method(modid="MekanismAPI|gas") public IGasHandler getExternalHandler(ForgeDirection direction) { IGasHandler con = GasUtil.getExternalGasHandler(getBundle().getWorld(), getLocation().getLocation(direction)); return (con != null) && (!(con instanceof IConduitBundle)) ? con : null; } - @Optional.Method(modid="MekanismAPI|gas") public IGasHandler getTankContainer(BlockCoord bc) { return GasUtil.getGasHandler(getBundle().getWorld(), bc); diff --git a/src/Java/miscutil/enderio/conduit/gas/AbstractGasTankConduit.java b/src/Java/miscutil/enderio/conduit/gas/AbstractGasTankConduit.java index 7226ad8328..5a0b50c370 100644 --- a/src/Java/miscutil/enderio/conduit/gas/AbstractGasTankConduit.java +++ b/src/Java/miscutil/enderio/conduit/gas/AbstractGasTankConduit.java @@ -1,7 +1,5 @@ package crazypants.enderio.conduit.gas; -import com.enderio.core.common.util.BlockCoord; -import cpw.mods.fml.common.Optional.Method; import crazypants.enderio.conduit.AbstractConduitNetwork; import crazypants.enderio.conduit.ConduitUtil; import crazypants.enderio.conduit.ConnectionMode; @@ -9,6 +7,7 @@ import crazypants.enderio.conduit.IConduitBundle; import crazypants.enderio.conduit.RaytraceResult; import crazypants.enderio.conduit.geom.CollidableComponent; import crazypants.enderio.tool.ToolUtil; +import crazypants.util.BlockCoord; import java.util.List; import mekanism.api.gas.GasStack; import mekanism.api.gas.IGasHandler; @@ -101,7 +100,6 @@ public abstract class AbstractGasTankConduit public abstract AbstractGasTankConduitNetwork<? extends AbstractGasTankConduit> getTankNetwork(); - @Optional.Method(modid="MekanismAPI|gas") public void setGasType(GasStack gasType) { if ((this.tank.getGas() != null) && (this.tank.getGas().isGasEqual(gasType))) { @@ -121,7 +119,6 @@ public abstract class AbstractGasTankConduit return this.tank; } - @Optional.Method(modid="MekanismAPI|gas") public GasStack getGasType() { GasStack result = null; diff --git a/src/Java/miscutil/enderio/conduit/gas/AbstractGasTankConduitNetwork.java b/src/Java/miscutil/enderio/conduit/gas/AbstractGasTankConduitNetwork.java index 75a4a3c1ad..62d8daa205 100644 --- a/src/Java/miscutil/enderio/conduit/gas/AbstractGasTankConduitNetwork.java +++ b/src/Java/miscutil/enderio/conduit/gas/AbstractGasTankConduitNetwork.java @@ -10,7 +10,7 @@ public class AbstractGasTankConduitNetwork<T extends AbstractGasTankConduit> protected AbstractGasTankConduitNetwork(Class<T> cl) { - super(cl, IGasConduit.class); + super(cl); } public GasStack getGasType() @@ -18,6 +18,11 @@ public class AbstractGasTankConduitNetwork<T extends AbstractGasTankConduit> return this.gasType; } + public Class<IGasConduit> getBaseConduitType() + { + return IGasConduit.class; + } + public void addConduit(T con) { super.addConduit(con); diff --git a/src/Java/miscutil/enderio/conduit/gas/ConduitGasTank.java b/src/Java/miscutil/enderio/conduit/gas/ConduitGasTank.java index 08aef66656..521e08a589 100644 --- a/src/Java/miscutil/enderio/conduit/gas/ConduitGasTank.java +++ b/src/Java/miscutil/enderio/conduit/gas/ConduitGasTank.java @@ -1,6 +1,5 @@ package crazypants.enderio.conduit.gas; -import cpw.mods.fml.common.Optional.Method; import mekanism.api.gas.Gas; import mekanism.api.gas.GasStack; import mekanism.api.gas.GasTank; @@ -64,7 +63,6 @@ public class ConduitGasTank } } - @Optional.Method(modid="MekanismAPI|gas") public int receive(GasStack resource, boolean doReceive) { if ((resource == null) || (resource.getGas().getID() < 0)) { @@ -103,7 +101,6 @@ public class ConduitGasTank return space; } - @Optional.Method(modid="MekanismAPI|gas") public GasStack draw(int maxDrain, boolean doDraw) { if ((this.stored == null) || (this.stored.getGas().getID() < 0)) { diff --git a/src/Java/miscutil/enderio/conduit/gas/GasConduit.java b/src/Java/miscutil/enderio/conduit/gas/GasConduit.java index 7f34570853..59300c4aa8 100644 --- a/src/Java/miscutil/enderio/conduit/gas/GasConduit.java +++ b/src/Java/miscutil/enderio/conduit/gas/GasConduit.java @@ -1,9 +1,5 @@ package crazypants.enderio.conduit.gas; -import com.enderio.core.client.render.IconUtil; -import com.enderio.core.client.render.IconUtil.IIconProvider; -import com.enderio.core.common.util.BlockCoord; -import cpw.mods.fml.common.Optional.Method; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import crazypants.enderio.EnderIO; @@ -13,6 +9,9 @@ import crazypants.enderio.conduit.IConduit; import crazypants.enderio.conduit.IConduitBundle; import crazypants.enderio.conduit.geom.CollidableComponent; import crazypants.enderio.config.Config; +import crazypants.render.IconUtil; +import crazypants.render.IconUtil.IIconProvider; +import crazypants.util.BlockCoord; import java.util.HashMap; import java.util.Map; import mekanism.api.gas.Gas; @@ -216,39 +215,22 @@ public class GasConduit return null; } - @Deprecated - @Optional.Method(modid="MekanismAPI|gas") - public int receiveGas(ForgeDirection side, GasStack stack) + public int receiveGas(ForgeDirection from, GasStack resource) { - return receiveGas(side, stack, true); - } - - @Optional.Method(modid="MekanismAPI|gas") - public int receiveGas(ForgeDirection side, GasStack stack, boolean doTransfer) - { - if ((this.network == null) || (!getConnectionMode(side).acceptsInput())) { + if ((this.network == null) || (!getConnectionMode(from).acceptsInput())) { return 0; } - return this.network.fill(side, stack, doTransfer); - } - - @Deprecated - @Optional.Method(modid="MekanismAPI|gas") - public GasStack drawGas(ForgeDirection side, int amount) - { - return drawGas(side, amount, true); + return this.network.fill(from, resource, true); } - @Optional.Method(modid="MekanismAPI|gas") - public GasStack drawGas(ForgeDirection side, int amount, boolean doTransfer) + public GasStack drawGas(ForgeDirection from, int maxDrain) { - if ((this.network == null) || (!getConnectionMode(side).acceptsOutput())) { + if ((this.network == null) || (!getConnectionMode(from).acceptsOutput())) { return null; } - return this.network.drain(side, amount, doTransfer); + return this.network.drain(from, maxDrain, true); } - @Optional.Method(modid="MekanismAPI|gas") public boolean canReceiveGas(ForgeDirection from, Gas gas) { if (this.network == null) { @@ -257,7 +239,6 @@ public class GasConduit return (getConnectionMode(from).acceptsInput()) && (GasConduitNetwork.areGassCompatable(getGasType(), new GasStack(gas, 0))); } - @Optional.Method(modid="MekanismAPI|gas") public boolean canDrawGas(ForgeDirection from, Gas gas) { if (this.network == null) { diff --git a/src/Java/miscutil/enderio/conduit/gas/GasConduitNetwork.java b/src/Java/miscutil/enderio/conduit/gas/GasConduitNetwork.java index 79990c6959..43db642248 100644 --- a/src/Java/miscutil/enderio/conduit/gas/GasConduitNetwork.java +++ b/src/Java/miscutil/enderio/conduit/gas/GasConduitNetwork.java @@ -1,9 +1,12 @@ package crazypants.enderio.conduit.gas; -import com.enderio.core.common.util.BlockCoord; +import cpw.mods.fml.common.gameevent.TickEvent.ServerTickEvent; +import crazypants.enderio.conduit.ConduitNetworkTickHandler; +import crazypants.enderio.conduit.ConduitNetworkTickHandler.TickListener; import crazypants.enderio.conduit.ConnectionMode; import crazypants.enderio.conduit.IConduit; import crazypants.enderio.conduit.IConduitBundle; +import crazypants.util.BlockCoord; import java.util.HashSet; import java.util.Iterator; import java.util.List; @@ -23,12 +26,19 @@ public class GasConduitNetwork private int ticksActiveUnsynced; private boolean lastSyncedActive = false; private int lastSyncedVolume = -1; + private long timeAtLastApply; + private final InnerTickHandler tickHandler = new InnerTickHandler(null); public GasConduitNetwork() { super(GasConduit.class); } + public Class<IGasConduit> getBaseConduitType() + { + return IGasConduit.class; + } + public void addConduit(GasConduit con) { this.tank.setCapacity(this.tank.getMaxGas() + 1000); @@ -87,7 +97,24 @@ public class GasConduitNetwork } } - public void doNetworkTick() + public void onUpdateEntity(IConduit conduit) + { + World world = conduit.getBundle().getEntity().getWorldObj(); + if (world == null) { + return; + } + if (world.isRemote) { + return; + } + long curTime = world.getTotalWorldTime(); + if ((curTime > 0L) && (curTime != this.timeAtLastApply)) + { + this.timeAtLastApply = curTime; + ConduitNetworkTickHandler.instance.addListener(this.tickHandler); + } + } + + private void doTick() { if ((this.gasType == null) || (this.outputs.isEmpty()) || (!this.tank.containsValidGas()) || (this.tank.isEmpty())) { @@ -277,4 +304,17 @@ public class GasConduitNetwork setConduitVolumes(); this.lastSyncedVolume = this.tank.getStored(); } + + private class InnerTickHandler + implements ConduitNetworkTickHandler.TickListener + { + private InnerTickHandler() {} + + public void tickStart(TickEvent.ServerTickEvent evt) {} + + public void tickEnd(TickEvent.ServerTickEvent evt) + { + GasConduitNetwork.this.doTick(); + } + } } diff --git a/src/Java/miscutil/enderio/conduit/gas/GasConduitRenderer.java b/src/Java/miscutil/enderio/conduit/gas/GasConduitRenderer.java index 4bb0a2eb1c..9b53361b44 100644 --- a/src/Java/miscutil/enderio/conduit/gas/GasConduitRenderer.java +++ b/src/Java/miscutil/enderio/conduit/gas/GasConduitRenderer.java @@ -1,11 +1,5 @@ package crazypants.enderio.conduit.gas; -import com.enderio.core.client.render.BoundingBox; -import com.enderio.core.client.render.CubeRenderer; -import com.enderio.core.client.render.RenderUtil; -import com.enderio.core.common.vecmath.Vector2f; -import com.enderio.core.common.vecmath.Vector3d; -import com.enderio.core.common.vecmath.Vertex; import crazypants.enderio.EnderIO; import crazypants.enderio.conduit.BlockConduitBundle; import crazypants.enderio.conduit.ConnectionMode; @@ -16,6 +10,12 @@ import crazypants.enderio.conduit.geom.ConnectionModeGeometry; import crazypants.enderio.conduit.geom.Offset; import crazypants.enderio.conduit.render.ConduitBundleRenderer; import crazypants.enderio.conduit.render.DefaultConduitRenderer; +import crazypants.render.BoundingBox; +import crazypants.render.CubeRenderer; +import crazypants.render.RenderUtil; +import crazypants.vecmath.Vector2f; +import crazypants.vecmath.Vector3d; +import crazypants.vecmath.Vertex; import java.util.List; import mekanism.api.gas.Gas; import mekanism.api.gas.GasStack; @@ -112,14 +112,14 @@ public class GasConduitRenderer if (conduit.getConnectionMode(component.dir) == ConnectionMode.DISABLED) { tex = EnderIO.blockConduitBundle.getConnectorIcon(component.data); - Object corners = component.bound.getCornersWithUvForFace(component.dir, tex.getMinU(), tex.getMaxU(), tex.getMinV(), tex.getMaxV()); + List<Vertex> corners = component.bound.getCornersWithUvForFace(component.dir, tex.getMinU(), tex.getMaxU(), tex.getMinV(), tex.getMaxV()); Tessellator tessellator = Tessellator.instance; - for (Vertex c : (List)corners) { + for (Vertex c : corners) { CubeRenderer.addVecWithUV(c.xyz, c.uv.x, c.uv.y); } - for (int i = ((List)corners).size() - 1; i >= 0; i--) + for (int i = corners.size() - 1; i >= 0; i--) { - Vertex c = (Vertex)((List)corners).get(i); + Vertex c = (Vertex)corners.get(i); CubeRenderer.addVecWithUV(c.xyz, c.uv.x, c.uv.y); } } diff --git a/src/Java/miscutil/enderio/conduit/gas/GasOutput.java b/src/Java/miscutil/enderio/conduit/gas/GasOutput.java index 02bb4e71dd..f8757b204d 100644 --- a/src/Java/miscutil/enderio/conduit/gas/GasOutput.java +++ b/src/Java/miscutil/enderio/conduit/gas/GasOutput.java @@ -1,6 +1,6 @@ package crazypants.enderio.conduit.gas; -import com.enderio.core.common.util.BlockCoord; +import crazypants.util.BlockCoord; import net.minecraftforge.common.util.ForgeDirection; public class GasOutput diff --git a/src/Java/miscutil/enderio/conduit/gas/GasUtil.java b/src/Java/miscutil/enderio/conduit/gas/GasUtil.java index 1ccadc9485..fcc02ca942 100644 --- a/src/Java/miscutil/enderio/conduit/gas/GasUtil.java +++ b/src/Java/miscutil/enderio/conduit/gas/GasUtil.java @@ -1,10 +1,11 @@ package crazypants.enderio.conduit.gas; -import com.enderio.core.common.util.BlockCoord; -import cpw.mods.fml.common.ModAPIManager; -import cpw.mods.fml.common.Optional.Method; +import cpw.mods.fml.common.Loader; +import cpw.mods.fml.common.ModContainer; import crazypants.enderio.conduit.IConduitBundle; import crazypants.enderio.config.Config; +import crazypants.util.BlockCoord; +import java.util.Map; import mekanism.api.gas.Gas; import mekanism.api.gas.GasStack; import mekanism.api.gas.IGasHandler; @@ -15,15 +16,25 @@ public final class GasUtil { private static boolean useCheckPerformed = false; private static boolean isGasConduitEnabled = false; - public static final String API_NAME = "MekanismAPI|gas"; public static boolean isGasConduitEnabled() { if (!useCheckPerformed) { - if (Config.isGasConduitEnabled) { - isGasConduitEnabled = ModAPIManager.INSTANCE.hasAPI("MekanismAPI|gas"); - } else { + String configOption = Config.isGasConduitEnabled; + if (configOption.equalsIgnoreCase("auto")) + { + isGasConduitEnabled = Loader.isModLoaded("Mekanism"); + if (isGasConduitEnabled) { + isGasConduitEnabled = ((ModContainer)Loader.instance().getIndexedModList().get("Mekanism")).getVersion().startsWith("7"); + } + } + else if (configOption.equalsIgnoreCase("true")) + { + isGasConduitEnabled = true; + } + else + { isGasConduitEnabled = false; } useCheckPerformed = true; @@ -31,27 +42,23 @@ public final class GasUtil return isGasConduitEnabled; } - @Optional.Method(modid="MekanismAPI|gas") public static IGasHandler getExternalGasHandler(IBlockAccess world, BlockCoord bc) { IGasHandler con = getGasHandler(world, bc); return (con != null) && (!(con instanceof IConduitBundle)) ? con : null; } - @Optional.Method(modid="MekanismAPI|gas") public static IGasHandler getGasHandler(IBlockAccess world, BlockCoord bc) { return getGasHandler(world, bc.x, bc.y, bc.z); } - @Optional.Method(modid="MekanismAPI|gas") public static IGasHandler getGasHandler(IBlockAccess world, int x, int y, int z) { TileEntity te = world.getTileEntity(x, y, z); return getGasHandler(te); } - @Optional.Method(modid="MekanismAPI|gas") public static IGasHandler getGasHandler(TileEntity te) { if ((te instanceof IGasHandler)) { @@ -60,7 +67,6 @@ public final class GasUtil return null; } - @Optional.Method(modid="MekanismAPI|gas") public static boolean isGasValid(GasStack gas) { if (gas != null) diff --git a/src/Java/miscutil/enderio/conduit/gas/IGasConduit.java b/src/Java/miscutil/enderio/conduit/gas/IGasConduit.java index f41f6ba9fc..6b09293e63 100644 --- a/src/Java/miscutil/enderio/conduit/gas/IGasConduit.java +++ b/src/Java/miscutil/enderio/conduit/gas/IGasConduit.java @@ -1,12 +1,10 @@ package crazypants.enderio.conduit.gas; -import cpw.mods.fml.common.Optional.Interface; import crazypants.enderio.conduit.IConduit; import crazypants.enderio.conduit.IExtractor; import mekanism.api.gas.IGasHandler; import net.minecraftforge.common.util.ForgeDirection; -@Optional.Interface(iface="mekanism.api.gas.IGasHandler", modid="MekanismAPI|gas") public abstract interface IGasConduit extends IConduit, IGasHandler, IExtractor { diff --git a/src/Java/miscutil/enderio/conduit/gas/ItemGasConduit.java b/src/Java/miscutil/enderio/conduit/gas/ItemGasConduit.java index df9fe0844b..d09e657023 100644 --- a/src/Java/miscutil/enderio/conduit/gas/ItemGasConduit.java +++ b/src/Java/miscutil/enderio/conduit/gas/ItemGasConduit.java @@ -1,16 +1,15 @@ package crazypants.enderio.conduit.gas; -import com.enderio.core.api.client.gui.IAdvancedTooltipProvider; -import com.enderio.core.client.handlers.SpecialTooltipHandler; -import com.enderio.core.common.Lang; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import crazypants.enderio.EnderIO; import crazypants.enderio.ModObject; import crazypants.enderio.conduit.AbstractItemConduit; import crazypants.enderio.conduit.IConduit; import crazypants.enderio.conduit.ItemConduitSubtype; import crazypants.enderio.config.Config; +import crazypants.enderio.gui.IAdvancedTooltipProvider; +import crazypants.enderio.gui.TooltipAddera; +import crazypants.util.Lang; import java.util.List; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -19,8 +18,7 @@ public class ItemGasConduit extends AbstractItemConduit implements IAdvancedTooltipProvider { - private static ItemConduitSubtype[] subtypes = { new ItemConduitSubtype(ModObject.itemGasConduit - .name(), "enderio:itemGasConduit") }; + private static ItemConduitSubtype[] subtypes = { new ItemConduitSubtype(ModObject.itemGasConduit.name(), "enderio:itemGasConduit") }; public static ItemGasConduit create() { @@ -58,12 +56,12 @@ public class ItemGasConduit @SideOnly(Side.CLIENT) public void addDetailedEntries(ItemStack itemstack, EntityPlayer entityplayer, List list, boolean flag) { - String gpt = " " + EnderIO.lang.localize("gas.gasTick"); + String gpt = " " + Lang.localize("gas.gasTick"); int extractRate = Config.gasConduitExtractRate; int maxIo = Config.gasConduitMaxIoRate; - list.add(EnderIO.lang.localize("itemGasConduit.tooltip.maxExtract") + " " + extractRate + gpt); - list.add(EnderIO.lang.localize("itemGasConduit.tooltip.maxIo") + " " + maxIo + gpt); - SpecialTooltipHandler.addDetailedTooltipFromResources(list, "enderio.itemGasConduit"); + list.add(Lang.localize("itemGasConduit.tooltip.maxExtract") + " " + extractRate + gpt); + list.add(Lang.localize("itemGasConduit.tooltip.maxIo") + " " + maxIo + gpt); + TooltipAddera.addDetailedTooltipFromResources(list, "enderio.itemGasConduit"); } public boolean shouldHideFacades(ItemStack stack, EntityPlayer player) diff --git a/src/Java/miscutil/enderio/conduit/gas/PacketGasLevel.java b/src/Java/miscutil/enderio/conduit/gas/PacketGasLevel.java index 0e1b96313c..15ea65840a 100644 --- a/src/Java/miscutil/enderio/conduit/gas/PacketGasLevel.java +++ b/src/Java/miscutil/enderio/conduit/gas/PacketGasLevel.java @@ -1,11 +1,11 @@ package crazypants.enderio.conduit.gas; -import com.enderio.core.common.network.MessageTileEntity; import cpw.mods.fml.common.network.ByteBufUtils; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; import crazypants.enderio.conduit.IConduitBundle; +import crazypants.enderio.network.MessageTileEntity; import crazypants.util.ClientUtil; import io.netty.buffer.ByteBuf; import net.minecraft.nbt.NBTTagCompound; diff --git a/src/Java/miscutil/gregtech/metatileentity/implementations/GregtechMetaPipeEntity_Cable.java b/src/Java/miscutil/gregtech/metatileentity/implementations/GregtechMetaPipeEntity_Cable.java new file mode 100644 index 0000000000..a4ebe2e9c2 --- /dev/null +++ b/src/Java/miscutil/gregtech/metatileentity/implementations/GregtechMetaPipeEntity_Cable.java @@ -0,0 +1,235 @@ +package miscutil.gregtech.metatileentity.implementations; + +import static gregtech.api.enums.GT_Values.VN; +import gregtech.api.GregTech_API; +import gregtech.api.enums.Dyes; +import gregtech.api.enums.Materials; +import gregtech.api.enums.TextureSet; +import gregtech.api.enums.Textures; +import gregtech.api.interfaces.ITexture; +import gregtech.api.interfaces.metatileentity.IMetaTileEntity; +import gregtech.api.interfaces.metatileentity.IMetaTileEntityCable; +import gregtech.api.interfaces.tileentity.IColoredTileEntity; +import gregtech.api.interfaces.tileentity.IEnergyConnected; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.api.metatileentity.BaseMetaPipeEntity; +import gregtech.api.metatileentity.implementations.GT_MetaPipeEntity_Cable; +import gregtech.api.objects.GT_RenderedTexture; +import gregtech.api.util.GT_Utility; +import ic2.api.energy.tile.IEnergySink; + +import java.util.ArrayList; +import java.util.Arrays; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; +import cofh.api.energy.IEnergyReceiver; + +public class GregtechMetaPipeEntity_Cable extends GT_MetaPipeEntity_Cable implements IMetaTileEntityCable { + public long mTransferredAmperage = 0, mTransferredAmperageLast20 = 0, mTransferredVoltageLast20 = 0; + + public final float mThickNess; + public final Materials mMaterial; + public final long mCableLossPerMeter, mAmperage, mVoltage; + public final boolean mInsulated, mCanShock; + public long mRestRF; + + public GregtechMetaPipeEntity_Cable(int aID, String aName, String aNameRegional, float aThickNess, Materials aMaterial, long aCableLossPerMeter, long aAmperage, long aVoltage, boolean aInsulated, boolean aCanShock) { + super(aID, aName, aNameRegional, 0, aMaterial, aCableLossPerMeter, aAmperage, aVoltage, aInsulated, aCanShock); + mThickNess = aThickNess; + mMaterial = aMaterial; + mAmperage = aAmperage; + mVoltage = aVoltage; + mInsulated = aInsulated; + mCanShock = aCanShock; + mCableLossPerMeter = aCableLossPerMeter; + } + + public GregtechMetaPipeEntity_Cable(String aName, float aThickNess, Materials aMaterial, long aCableLossPerMeter, long aAmperage, long aVoltage, boolean aInsulated, boolean aCanShock) { + super(aName, 0, aMaterial, aCableLossPerMeter, aAmperage, aVoltage, aInsulated, aCanShock); + mThickNess = aThickNess; + mMaterial = aMaterial; + mAmperage = aAmperage; + mVoltage = aVoltage; + mInsulated = aInsulated; + mCanShock = aCanShock; + mCableLossPerMeter = aCableLossPerMeter; + } + + @Override + public byte getTileEntityBaseType() { + return (byte)(mInsulated?9:8); + } + + @Override + public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { + return new GregtechMetaPipeEntity_Cable(mName, mThickNess, mMaterial, mCableLossPerMeter, mAmperage, mVoltage, mInsulated, mCanShock); + } + + @Override + public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aConnections, byte aColorIndex, boolean aConnected, boolean aRedstone) { + if (!mInsulated) return new ITexture[] {new GT_RenderedTexture(mMaterial.mIconSet.mTextures[TextureSet.INDEX_wire], mMaterial.mRGBa)}; + if (aConnected) { + float tThickNess = getThickNess(); + if (tThickNess < 0.37F) return new ITexture[] {new GT_RenderedTexture(mMaterial.mIconSet.mTextures[TextureSet.INDEX_wire], mMaterial.mRGBa), new GT_RenderedTexture(Textures.BlockIcons.INSULATION_TINY , Dyes.getModulation(aColorIndex, Dyes.CABLE_INSULATION.mRGBa))}; + if (tThickNess < 0.49F) return new ITexture[] {new GT_RenderedTexture(mMaterial.mIconSet.mTextures[TextureSet.INDEX_wire], mMaterial.mRGBa), new GT_RenderedTexture(Textures.BlockIcons.INSULATION_SMALL , Dyes.getModulation(aColorIndex, Dyes.CABLE_INSULATION.mRGBa))}; + if (tThickNess < 0.74F) return new ITexture[] {new GT_RenderedTexture(mMaterial.mIconSet.mTextures[TextureSet.INDEX_wire], mMaterial.mRGBa), new GT_RenderedTexture(Textures.BlockIcons.INSULATION_MEDIUM , Dyes.getModulation(aColorIndex, Dyes.CABLE_INSULATION.mRGBa))}; + if (tThickNess < 0.99F) return new ITexture[] {new GT_RenderedTexture(mMaterial.mIconSet.mTextures[TextureSet.INDEX_wire], mMaterial.mRGBa), new GT_RenderedTexture(Textures.BlockIcons.INSULATION_LARGE , Dyes.getModulation(aColorIndex, Dyes.CABLE_INSULATION.mRGBa))}; + return new ITexture[] {new GT_RenderedTexture(mMaterial.mIconSet.mTextures[TextureSet.INDEX_wire], mMaterial.mRGBa), new GT_RenderedTexture(Textures.BlockIcons.INSULATION_HUGE , Dyes.getModulation(aColorIndex, Dyes.CABLE_INSULATION.mRGBa))}; + } + return new ITexture[] {new GT_RenderedTexture(Textures.BlockIcons.INSULATION_FULL, Dyes.getModulation(aColorIndex, Dyes.CABLE_INSULATION.mRGBa))}; + } + + @Override + public void onEntityCollidedWithBlock(World aWorld, int aX, int aY, int aZ, Entity aEntity) { + if (mCanShock && (((BaseMetaPipeEntity)getBaseMetaTileEntity()).mConnections & -128) == 0 && aEntity instanceof EntityLivingBase) GT_Utility.applyElectricityDamage((EntityLivingBase)aEntity, mTransferredVoltageLast20, mTransferredAmperageLast20); + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World aWorld, int aX, int aY, int aZ) { + if (!mCanShock) return super.getCollisionBoundingBoxFromPool(aWorld, aX, aY, aZ); + return AxisAlignedBB.getBoundingBox(aX+0.125D, aY+0.125D, aZ+0.125D, aX+0.875D, aY+0.875D, aZ+0.875D); + } + + @Override public boolean isSimpleMachine() {return true;} + @Override public boolean isFacingValid(byte aFacing) {return false;} + @Override public boolean isValidSlot(int aIndex) {return true;} + // @Override public final boolean renderInside(byte aSide) {return false;} + @Override public int getProgresstime() {return (int)mTransferredAmperage*64;} + @Override public int maxProgresstime() {return (int)mAmperage*64;} + + @Override + public long injectEnergyUnits(byte aSide, long aVoltage, long aAmperage) { + if (!getBaseMetaTileEntity().getCoverBehaviorAtSide(aSide).letsEnergyIn(aSide, getBaseMetaTileEntity().getCoverIDAtSide(aSide), getBaseMetaTileEntity().getCoverDataAtSide(aSide), getBaseMetaTileEntity())) return 0; + return transferElectricity(aSide, aVoltage, aAmperage, new ArrayList<TileEntity>(Arrays.asList((TileEntity)getBaseMetaTileEntity()))); + } + + @Override + public long transferElectricity(byte aSide, long aVoltage, long aAmperage, ArrayList<TileEntity> aAlreadyPassedTileEntityList) { + long rUsedAmperes = 0; + aVoltage -= mCableLossPerMeter; + if (aVoltage > 0) for (byte i = 0; i < 6 && aAmperage > rUsedAmperes; i++) if (i != aSide && (mConnections & (1<<i)) != 0 && getBaseMetaTileEntity().getCoverBehaviorAtSide(i).letsEnergyOut(i, getBaseMetaTileEntity().getCoverIDAtSide(i), getBaseMetaTileEntity().getCoverDataAtSide(i), getBaseMetaTileEntity())) { + TileEntity tTileEntity = getBaseMetaTileEntity().getTileEntityAtSide(i); + if (!aAlreadyPassedTileEntityList.contains(tTileEntity)) { + aAlreadyPassedTileEntityList.add(tTileEntity); + if (tTileEntity instanceof IEnergyConnected) { + if (getBaseMetaTileEntity().getColorization() >= 0) { + byte tColor = ((IEnergyConnected)tTileEntity).getColorization(); + if (tColor >= 0 && tColor != getBaseMetaTileEntity().getColorization()) continue; + } + if (tTileEntity instanceof IGregTechTileEntity && ((IGregTechTileEntity)tTileEntity).getMetaTileEntity() instanceof IMetaTileEntityCable && ((IGregTechTileEntity)tTileEntity).getCoverBehaviorAtSide(GT_Utility.getOppositeSide(i)).letsEnergyIn(GT_Utility.getOppositeSide(i), ((IGregTechTileEntity)tTileEntity).getCoverIDAtSide(GT_Utility.getOppositeSide(i)), ((IGregTechTileEntity)tTileEntity).getCoverDataAtSide(GT_Utility.getOppositeSide(i)), ((IGregTechTileEntity)tTileEntity))) { + if (((IGregTechTileEntity)tTileEntity).getTimer() > 50) rUsedAmperes += ((IMetaTileEntityCable)((IGregTechTileEntity)tTileEntity).getMetaTileEntity()).transferElectricity(GT_Utility.getOppositeSide(i), aVoltage, aAmperage-rUsedAmperes, aAlreadyPassedTileEntityList); + } else { + rUsedAmperes += ((IEnergyConnected)tTileEntity).injectEnergyUnits(GT_Utility.getOppositeSide(i), aVoltage, aAmperage-rUsedAmperes); + } + // } else if (tTileEntity instanceof IEnergySink) { + // ForgeDirection tDirection = ForgeDirection.getOrientation(i).getOpposite(); + // if (((IEnergySink)tTileEntity).acceptsEnergyFrom((TileEntity)getBaseMetaTileEntity(), tDirection)) { + // if (((IEnergySink)tTileEntity).demandedEnergyUnits() > 0 && ((IEnergySink)tTileEntity).injectEnergyUnits(tDirection, aVoltage) < aVoltage) rUsedAmperes++; + // } + } else if (tTileEntity instanceof IEnergySink) { + ForgeDirection tDirection = ForgeDirection.getOrientation(i).getOpposite(); + if (((IEnergySink)tTileEntity).acceptsEnergyFrom((TileEntity)getBaseMetaTileEntity(), tDirection)) { + if (((IEnergySink)tTileEntity).getDemandedEnergy() > 0 && ((IEnergySink)tTileEntity).injectEnergy(tDirection, aVoltage, aVoltage) < aVoltage) rUsedAmperes++; + } + } else if(GregTech_API.mOutputRF && tTileEntity instanceof IEnergyReceiver){ + ForgeDirection tDirection = ForgeDirection.getOrientation(i).getOpposite(); + int rfOut = (int) (aVoltage * GregTech_API.mEUtoRF / 100); + if(((IEnergyReceiver)tTileEntity).receiveEnergy(tDirection, rfOut, true)==rfOut){ + ((IEnergyReceiver)tTileEntity).receiveEnergy(tDirection, rfOut, false); rUsedAmperes++; + }else if(((IEnergyReceiver)tTileEntity).receiveEnergy(tDirection, rfOut, true)>0){ + if(mRestRF==0){ + int RFtrans = ((IEnergyReceiver)tTileEntity).receiveEnergy(tDirection, (int) rfOut, false);rUsedAmperes++; + mRestRF = rfOut - RFtrans; + }else{ + int RFtrans = ((IEnergyReceiver)tTileEntity).receiveEnergy(tDirection, (int) mRestRF, false); + mRestRF = mRestRF - RFtrans; + } + } + if(GregTech_API.mRFExplosions && ((IEnergyReceiver)tTileEntity).getMaxEnergyStored(tDirection) < rfOut * 600){ + if(rfOut > 32 * GregTech_API.mEUtoRF / 100) this.doExplosion(rfOut); + } + } + } + } + mTransferredAmperage += rUsedAmperes; + mTransferredVoltageLast20 = Math.max(mTransferredVoltageLast20, aVoltage); + mTransferredAmperageLast20 = Math.max(mTransferredAmperageLast20, mTransferredAmperage); + if (aVoltage > mVoltage || mTransferredAmperage > mAmperage) { + getBaseMetaTileEntity().setToFire(); + return aAmperage; + } + return rUsedAmperes; + } + + @Override + public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { + if (aBaseMetaTileEntity.isServerSide()) { + mTransferredAmperage = 0; + + if (aTick % 20 == 0) { + mTransferredVoltageLast20 = 0; + mTransferredAmperageLast20 = 0; + mConnections = 0; + for (byte i = 0, j = 0; i < 6; i++) { + j = GT_Utility.getOppositeSide(i); + if (aBaseMetaTileEntity.getCoverBehaviorAtSide(i).alwaysLookConnected(i, aBaseMetaTileEntity.getCoverIDAtSide(i), aBaseMetaTileEntity.getCoverDataAtSide(i), aBaseMetaTileEntity) || aBaseMetaTileEntity.getCoverBehaviorAtSide(i).letsEnergyIn(i, aBaseMetaTileEntity.getCoverIDAtSide(i), aBaseMetaTileEntity.getCoverDataAtSide(i), aBaseMetaTileEntity) || aBaseMetaTileEntity.getCoverBehaviorAtSide(i).letsEnergyOut(i, aBaseMetaTileEntity.getCoverIDAtSide(i), aBaseMetaTileEntity.getCoverDataAtSide(i), aBaseMetaTileEntity)) { + TileEntity tTileEntity = aBaseMetaTileEntity.getTileEntityAtSide(i); + if (tTileEntity instanceof IColoredTileEntity) { + if (aBaseMetaTileEntity.getColorization() >= 0) { + byte tColor = ((IColoredTileEntity)tTileEntity).getColorization(); + if (tColor >= 0 && tColor != aBaseMetaTileEntity.getColorization()) continue; + } + } + if (tTileEntity instanceof IEnergyConnected && (((IEnergyConnected)tTileEntity).inputEnergyFrom(j) || ((IEnergyConnected)tTileEntity).outputsEnergyTo(j))) { + mConnections |= (1<<i); + continue; + } + if (tTileEntity instanceof IGregTechTileEntity && ((IGregTechTileEntity)tTileEntity).getMetaTileEntity() instanceof IMetaTileEntityCable) { + if (((IGregTechTileEntity)tTileEntity).getCoverBehaviorAtSide(j).alwaysLookConnected(j, ((IGregTechTileEntity)tTileEntity).getCoverIDAtSide(j), ((IGregTechTileEntity)tTileEntity).getCoverDataAtSide(j), ((IGregTechTileEntity)tTileEntity)) || ((IGregTechTileEntity)tTileEntity).getCoverBehaviorAtSide(j).letsEnergyIn(j, ((IGregTechTileEntity)tTileEntity).getCoverIDAtSide(j), ((IGregTechTileEntity)tTileEntity).getCoverDataAtSide(j), ((IGregTechTileEntity)tTileEntity)) || ((IGregTechTileEntity)tTileEntity).getCoverBehaviorAtSide(j).letsEnergyOut(j, ((IGregTechTileEntity)tTileEntity).getCoverIDAtSide(j), ((IGregTechTileEntity)tTileEntity).getCoverDataAtSide(j), ((IGregTechTileEntity)tTileEntity))) { + mConnections |= (1<<i); + continue; + } + } + if (tTileEntity instanceof IEnergySink && ((IEnergySink)tTileEntity).acceptsEnergyFrom((TileEntity)aBaseMetaTileEntity, ForgeDirection.getOrientation(j))) { + mConnections |= (1<<i); + continue; + } + if(GregTech_API.mOutputRF && tTileEntity instanceof IEnergyReceiver && ((IEnergyReceiver)tTileEntity).canConnectEnergy(ForgeDirection.getOrientation(j))){ + mConnections |= (1<<i); + continue; + } + /* + if (tTileEntity instanceof IEnergyEmitter && ((IEnergyEmitter)tTileEntity).emitsEnergyTo((TileEntity)aBaseMetaTileEntity, ForgeDirection.getOrientation(j))) { + mConnections |= (1<<i); + continue; + }*/ + } + } + } + } + } + + + @Override + public String[] getDescription() { + return new String[] { + "Max Voltage: " + EnumChatFormatting.GREEN + mVoltage + " (" + VN[GT_Utility.getTier(mVoltage)] + ")" + EnumChatFormatting.GRAY, + "Max Amperage: " + EnumChatFormatting.YELLOW + mAmperage + EnumChatFormatting.GRAY, + "Loss/Meter/Ampere: " + EnumChatFormatting.RED + mCableLossPerMeter + EnumChatFormatting.GRAY + " EU-Volt", + "Added by: " + EnumChatFormatting.RED+" Alkalus" + }; + } + + + @Override + public float getThickNess() { + return mThickNess; + } + +}
\ No newline at end of file diff --git a/src/Java/miscutil/mcmod.info b/src/Java/miscutil/mcmod.info new file mode 100644 index 0000000000..0c2b859007 --- /dev/null +++ b/src/Java/miscutil/mcmod.info @@ -0,0 +1,19 @@ +/** + * @version 0.1 + * @author Alkalus + * In-game info for project: Hello World. + */ +[ { "modid" : "miscutils" + , "name" : "miscutils" + , "description" : "Adds a few various things. Supported mods include GregTech, EnderIO, Big Reactors, Thaumcraft, ExtraUtils, Pnuematicraft & Simply Jetpacks." + , "version" : "0.7.8gtu" + , "mcversion" : "1.7.10" + , "url" : "" + , "updateUrl" : "" + , "authorList" : ["Alkalus"] + , "credits" : "" + , "logoFile" : "" + , "screenshots" : [] + , "dependencies" : ["Forge10.13.0.1180"] + } +] |