package org.freeforums.geforce.securitycraft.main; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Scanner; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiScreen; import net.minecraft.command.ICommandSender; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.server.MinecraftServer; import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityBeacon; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; import org.freeforums.geforce.securitycraft.items.ItemModule; import org.freeforums.geforce.securitycraft.misc.EnumCustomModules; import org.freeforums.geforce.securitycraft.tileentity.CustomizableSCTE; import org.freeforums.geforce.securitycraft.tileentity.TileEntityInventoryScanner; import org.freeforums.geforce.securitycraft.tileentity.TileEntityKeycardReader; import org.freeforums.geforce.securitycraft.tileentity.TileEntityKeypad; import org.freeforums.geforce.securitycraft.tileentity.TileEntityPortableRadar; import org.freeforums.geforce.securitycraft.tileentity.TileEntityRetinalScanner; import org.freeforums.geforce.securitycraft.timers.ScheduleKeycardUpdate; import org.freeforums.geforce.securitycraft.timers.ScheduleUpdate; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.relauncher.Side; public class HelpfulMethods { public static void checkBlocksMetadata(World par1World, int par2, int par3, int par4){ if(par1World.getBlockMetadata(par2, par3, par4) == 0){ System.out.println("down (MD: 0)"); }else if(par1World.getBlockMetadata(par2, par3, par4) == 1){ System.out.println("up (MD: 1)"); }else if(par1World.getBlockMetadata(par2, par3, par4) == 2){ System.out.println("north (MD: 2)"); }else if(par1World.getBlockMetadata(par2, par3, par4) == 3){ System.out.println("south (MD: 3)"); }else if(par1World.getBlockMetadata(par2, par3, par4) == 4){ System.out.println("west (MD: 4)"); }else if(par1World.getBlockMetadata(par2, par3, par4) == 5){ System.out.println("east (MD: 5)"); } } public static ForgeDirection getDirection(World par1World, int par2, int par3, int par4){ if(par1World.getBlockMetadata(par2, par3, par4) == 2){ return ForgeDirection.NORTH; }else if(par1World.getBlockMetadata(par2, par3, par4) == 3){ return ForgeDirection.SOUTH; }else if(par1World.getBlockMetadata(par2, par3, par4) == 4){ return ForgeDirection.WEST; }else if(par1World.getBlockMetadata(par2, par3, par4) == 4){ return ForgeDirection.EAST; }else{ return ForgeDirection.UNKNOWN; } } public static boolean isTruelySingleplayer(){ Side side = FMLCommonHandler.instance().getSide(); if(side == Side.CLIENT){ Minecraft mc = Minecraft.getMinecraft(); if(mc.isSingleplayer() && !mc.getIntegratedServer().getPublic()){ System.out.println("We are in offline singleplayer mode!"); return true; }else{ System.out.println("We are in online multiplayer mode! (LAN) "); return false; } }else if(side == Side.SERVER){ System.out.println("We are in online multiplayer mode! (SERVER)"); return false; }else{ System.out.println("Unknown mode!"); return false; } } public static String getFormattedCoordinates(int par1, int par2, int par3){ return " X:" + par1 + " Y:" + par2 + " Z:" + par3; } public static void setBlockInBox(World par1World, int par2, int par3, int par4, Block par5){ par1World.setBlock(par2 + 1, par3 + 1, par4, par5); par1World.scheduleBlockUpdate(par2 + 1, par3 + 1, par4, par5, 1200); par1World.setBlock(par2 + 1, par3 + 2, par4, par5); par1World.scheduleBlockUpdate(par2 + 1, par3 + 2, par4, par5, 1200); par1World.setBlock(par2 + 1, par3 + 3, par4, par5); par1World.scheduleBlockUpdate(par2 + 1, par3 + 3, par4, par5, 1200); par1World.setBlock(par2 + 1, par3 + 1, par4 + 1, par5); par1World.scheduleBlockUpdate(par2 + 1, par3 + 1, par4 + 1, par5, 1200); par1World.setBlock(par2 + 1, par3 + 2, par4 + 1, par5); par1World.scheduleBlockUpdate(par2 + 1, par3 + 2, par4 + 1, par5, 1200); par1World.setBlock(par2 + 1, par3 + 3, par4 + 1, par5); par1World.scheduleBlockUpdate(par2 + 1, par3 + 3, par4 + 1, par5, 1200); par1World.setBlock(par2 - 1, par3 + 1, par4, par5); par1World.scheduleBlockUpdate(par2 - 1, par3 + 1, par4, par5, 1200); par1World.setBlock(par2 - 1, par3 + 2, par4, par5); par1World.scheduleBlockUpdate(par2 - 1, par3 + 2, par4, par5, 1200); par1World.setBlock(par2 - 1, par3 + 3, par4, par5); par1World.scheduleBlockUpdate(par2 - 1, par3 + 3, par4, par5, 1200); par1World.setBlock(par2 - 1, par3 + 1, par4 + 1, par5); par1World.scheduleBlockUpdate(par2 - 1, par3 + 1, par4 + 1, par5, 1200); par1World.setBlock(par2 - 1, par3 + 2, par4 + 1, par5); par1World.scheduleBlockUpdate(par2 - 1, par3 + 2, par4 + 1, par5, 1200); par1World.setBlock(par2 - 1, par3 + 3, par4 + 1, par5); par1World.scheduleBlockUpdate(par2 - 1, par3 + 3, par4 + 1, par5, 1200); par1World.setBlock(par2, par3 + 1, par4 + 1, par5); par1World.scheduleBlockUpdate(par2, par3 + 1, par4 + 1, par5, 1200); par1World.setBlock(par2, par3 + 2, par4 + 1, par5); par1World.scheduleBlockUpdate(par2, par3 + 2, par4 + 1, par5, 1200); par1World.setBlock(par2, par3 + 3, par4 + 1, par5); par1World.scheduleBlockUpdate(par2, par3 + 3, par4 + 1, par5, 1200); par1World.setBlock(par2 + 1, par3 + 1, par4, par5); par1World.scheduleBlockUpdate(par2 + 1, par3 + 1, par4, par5, 1200); par1World.setBlock(par2 + 1, par3 + 2, par4, par5); par1World.scheduleBlockUpdate(par2 + 1, par3 + 2, par4, par5, 1200); par1World.setBlock(par2 + 1, par3 + 3, par4, par5); par1World.scheduleBlockUpdate(par2 + 1, par3 + 3, par4, par5, 1200); par1World.setBlock(par2, par3 + 1, par4 - 1, par5); par1World.scheduleBlockUpdate(par2, par3 + 1, par4 - 1, par5, 1200); par1World.setBlock(par2, par3 + 2, par4 - 1, par5); par1World.scheduleBlockUpdate(par2, par3 + 2, par4 - 1, par5, 1200); par1World.setBlock(par2, par3 + 3, par4 - 1, par5); par1World.scheduleBlockUpdate(par2, par3 + 3, par4 - 1, par5, 1200); par1World.setBlock(par2 + 1, par3 + 1, par4 - 1, par5); par1World.scheduleBlockUpdate(par2 + 1, par3 + 1, par4 - 1, par5, 1200); par1World.setBlock(par2 + 1, par3 + 2, par4 - 1, par5); par1World.scheduleBlockUpdate(par2 + 1, par3 + 2, par4 - 1, par5, 1200); par1World.setBlock(par2 + 1, par3 + 3, par4 - 1, par5); par1World.scheduleBlockUpdate(par2 + 1, par3 + 3, par4 - 1, par5, 1200); par1World.setBlock(par2 - 1, par3 + 1, par4 - 1, par5); par1World.scheduleBlockUpdate(par2 - 1, par3 + 1, par4 - 1, par5, 1200); par1World.setBlock(par2 - 1, par3 + 2, par4 - 1, par5); par1World.scheduleBlockUpdate(par2 - 1, par3 + 2, par4 - 1, par5, 1200); par1World.setBlock(par2 - 1, par3 + 3, par4 - 1, par5); par1World.scheduleBlockUpdate(par2 - 1, par3 + 3, par4 - 1, par5, 1200); } public static void disableEMPField(World par1World, double par2, double par3, double par4, Block block, int radius, int height, boolean isClient){ disableEMPField(par1World, (int) par2, (int) par3, (int) par4, block, radius, height, isClient); } public static void disableEMPField(World par1World, int par2, int par3, int par4, Block par5, int radius, int height, boolean isClient){ int heightDivided = (height / 2); for(int i = 0; i < heightDivided; i++){ checkBlocksAndDisable(par1World, par2, par3 - i, par4, par5, radius, isClient); } for(int i = heightDivided; i > 0; i--){ checkBlocksAndDisable(par1World, par2, par3 + i, par4, par5, radius, isClient); } } private static void checkBlocksAndDisable(World par1World, int par2, int par3, int par4, Block par5, int radius, boolean isClient) { if(!isClient){ for(int i = 0; i < radius; i++){ for(int j = 0; j < radius; j++){ if(par1World.getBlock(par2 + i, par3, par4 + j) == mod_SecurityCraft.empedWire){ par1World.setBlock(par2 + i, par3, par4 + j, Blocks.redstone_wire, par1World.getBlockMetadata(par2 + i, par3, par4 + j), 3); }else if(par1World.getBlock(par2 + i, par3, par4 + j) == mod_SecurityCraft.MineCut){ par1World.setBlock(par2 + i, par3, par4 + j, mod_SecurityCraft.Mine); }else if(par1World.getBlock(par2 + i, par3, par4 + j) == mod_SecurityCraft.portableRadar){ TileEntityPortableRadar TEPR = (TileEntityPortableRadar) par1World.getTileEntity(par2 + i, par3, par4 + j); TEPR.setEmped(false); par1World.setTileEntity(par2 + i, par3, par4 + j, TEPR); }else if(par1World.getBlock(par2 + i, par3, par4 + j) == mod_SecurityCraft.Keypad){ // int metadata = par1World.getBlockMetadata(par2 + i, par3, par4 + j); // TileEntityKeypad TEK = (TileEntityKeypad) par1World.getBlockTileEntity(par2 + i, par3, par4 + j); // par1World.setBlock(par2 + i, par3, par4 + j, mod_SecurityCraft.Keypad.blockID, metadata, 3); // par1World.setBlockTileEntity(par2 + i, par3, par4 + j, TEK); par1World.setBlockMetadataWithNotify(par2 + i, par3, par4 + j, par1World.getBlockMetadata(par2 + i, par3, par4 + j) - 5, 3); par1World.notifyBlocksOfNeighborChange(par2 + i, par3, par4 + j, par1World.getBlock(par2 + i, par3, par4 + j)); } updateAndNotify(par1World, par2 + i, par3, par4 + j, par1World.getBlock(par2 + i, par3, par4 + j), 1, false); } } }else{ for(int i = 0; i < radius; i++){ for(int j = 0; j < radius; j++){ if(par1World.getBlock(par2 + i, par3, par4 + j) == mod_SecurityCraft.empedWire){ par1World.spawnParticle("largeexplode", par2 + i, par3 + 0.5D, par4 + j, 1.0D, 0.0D, 0.0D); }else if(par1World.getBlock(par2 + i, par3, par4 + j) == mod_SecurityCraft.MineCut){ par1World.spawnParticle("largeexplode", par2 + i, par3 + 0.5D, par4 + j, 1.0D, 0.0D, 0.0D); }else if(par1World.getBlock(par2 + i, par3, par4 + j) == mod_SecurityCraft.portableRadar){ par1World.spawnParticle("largeexplode", par2 + i, par3 + 0.5D, par4 + j, 1.0D, 0.0D, 0.0D); } } } } } public static void createEMPField(World par1World, double par2, double par3, double par4, Block block, int radius, int height, boolean isClient){ createEMPField(par1World, (int) par2, (int) par3, (int) par4, block, radius, height, isClient); } public static void createEMPField(World par1World, int par2, int par3, int par4, Block par5, int radius, int height, boolean isClient){ int heightDivided = (height / 2); for(int i = 0; i < heightDivided; i++){ checkBlocksAndReplace(par1World, par2, par3 - i, par4, par5, radius, isClient); } for(int i = heightDivided; i > 0; i--){ checkBlocksAndReplace(par1World, par2, par3 + i, par4, par5, radius, isClient); } } private static void checkBlocksAndReplace(World par1World, int par2, int par3, int par4, Block par5, int radius, boolean isClient) { if(!isClient){ for(int i = 0; i < radius; i++){ for(int j = 0; j < radius; j++){ if(par1World.getBlock(par2 + i, par3, par4 + j) == Blocks.redstone_wire){ par1World.setBlock(par2 + i, par3, par4 + j, mod_SecurityCraft.empedWire, par1World.getBlockMetadata(par2 + i, par3, par4 + j), 3); }else if(par1World.getBlock(par2 + i, par3, par4 + j) == mod_SecurityCraft.Mine){ par1World.setBlock(par2 + i, par3, par4 + j, mod_SecurityCraft.MineCut); }else if(par1World.getBlock(par2 + i, par3, par4 + j) == mod_SecurityCraft.portableRadar){ TileEntityPortableRadar TEPR = (TileEntityPortableRadar) par1World.getTileEntity(par2 + i, par3, par4 + j); TEPR.setEmped(true); par1World.setTileEntity(par2 + i, par3, par4 + j, TEPR); }else if(par1World.getBlock(par2 + i, par3, par4 + j) == mod_SecurityCraft.Keypad){ // int metadata = par1World.getBlockMetadata(par2 + i, par3, par4 + j); // TileEntityKeypad TEK = (TileEntityKeypad) par1World.getBlockTileEntity(par2 + i, par3, par4 + j); // par1World.setBlock(par2 + i, par3, par4 + j, mod_SecurityCraft.KeypadActive.blockID, metadata, 3); // par1World.setBlockTileEntity(par2 + i, par3, par4 + j, TEK); par1World.setBlockMetadataWithNotify(par2 + i, par3, par4 + j, par1World.getBlockMetadata(par2 + i, par3, par4 + j) + 5, 3); } updateAndNotify(par1World, par2 + i, par3, par4 + j, par1World.getBlock(par2 + i, par3, par4 + j), 1, false); } } }else{ for(int i = 0; i < radius; i++){ for(int j = 0; j < radius; j++){ if(par1World.getBlock(par2 + i, par3, par4 + j) == Blocks.redstone_wire){ par1World.spawnParticle("largeexplode", par2 + i, par3 + 0.5D, par4 + j, 1.0D, 0.0D, 0.0D); }else if(par1World.getBlock(par2 + i, par3, par4 + j) == mod_SecurityCraft.Mine){ par1World.spawnParticle("largeexplode", par2 + i, par3 + 0.5D, par4 + j, 1.0D, 0.0D, 0.0D); }else if(par1World.getBlock(par2 + i, par3, par4 + j) == mod_SecurityCraft.portableRadar){ par1World.spawnParticle("largeexplode", par2 + i, par3 + 0.5D, par4 + j, 1.0D, 0.0D, 0.0D); } } } } } /** * Updates a block and notify's neighboring blocks of a change. * * Args: worldObj, x, y, z, blockID, tickRate, shouldUpdate * * */ public static void updateAndNotify(World par1World, int par2, int par3, int par4, Block par5, int par6, boolean par7){ if(par7){ par1World.scheduleBlockUpdate(par2, par3, par4, par5, par6); } par1World.notifyBlockOfNeighborChange(par2 + 1, par3, par4, par1World.getBlock(par2, par3, par4)); par1World.notifyBlockOfNeighborChange(par2 - 1, par3, par4, par1World.getBlock(par2, par3, par4)); par1World.notifyBlockOfNeighborChange(par2, par3, par4 + 1, par1World.getBlock(par2, par3, par4)); par1World.notifyBlockOfNeighborChange(par2, par3, par4 - 1, par1World.getBlock(par2, par3, par4)); par1World.notifyBlockOfNeighborChange(par2, par3 + 1, par4, par1World.getBlock(par2, par3, par4)); par1World.notifyBlockOfNeighborChange(par2, par3 - 1, par4, par1World.getBlock(par2, par3, par4)); } public static int getNumberOfUsernames(String usernames) { Scanner scanner = new Scanner(usernames); scanner.useDelimiter(","); int i = 0; while(scanner.hasNext()){ scanner.next(); i++; } return i; } // public static World getWorld(){ // if(FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER){ // return MinecraftServer.getServer().getEntityWorld(); // }else{ // return Minecraft.getMinecraft().theWorld; // } // } public static Item getItemFromBlock(Block par1){ return Item.getItemFromBlock(par1); } public static void sendMessage(ICommandSender par1ICommandSender, String par2, EnumChatFormatting par3){ ChatComponentTranslation chatcomponenttranslation = new ChatComponentTranslation(par2, new Object[0]); chatcomponenttranslation.getChatStyle().setColor(par3); par1ICommandSender.addChatMessage(chatcomponenttranslation); } public static void sendMessageToPlayer(EntityPlayer par1EntityPlayer, String par2, EnumChatFormatting par3){ ChatComponentTranslation chatcomponenttranslation = new ChatComponentTranslation(par2, new Object[0]); if(par3 != null){ chatcomponenttranslation.getChatStyle().setColor(par3); } par1EntityPlayer.addChatComponentMessage(chatcomponenttranslation); } public static void closePlayerScreen(){ Minecraft.getMinecraft().displayGuiScreen((GuiScreen)null); Minecraft.getMinecraft().setIngameFocus(); } public static void destroyBlock(World par1World, int par2, int par3, int par4, boolean par5){ par1World.func_147480_a(par2, par3, par4, par5); } public static String removeLastChar(String par1){ if(par1 == null || par1.isEmpty()){ return ""; } return par1.substring(0, par1.length() - 1); } public static void checkForBlockAndInsertModule(World par1World, int par2, int par3, int par4, String dir, Block blockToCheckFor, int range, EnumCustomModules module, boolean updateAdjecentBlocks){ for(int i = 1; i <= range; i++){ if(dir.equalsIgnoreCase("x+")){ if(par1World.getBlock(par2 + i, par3, par4) == blockToCheckFor && !((CustomizableSCTE) par1World.getTileEntity(par2 + i, par3, par4)).hasModule(module)){ ((CustomizableSCTE) par1World.getTileEntity(par2 + i, par3, par4)).insertModule(module); if(updateAdjecentBlocks){ checkInAllDirsAndInsertModule(par1World, par2 + i, par3, par4, blockToCheckFor, range, module, updateAdjecentBlocks); } } }else if(dir.equalsIgnoreCase("x-")){ if(par1World.getBlock(par2 - i, par3, par4) == blockToCheckFor && !((CustomizableSCTE) par1World.getTileEntity(par2 - i, par3, par4)).hasModule(module)){ ((CustomizableSCTE) par1World.getTileEntity(par2 - i, par3, par4)).insertModule(module); if(updateAdjecentBlocks){ checkInAllDirsAndInsertModule(par1World, par2 - i, par3, par4, blockToCheckFor, range, module, updateAdjecentBlocks); } } }else if(dir.equalsIgnoreCase("y+")){ if(par1World.getBlock(par2, par3 + i, par4) == blockToCheckFor && !((CustomizableSCTE) par1World.getTileEntity(par2, par3 + i, par4)).hasModule(module)){ ((CustomizableSCTE) par1World.getTileEntity(par2, par3 + i, par4)).insertModule(module); if(updateAdjecentBlocks){ checkInAllDirsAndInsertModule(par1World, par2, par3 + i, par4, blockToCheckFor, range, module, updateAdjecentBlocks); } } }else if(dir.equalsIgnoreCase("y-")){ if(par1World.getBlock(par2, par3 - i, par4) == blockToCheckFor && !((CustomizableSCTE) par1World.getTileEntity(par2, par3 - i, par4)).hasModule(module)){ ((CustomizableSCTE) par1World.getTileEntity(par2, par3 - i, par4)).insertModule(module); if(updateAdjecentBlocks){ checkInAllDirsAndInsertModule(par1World, par2, par3 - i, par4, blockToCheckFor, range, module, updateAdjecentBlocks); } } }else if(dir.equalsIgnoreCase("z+")){ if(par1World.getBlock(par2, par3, par4 + i) == blockToCheckFor && !((CustomizableSCTE) par1World.getTileEntity(par2, par3, par4 + i)).hasModule(module)){ ((CustomizableSCTE) par1World.getTileEntity(par2, par3, par4 + i)).insertModule(module); if(updateAdjecentBlocks){ checkInAllDirsAndInsertModule(par1World, par2, par3, par4 + i, blockToCheckFor, range, module, updateAdjecentBlocks); } } }else if(dir.equalsIgnoreCase("z-")){ if(par1World.getBlock(par2, par3, par4 - i) == blockToCheckFor && !((CustomizableSCTE) par1World.getTileEntity(par2, par3, par4 - i)).hasModule(module)){ ((CustomizableSCTE) par1World.getTileEntity(par2, par3, par4 - i)).insertModule(module); if(updateAdjecentBlocks){ checkInAllDirsAndInsertModule(par1World, par2, par3, par4 - i, blockToCheckFor, range, module, updateAdjecentBlocks); } } } } } public static void checkInAllDirsAndInsertModule(World par1World, int par2, int par3, int par4, Block blockToCheckFor, int range, EnumCustomModules module, boolean updateAdjecentBlocks){ checkForBlockAndInsertModule(par1World, par2, par3, par4, "x+", blockToCheckFor, range, module, updateAdjecentBlocks); checkForBlockAndInsertModule(par1World, par2, par3, par4, "x-", blockToCheckFor, range, module, updateAdjecentBlocks); checkForBlockAndInsertModule(par1World, par2, par3, par4, "y+", blockToCheckFor, range, module, updateAdjecentBlocks); checkForBlockAndInsertModule(par1World, par2, par3, par4, "y-", blockToCheckFor, range, module, updateAdjecentBlocks); checkForBlockAndInsertModule(par1World, par2, par3, par4, "z+", blockToCheckFor, range, module, updateAdjecentBlocks); checkForBlockAndInsertModule(par1World, par2, par3, par4, "z-", blockToCheckFor, range, module, updateAdjecentBlocks); } public static ItemStack getItemInTileEntity(IInventory inventory, ItemStack item){ for(int i = 0; i < inventory.getSizeInventory(); i++){ if(inventory.getStackInSlot(i) != null){ if(inventory.getStackInSlot(i) == item){ return inventory.getStackInSlot(i); } } } return null; } public static boolean isActiveBeacon(World par1World, int beaconX, int beaconY, int beaconZ){ if(par1World.getBlock(beaconX, beaconY, beaconZ) == Blocks.beacon){ float f = ((TileEntityBeacon) par1World.getTileEntity(beaconX, beaconY, beaconZ)).func_146002_i(); return f > 0.0F ? true : false; }else{ return false; } } /** * Checks if the block at x, y, z is touching the specified block on any side. */ public static boolean blockSurroundedBy(World world, int x, int y, int z, Block blockToCheckFor, boolean checkYAxis) { if(!checkYAxis && (world.getBlock(x + 1, y, z) == blockToCheckFor || world.getBlock(x - 1, y, z) == blockToCheckFor || world.getBlock(x, y, z + 1) == blockToCheckFor || world.getBlock(x, y, z - 1) == blockToCheckFor)){ return true; }else if(checkYAxis && (world.getBlock(x + 1, y, z) == blockToCheckFor || world.getBlock(x - 1, y, z) == blockToCheckFor || world.getBlock(x, y, z + 1) == blockToCheckFor || world.getBlock(x, y, z - 1) == blockToCheckFor || world.getBlock(x, y + 1, z) == blockToCheckFor || world.getBlock(x, y - 1, z) == blockToCheckFor)){ return true; }else{ return false; } } public static void setISinTEAppropriately(World par1World, int par2, int par3, int par4, ItemStack[] contents, String type) { //System.out.println("Our meta: " + (par1World.getBlockMetadata(par2, par3, par4)) + " | Alts meta: ( X-: " + (par1World.getBlockMetadata(par2 - 2, par3, par4)) + ", X+: " + (par1World.getBlockMetadata(par2 + 2, par3, par4)) + ", Z-: " + (par1World.getBlockMetadata(par2, par3, par4 - 2)) + ", Z+: " + (par1World.getBlockMetadata(par2, par3, par4 + 2)) +")"); if(par1World.getBlockMetadata(par2, par3, par4) == 4 && par1World.getBlock(par2 - 2, par3, par4) == mod_SecurityCraft.inventoryScanner && par1World.getBlock(par2 - 1, par3, par4) == mod_SecurityCraft.inventoryScannerField && par1World.getBlockMetadata(par2 - 2, par3, par4) == 5){ //System.out.println("Running X-"); //par1World.setTileEntity(par2 - 2, par3, par4, par5TileEntityIS); //((TileEntityOwnable)par1World.getTileEntity(par2 - 2, par3, par4)).setOwner(par5TileEntityIS.getOwner()); ((TileEntityInventoryScanner) par1World.getTileEntity(par2 - 2, par3, par4)).setContents(contents); ((TileEntityInventoryScanner) par1World.getTileEntity(par2 - 2, par3, par4)).setType(type); //mod_SecurityCraft.network.sendToAll(new PacketCUpdateOwner(par2 - 2, par3, par4, par5TileEntityIS.getOwner(), false)); } else if(par1World.getBlockMetadata(par2, par3, par4) == 5 && par1World.getBlock(par2 + 2, par3, par4) == mod_SecurityCraft.inventoryScanner && par1World.getBlock(par2 + 1, par3, par4) == mod_SecurityCraft.inventoryScannerField && par1World.getBlockMetadata(par2 + 2, par3, par4) == 4){ //System.out.println("Running X+"); //par1World.setTileEntity(par2 + 2, par3, par4, par5TileEntityIS); //((TileEntityOwnable)par1World.getTileEntity(par2 + 2, par3, par4)).setOwner(par5TileEntityIS.getOwner()); ((TileEntityInventoryScanner) par1World.getTileEntity(par2 + 2, par3, par4)).setContents(contents); ((TileEntityInventoryScanner) par1World.getTileEntity(par2 + 2, par3, par4)).setType(type); //mod_SecurityCraft.network.sendToAll(new PacketCUpdateOwner(par2 + 2, par3, par4, par5TileEntityIS.getOwner(), false)); } else if(par1World.getBlockMetadata(par2, par3, par4) == 2 && par1World.getBlock(par2, par3, par4 - 2) == mod_SecurityCraft.inventoryScanner && par1World.getBlock(par2, par3, par4 - 1) == mod_SecurityCraft.inventoryScannerField && par1World.getBlockMetadata(par2, par3, par4 - 2) == 3){ //System.out.println("Running Z-"); //par1World.setTileEntity(par2, par3, par4 - 2, par5TileEntityIS); //((TileEntityOwnable)par1World.getTileEntity(par2, par3, par4 - 2)).setOwner(par5TileEntityIS.getOwner()); ((TileEntityInventoryScanner) par1World.getTileEntity(par2, par3, par4 - 2)).setContents(contents); ((TileEntityInventoryScanner) par1World.getTileEntity(par2, par3, par4 - 2)).setType(type); //mod_SecurityCraft.network.sendToAll(new PacketCUpdateOwner(par2, par3, par4 - 2, par5TileEntityIS.getOwner(), false)); } else if(par1World.getBlockMetadata(par2, par3, par4) == 3 && par1World.getBlock(par2, par3, par4 + 2) == mod_SecurityCraft.inventoryScanner && par1World.getBlock(par2, par3, par4 + 1) == mod_SecurityCraft.inventoryScannerField && par1World.getBlockMetadata(par2, par3, par4 + 2) == 2){ //System.out.println("Running Z+"); //par1World.setTileEntity(par2, par3, par4 + 2, par5TileEntityIS); //((TileEntityOwnable)par1World.getTileEntity(par2, par3, par4 + 2)).setOwner(par5TileEntityIS.getOwner()); ((TileEntityInventoryScanner) par1World.getTileEntity(par2, par3, par4 + 2)).setContents(contents); ((TileEntityInventoryScanner) par1World.getTileEntity(par2, par3, par4 + 2)).setType(type); //mod_SecurityCraft.network.sendToAll(new PacketCUpdateOwner(par2, par3, par4 + 2, par5TileEntityIS.getOwner(), false)); } } public static boolean hasInventoryScannerFacingBlock(World par1World, int par2, int par3, int par4) { if(par1World.getBlock(par2 + 1, par3, par4) == mod_SecurityCraft.inventoryScanner && par1World.getBlockMetadata(par2 + 1, par3, par4) == 4 && par1World.getBlock(par2 - 1, par3, par4) == mod_SecurityCraft.inventoryScanner && par1World.getBlockMetadata(par2 - 1, par3, par4) == 5){ return true; } else if(par1World.getBlock(par2 - 1, par3, par4) == mod_SecurityCraft.inventoryScanner && par1World.getBlockMetadata(par2 - 1, par3, par4) == 5 && par1World.getBlock(par2 + 1, par3, par4) == mod_SecurityCraft.inventoryScanner && par1World.getBlockMetadata(par2 + 1, par3, par4) == 4){ return true; } else if(par1World.getBlock(par2, par3, par4 + 1) == mod_SecurityCraft.inventoryScanner && par1World.getBlockMetadata(par2, par3, par4 + 1) == 2 && par1World.getBlock(par2, par3, par4 - 1) == mod_SecurityCraft.inventoryScanner && par1World.getBlockMetadata(par2, par3, par4 - 1) == 3){ return true; } else if(par1World.getBlock(par2, par3, par4 - 1) == mod_SecurityCraft.inventoryScanner && par1World.getBlockMetadata(par2, par3, par4 - 1) == 3 && par1World.getBlock(par2, par3, par4 + 1) == mod_SecurityCraft.inventoryScanner && par1World.getBlockMetadata(par2, par3, par4 + 1) == 2){ return true; }else{ return false; } } public static boolean doesMobHavePotionEffect(EntityLivingBase mob, Potion potion){ Iterator iterator = mob.getActivePotionEffects().iterator(); while(iterator.hasNext()){ PotionEffect effect = (PotionEffect) iterator.next(); String eName = effect.getEffectName(); if(eName.matches(potion.getName())){ return true; }else{ continue; } } return false; } public static EntityPlayer getPlayerFromName(String par1){ List players = MinecraftServer.getServer().getConfigurationManager().playerEntityList; Iterator iterator = players.iterator(); while(iterator.hasNext()){ EntityPlayer tempPlayer = (EntityPlayer) iterator.next(); if(tempPlayer.getCommandSenderName().matches(par1)){ return tempPlayer; } } return null; } public static List<String> getPlayersFromModule(World par1World, int par2, int par3, int par4, EnumCustomModules module) { List<String> list = new ArrayList<String>(); CustomizableSCTE te = (CustomizableSCTE) par1World.getTileEntity(par2, par3, par4); if(te.hasModule(module)){ ItemStack item = te.getModule(module); for(int i = 1; i <= 10; i++){ if(item.stackTagCompound != null && item.stackTagCompound.getString("Player" + i) != null && !item.stackTagCompound.getString("Player" + i).isEmpty()){ list.add(item.stackTagCompound.getString("Player" + i)); } } } return list; } public static boolean checkForModule(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, EnumCustomModules module){ TileEntity te = par1World.getTileEntity(par2, par3, par4); if(te == null || !(te instanceof CustomizableSCTE)){ return false; } if(te instanceof TileEntityKeypad){ if(module == EnumCustomModules.WHITELIST && ((CustomizableSCTE) te).hasModule(EnumCustomModules.WHITELIST) && HelpfulMethods.getPlayersFromModule(par1World, par2, par3, par4, EnumCustomModules.WHITELIST).contains(par5EntityPlayer.getCommandSenderName())){ HelpfulMethods.sendMessageToPlayer(par5EntityPlayer, "You have been whitelisted on this keypad.", EnumChatFormatting.GREEN); new ScheduleUpdate(par1World, 3, par2, par3, par4); return true; } if(module == EnumCustomModules.BLACKLIST && ((CustomizableSCTE) te).hasModule(EnumCustomModules.BLACKLIST) && HelpfulMethods.getPlayersFromModule(par1World, par2, par3, par4, EnumCustomModules.BLACKLIST).contains(par5EntityPlayer.getCommandSenderName())){ HelpfulMethods.sendMessageToPlayer(par5EntityPlayer, "You have been blacklisted on this keypad.", EnumChatFormatting.RED); return true; } }else if(te instanceof TileEntityKeycardReader){ if(module == EnumCustomModules.WHITELIST && ((CustomizableSCTE) te).hasModule(EnumCustomModules.WHITELIST) && HelpfulMethods.getPlayersFromModule(par1World, par2, par3, par4, EnumCustomModules.WHITELIST).contains(par5EntityPlayer.getCommandSenderName())){ HelpfulMethods.sendMessageToPlayer(par5EntityPlayer, "You have been whitelisted on this reader.", EnumChatFormatting.GREEN); ((TileEntityKeycardReader) te).setIsProvidingPower(true); new ScheduleKeycardUpdate(3, par1World, par2, par3, par4, par1World.getBlockMetadata(par2, par3, par4)); par1World.notifyBlocksOfNeighborChange(par2, par3, par4, par1World.getBlock(par2, par3, par4)); return true; } if(module == EnumCustomModules.BLACKLIST && ((CustomizableSCTE) te).hasModule(EnumCustomModules.BLACKLIST) && HelpfulMethods.getPlayersFromModule(par1World, par2, par3, par4, EnumCustomModules.BLACKLIST).contains(par5EntityPlayer.getCommandSenderName())){ HelpfulMethods.sendMessageToPlayer(par5EntityPlayer, "You have been blacklisted on this reader.", EnumChatFormatting.RED); return true; } }else if(te instanceof TileEntityRetinalScanner){ if(module == EnumCustomModules.WHITELIST && ((CustomizableSCTE) te).hasModule(EnumCustomModules.WHITELIST) && HelpfulMethods.getPlayersFromModule(par1World, par2, par3, par4, EnumCustomModules.WHITELIST).contains(par5EntityPlayer.getCommandSenderName())){ return true; } }else if(te instanceof TileEntityInventoryScanner){ if(module == EnumCustomModules.WHITELIST && ((CustomizableSCTE) te).hasModule(EnumCustomModules.WHITELIST) && HelpfulMethods.getPlayersFromModule(par1World, par2, par3, par4, EnumCustomModules.WHITELIST).contains(par5EntityPlayer.getCommandSenderName())){ return true; } } return false; } public static boolean toggleBoolean(boolean par1) { boolean tempBoolean = par1; if(tempBoolean){ tempBoolean = false; }else{ tempBoolean = true; } return tempBoolean; } // private static void bookCode(){ // ItemStack book = new ItemStack(Items.written_book); // // NBTTagCompound tag = new NBTTagCompound(); // NBTTagList bookPages = new NBTTagList(); // bookPages.appendTag(new NBTTagString("SecurityCraft " + mod_SecurityCraft.getVersion() + " info book.")); // bookPages.appendTag(new NBTTagString("Keypad: \n \nThe keypad is used by placing the keypad, right-clicking it, and setting a numerical passcode. Once the keycode is set, right-clicking the keypad will allow you to enter the code. If it's correct, the keypad will emit redstone power for three seconds.")); // bookPages.appendTag(new NBTTagString("Laser block: The laser block is used by putting two of them within five blocks of each other. When the blocks are placed correctly, a laser should form between them. Whenever a player walks through the laser, both the laser blocks will emit a 15-block redstone signal.")); // // book.setTagInfo("pages", bookPages); // book.setTagInfo("author", new NBTTagString("Geforce")); // book.setTagInfo("title", new NBTTagString("SecurityCraft")); // // player.inventory.addItemStackToInventory(book); // } }