Moved missing files back in to proper places

Sorry Lem
This commit is contained in:
Francesco Macagno 2015-07-22 17:31:10 -07:00
parent b64a600a6a
commit f3caf63489
31 changed files with 1796 additions and 5778 deletions

File diff suppressed because it is too large Load diff

View file

@ -1,818 +0,0 @@
package cr0s.WarpDrive;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.event.FMLServerStartingEvent;
import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import cr0s.WarpDrive.block.*;
import cr0s.WarpDrive.command.*;
import cr0s.WarpDrive.data.*;
import cr0s.WarpDrive.item.*;
import cr0s.WarpDrive.machines.*;
import cr0s.WarpDrive.render.*;
import cr0s.WarpDrive.world.*;
import dan200.computercraft.api.ComputerCraftAPI;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.Minecraft;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.EnumArmorMaterial;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.packet.Packet250CustomPayload;
import net.minecraft.server.MinecraftServer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraft.world.WorldServer;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraftforge.common.Configuration;
import net.minecraftforge.common.DimensionManager;
import net.minecraftforge.common.EnumHelper;
import net.minecraftforge.common.ForgeChunkManager;
import net.minecraftforge.common.ForgeChunkManager.LoadingCallback;
import net.minecraftforge.common.ForgeChunkManager.Ticket;
import net.minecraftforge.common.ForgeChunkManager.Type;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.oredict.ShapedOreRecipe;
import net.minecraftforge.oredict.ShapelessOreRecipe;
@Mod(modid = "WarpDrive", name = "WarpDrive", version = "1.2.7.0",
dependencies = "required-after:IC2;"
+ " required-after:CoFHCore;"
+ " after:ComputerCraft;"
+ " after:OpenComputer;"
+ " after:CCTurtle;"
+ " after:gregtech_addon;"
+ " required-after:AppliedEnergistics;"
+ " after:AdvancedSolarPanel;"
+ " after:AtomicScience;"
+ " after:ICBM|Explosion;"
+ " after:MFFS;"
+ " after:GraviSuite;"
+ " after:UndergroundBiomes;"
+ " after:NetherOres")
@NetworkMod(clientSideRequired = true, serverSideRequired = true, channels = {
"WarpDriveBeam",
"WarpDriveFreq",
"WarpDriveLaserT",
"WarpDriveCloaks" }, packetHandler = PacketHandler.class)
/**
* @author Cr0s
*/
public class WarpDrive implements LoadingCallback {
public static Block warpCore;
public static Block protocolBlock;
public static Block radarBlock;
public static Block isolationBlock;
public static Block airgenBlock;
public static Block laserBlock;
public static Block laserCamBlock;
public static Block cameraBlock;
public static Block monitorBlock;
public static Block boosterBlock;
public static Block miningLaserBlock;
public static Block laserTreeFarmBlock;
public static Block liftBlock;
public static Block scannerBlock;
public static Block cloakBlock;
public static Block cloakCoilBlock;
public static Block transporterBlock;
public static Block reactorMonitorBlock;
public static Block powerReactorBlock;
public static Block powerLaserBlock;
public static Block powerStoreBlock;
public static Block airBlock;
public static Block gasBlock;
public static Block iridiumBlock;
public static Block transportBeaconBlock;
public static Block chunkLoaderBlock;
public static BlockDecorative decorativeBlock;
public static Item reactorLaserFocusItem;
public static ItemWarpComponent componentItem;
public static ItemWarpUpgrade upgradeItem;
public static EnumArmorMaterial armorMaterial = EnumHelper.addArmorMaterial("WARP", 5, new int[]{1, 3, 2, 1}, 15);
public static ItemWarpArmor helmetItem;
public static ItemWarpAirCanister airCanisterItem;
public static BiomeGenBase spaceBiome;
public World space;
public SpaceWorldGenerator spaceWorldGenerator;
public HyperSpaceWorldGenerator hyperSpaceWorldGenerator;
public World hyperSpace;
// Client settings
public static float normalFOV = 70.0F;
public static float normalSensitivity = 1.0F;
public static CreativeTabs warpdriveTab = new WarpDriveCreativeTab("Warpdrive", "Warpdrive").setBackgroundImageName("warpdrive:creativeTab");
@Instance("WarpDrive")
public static WarpDrive instance;
@SidedProxy(clientSide = "cr0s.WarpDrive.client.ClientProxy", serverSide = "cr0s.WarpDrive.CommonProxy")
public static CommonProxy proxy;
public static WarpCoresRegistry warpCores;
public static JumpgatesRegistry jumpgates;
public static CloakManager cloaks;
public static CamRegistry cams;
public boolean isOverlayEnabled = false;
public int overlayType = 0;
public String debugMessage = "";
public static WarpDrivePeripheralHandler peripheralHandler = null;
public static String defHelpStr = "help(\"functionName\"): returns help for the function specified";
public static String defEnergyStr = "getEnergyLevel(): returns currently contained energy, max contained energy";
public static String defUpgradeStr = "upgrades(): returns a list of currently installed upgrades";
@EventHandler
public void preInit(FMLPreInitializationEvent event) {
WarpDriveConfig.preInit(new Configuration(event.getSuggestedConfigurationFile()));
if (FMLCommonHandler.instance().getSide().isClient()) {
Minecraft mc = Minecraft.getMinecraft();
// System.out.println("[WarpDrive] Registering sounds event handler...");
MinecraftForge.EVENT_BUS.register(new SoundHandler());
normalFOV = mc.gameSettings.fovSetting;
normalSensitivity = mc.gameSettings.mouseSensitivity;
WarpDrive.print("[WarpDrive] FOV is " + normalFOV + " Sensitivity is " + normalSensitivity);
}
}
@SideOnly(Side.CLIENT)
@EventHandler
public void init(FMLInitializationEvent event) {
// FIXME FMLInterModComms.sendMessage("Waila", "register", "cr0s.WarpDrive.client.WailaHandler.callbackRegister");
}
public static void print(String out) {
System.out.println((FMLCommonHandler.instance().getEffectiveSide().isClient() ? "Client ":"Server ") + out);
}
public static void debugPrint(String out) {
if (WarpDriveConfig.G_DEBUGMODE) {
print(out);
}
}
@EventHandler
public void load(FMLInitializationEvent event) {
WarpDriveConfig.load();
// CORE CONTROLLER
protocolBlock = new BlockProtocol(WarpDriveConfig.controllerID,0, Material.rock);
GameRegistry.registerBlock(protocolBlock, "protocolBlock");
GameRegistry.registerTileEntity(TileEntityProtocol.class, "protocolBlock");
// WARP CORE
warpCore = new BlockReactor(WarpDriveConfig.coreID, 0, Material.rock);
GameRegistry.registerBlock(warpCore, "warpCore");
GameRegistry.registerTileEntity(TileEntityReactor.class, "warpCore");
// WARP RADAR
radarBlock = new BlockRadar(WarpDriveConfig.radarID, 0, Material.rock);
GameRegistry.registerBlock(radarBlock, "radarBlock");
GameRegistry.registerTileEntity(TileEntityRadar.class, "radarBlock");
// WARP ISOLATION
isolationBlock = new BlockWarpIsolation( WarpDriveConfig.isolationID, 0, Material.rock);
GameRegistry.registerBlock(isolationBlock, "isolationBlock");
// AIR GENERATOR
airgenBlock = new BlockAirGenerator(WarpDriveConfig.airgenID, 0,Material.rock);
GameRegistry.registerBlock(airgenBlock, "airgenBlock");
GameRegistry.registerTileEntity(TileEntityAirGenerator.class, "airgenBlock");
// AIR BLOCK
airBlock = (new BlockAir(WarpDriveConfig.airID));
GameRegistry.registerBlock(airBlock, "airBlock");
// GAS BLOCK
gasBlock = (new BlockGas(WarpDriveConfig.gasID));
GameRegistry.registerBlock(gasBlock, "gasBlock");
// LASER EMITTER
laserBlock = new BlockLaser(WarpDriveConfig.laserID, 0,Material.rock);
GameRegistry.registerBlock(laserBlock, "laserBlock");
GameRegistry.registerTileEntity(TileEntityLaser.class, "laserBlock");
// LASER EMITTER WITH CAMERA
laserCamBlock = new BlockLaserCam(WarpDriveConfig.laserCamID, 0, Material.rock);
GameRegistry.registerBlock(laserCamBlock, "laserCamBlock");
// CAMERA
cameraBlock = new BlockCamera(WarpDriveConfig.camID, 0,Material.rock);
GameRegistry.registerBlock(cameraBlock, "cameraBlock");
GameRegistry.registerTileEntity(TileEntityCamera.class, "cameraBlock");
// MONITOR
monitorBlock = new BlockMonitor(WarpDriveConfig.monitorID);
GameRegistry.registerBlock(monitorBlock, "monitorBlock");
GameRegistry.registerTileEntity(TileEntityMonitor.class, "monitorBlock");
// MINING LASER
miningLaserBlock = new BlockMiningLaser(WarpDriveConfig.miningLaserID, 0, Material.rock);
GameRegistry.registerBlock(miningLaserBlock, "miningLaserBlock");
GameRegistry.registerTileEntity(TileEntityMiningLaser.class, "miningLaserBlock");
// LASER TREE FARM
laserTreeFarmBlock = new BlockLaserTreeFarm(WarpDriveConfig.laserTreeFarmID, 0, Material.rock);
GameRegistry.registerBlock(laserTreeFarmBlock, "laserTreeFarmBlock");
GameRegistry.registerTileEntity(TileEntityLaserTreeFarm.class,"laserTreeFarmBlock");
// PARTICLE BOOSTER
boosterBlock = new BlockParticleBooster(WarpDriveConfig.particleBoosterID, 0, Material.rock);
GameRegistry.registerBlock(boosterBlock, "boosterBlock");
GameRegistry.registerTileEntity(TileEntityParticleBooster.class, "boosterBlock");
// LASER LIFT
liftBlock = new BlockLift(WarpDriveConfig.liftID, 0, Material.rock);
GameRegistry.registerBlock(liftBlock, "liftBlock");
GameRegistry.registerTileEntity(TileEntityLift.class, "liftBlock");
// IRIDIUM BLOCK
iridiumBlock = new BlockIridium(WarpDriveConfig.iridiumBlockID);
GameRegistry.registerBlock(iridiumBlock, "iridiumBlock");
// SHIP SCANNER
scannerBlock = new BlockShipScanner(WarpDriveConfig.shipScannerID, 0, Material.rock);
GameRegistry.registerBlock(scannerBlock, "scannerBlock");
GameRegistry.registerTileEntity(TileEntityShipScanner.class, "scannerBlock");
// CLOAKING DEVICE CORE
cloakBlock = new BlockCloakingDeviceCore(WarpDriveConfig.cloakCoreID, 0, Material.rock);
GameRegistry.registerBlock(cloakBlock, "cloakBlock");
GameRegistry.registerTileEntity(TileEntityCloakingDeviceCore.class, "cloakBlock");
// CLOAKING DEVICE COIL
cloakCoilBlock = new BlockCloakingCoil(WarpDriveConfig.cloakCoilID, 0, Material.rock);
GameRegistry.registerBlock(cloakCoilBlock, "cloakCoilBlock");
// TRANSPORTER
transporterBlock = new BlockTransporter(WarpDriveConfig.transporterID,Material.rock);
GameRegistry.registerBlock(transporterBlock, "transporter");
GameRegistry.registerTileEntity(TileEntityTransporter.class,"transporter");
// REACTOR MONITOR
reactorMonitorBlock = new BlockLaserReactorMonitor(WarpDriveConfig.reactorMonitorID, Material.rock);
GameRegistry.registerBlock(reactorMonitorBlock, "reactorMonitor");
GameRegistry.registerTileEntity(TileEntityLaserReactorMonitor.class,"reactorMonitor");
// TRANSPORT BEACON
transportBeaconBlock = new BlockTransportBeacon(WarpDriveConfig.transportBeaconID);
GameRegistry.registerBlock(transportBeaconBlock, "transportBeacon");
// POWER REACTOR, LASER, STORE
powerReactorBlock = new BlockPowerReactor(WarpDriveConfig.powerReactorID);
GameRegistry.registerBlock(powerReactorBlock,"powerReactor");
GameRegistry.registerTileEntity(TileEntityPowerReactor.class, "powerReactor");
powerLaserBlock = new BlockPowerLaser(WarpDriveConfig.powerLaserID);
GameRegistry.registerBlock(powerLaserBlock, "powerLaser");
GameRegistry.registerTileEntity(TileEntityPowerLaser.class, "powerLaser");
powerStoreBlock = new BlockPowerStore(WarpDriveConfig.powerStoreID);
GameRegistry.registerBlock(powerStoreBlock,"powerStore");
GameRegistry.registerTileEntity(TileEntityPowerStore.class, "powerStore");
// CHUNK LOADER
chunkLoaderBlock = new BlockChunkLoader(WarpDriveConfig.chunkLoaderID);
GameRegistry.registerBlock(chunkLoaderBlock, "chunkLoader");
GameRegistry.registerTileEntity(TileEntityChunkLoader.class, "chunkLoader");
// DECORATIVE
decorativeBlock = new BlockDecorative(WarpDriveConfig.decorativeID);
GameRegistry.registerBlock(decorativeBlock, ItemBlockDecorative.class, "decorative");
// REACTOR LASER FOCUS
reactorLaserFocusItem = new ItemReactorLaserFocus(WarpDriveConfig.reactorLaserFocusID);
GameRegistry.registerItem(reactorLaserFocusItem, "reactorLaserFocus");
// COMPONENT ITEMS
componentItem = new ItemWarpComponent(WarpDriveConfig.componentID);
GameRegistry.registerItem(componentItem, "component");
helmetItem = new ItemWarpArmor(WarpDriveConfig.helmetID, 0);
GameRegistry.registerItem(helmetItem, "helmet");
airCanisterItem = new ItemWarpAirCanister(WarpDriveConfig.airCanisterID);
GameRegistry.registerItem(airCanisterItem, "airCanisterFull");
upgradeItem = new ItemWarpUpgrade(WarpDriveConfig.upgradeID);
GameRegistry.registerItem(upgradeItem, "upgrade");
proxy.registerEntities();
ForgeChunkManager.setForcedChunkLoadingCallback(instance, instance);
spaceWorldGenerator = new SpaceWorldGenerator();
GameRegistry.registerWorldGenerator(spaceWorldGenerator);
hyperSpaceWorldGenerator = new HyperSpaceWorldGenerator();
GameRegistry.registerWorldGenerator(hyperSpaceWorldGenerator);
registerSpaceDimension();
registerHyperSpaceDimension();
MinecraftForge.EVENT_BUS.register(new SpaceEventHandler());
if (FMLCommonHandler.instance().getEffectiveSide().isClient()) {
warpdriveTab.setBackgroundImageName("items.png");
MinecraftForge.EVENT_BUS.register(new CameraOverlay(Minecraft.getMinecraft()));
}
if (WarpDriveConfig.isCCLoaded) {
peripheralHandler = new WarpDrivePeripheralHandler();
ComputerCraftAPI.registerPeripheralProvider(peripheralHandler);
}
}
@EventHandler
public void postInit(FMLPostInitializationEvent event) {
space = DimensionManager.getWorld(WarpDriveConfig.G_SPACE_DIMENSION_ID);
hyperSpace = DimensionManager.getWorld(WarpDriveConfig.G_HYPERSPACE_DIMENSION_ID);
WarpDriveConfig.postInit();
if (WarpDriveConfig.isICLoaded && WarpDriveConfig.G_ENABLE_IC2_RECIPES) {
initIC2Recipes();
}
if (WarpDriveConfig.isAppliedEnergisticsLoaded && WarpDriveConfig.isThermalExpansionLoaded && WarpDriveConfig.isAtomicScienceLoaded && WarpDriveConfig.G_ENABLE_TDK_RECIPES) {
initAETERecipes();
}
if (WarpDriveConfig.G_ENABLE_VANILLA_RECIPES) {
initVanillaRecipes();
}
warpCores = new WarpCoresRegistry();
jumpgates = new JumpgatesRegistry();
cams = new CamRegistry();
}
private static void initVanillaRecipes() {
componentItem.registerRecipes();
decorativeBlock.initRecipes();
upgradeItem.initRecipes();
//WarpCore
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(warpCore), false, "ipi", "ici", "idi",
'i', Item.ingotIron,
'p', componentItem.getIS(6),
'c', componentItem.getIS(2),
'd', Item.diamond));
//Controller
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(protocolBlock), false, "ici", "idi", "iii",
'i', Item.ingotIron,
'c', componentItem.getIS(5),
'd', Item.diamond));
//Radar
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(radarBlock), false, "ggg", "pdc", "iii",
'i', Item.ingotIron,
'c', componentItem.getIS(5),
'p', componentItem.getIS(6),
'g', Block.glass,
'd', Item.diamond));
//Isolation Block
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(isolationBlock), false, "igi", "geg", "igi",
'i', Item.ingotIron,
'g', Block.glass,
'e', Item.enderPearl));
//Air generator
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(airgenBlock), false, "ibi", "i i", "ipi",
'i', Item.ingotIron,
'b', Block.fenceIron,
'p', componentItem.getIS(6)));
//Laser
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(laserBlock), false, "ili", "iri", "ici",
'i', Item.ingotIron,
'r', Item.redstone,
'c', componentItem.getIS(5),
'l', componentItem.getIS(3),
'p', componentItem.getIS(6)));
//Mining laser
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(miningLaserBlock), false, "ici", "iti", "ili",
'i', Item.ingotIron,
'r', Item.redstone,
't', componentItem.getIS(1),
'c', componentItem.getIS(5),
'l', componentItem.getIS(3)));
//Tree farm laser
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(laserTreeFarmBlock), false, "ili", "sts", "ici",
'i', Item.ingotIron,
's', "treeSapling",
't', componentItem.getIS(1),
'c', componentItem.getIS(5),
'l', componentItem.getIS(3)));
//Laser Lift
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(liftBlock), false, "ipi", "rtr", "ili",
'i', Item.ingotIron,
'r', Item.redstone,
't', componentItem.getIS(1),
'l', componentItem.getIS(3),
'p', componentItem.getIS(6)));
//Transporter
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(transporterBlock), false, "iii", "ptc", "iii",
'i', Item.ingotIron,
't', componentItem.getIS(1),
'c', componentItem.getIS(5),
'p', componentItem.getIS(6)));
//Particle Booster
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(boosterBlock), false, "ipi", "rgr", "iii",
'i', Item.ingotIron,
'r', Item.redstone,
'g', Block.glass,
'p', componentItem.getIS(6)));
//Camera
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(cameraBlock), false, "ngn", "i i", "ici",
'i', Item.ingotIron,
'n', Item.goldNugget,
'g', Block.glass,
'c', componentItem.getIS(5)));
//LaserCamera
GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(laserCamBlock), cameraBlock, laserBlock));
//Monitor
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(monitorBlock), false, "ggg", "iti", "ici",
'i', Item.ingotIron,
't', Block.torchWood,
'g', Block.glass,
'c', componentItem.getIS(5)));
//Cloaking device
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(cloakBlock), false, "ipi", "lrl", "ici",
'i', Item.ingotIron,
'r', Item.redstone,
'l', componentItem.getIS(3),
'c', componentItem.getIS(5),
'p', componentItem.getIS(6)));
//Cloaking coil
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(cloakCoilBlock), false, "ini", "rdr", "ini",
'i', Item.ingotIron,
'd', Item.diamond,
'r', Item.redstone,
'n', Item.goldNugget));
//Power Laser
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(powerLaserBlock), false, "iii", "ilg", "ici",
'i', Item.ingotIron,
'g', Block.glass,
'c', componentItem.getIS(5),
'l', componentItem.getIS(3)));
//Power Reactor
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(powerReactorBlock), false, "ipi", "gog", "ici",
'i', Item.ingotIron,
'g', Block.glass,
'o', componentItem.getIS(4),
'c', componentItem.getIS(5),
'p', componentItem.getIS(6)));
//Power Store
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(powerStoreBlock), false, "ipi", "isi", "ici",
'i', Item.ingotIron,
's', componentItem.getIS(7),
'c', componentItem.getIS(5),
'p', componentItem.getIS(6)));
//Transport Beacon
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(transportBeaconBlock), false, " e ", "ldl", " s ",
'e', Item.enderPearl,
'l', "dyeBlue",
'd', Item.diamond,
's', Item.stick));
//Chunk Loader
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(chunkLoaderBlock), false, "ipi", "ici", "ifi",
'i', Item.ingotIron,
'p', componentItem.getIS(6),
'c', componentItem.getIS(0),
'f', componentItem.getIS(5)));
//Helmet
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(helmetItem), false, "iii", "iwi", "gcg",
'i', Item.ingotIron,
'w', Block.cloth,
'g', Block.glass,
'c', componentItem.getIS(8)));
}
private static void initAETERecipes() {
ItemStack redstoneEnergycell = GameRegistry.findItemStack("ThermalExpansion", "cellReinforced", 1);
ItemStack resonantEnergycell = GameRegistry.findItemStack("ThermalExpansion", "cellResonant", 1);
ItemStack bucketEnder = GameRegistry.findItemStack("ThermalExpansion", "bucketEnder", 1);
ItemStack fluixCrystal = WarpDriveConfig.getAEMaterial("matFluxCrystal");
ItemStack quantumEntangledSingularity = WarpDriveConfig.getAEMaterial("matQuantumEntangledSingularity");
ItemStack vibrantQuartzGlass = WarpDriveConfig.getAEBlock("blkQuartzLamp");
vibrantQuartzGlass.setItemDamage(4);
ItemStack antimatter = GameRegistry.findItemStack("ResonantInduction|Atomic", "antimatter", 1);
antimatter.setItemDamage(0);
ItemStack floppy = GameRegistry.findItemStack("ComputerCraft", "disk", 1);
ItemStack ultimateLappack = new ItemStack(WarpDriveConfig.GS_ultimateLappack, 1, 1);
// top = advancedCircuit, redstoneEnergycell, advancedCircuit
// middle = fluix crystal, advancedMachine, fluix crystal
// bottom = advancedCircuit, bucket Resonant ender, advancedCircuit
GameRegistry.addRecipe(new ItemStack(warpCore), "crc", "fmf", "cec",
'm', WarpDriveConfig.getIC2Item("advancedMachine"),
'c', WarpDriveConfig.getIC2Item("advancedCircuit"),
'r', redstoneEnergycell,
'e', bucketEnder,
'f', fluixCrystal);
// top = advancedCircuit, floppy, advancedCircuit
// middle = advancedCircuit, advancedMachine, advancedCircuit
// bottom = advancedCircuit, fluix crystal, advancedCircuit
GameRegistry.addRecipe(new ItemStack(protocolBlock), "coc", "cmc", "cfc",
'm', WarpDriveConfig.getIC2Item("advancedMachine"),
'c', WarpDriveConfig.getIC2Item("advancedCircuit"),
'o', floppy,
'f', fluixCrystal);
// top = Iridium plate, Resonant Energycell, Iridium plate
// middle = Singularity, 125 milligram antimatter, Singularity
// bottom = Iridium plate, Ultimate lappack, Iridium plate
GameRegistry.addRecipe(new ItemStack(powerReactorBlock), "iri", "sas", "ili",
'i', WarpDriveConfig.getIC2Item("iridiumPlate"),
's', quantumEntangledSingularity,
'a', antimatter,
'l', ultimateLappack,
'r', resonantEnergycell);
// top = Advanced circuit, Advanced alloy, Advanced alloy
// middle = Advanced circuit, Warp drive laser, Vibrant quartz glass
// bottom = Advanced circuit, Certus quartz tank, Advanced alloy
ItemStack isMiningLaserBlock = new ItemStack(miningLaserBlock.blockID, 1, 0);
ItemStack isCertusQuartzTank = new ItemStack(WarpDriveConfig.AEExtra_certusQuartzTank.blockID, 1, 0);
GameRegistry.addRecipe(new ItemStack(powerLaserBlock), "caa", "czg", "cta",
'c', WarpDriveConfig.getIC2Item("advancedCircuit"),
'a', WarpDriveConfig.getIC2Item("advancedAlloy"),
'z', isMiningLaserBlock,
't', isCertusQuartzTank,
'g', vibrantQuartzGlass);
}
private static void initIC2Recipes() {
GameRegistry.addRecipe(new ItemStack(warpCore), "ici", "cmc", "ici",
'i', WarpDriveConfig.getIC2Item("iridiumPlate"),
'm', WarpDriveConfig.getIC2Item("advancedMachine"),
'c', WarpDriveConfig.getIC2Item("advancedCircuit"));
GameRegistry.addRecipe(new ItemStack(protocolBlock), "iic", "imi", "cii",
'i', WarpDriveConfig.getIC2Item("iridiumPlate"),
'm', WarpDriveConfig.getIC2Item("advancedMachine"),
'c', WarpDriveConfig.getIC2Item("advancedCircuit"));
GameRegistry.addRecipe(new ItemStack(radarBlock), "ifi", "imi", "imi",
'i', WarpDriveConfig.getIC2Item("iridiumPlate"),
'm', WarpDriveConfig.getIC2Item("advancedMachine"),
'f', WarpDriveConfig.getIC2Item("frequencyTransmitter"));
GameRegistry.addRecipe(new ItemStack(isolationBlock), "iii", "idi", "iii",
'i', WarpDriveConfig.getIC2Item("iridiumPlate"),
'm', WarpDriveConfig.getIC2Item("advancedMachine"),
'd', Block.blockDiamond);
GameRegistry.addRecipe(new ItemStack(airgenBlock), "lcl", "lml", "lll",
'l', Block.leaves,
'm', WarpDriveConfig.getIC2Item("advancedMachine"),
'c', WarpDriveConfig.getIC2Item("advancedCircuit"));
GameRegistry.addRecipe(new ItemStack(laserBlock), "sss", "ama", "aaa",
'm', WarpDriveConfig.getIC2Item("advancedMachine"),
'a', WarpDriveConfig.getIC2Item("advancedAlloy"),
's', WarpDriveConfig.getIC2Item("advancedCircuit"));
GameRegistry.addRecipe(new ItemStack(miningLaserBlock), "aaa", "ama", "ccc",
'c', WarpDriveConfig.getIC2Item("advancedCircuit"),
'a', WarpDriveConfig.getIC2Item("advancedAlloy"),
'm', WarpDriveConfig.getIC2Item("miner"));
GameRegistry.addRecipe(new ItemStack(boosterBlock), "afc", "ama", "cfa",
'c', WarpDriveConfig.getIC2Item("advancedCircuit"),
'a', WarpDriveConfig.getIC2Item("advancedAlloy"),
'f', WarpDriveConfig.getIC2Item("glassFiberCableItem"),
'm', WarpDriveConfig.getIC2Item("mfeUnit"));
GameRegistry.addRecipe(new ItemStack(liftBlock), "aca", "ama", "a#a",
'c', WarpDriveConfig.getIC2Item("advancedCircuit"),
'a', WarpDriveConfig.getIC2Item("advancedAlloy"),
'm', WarpDriveConfig.getIC2Item("magnetizer"));
GameRegistry.addRecipe(new ItemStack(iridiumBlock), "iii", "iii", "iii",
'i', WarpDriveConfig.getIC2Item("iridiumPlate"));
GameRegistry.addShapelessRecipe(
new ItemStack(WarpDriveConfig.getIC2Item("iridiumPlate").getItem(), 9),
new ItemStack(iridiumBlock));
GameRegistry.addRecipe(new ItemStack(laserCamBlock), "imi", "cec", "#k#",
'i', WarpDriveConfig.getIC2Item("iridiumPlate"),
'm', WarpDriveConfig.getIC2Item("advancedMachine"),
'c', WarpDriveConfig.getIC2Item("advancedCircuit"),
'e', laserBlock,
'k', cameraBlock);
GameRegistry.addRecipe(new ItemStack(cameraBlock), "cgc", "gmg", "cgc",
'm', WarpDriveConfig.getIC2Item("advancedMachine"),
'c', WarpDriveConfig.getIC2Item("advancedCircuit"),
'g', Block.glass);
GameRegistry.addRecipe(new ItemStack(monitorBlock), "gcg", "gmg", "ggg",
'm', WarpDriveConfig.getIC2Item("advancedMachine"),
'c', WarpDriveConfig.getIC2Item("advancedCircuit"),
'g', Block.glass);
GameRegistry.addRecipe(new ItemStack(scannerBlock), "sgs", "mma", "amm",
'm', WarpDriveConfig.getIC2Item("advancedMachine"),
'a', WarpDriveConfig.getIC2Item("advancedAlloy"),
's', WarpDriveConfig.getIC2Item("advancedCircuit"),
'g', Block.glass);
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(laserTreeFarmBlock),false,new Object[] {
"cwc", "wmw", "cwc",
'c', WarpDriveConfig.getIC2Item("electronicCircuit"),
'w', "logWood",
'm', miningLaserBlock }));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(transporterBlock), false, new Object[] {
"ece", "imi", "iei",
'e', Item.enderPearl,
'c', WarpDriveConfig.getIC2Item("electronicCircuit"),
'i', WarpDriveConfig.getIC2Item("plateiron"),
'm', WarpDriveConfig.getIC2Item("machine") }));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(reactorLaserFocusItem),false,new Object[] {
" p ", "pdp", " p ",
'p', WarpDriveConfig.getIC2Item("plateiron"),
'd', "gemDiamond"}));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(reactorMonitorBlock), false, new Object[] {
"pdp", "dmd", "pdp",
'p', WarpDriveConfig.getIC2Item("plateiron"),
'd', "gemDiamond",
'm', WarpDriveConfig.getIC2Item("mfeUnit")}));
GameRegistry.addRecipe(new ItemStack(cloakBlock), "imi", "mcm", "imi",
'i', iridiumBlock,
'c', cloakCoilBlock,
'm', WarpDriveConfig.getIC2Item("advancedMachine"));
GameRegistry.addRecipe(new ItemStack(cloakCoilBlock), "iai", "aca", "iai",
'i', WarpDriveConfig.getIC2Item("iridiumPlate"),
'c', WarpDriveConfig.getIC2Item("advancedCircuit"),
'a', WarpDriveConfig.getIC2Item("advancedAlloy"));
}
private static void registerSpaceDimension() {
spaceBiome = (new BiomeSpace(24))
.setColor(0)
.setDisableRain()
.setBiomeName("Space");
DimensionManager.registerProviderType(WarpDriveConfig.G_SPACE_PROVIDER_ID, SpaceProvider.class, true);
DimensionManager.registerDimension(WarpDriveConfig.G_SPACE_DIMENSION_ID, WarpDriveConfig.G_SPACE_PROVIDER_ID);
}
private static void registerHyperSpaceDimension() {
DimensionManager.registerProviderType(WarpDriveConfig.G_HYPERSPACE_PROVIDER_ID, HyperSpaceProvider.class, true);
DimensionManager.registerDimension(WarpDriveConfig.G_HYPERSPACE_DIMENSION_ID, WarpDriveConfig.G_HYPERSPACE_PROVIDER_ID);
}
@EventHandler
public void serverLoad(FMLServerStartingEvent event) {
cloaks = new CloakManager();
MinecraftForge.EVENT_BUS.register(new CloakChunkWatcher());
event.registerServerCommand(new GenerateCommand());
event.registerServerCommand(new SpaceTpCommand());
event.registerServerCommand(new InvisibleCommand());
event.registerServerCommand(new JumpgateCommand());
event.registerServerCommand(new DebugCommand());
}
public Ticket registerChunkLoadTE(WarpChunkTE te, boolean refreshLoading) {
World worldObj = te.worldObj;
if (ForgeChunkManager.ticketCountAvailableFor(this, worldObj) > 0)
{
Ticket t = ForgeChunkManager.requestTicket(this, worldObj, Type.NORMAL);
if (t != null) {
te.giveTicket(t); // FIXME calling the caller is a bad idea
if(refreshLoading)
te.refreshLoading();
return t;
}
else
{
WarpDrive.debugPrint("Ticket not granted");
}
}
else
{
WarpDrive.debugPrint("No tickets left!");
}
return null;
}
public Ticket registerChunkLoadTE(WarpChunkTE te)
{
return registerChunkLoadTE(te, true);
}
public Ticket getTicket(WarpChunkTE te)
{
return registerChunkLoadTE(te, false);
}
@Override
public void ticketsLoaded(List<Ticket> tickets, World world)
{
for (Ticket ticket : tickets)
{
NBTTagCompound data = ticket.getModData();
if(data != null)
{
int w = data.getInteger("ticketWorldObj");
int x = data.getInteger("ticketX");
int y = data.getInteger("ticketY");
int z = data.getInteger("ticketZ");
if(w != 0 || x != 0 || y != 0 || z != 0)
{
WorldServer ws = DimensionManager.getWorld(w);
if(ws != null)
{
TileEntity te = ws.getBlockTileEntity(x, y, z);
if(te != null && te instanceof WarpChunkTE)
{
if(((WarpChunkTE)te).shouldChunkLoad())
{
WarpDrive.debugPrint("[TicketCallback] Regiving Ticket!");
((WarpChunkTE)te).giveTicket(ticket);
((WarpChunkTE)te).refreshLoading(true);
return;
}
}
}
}
}
ForgeChunkManager.releaseTicket(ticket);
}
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,85 +0,0 @@
package cr0s.WarpDrive.machines;
import cpw.mods.fml.common.FMLCommonHandler;
import cr0s.WarpDrive.WarpDrive;
import cr0s.WarpDrive.api.IBlockUpdateDetector;
import cr0s.WarpDrive.api.IUpgradable;
import cr0s.WarpDrive.data.EnumUpgradeTypes;
import cr0s.WarpDrive.item.ItemWarpUpgrade;
import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
public abstract class WarpBlockContainer extends BlockContainer {
protected WarpBlockContainer(int par1) {
super(par1, Material.iron);
}
protected WarpBlockContainer(int par1, Material m) {
super(par1, m);
setHardness(0.5F);
setStepSound(Block.soundMetalFootstep);
setCreativeTab(WarpDrive.warpdriveTab);
}
@Override
public void onBlockAdded(World w, int x, int y, int z) {
super.onBlockAdded(w, x, y, z);
TileEntity te = w.getBlockTileEntity(x, y, z);
if (te instanceof IBlockUpdateDetector) {
((IBlockUpdateDetector)te).updatedNeighbours();
}
}
/* FIXME untested
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int par6, float par7, float par8, float par9)
{
if (FMLCommonHandler.instance().getEffectiveSide().isClient()) {
return false;
}
boolean hasResponse = false;
TileEntity te = world.getBlockTileEntity(x, y, z);
if(te != null && te instanceof IUpgradable)
{
IUpgradable upgradable = (IUpgradable)te;
ItemStack is = player.inventory.getCurrentItem();
if(is != null)
{
Item i = is.getItem();
if(i instanceof ItemWarpUpgrade)
{
if(upgradable.takeUpgrade(EnumUpgradeTypes.values()[is.getItemDamage()],false))
{
if(!player.capabilities.isCreativeMode)
player.inventory.decrStackSize(player.inventory.currentItem, 1);
player.addChatMessage("Upgrade accepted");
}
else
{
player.addChatMessage("Upgrade declined");
}
hasResponse = true;
}
}
}
return hasResponse;
}
/**/
@Override
public void onNeighborBlockChange(World w, int x, int y, int z, int b) {
super.onNeighborBlockChange(w, x, y, z, b);
TileEntity te = w.getBlockTileEntity(x, y, z);
if (te instanceof IBlockUpdateDetector) {
((IBlockUpdateDetector)te).updatedNeighbours();
}
}
}

View file

@ -1,5 +1,13 @@
package cr0s.warpdrive;
package cr0s.WarpDrive;
import cpw.mods.fml.common.FMLCommonHandler;
import cr0s.WarpDrive.data.JumpBlock;
import cr0s.WarpDrive.data.MovingEntity;
import cr0s.WarpDrive.data.TransitionPlane;
import cr0s.WarpDrive.data.Vector3;
import cr0s.WarpDrive.machines.TileEntityReactor;
import cr0s.WarpDrive.world.SpaceTeleporter;
import dan200.computercraft.api.peripheral.IPeripheral;
import ic2.api.network.NetworkHelper;
import java.lang.reflect.Method;
@ -14,29 +22,21 @@ 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.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.server.MinecraftServer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.ChunkCoordinates;
import net.minecraft.util.MathHelper;
import net.minecraft.world.ChunkCoordIntPair;
import net.minecraft.world.World;
import net.minecraft.world.WorldServer;
import net.minecraft.world.chunk.Chunk;
import net.minecraft.world.chunk.storage.ExtendedBlockStorage;
import net.minecraftforge.common.DimensionManager;
import net.minecraftforge.common.ForgeChunkManager;
import net.minecraftforge.common.ForgeChunkManager.Ticket;
import net.minecraftforge.common.ForgeChunkManager.Type;
import cpw.mods.fml.common.FMLCommonHandler;
import cr0s.warpdrive.data.JumpBlock;
import cr0s.warpdrive.data.MovingEntity;
import cr0s.warpdrive.data.TransitionPlane;
import cr0s.warpdrive.data.Vector3;
import cr0s.warpdrive.machines.TileEntityReactor;
import cr0s.warpdrive.world.SpaceTeleporter;
public class EntityJump extends Entity
{
@ -143,7 +143,6 @@ public class EntityJump extends Entity
WarpDrive.debugPrint("" + this + " Killing jump entity... (" + reason + ")");
}
// unlockWorlds();
unforceChunks();
worldObj.removeEntity(this);
}
@ -302,7 +301,7 @@ public class EntityJump extends Entity
WarpDrive.print("" + this + " messageToAllPlayersOnShip: " + msg);
for (MovingEntity me : entitiesOnShip) {
if (me.entity instanceof EntityPlayer) {
((EntityPlayer)me.entity).addChatMessage(new ChatComponentText("[" + ((reactor != null && reactor.coreFrequency.length() > 0) ? reactor.coreFrequency : "WarpCore") + "] " + msg));
((EntityPlayer)me.entity).addChatMessage("[" + ((reactor != null && reactor.coreFrequency.length() > 0) ? reactor.coreFrequency : "WarpCore") + "] " + msg);
}
}
}
@ -362,6 +361,7 @@ public class EntityJump extends Entity
}
if (!planeValid) {
LocalProfiler.stop();
@SuppressWarnings("null")
String msg = "Ship is outside border, unable to reach space!\nClosest transition plane is ~" + closestPlaneDistance + " m away ("
+ (closestTransitionPlane.dimensionCenterX - closestTransitionPlane.borderSizeX) + ", 250,"
+ (closestTransitionPlane.dimensionCenterZ - closestTransitionPlane.borderSizeZ) + ") to ("
@ -554,11 +554,11 @@ public class EntityJump extends Entity
if (jb.blockTileEntity != null) {
// WarpDrive.debugPrint("Removing tile entity at " + jb.x + ", " + jb.y + ", " + jb.z);
worldObj.removeTileEntity(jb.x, jb.y, jb.z);
worldObj.removeBlockTileEntity(jb.x, jb.y, jb.z);
}
worldObj.setBlock(jb.x, jb.y, jb.z, Blocks.air, 0, 2);
worldObj.setBlock(jb.x, jb.y, jb.z, 0, 0, 2);
te = targetWorld.getTileEntity(jb.x + moveX, jb.y + moveY, jb.z + moveZ);
te = targetWorld.getBlockTileEntity(jb.x + moveX, jb.y + moveY, jb.z + moveZ);
if (te != null) {
teClass = te.getClass();
// WarpDrive.debugPrint("Tile at " + jb.x + ", " + jb.y + ", " + jb.z + " is " + teClass + " derived from " + teClass.getSuperclass());
@ -612,7 +612,7 @@ public class EntityJump extends Entity
private void saveShip(int shipSize) {
LocalProfiler.start("EntityJump.saveShip");
try {
ItemStack reactorChamber = WarpDriveConfig.isICLoaded ? WarpDriveConfig.getIC2Item("reactorChamber") : null;
int reactorChamber = WarpDriveConfig.isICLoaded ? WarpDriveConfig.getIC2Item("reactorChamber").itemID : 0;
ship = new JumpBlock[shipSize];
JumpBlock placeAfter[] = new JumpBlock[shipSize]; // blocks and tile entities to be placed at the end, and removed first
@ -635,18 +635,18 @@ public class EntityJump extends Entity
for (int y = minY; y <= maxY; y++) {
for (int x = x1; x <= x2; x++) {
for (int z = z1; z <= z2; z++) {
Block block = worldObj.getBlock(x, y, z);
int blockID = worldObj.getBlockId(x, y, z);
// Skip air blocks
if (worldObj.isAirBlock(x, y, z) && (block.isAssociatedBlock(WarpDrive.airBlock))) {
if (worldObj.isAirBlock(x, y, z) && (blockID != WarpDriveConfig.airID)) {
continue;
}
int blockMeta = worldObj.getBlockMetadata(x, y, z);
TileEntity tileEntity = worldObj.getTileEntity(x, y, z);
JumpBlock jumpBlock = new JumpBlock(block, blockMeta, tileEntity, x, y, z);
TileEntity tileEntity = worldObj.getBlockTileEntity(x, y, z);
JumpBlock jumpBlock = new JumpBlock(blockID, blockMeta, tileEntity, x, y, z);
if (tileEntity == null || block.isAssociatedBlock(Block.getBlockFromItem(reactorChamber.getItem()))) {
if (tileEntity == null || blockID != reactorChamber) {
ship[indexPlaceNormal] = jumpBlock;
indexPlaceNormal++;
} else {
@ -690,8 +690,8 @@ public class EntityJump extends Entity
JumpBlock jb = ship[currentIndexInShip];
if (jb != null) {
jb.deploy(targetWorld, moveX, moveY, moveZ);
if (jb.block != WarpDriveConfig.CC_peripheral || (jb.blockMeta != 2 && jb.blockMeta != 4)) {
worldObj.removeTileEntity(jb.x, jb.y, jb.z);
if (jb.blockID != WarpDriveConfig.CC_peripheral || (jb.blockMeta != 2 && jb.blockMeta != 4)) {
worldObj.removeBlockTileEntity(jb.x, jb.y, jb.z);
}
}
currentIndexInShip++;
@ -821,10 +821,10 @@ public class EntityJump extends Entity
for (int x = minX; x <= maxX; x++) {
for (int z = minZ; z <= maxZ; z++) {
for (int y = minY; y <= maxY; y++) {
Block block = worldObj.getBlock(x, y, z);
int blockID = worldObj.getBlockId(x, y, z);
// Skipping vanilla air & WarpDrive gas blocks, keep WarpDrive air block
if (worldObj.isAirBlock(x, y, z) && (block.isAssociatedBlock(WarpDrive.airBlock))) {// whitelist
if (worldObj.isAirBlock(x, y, z) && (blockID != WarpDriveConfig.airID)) {// whitelist
continue;
}
@ -838,8 +838,7 @@ public class EntityJump extends Entity
WarpDrive.debugPrint("Block(" + x + ", " + y + ", " + z + ") is " + item.getUnlocalizedName() + ":" + worldObj.getBlockMetadata(x, y, z));
/**/
//TODO: What is block 2702?!?
if ((block.isAssociatedBlock(Blocks.bedrock)) /*|| (block == 2702)*/) {// Blacklist
if ((blockID == Block.bedrock.blockID) || (blockID == 2702)) {// Blacklist
reason.append("Bedrock detected onboard at " + x + ", " + y + ", " + z + ". Aborting.");
LocalProfiler.stop();
return -1;
@ -860,7 +859,7 @@ public class EntityJump extends Entity
if (!(xBorder || yBorder || zBorder))
continue;
Block block = worldObj.getBlock(x, y, z);
int blockID = worldObj.getBlockId(x, y, z);
// Skipping air blocks
if (worldObj.isAirBlock(x, y, z)) {
@ -868,11 +867,11 @@ public class EntityJump extends Entity
}
// Skipping unmovable blocks
if ((block.isAssociatedBlock(Blocks.bedrock)) /*|| (block == 2702)*/) {// Blacklist
if ((blockID == Block.bedrock.blockID) || (blockID == 2702)) {// Blacklist
continue;
}
TileEntity te = worldObj.getTileEntity(x, y, z);
TileEntity te = worldObj.getBlockTileEntity(x, y, z);
if (te == null) {
continue;
}
@ -1064,9 +1063,7 @@ public class EntityJump extends Entity
int lmoveY = movementVector[1] * testDistance;
int lmoveZ = movementVector[2] * testDistance;
int x, y, z, newX, newY, newZ;
Block blockOnShip;
Block block;
int x, y, z, newX, newY, newZ, blockOnShipID, blockID;
for (y = minY; y <= maxY; y++) {
newY = y + lmoveY;
for (x = minX; x <= maxX; x++) {
@ -1074,25 +1071,25 @@ public class EntityJump extends Entity
for (z = minZ; z <= maxZ; z++) {
newZ = z + lmoveZ;
block = worldObj.getBlock(newX, newY, newZ);
if ((block.isAssociatedBlock(Blocks.bedrock))/* || (block == 2702)*/) {// Blacklist
blockID = worldObj.getBlockId(newX, newY, newZ);
if ((blockID == Block.bedrock.blockID) || (blockID == 2702)) {// Blacklist
result.add(x, y, z,
newX + 0.5D - movementVector[0] * 1.0D,
newY + 0.5D - movementVector[1] * 1.0D,
newZ + 0.5D - movementVector[2] * 1.0D,
true, "Unpassable block " + block + " detected at destination (" + newX + ";" + newY + ";" + newZ + ")");
true, "Unpassable block " + blockID + " detected at destination (" + newX + ";" + newY + ";" + newZ + ")");
if (!fullCollisionDetails) {
return result;
}
}
blockOnShip = worldObj.getBlock(x, y, z);
if (!blockOnShip.isAssociatedBlock(Blocks.air) && !block.isAssociatedBlock(Blocks.air) && !block.isAssociatedBlock(WarpDrive.airBlock) && !block.isAssociatedBlock(WarpDrive.gasBlock)/* && block != 18* TODO: */) {
blockOnShipID = worldObj.getBlockId(x, y, z);
if (blockOnShipID != 0 && blockID != 0 && blockID != WarpDriveConfig.airID && blockID != WarpDriveConfig.gasID && blockID != 18) {
result.add(x, y, z,
newX + 0.5D + movementVector[0] * 0.1D,
newY + 0.5D + movementVector[1] * 0.1D,
newZ + 0.5D + movementVector[2] * 0.1D,
true, "Obstacle block #" + block + " detected at (" + newX + ", " + newY + ", " + newZ + ")");
true, "Obstacle block #" + blockID + " detected at (" + newX + ", " + newY + ", " + newZ + ")");
if (!fullCollisionDetails) {
return result;
}
@ -1225,7 +1222,7 @@ public class EntityJump extends Entity
public String toString() {
return String.format("%s/%d \'%s\' @ \'%s\' %.2f, %.2f, %.2f", new Object[] {
getClass().getSimpleName(),
Integer.valueOf(getEntityId()),
Integer.valueOf(entityId),
reactor == null ? "~NULL~" : reactor.coreFrequency,
worldObj == null ? "~NULL~" : worldObj.getWorldInfo().getWorldName(),
Double.valueOf(posX), Double.valueOf(posY), Double.valueOf(posZ)});

View file

@ -1,30 +1,5 @@
package cr0s.warpdrive;
package cr0s.WarpDrive;
import java.util.List;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.Minecraft;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.ItemArmor.ArmorMaterial;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraft.world.WorldServer;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraftforge.common.DimensionManager;
import net.minecraftforge.common.ForgeChunkManager;
import net.minecraftforge.common.ForgeChunkManager.LoadingCallback;
import net.minecraftforge.common.ForgeChunkManager.Ticket;
import net.minecraftforge.common.ForgeChunkManager.Type;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.config.Configuration;
import net.minecraftforge.common.util.EnumHelper;
import net.minecraftforge.oredict.ShapedOreRecipe;
import net.minecraftforge.oredict.ShapelessOreRecipe;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
@ -34,60 +9,51 @@ import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.event.FMLServerStartingEvent;
import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import cr0s.warpdrive.block.BlockAir;
import cr0s.warpdrive.block.BlockGas;
import cr0s.warpdrive.block.BlockIridium;
import cr0s.warpdrive.command.GenerateCommand;
import cr0s.warpdrive.command.InvisibleCommand;
import cr0s.warpdrive.command.JumpgateCommand;
import cr0s.warpdrive.command.SpaceTpCommand;
import cr0s.warpdrive.data.CamRegistry;
import cr0s.warpdrive.data.CloakManager;
import cr0s.warpdrive.data.JumpgatesRegistry;
import cr0s.warpdrive.data.WarpCoresRegistry;
import cr0s.warpdrive.item.ItemWarpAirCanister;
import cr0s.warpdrive.item.ItemWarpArmor;
import cr0s.warpdrive.item.ItemWarpComponent;
import cr0s.warpdrive.machines.BlockAirGenerator;
import cr0s.warpdrive.machines.BlockCamera;
import cr0s.warpdrive.machines.BlockCloakingCoil;
import cr0s.warpdrive.machines.BlockCloakingDeviceCore;
import cr0s.warpdrive.machines.BlockLaser;
import cr0s.warpdrive.machines.BlockLaserCam;
import cr0s.warpdrive.machines.BlockLift;
import cr0s.warpdrive.machines.BlockMiningLaser;
import cr0s.warpdrive.machines.BlockMonitor;
import cr0s.warpdrive.machines.BlockParticleBooster;
import cr0s.warpdrive.machines.BlockProtocol;
import cr0s.warpdrive.machines.BlockRadar;
import cr0s.warpdrive.machines.BlockReactor;
import cr0s.warpdrive.machines.BlockShipScanner;
import cr0s.warpdrive.machines.BlockWarpIsolation;
import cr0s.warpdrive.machines.TileEntityAirGenerator;
import cr0s.warpdrive.machines.TileEntityCamera;
import cr0s.warpdrive.machines.TileEntityCloakingDeviceCore;
import cr0s.warpdrive.machines.TileEntityLaser;
import cr0s.warpdrive.machines.TileEntityLift;
import cr0s.warpdrive.machines.TileEntityMiningLaser;
import cr0s.warpdrive.machines.TileEntityMonitor;
import cr0s.warpdrive.machines.TileEntityParticleBooster;
import cr0s.warpdrive.machines.TileEntityProtocol;
import cr0s.warpdrive.machines.TileEntityRadar;
import cr0s.warpdrive.machines.TileEntityReactor;
import cr0s.warpdrive.machines.TileEntityShipScanner;
import cr0s.warpdrive.machines.WarpChunkTE;
import cr0s.warpdrive.render.CameraOverlay;
import cr0s.warpdrive.world.BiomeSpace;
import cr0s.warpdrive.world.HyperSpaceProvider;
import cr0s.warpdrive.world.HyperSpaceWorldGenerator;
import cr0s.warpdrive.world.SpaceProvider;
import cr0s.warpdrive.world.SpaceWorldGenerator;
import cr0s.WarpDrive.block.*;
import cr0s.WarpDrive.command.*;
import cr0s.WarpDrive.data.*;
import cr0s.WarpDrive.item.*;
import cr0s.WarpDrive.machines.*;
import cr0s.WarpDrive.render.*;
import cr0s.WarpDrive.world.*;
import dan200.computercraft.api.ComputerCraftAPI;
@Mod(modid = "warpdrive", name = "WarpDrive", version = "2.0.0",
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.Minecraft;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.EnumArmorMaterial;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.packet.Packet250CustomPayload;
import net.minecraft.server.MinecraftServer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraft.world.WorldServer;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraftforge.common.Configuration;
import net.minecraftforge.common.DimensionManager;
import net.minecraftforge.common.EnumHelper;
import net.minecraftforge.common.ForgeChunkManager;
import net.minecraftforge.common.ForgeChunkManager.LoadingCallback;
import net.minecraftforge.common.ForgeChunkManager.Ticket;
import net.minecraftforge.common.ForgeChunkManager.Type;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.oredict.ShapedOreRecipe;
import net.minecraftforge.oredict.ShapelessOreRecipe;
@Mod(modid = "WarpDrive", name = "WarpDrive", version = "1.2.7.0",
dependencies = "required-after:IC2;"
+ " required-after:CoFHCore;"
+ " after:ComputerCraft;"
@ -102,6 +68,11 @@ import dan200.computercraft.api.ComputerCraftAPI;
+ " after:GraviSuite;"
+ " after:UndergroundBiomes;"
+ " after:NetherOres")
@NetworkMod(clientSideRequired = true, serverSideRequired = true, channels = {
"WarpDriveBeam",
"WarpDriveFreq",
"WarpDriveLaserT",
"WarpDriveCloaks" }, packetHandler = PacketHandler.class)
/**
* @author Cr0s
*/
@ -117,19 +88,28 @@ public class WarpDrive implements LoadingCallback {
public static Block monitorBlock;
public static Block boosterBlock;
public static Block miningLaserBlock;
public static Block laserTreeFarmBlock;
public static Block liftBlock;
public static Block scannerBlock;
public static Block cloakBlock;
public static Block cloakCoilBlock;
public static Block transporterBlock;
public static Block reactorMonitorBlock;
public static Block powerReactorBlock;
public static Block powerLaserBlock;
public static Block powerStoreBlock;
public static Block airBlock;
public static Block gasBlock;
public static Block iridiumBlock;
public static Block transportBeaconBlock;
public static Block chunkLoaderBlock;
public static BlockDecorative decorativeBlock;
public static Item reactorLaserFocusItem;
public static ItemWarpComponent componentItem;
public static ItemWarpUpgrade upgradeItem;
public static ArmorMaterial armorMaterial = EnumHelper.addArmorMaterial("WARP", 5, new int[]{1, 3, 2, 1}, 15);
public static EnumArmorMaterial armorMaterial = EnumHelper.addArmorMaterial("WARP", 5, new int[]{1, 3, 2, 1}, 15);
public static ItemWarpArmor helmetItem;
public static ItemWarpAirCanister airCanisterItem;
@ -147,7 +127,7 @@ public class WarpDrive implements LoadingCallback {
@Instance("WarpDrive")
public static WarpDrive instance;
@SidedProxy(clientSide = "cr0s.warpdrive.client.ClientProxy", serverSide = "cr0s.warpdrive.CommonProxy")
@SidedProxy(clientSide = "cr0s.WarpDrive.client.ClientProxy", serverSide = "cr0s.WarpDrive.CommonProxy")
public static CommonProxy proxy;
public static WarpCoresRegistry warpCores;
@ -172,6 +152,9 @@ public class WarpDrive implements LoadingCallback {
if (FMLCommonHandler.instance().getSide().isClient()) {
Minecraft mc = Minecraft.getMinecraft();
// System.out.println("[WarpDrive] Registering sounds event handler...");
MinecraftForge.EVENT_BUS.register(new SoundHandler());
normalFOV = mc.gameSettings.fovSetting;
normalSensitivity = mc.gameSettings.mouseSensitivity;
WarpDrive.print("[WarpDrive] FOV is " + normalFOV + " Sensitivity is " + normalSensitivity);
@ -181,10 +164,11 @@ public class WarpDrive implements LoadingCallback {
@SideOnly(Side.CLIENT)
@EventHandler
public void init(FMLInitializationEvent event) {
// FIXME FMLInterModComms.sendMessage("Waila", "register", "cr0s.WarpDrive.client.WailaHandler.callbackRegister");
}
public static void print(String out) {
System.out.println("WarpDrive " + (FMLCommonHandler.instance().getEffectiveSide().isClient() ? "Client ":"Server ") + ": " + out);
System.out.println((FMLCommonHandler.instance().getEffectiveSide().isClient() ? "Client ":"Server ") + out);
}
public static void debugPrint(String out) {
@ -198,126 +182,178 @@ public class WarpDrive implements LoadingCallback {
WarpDriveConfig.load();
// CORE CONTROLLER
protocolBlock = new BlockProtocol(0, Material.rock);
protocolBlock = new BlockProtocol(WarpDriveConfig.controllerID,0, Material.rock);
GameRegistry.registerBlock(protocolBlock, "protocolBlock");
GameRegistry.registerTileEntity(TileEntityProtocol.class, "protocolBlock");
// WARP CORE
warpCore = new BlockReactor(0, Material.rock);
warpCore = new BlockReactor(WarpDriveConfig.coreID, 0, Material.rock);
GameRegistry.registerBlock(warpCore, "warpCore");
GameRegistry.registerTileEntity(TileEntityReactor.class, "warpCore");
// WARP RADAR
radarBlock = new BlockRadar(0, Material.rock);
radarBlock = new BlockRadar(WarpDriveConfig.radarID, 0, Material.rock);
GameRegistry.registerBlock(radarBlock, "radarBlock");
GameRegistry.registerTileEntity(TileEntityRadar.class, "radarBlock");
// WARP ISOLATION
isolationBlock = new BlockWarpIsolation(0, Material.rock);
isolationBlock = new BlockWarpIsolation( WarpDriveConfig.isolationID, 0, Material.rock);
GameRegistry.registerBlock(isolationBlock, "isolationBlock");
// AIR GENERATOR
airgenBlock = new BlockAirGenerator(0,Material.rock);
airgenBlock = new BlockAirGenerator(WarpDriveConfig.airgenID, 0,Material.rock);
GameRegistry.registerBlock(airgenBlock, "airgenBlock");
GameRegistry.registerTileEntity(TileEntityAirGenerator.class, "airgenBlock");
// AIR Block
airBlock = (new BlockAir());
// AIR BLOCK
airBlock = (new BlockAir(WarpDriveConfig.airID));
GameRegistry.registerBlock(airBlock, "airBlock");
// GAS Block
gasBlock = new BlockGas();
// GAS BLOCK
gasBlock = (new BlockGas(WarpDriveConfig.gasID));
GameRegistry.registerBlock(gasBlock, "gasBlock");
// LASER EMITTER
laserBlock = new BlockLaser(0, Material.rock);
laserBlock = new BlockLaser(WarpDriveConfig.laserID, 0,Material.rock);
GameRegistry.registerBlock(laserBlock, "laserBlock");
GameRegistry.registerTileEntity(TileEntityLaser.class, "laserBlock");
// LASER EMITTER WITH CAMERA
laserCamBlock = new BlockLaserCam(0, Material.rock);
laserCamBlock = new BlockLaserCam(WarpDriveConfig.laserCamID, 0, Material.rock);
GameRegistry.registerBlock(laserCamBlock, "laserCamBlock");
// CAMERA
cameraBlock = new BlockCamera(0,Material.rock);
cameraBlock = new BlockCamera(WarpDriveConfig.camID, 0,Material.rock);
GameRegistry.registerBlock(cameraBlock, "cameraBlock");
GameRegistry.registerTileEntity(TileEntityCamera.class, "cameraBlock");
// MONITOR
monitorBlock = new BlockMonitor();
monitorBlock = new BlockMonitor(WarpDriveConfig.monitorID);
GameRegistry.registerBlock(monitorBlock, "monitorBlock");
GameRegistry.registerTileEntity(TileEntityMonitor.class, "monitorBlock");
// MINING LASER
miningLaserBlock = new BlockMiningLaser(0, Material.rock);
miningLaserBlock = new BlockMiningLaser(WarpDriveConfig.miningLaserID, 0, Material.rock);
GameRegistry.registerBlock(miningLaserBlock, "miningLaserBlock");
GameRegistry.registerTileEntity(TileEntityMiningLaser.class, "miningLaserBlock");
// LASER TREE FARM
laserTreeFarmBlock = new BlockLaserTreeFarm(WarpDriveConfig.laserTreeFarmID, 0, Material.rock);
GameRegistry.registerBlock(laserTreeFarmBlock, "laserTreeFarmBlock");
GameRegistry.registerTileEntity(TileEntityLaserTreeFarm.class,"laserTreeFarmBlock");
// PARTICLE BOOSTER
boosterBlock = new BlockParticleBooster(0, Material.rock);
boosterBlock = new BlockParticleBooster(WarpDriveConfig.particleBoosterID, 0, Material.rock);
GameRegistry.registerBlock(boosterBlock, "boosterBlock");
GameRegistry.registerTileEntity(TileEntityParticleBooster.class, "boosterBlock");
// LASER LIFT
liftBlock = new BlockLift(0, Material.rock);
liftBlock = new BlockLift(WarpDriveConfig.liftID, 0, Material.rock);
GameRegistry.registerBlock(liftBlock, "liftBlocks");
GameRegistry.registerBlock(liftBlock, "liftBlock");
GameRegistry.registerTileEntity(TileEntityLift.class, "liftBlock");
// IRIDIUM Blocks
iridiumBlock = new BlockIridium();
// IRIDIUM BLOCK
iridiumBlock = new BlockIridium(WarpDriveConfig.iridiumBlockID);
GameRegistry.registerBlock(iridiumBlock, "iridiumBlock");
// SHIP SCANNER
scannerBlock = new BlockShipScanner(0, Material.rock);
scannerBlock = new BlockShipScanner(WarpDriveConfig.shipScannerID, 0, Material.rock);
GameRegistry.registerBlock(scannerBlock, "scannerBlocks");
GameRegistry.registerBlock(scannerBlock, "scannerBlock");
GameRegistry.registerTileEntity(TileEntityShipScanner.class, "scannerBlock");
// CLOAKING DEVICE CORE
cloakBlock = new BlockCloakingDeviceCore(0, Material.rock);
cloakBlock = new BlockCloakingDeviceCore(WarpDriveConfig.cloakCoreID, 0, Material.rock);
GameRegistry.registerBlock(cloakBlock, "cloakBlock");
GameRegistry.registerTileEntity(TileEntityCloakingDeviceCore.class, "cloakBlock");
// CLOAKING DEVICE COIL
cloakCoilBlock = new BlockCloakingCoil(0, Material.rock);
cloakCoilBlock = new BlockCloakingCoil(WarpDriveConfig.cloakCoilID, 0, Material.rock);
GameRegistry.registerBlock(cloakCoilBlock, "cloakCoilBlock");
// COMPONENT ItemsS
componentItem = new ItemWarpComponent();
// TRANSPORTER
transporterBlock = new BlockTransporter(WarpDriveConfig.transporterID,Material.rock);
GameRegistry.registerBlock(transporterBlock, "transporter");
GameRegistry.registerTileEntity(TileEntityTransporter.class,"transporter");
// REACTOR MONITOR
reactorMonitorBlock = new BlockLaserReactorMonitor(WarpDriveConfig.reactorMonitorID, Material.rock);
GameRegistry.registerBlock(reactorMonitorBlock, "reactorMonitor");
GameRegistry.registerTileEntity(TileEntityLaserReactorMonitor.class,"reactorMonitor");
// TRANSPORT BEACON
transportBeaconBlock = new BlockTransportBeacon(WarpDriveConfig.transportBeaconID);
GameRegistry.registerBlock(transportBeaconBlock, "transportBeacon");
// POWER REACTOR, LASER, STORE
powerReactorBlock = new BlockPowerReactor(WarpDriveConfig.powerReactorID);
GameRegistry.registerBlock(powerReactorBlock,"powerReactor");
GameRegistry.registerTileEntity(TileEntityPowerReactor.class, "powerReactor");
powerLaserBlock = new BlockPowerLaser(WarpDriveConfig.powerLaserID);
GameRegistry.registerBlock(powerLaserBlock, "powerLaser");
GameRegistry.registerTileEntity(TileEntityPowerLaser.class, "powerLaser");
powerStoreBlock = new BlockPowerStore(WarpDriveConfig.powerStoreID);
GameRegistry.registerBlock(powerStoreBlock,"powerStore");
GameRegistry.registerTileEntity(TileEntityPowerStore.class, "powerStore");
// CHUNK LOADER
chunkLoaderBlock = new BlockChunkLoader(WarpDriveConfig.chunkLoaderID);
GameRegistry.registerBlock(chunkLoaderBlock, "chunkLoader");
GameRegistry.registerTileEntity(TileEntityChunkLoader.class, "chunkLoader");
// DECORATIVE
decorativeBlock = new BlockDecorative(WarpDriveConfig.decorativeID);
GameRegistry.registerBlock(decorativeBlock, ItemBlockDecorative.class, "decorative");
// REACTOR LASER FOCUS
reactorLaserFocusItem = new ItemReactorLaserFocus(WarpDriveConfig.reactorLaserFocusID);
GameRegistry.registerItem(reactorLaserFocusItem, "reactorLaserFocus");
// COMPONENT ITEMS
componentItem = new ItemWarpComponent(WarpDriveConfig.componentID);
GameRegistry.registerItem(componentItem, "component");
helmetItem = new ItemWarpArmor(0);
helmetItem = new ItemWarpArmor(WarpDriveConfig.helmetID, 0);
GameRegistry.registerItem(helmetItem, "helmet");
airCanisterItem = new ItemWarpAirCanister();
airCanisterItem = new ItemWarpAirCanister(WarpDriveConfig.airCanisterID);
GameRegistry.registerItem(airCanisterItem, "airCanisterFull");
upgradeItem = new ItemWarpUpgrade(WarpDriveConfig.upgradeID);
GameRegistry.registerItem(upgradeItem, "upgrade");
proxy.registerEntities();
ForgeChunkManager.setForcedChunkLoadingCallback(instance, instance);
spaceWorldGenerator = new SpaceWorldGenerator();
GameRegistry.registerWorldGenerator(spaceWorldGenerator, 0);
GameRegistry.registerWorldGenerator(spaceWorldGenerator);
hyperSpaceWorldGenerator = new HyperSpaceWorldGenerator();
GameRegistry.registerWorldGenerator(hyperSpaceWorldGenerator, 0);
GameRegistry.registerWorldGenerator(hyperSpaceWorldGenerator);
registerSpaceDimension();
registerHyperSpaceDimension();
@ -325,7 +361,7 @@ public class WarpDrive implements LoadingCallback {
MinecraftForge.EVENT_BUS.register(new SpaceEventHandler());
if (FMLCommonHandler.instance().getEffectiveSide().isClient()) {
warpdriveTab.setBackgroundImageName("Items.png");
warpdriveTab.setBackgroundImageName("items.png");
MinecraftForge.EVENT_BUS.register(new CameraOverlay(Minecraft.getMinecraft()));
}
@ -359,76 +395,93 @@ public class WarpDrive implements LoadingCallback {
private static void initVanillaRecipes() {
componentItem.registerRecipes();
decorativeBlock.initRecipes();
upgradeItem.initRecipes();
//WarpCore
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(warpCore), false, "ipi", "ici", "idi",
'i', Items.iron_ingot,
'i', Item.ingotIron,
'p', componentItem.getIS(6),
'c', componentItem.getIS(2),
'd', Items.diamond));
'd', Item.diamond));
//Controller
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(protocolBlock), false, "ici", "idi", "iii",
'i', Items.iron_ingot,
'i', Item.ingotIron,
'c', componentItem.getIS(5),
'd', Items.diamond));
'd', Item.diamond));
//Radar
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(radarBlock), false, "ggg", "pdc", "iii",
'i', Items.iron_ingot,
'i', Item.ingotIron,
'c', componentItem.getIS(5),
'p', componentItem.getIS(6),
'g', Blocks.glass,
'd', Items.diamond));
'g', Block.glass,
'd', Item.diamond));
//Isolation Blocks
//Isolation Block
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(isolationBlock), false, "igi", "geg", "igi",
'i', Items.iron_ingot,
'g', Blocks.glass,
'e', Items.ender_pearl));
'i', Item.ingotIron,
'g', Block.glass,
'e', Item.enderPearl));
//Air generator
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(airgenBlock), false, "ibi", "i i", "ipi",
'i', Items.iron_ingot,
'b', Blocks.iron_bars,
'i', Item.ingotIron,
'b', Block.fenceIron,
'p', componentItem.getIS(6)));
//Laser
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(laserBlock), false, "ili", "iri", "ici",
'i', Items.iron_ingot,
'r', Items.redstone,
'i', Item.ingotIron,
'r', Item.redstone,
'c', componentItem.getIS(5),
'l', componentItem.getIS(3),
'p', componentItem.getIS(6)));
//Mining laser
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(miningLaserBlock), false, "ici", "iti", "ili",
'i', Items.iron_ingot,
'r', Items.redstone,
'i', Item.ingotIron,
'r', Item.redstone,
't', componentItem.getIS(1),
'c', componentItem.getIS(5),
'l', componentItem.getIS(3)));
//Tree farm laser
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(laserTreeFarmBlock), false, "ili", "sts", "ici",
'i', Item.ingotIron,
's', "treeSapling",
't', componentItem.getIS(1),
'c', componentItem.getIS(5),
'l', componentItem.getIS(3)));
//Laser Lift
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(liftBlock), false, "ipi", "rtr", "ili",
'i', Items.iron_ingot,
'r', Items.redstone,
'i', Item.ingotIron,
'r', Item.redstone,
't', componentItem.getIS(1),
'l', componentItem.getIS(3),
'p', componentItem.getIS(6)));
//Transporter
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(transporterBlock), false, "iii", "ptc", "iii",
'i', Item.ingotIron,
't', componentItem.getIS(1),
'c', componentItem.getIS(5),
'p', componentItem.getIS(6)));
//Particle Booster
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(boosterBlock), false, "ipi", "rgr", "iii",
'i', Items.iron_ingot,
'r', Items.redstone,
'g', Blocks.glass,
'i', Item.ingotIron,
'r', Item.redstone,
'g', Block.glass,
'p', componentItem.getIS(6)));
//Camera
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(cameraBlock), false, "ngn", "i i", "ici",
'i', Items.iron_ingot,
'n', Items.gold_nugget,
'g', Blocks.glass,
'i', Item.ingotIron,
'n', Item.goldNugget,
'g', Block.glass,
'c', componentItem.getIS(5)));
//LaserCamera
@ -436,43 +489,82 @@ public class WarpDrive implements LoadingCallback {
//Monitor
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(monitorBlock), false, "ggg", "iti", "ici",
'i', Items.iron_ingot,
't', Blocks.torch,
'g', Blocks.glass,
'i', Item.ingotIron,
't', Block.torchWood,
'g', Block.glass,
'c', componentItem.getIS(5)));
//Cloaking device
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(cloakBlock), false, "ipi", "lrl", "ici",
'i', Items.iron_ingot,
'r', Items.redstone,
'i', Item.ingotIron,
'r', Item.redstone,
'l', componentItem.getIS(3),
'c', componentItem.getIS(5),
'p', componentItem.getIS(6)));
//Cloaking coil
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(cloakCoilBlock), false, "ini", "rdr", "ini",
'i', Items.iron_ingot,
'd', Items.diamond,
'r', Items.redstone,
'n', Items.gold_nugget));
'i', Item.ingotIron,
'd', Item.diamond,
'r', Item.redstone,
'n', Item.goldNugget));
//Power Laser
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(powerLaserBlock), false, "iii", "ilg", "ici",
'i', Item.ingotIron,
'g', Block.glass,
'c', componentItem.getIS(5),
'l', componentItem.getIS(3)));
//Power Reactor
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(powerReactorBlock), false, "ipi", "gog", "ici",
'i', Item.ingotIron,
'g', Block.glass,
'o', componentItem.getIS(4),
'c', componentItem.getIS(5),
'p', componentItem.getIS(6)));
//Power Store
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(powerStoreBlock), false, "ipi", "isi", "ici",
'i', Item.ingotIron,
's', componentItem.getIS(7),
'c', componentItem.getIS(5),
'p', componentItem.getIS(6)));
//Transport Beacon
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(transportBeaconBlock), false, " e ", "ldl", " s ",
'e', Item.enderPearl,
'l', "dyeBlue",
'd', Item.diamond,
's', Item.stick));
//Chunk Loader
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(chunkLoaderBlock), false, "ipi", "ici", "ifi",
'i', Item.ingotIron,
'p', componentItem.getIS(6),
'c', componentItem.getIS(0),
'f', componentItem.getIS(5)));
//Helmet
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(helmetItem), false, "iii", "iwi", "gcg",
'i', Items.iron_ingot,
'w', Blocks.wool,
'g', Blocks.glass,
'i', Item.ingotIron,
'w', Block.cloth,
'g', Block.glass,
'c', componentItem.getIS(8)));
}
private static void initAETERecipes() {
ItemStack redstoneEnergycell = GameRegistry.findItemStack("ThermalExpansion", "cellReinforced", 1);
ItemStack resonantEnergycell = GameRegistry.findItemStack("ThermalExpansion", "cellResonant", 1);
ItemStack bucketEnder = GameRegistry.findItemStack("ThermalExpansion", "bucketEnder", 1);
ItemStack fluixCrystal = WarpDriveConfig.getAEMaterial("matFluxCrystal");
ItemStack quantumEntangledSingularity = WarpDriveConfig.getAEMaterial("matQuantumEntangledSingularity");
ItemStack vibrantQuartzGlass = WarpDriveConfig.getAEBlock("blkQuartzLamp");
vibrantQuartzGlass.setItemDamage(4);
ItemStack antimatter = GameRegistry.findItemStack("ResonantInduction|Atomic", "antimatter", 1);
antimatter.setItemDamage(0);
ItemStack floppy = GameRegistry.findItemStack("ComputerCraft", "disk", 1);
ItemStack ultimateLappack = new ItemStack(WarpDriveConfig.GS_ultimateLappack, 1, 1);
// top = advancedCircuit, redstoneEnergycell, advancedCircuit
// middle = fluix crystal, advancedMachine, fluix crystal
@ -492,14 +584,37 @@ public class WarpDrive implements LoadingCallback {
'c', WarpDriveConfig.getIC2Item("advancedCircuit"),
'o', floppy,
'f', fluixCrystal);
// top = Iridium plate, Resonant Energycell, Iridium plate
// middle = Singularity, 125 milligram antimatter, Singularity
// bottom = Iridium plate, Ultimate lappack, Iridium plate
GameRegistry.addRecipe(new ItemStack(powerReactorBlock), "iri", "sas", "ili",
'i', WarpDriveConfig.getIC2Item("iridiumPlate"),
's', quantumEntangledSingularity,
'a', antimatter,
'l', ultimateLappack,
'r', resonantEnergycell);
// top = Advanced circuit, Advanced alloy, Advanced alloy
// middle = Advanced circuit, Warp drive laser, Vibrant quartz glass
// bottom = Advanced circuit, Certus quartz tank, Advanced alloy
ItemStack isMiningLaserBlock = new ItemStack(miningLaserBlock.blockID, 1, 0);
ItemStack isCertusQuartzTank = new ItemStack(WarpDriveConfig.AEExtra_certusQuartzTank.blockID, 1, 0);
GameRegistry.addRecipe(new ItemStack(powerLaserBlock), "caa", "czg", "cta",
'c', WarpDriveConfig.getIC2Item("advancedCircuit"),
'a', WarpDriveConfig.getIC2Item("advancedAlloy"),
'z', isMiningLaserBlock,
't', isCertusQuartzTank,
'g', vibrantQuartzGlass);
}
private static void initIC2Recipes() {
GameRegistry.addRecipe(new ItemStack(warpCore), "ici", "cmc", "ici",
'i', WarpDriveConfig.getIC2Item("iridiumPlate"),
'm', WarpDriveConfig.getIC2Item("advancedMachine"),
'c', WarpDriveConfig.getIC2Item("advancedCircuit"));
'i', WarpDriveConfig.getIC2Item("iridiumPlate"),
'm', WarpDriveConfig.getIC2Item("advancedMachine"),
'c', WarpDriveConfig.getIC2Item("advancedCircuit"));
GameRegistry.addRecipe(new ItemStack(protocolBlock), "iic", "imi", "cii",
'i', WarpDriveConfig.getIC2Item("iridiumPlate"),
'm', WarpDriveConfig.getIC2Item("advancedMachine"),
@ -513,10 +628,10 @@ public class WarpDrive implements LoadingCallback {
GameRegistry.addRecipe(new ItemStack(isolationBlock), "iii", "idi", "iii",
'i', WarpDriveConfig.getIC2Item("iridiumPlate"),
'm', WarpDriveConfig.getIC2Item("advancedMachine"),
'd', Blocks.diamond_block);
'd', Block.blockDiamond);
GameRegistry.addRecipe(new ItemStack(airgenBlock), "lcl", "lml", "lll",
'l', Blocks.leaves,
'l', Block.leaves,
'm', WarpDriveConfig.getIC2Item("advancedMachine"),
'c', WarpDriveConfig.getIC2Item("advancedCircuit"));
@ -558,18 +673,42 @@ public class WarpDrive implements LoadingCallback {
GameRegistry.addRecipe(new ItemStack(cameraBlock), "cgc", "gmg", "cgc",
'm', WarpDriveConfig.getIC2Item("advancedMachine"),
'c', WarpDriveConfig.getIC2Item("advancedCircuit"),
'g', Blocks.glass);
'g', Block.glass);
GameRegistry.addRecipe(new ItemStack(monitorBlock), "gcg", "gmg", "ggg",
'm', WarpDriveConfig.getIC2Item("advancedMachine"),
'c', WarpDriveConfig.getIC2Item("advancedCircuit"),
'g', Blocks.glass);
'g', Block.glass);
GameRegistry.addRecipe(new ItemStack(scannerBlock), "sgs", "mma", "amm",
'm', WarpDriveConfig.getIC2Item("advancedMachine"),
'a', WarpDriveConfig.getIC2Item("advancedAlloy"),
's', WarpDriveConfig.getIC2Item("advancedCircuit"),
'g', Blocks.glass);
'g', Block.glass);
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(laserTreeFarmBlock),false,new Object[] {
"cwc", "wmw", "cwc",
'c', WarpDriveConfig.getIC2Item("electronicCircuit"),
'w', "logWood",
'm', miningLaserBlock }));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(transporterBlock), false, new Object[] {
"ece", "imi", "iei",
'e', Item.enderPearl,
'c', WarpDriveConfig.getIC2Item("electronicCircuit"),
'i', WarpDriveConfig.getIC2Item("plateiron"),
'm', WarpDriveConfig.getIC2Item("machine") }));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(reactorLaserFocusItem),false,new Object[] {
" p ", "pdp", " p ",
'p', WarpDriveConfig.getIC2Item("plateiron"),
'd', "gemDiamond"}));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(reactorMonitorBlock), false, new Object[] {
"pdp", "dmd", "pdp",
'p', WarpDriveConfig.getIC2Item("plateiron"),
'd', "gemDiamond",
'm', WarpDriveConfig.getIC2Item("mfeUnit")}));
GameRegistry.addRecipe(new ItemStack(cloakBlock), "imi", "mcm", "imi",
'i', iridiumBlock,
@ -605,10 +744,11 @@ public class WarpDrive implements LoadingCallback {
event.registerServerCommand(new SpaceTpCommand());
event.registerServerCommand(new InvisibleCommand());
event.registerServerCommand(new JumpgateCommand());
event.registerServerCommand(new DebugCommand());
}
public Ticket registerChunkLoadTE(WarpChunkTE te, boolean refreshLoading) {
World worldObj = te.getWorldObj();
World worldObj = te.worldObj;
if (ForgeChunkManager.ticketCountAvailableFor(this, worldObj) > 0)
{
Ticket t = ForgeChunkManager.requestTicket(this, worldObj, Type.NORMAL);
@ -657,7 +797,7 @@ public class WarpDrive implements LoadingCallback {
WorldServer ws = DimensionManager.getWorld(w);
if(ws != null)
{
TileEntity te = ws.getTileEntity(x, y, z);
TileEntity te = ws.getBlockTileEntity(x, y, z);
if(te != null && te instanceof WarpChunkTE)
{
if(((WarpChunkTE)te).shouldChunkLoad())

View file

@ -1,36 +1,29 @@
package cr0s.warpdrive;
import gravisuite.GraviSuite;
import ic2.api.item.IC2Items;
package cr0s.WarpDrive;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Random;
import java.util.Map;
import java.util.Set;
import java.util.Random;
import advsolar.common.AdvancedSolarPanel;
import mffs.Content;
import mffs.ModularForceFieldSystem;
import cpw.mods.fml.common.Loader;
import cr0s.WarpDrive.data.TransitionPlane;
import net.minecraftforge.common.Configuration;
import net.minecraftforge.common.Property;
import net.minecraftforge.oredict.OreDictionary;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.config.Configuration;
import net.minecraftforge.oredict.OreDictionary;
import cpw.mods.fml.common.Loader;
import cr0s.warpdrive.data.TransitionPlane;
import dan200.computercraft.ComputerCraft;
import ic2.api.item.Items;
public class WarpDriveConfig
{
private static Configuration config;
// Blocks (no longer neccessary, TODO: delete once compiling without)
/*
// Blocks
public static int coreID;
public static int controllerID;
public static int radarID;
@ -49,6 +42,16 @@ public class WarpDriveConfig
public static int shipScannerID;
public static int cloakCoreID;
public static int cloakCoilID;
public static int laserTreeFarmID;
public static int transporterID;
public static int transportBeaconID;
public static int reactorLaserFocusID;
public static int reactorMonitorID;
public static int powerReactorID;
public static int powerLaserID;
public static int powerStoreID;
public static int chunkLoaderID;
public static int decorativeID;
// Items
public static int componentID;
@ -58,12 +61,12 @@ public class WarpDriveConfig
public static int bootsID;
public static int airCanisterID;
public static int upgradeID;
*/
/*
* The variables which store whether or not individual mods are loaded
*/
public static boolean isForgeMultipartLoaded = false;
public static boolean isGregLoaded = false;
public static boolean isAppliedEnergisticsLoaded = false;
public static boolean isAdvSolPanelLoaded = false;
public static boolean isAtomicScienceLoaded = false;
@ -78,37 +81,37 @@ public class WarpDriveConfig
public static boolean isThermalExpansionLoaded = false;
public static boolean isMetallurgyLoaded = false;
public static boolean isAdvancedRepulsionSystemsLoaded = false;
public static boolean isMagicalCropsLoaded = false;
// ForgeMultipart (microblocks) support
public static Method forgeMultipart_helper_createTileFromNBT = null;
public static Method forgeMultipart_helper_sendDescPacket = null;
public static Method forgeMultipart_tileMultipart_onChunkLoad = null;
public static ItemStack IC2_Air;
public static ItemStack IC2_Empty;
public static Item IC2_RubberWood;
public static Item IC2_Resin;
public static int[] IC2_Air;
public static int[] IC2_Empty;
public static int IC2_RubberWood;
public static ItemStack IC2_Resin;
public static Item IC2_fluidCell;
public static Block CC_Computer, CC_peripheral, CC_Floppy, CCT_Turtle, CCT_Upgraded, CCT_Advanced;
public static Block GT_Ores, GT_Granite, GT_Machine;
public static Item ASP;
public static int CC_Computer = 0, CC_peripheral = 0, CC_Floppy = 0, CCT_Turtle = 0, CCT_Upgraded = 0, CCT_Advanced = 0;
public static int GT_Ores = 0, GT_Granite = 0, GT_Machine = 0;
public static int ASP = 0;
public static int AS_Turbine = 0, AS_deuteriumCell = 0;
public static int ICBM_Machine = 0, ICBM_Missile = 0, ICBM_Explosive = 0;
public static Item GS_ultimateLappack;
public static Block UB_igneousStone, UB_metamorphicStone, UB_metamorphicCobblestone, UB_sedimentaryStone, UB_igneousCobblestone;
public static int GS_ultimateLappack = 0;
public static int UB_igneousStone = 0, UB_igneousCobblestone = 0, UB_metamorphicStone = 0, UB_metamorphicCobblestone = 0, UB_sedimentaryStone = 0;
public static int NetherOres_count;
public static int[] NetherOres_block;
public static int[][] Metallurgy_overworldOresBlock;
public static int[][] Metallurgy_netherOresBlock;
public static int[][] Metallurgy_endOresBlock;
public static ArrayList<Block> forceFieldBlocks;
public static ArrayList<Integer> forceFieldBlocks;
public static ArrayList<Item> spaceHelmets, jetpacks, minerLogs, minerLeaves;
public static ArrayList<Block> minerOres, scannerIgnoreBlocks;
public static Set<Integer> SpaceHelmets, Jetpacks, MinerOres, MinerLogs, MinerLeaves, scannerIgnoreBlocks;
private static Class<?> AEBlocks;
private static Class<?> AEMaterials;
private static Class<?> AEItems;
public static ArrayList<Block> commonWorldGenOres;
public static ArrayList<int[]> CommonWorldGenOres;
public static Item AEExtra_fluidDrive;
public static Block AEExtra_certusQuartzTank;
@ -152,6 +155,7 @@ public class WarpDriveConfig
public static int WC_WARMUP_RANDOM_TICKS = 60;
public static int WC_CORES_REGISTRY_UPDATE_INTERVAL_SECONDS = 10;
public static int WC_ISOLATION_UPDATE_INTERVAL_SECONDS = 10;
public static String[] WC_UNLIMITED_PLAYERNAMES = { "notch", "someone" };
// Warp Radar
public static int WR_MAX_ENERGY_VALUE = 100000000; // 100kk eU
@ -225,7 +229,26 @@ public class WarpDriveConfig
// Air generator
public static int AG_RF_PER_CANISTER = 20;
// Reactor monitor
public static int RM_MAX_ENERGY = 1000000;
public static double RM_EU_PER_HEAT = 2;
// Transporter
public static int TR_MAX_ENERGY = 1000000;
public static boolean TR_RELATIVE_COORDS = true;
public static double TR_EU_PER_METRE = 100;
// public static double TR_MAX_SCAN_RANGE = 4; FIXME: not used ?!?
public static double TR_MAX_BOOST_MUL = 4;
// Power reactor
public static int PR_MAX_ENERGY = 100000000;
public static int PR_TICK_TIME = 5;
public static int PR_MAX_LASERS = 6;
// Power store
public static int PS_MAX_ENERGY = 1000000;
// Laser Lift
public static int LL_MAX_ENERGY = 2400;
public static int LL_LIFT_ENERGY = 800;
@ -237,7 +260,7 @@ public class WarpDriveConfig
public static int CL_RF_PER_CHUNKTICK = 320;
public static ItemStack getIC2Item(String id) {
return IC2Items.getItem(id);
return Items.getItem(id);
}
public static ItemStack getAEBlock(String id) {
@ -332,6 +355,7 @@ public class WarpDriveConfig
WC_CORES_REGISTRY_UPDATE_INTERVAL_SECONDS = config.get("WarpCore", "cores_registry_update_interval", WC_CORES_REGISTRY_UPDATE_INTERVAL_SECONDS, "(measured in seconds)").getInt();
WC_ISOLATION_UPDATE_INTERVAL_SECONDS = config.get("WarpCore", "isolation_update_interval", WC_ISOLATION_UPDATE_INTERVAL_SECONDS, "(measured in seconds)").getInt();
WC_UNLIMITED_PLAYERNAMES = config.get("WarpCore", "unlimited_playernames", WC_UNLIMITED_PLAYERNAMES, "List of player names which gives unlimited block counts to their ship").getStringList();
// Warp Radar
WR_MAX_ENERGY_VALUE = config.get("WarpRadar", "max_energy_value", WR_MAX_ENERGY_VALUE).getInt();
@ -405,6 +429,24 @@ public class WarpDriveConfig
// Air generator
AG_RF_PER_CANISTER = config.get("Air Generator", "energy_per_canister", AG_RF_PER_CANISTER).getInt();
// Reactor monitor
RM_MAX_ENERGY = config.get("Reactor Monitor", "max_rm_energy", RM_MAX_ENERGY).getInt();
RM_EU_PER_HEAT = config.get("Reactor Monitor", "eu_per_heat", RM_EU_PER_HEAT).getDouble(2);
// Transporter
TR_MAX_ENERGY = config.get("Transporter", "max_energy", TR_MAX_ENERGY).getInt();
TR_RELATIVE_COORDS = config.get("Transporter", "relative_coords", TR_RELATIVE_COORDS).getBoolean(true);
TR_EU_PER_METRE = config.get("Transporter", "eu_per_ent_per_metre", TR_EU_PER_METRE).getDouble(100);
TR_MAX_BOOST_MUL = config.get("Transporter", "max_boost", TR_MAX_BOOST_MUL).getInt();
// Power reactor
PR_MAX_ENERGY = config.get("Reactor", "max_energy", PR_MAX_ENERGY).getInt();
PR_TICK_TIME = config.get("Reactor", "ticks_per_update", PR_TICK_TIME).getInt();
PR_MAX_LASERS = config.get("Reactor", "max_lasers", PR_MAX_LASERS).getInt();
// Power store
PS_MAX_ENERGY = config.get("PowerStore", "max_energy", PS_MAX_ENERGY).getInt();
// Laser lift
LL_MAX_ENERGY = config.get("LaserLift", "max_energy", LL_MAX_ENERGY).getInt();
LL_LIFT_ENERGY = config.get("LaserLift", "lift_energy", LL_LIFT_ENERGY, "Energy consummed per entity moved").getInt();
@ -412,24 +454,24 @@ public class WarpDriveConfig
}
public static void load() {
commonWorldGenOres = new ArrayList<Block>();
commonWorldGenOres.add(Blocks.iron_ore);
commonWorldGenOres.add(Blocks.gold_ore);
commonWorldGenOres.add(Blocks.coal_ore);
commonWorldGenOres.add(Blocks.emerald_ore);
commonWorldGenOres.add(Blocks.lapis_ore);
commonWorldGenOres.add(Blocks.redstone_ore);
CommonWorldGenOres = new ArrayList<int[]>(30);
CommonWorldGenOres.add(new int[] {Block.oreIron.blockID, 0});
CommonWorldGenOres.add(new int[] {Block.oreGold.blockID, 0});
CommonWorldGenOres.add(new int[] {Block.oreCoal.blockID, 0});
CommonWorldGenOres.add(new int[] {Block.oreEmerald.blockID, 0});
CommonWorldGenOres.add(new int[] {Block.oreLapis.blockID, 0});
CommonWorldGenOres.add(new int[] {Block.oreRedstoneGlowing.blockID, 0});
CommonWorldGenOres.add(new int[] {Block.oreRedstone.blockID, 0});
forceFieldBlocks = new ArrayList<Block>();
forceFieldBlocks = new ArrayList<Integer>();
spaceHelmets = new ArrayList<Item>();
jetpacks = new ArrayList<Item>();
minerOres = new ArrayList<Block>();
minerLogs = new ArrayList<Item>();
minerLeaves = new ArrayList<Item>();
scannerIgnoreBlocks = new ArrayList<Block>();
SpaceHelmets = new HashSet<Integer>();
Jetpacks = new HashSet<Integer>();
MinerOres = new HashSet<Integer>();
MinerLogs = new HashSet<Integer>();
MinerLeaves = new HashSet<Integer>();
scannerIgnoreBlocks = new HashSet<Integer>();
config.load();
/* Unnneccessary, delete at some point
coreID = config.getBlock("core", 500).getInt();
controllerID = config.getBlock("controller", 501).getInt();
radarID = config.getBlock("radar", 502).getInt();
@ -448,7 +490,17 @@ public class WarpDriveConfig
shipScannerID = config.getBlock("shipscanner", 516).getInt();
cloakCoreID = config.getBlock("cloakcore", 517).getInt();
cloakCoilID = config.getBlock("cloakcoil", 518).getInt();
laserTreeFarmID = config.getBlock("lasertreefarm", 519).getInt();
transporterID = config.getBlock("transporter", 520).getInt();
transportBeaconID = config.getBlock("transportBeacon", 521).getInt();
reactorMonitorID = config.getBlock("reactorMonitor", 522).getInt();
powerLaserID = config.getBlock("powerLaser", 523).getInt();
powerReactorID = config.getBlock("powerReactor", 524).getInt();
powerStoreID = config.getBlock("powerStore", 525).getInt();
chunkLoaderID = config.getBlock("chunkLoader", 526).getInt();
decorativeID = config.getBlock("decorative",527).getInt();
reactorLaserFocusID = config.getItem("reactorLaserFocus", 8700).getInt();
componentID = config.getItem("component", 8701).getInt();
helmetID = config.getItem("helmet", 8702).getInt();
chestID = config.getItem("chest", 8703).getInt();
@ -456,7 +508,6 @@ public class WarpDriveConfig
bootsID = config.getItem("boots", 8705).getInt();
airCanisterID = config.getItem("airCanisterFull", 8706).getInt();
upgradeID = config.getItem("upgrade", 8707).getInt();
*/
isForgeMultipartLoaded = Loader.isModLoaded("ForgeMultipart");
if (isForgeMultipartLoaded) {
@ -471,6 +522,10 @@ public class WarpDriveConfig
if (isCCLoaded)
loadCC();
isGregLoaded = Loader.isModLoaded("gregtech_addon");
if (isGregLoaded)
loadGT();
isAppliedEnergisticsLoaded = Loader.isModLoaded("AppliedEnergistics");
if (isAppliedEnergisticsLoaded)
loadAppliedEnergistics();
@ -520,43 +575,42 @@ public class WarpDriveConfig
if (isAdvancedRepulsionSystemsLoaded) {
loadAdvancedRepulsionSystems();
}
minerOres.add(WarpDrive.iridiumBlock);
minerOres.add(Blocks.coal_ore);
minerOres.add(Blocks.quartz_ore);
minerOres.add(Blocks.obsidian);
minerOres.add(Blocks.web);
minerOres.add(Blocks.fence);
minerOres.add(Blocks.torch);
minerOres.add(Blocks.glowstone);
minerOres.add(Blocks.redstone_block);
isMagicalCropsLoaded = Loader.isModLoaded("MagicalCrops");
//
MinerOres.add(iridiumBlockID);
MinerOres.add(Block.oreCoal.blockID);
MinerOres.add(Block.oreNetherQuartz.blockID);
MinerOres.add(Block.obsidian.blockID);
MinerOres.add(Block.web.blockID);
MinerOres.add(Block.fence.blockID);
MinerOres.add(Block.torchWood.blockID);
MinerOres.add(Block.glowStone.blockID);
MinerOres.add(Block.blockRedstone.blockID);
// Ignore WarpDrive blocks (which potentially will be duplicated by cheaters using ship scan/deploy)
scannerIgnoreBlocks.add(WarpDrive.warpCore);
scannerIgnoreBlocks.add(WarpDrive.protocolBlock);
scannerIgnoreBlocks.add(WarpDrive.iridiumBlock);
scannerIgnoreBlocks.add(coreID);
scannerIgnoreBlocks.add(controllerID);
scannerIgnoreBlocks.add(iridiumBlockID);
if (isICLoaded) {
scannerIgnoreBlocks.add(Block.getBlockFromItem(IC2Items.getItem("mfsUnit").getItem()));
scannerIgnoreBlocks.add(Block.getBlockFromItem(IC2Items.getItem("mfeUnit").getItem()));
scannerIgnoreBlocks.add(Block.getBlockFromItem(IC2Items.getItem("cesuUnit").getItem()));
scannerIgnoreBlocks.add(Block.getBlockFromItem(IC2Items.getItem("batBox").getItem()));
scannerIgnoreBlocks.add(Items.getItem("mfsUnit").itemID);
scannerIgnoreBlocks.add(Items.getItem("mfeUnit").itemID);
scannerIgnoreBlocks.add(Items.getItem("cesuUnit").itemID);
scannerIgnoreBlocks.add(Items.getItem("batBox").itemID);
}
if (isICBMLoaded) {
//TODO: What is this for?
//scannerIgnoreBlocks.add(ICBM_Explosive);
scannerIgnoreBlocks.add(ICBM_Explosive);
}
if (isCCLoaded) {
//TODO: Fix
//scannerIgnoreBlocks.add(CC_Computer);
//scannerIgnoreBlocks.add(CCT_Turtle);
//scannerIgnoreBlocks.add(CCT_Upgraded);
//scannerIgnoreBlocks.add(CCT_Advanced);
scannerIgnoreBlocks.add(CC_Computer);
scannerIgnoreBlocks.add(CCT_Turtle);
scannerIgnoreBlocks.add(CCT_Upgraded);
scannerIgnoreBlocks.add(CCT_Advanced);
}
// Do not deploy ores and valuables
for (Block t : commonWorldGenOres) {// each element of this set is pair [id, meta]
scannerIgnoreBlocks.add(t); // we adding ID only
for (int[] t : CommonWorldGenOres) {// each element of this set is pair [id, meta]
scannerIgnoreBlocks.add(t[0]); // we adding ID only
}
loadWarpDriveConfig();
@ -564,32 +618,32 @@ public class WarpDriveConfig
}
public static void postInit() {
loadOreDict();
LoadOreDict();
}
private static void loadOreDict() {
private static void LoadOreDict() {
String[] oreNames = OreDictionary.getOreNames();
for(String oreName: oreNames) {
String lowerOreName = oreName.toLowerCase();
if (oreName.substring(0,3).equals("ore")) {
ArrayList<ItemStack> item = OreDictionary.getOres(oreName);
for(ItemStack i: item) {
minerOres.add(Block.getBlockFromItem(i.getItem()));
WarpDrive.debugPrint("Added ore: "+ i.getItem().getUnlocalizedName());
MinerOres.add(i.itemID);
WarpDrive.debugPrint("WD: Added ore ID: "+i.itemID);
}
}
if (lowerOreName.contains("log")) {
ArrayList<ItemStack> item = OreDictionary.getOres(oreName);
for(ItemStack i: item) {
minerLogs.add(i.getItem());
WarpDrive.debugPrint("Added log: "+i.getDisplayName());
MinerLogs.add(i.itemID);
WarpDrive.debugPrint("WD: Added log ID: "+i.itemID);
}
}
if (lowerOreName.contains("leave") || lowerOreName.contains("leaf")) {
ArrayList<ItemStack> item = OreDictionary.getOres(oreName);
for(ItemStack i: item) {
minerLeaves.add(i.getItem());
WarpDrive.debugPrint("Added leaf: "+i.getDisplayName());
MinerLeaves.add(i.itemID);
WarpDrive.debugPrint("WD: Added leaf ID: "+i.itemID);
}
}
}
@ -611,42 +665,42 @@ public class WarpDriveConfig
private static void loadIC2()
{
ASP = IC2Items.getItem("solarPanel").getItem();
spaceHelmets.add(IC2Items.getItem("hazmatHelmet").getItem());
spaceHelmets.add(IC2Items.getItem("quantumHelmet").getItem());
jetpacks.add(IC2Items.getItem("jetpack").getItem());
jetpacks.add(IC2Items.getItem("electricJetpack").getItem());
IC2_Air = IC2Items.getItem("airCell");
IC2_Empty = IC2Items.getItem("cell");
ItemStack rubberWood = IC2Items.getItem("rubberWood");
IC2_Resin = IC2Items.getItem("resin").getItem();
ASP = Items.getItem("solarPanel").itemID;
SpaceHelmets.add(Items.getItem("hazmatHelmet").itemID);
SpaceHelmets.add(Items.getItem("quantumHelmet").itemID);
Jetpacks.add(Items.getItem("jetpack").itemID);
Jetpacks.add(Items.getItem("electricJetpack").itemID);
IC2_Air = new int[] {Items.getItem("airCell").itemID, Items.getItem("airCell").getItemDamage()};
IC2_Empty = new int[] {Items.getItem("cell").itemID, Items.getItem("cell").getItemDamage()};
ItemStack rubberWood = Items.getItem("rubberWood");
IC2_Resin = Items.getItem("resin");
if(rubberWood != null) {
IC2_RubberWood = rubberWood.getItem();
IC2_RubberWood = rubberWood.itemID;
}
ItemStack ore = IC2Items.getItem("uraniumOre");
if (ore != null) commonWorldGenOres.add(Block.getBlockFromItem(ore.getItem()));
ore = IC2Items.getItem("copperOre");
if (ore != null) commonWorldGenOres.add(Block.getBlockFromItem(ore.getItem()));
ore = IC2Items.getItem("tinOre");
if (ore != null) commonWorldGenOres.add(Block.getBlockFromItem(ore.getItem()));
ore = IC2Items.getItem("leadOre");
if (ore != null) commonWorldGenOres.add(Block.getBlockFromItem(ore.getItem()));
ItemStack ore = Items.getItem("uraniumOre");
if (ore != null) CommonWorldGenOres.add(new int[] {ore.itemID, ore.getItemDamage()});
ore = Items.getItem("copperOre");
if (ore != null) CommonWorldGenOres.add(new int[] {ore.itemID, ore.getItemDamage()});
ore = Items.getItem("tinOre");
if (ore != null) CommonWorldGenOres.add(new int[] {ore.itemID, ore.getItemDamage()});
ore = Items.getItem("leadOre");
if (ore != null) CommonWorldGenOres.add(new int[] {ore.itemID, ore.getItemDamage()});
minerOres.add(Block.getBlockFromItem(IC2Items.getItem("rubberWood").getItem()));
IC2_fluidCell = IC2Items.getItem("FluidCell").getItem();
MinerOres.add(Items.getItem("rubberWood").itemID);
IC2_fluidCell = Items.getItem("FluidCell").getItem();
}
private static void loadCC()
{
try
{
CC_Computer = ComputerCraft.Blocks.computer;
CC_peripheral = ComputerCraft.Blocks.peripheral;
//CC_Floppy = ComputerCraft.Blocks.floppy; //TODO: Does not exist anymore. Check if replacement relevant
CCT_Turtle = ComputerCraft.Blocks.turtle;
CCT_Upgraded = ComputerCraft.Blocks.turtleExpanded;
CCT_Advanced = ComputerCraft.Blocks.turtleAdvanced;
Class<?> z = Class.forName("dan200.computercraft.ComputerCraft");
CC_Computer = z.getField("computerBlockID").getInt(null);
CC_peripheral = z.getField("peripheralBlockID").getInt(null);
CC_Floppy = z.getField("diskItemID").getInt(null);
CCT_Turtle = z.getField("turtleBlockID").getInt(null);
CCT_Upgraded = z.getField("turtleUpgradedBlockID").getInt(null);
CCT_Advanced = z.getField("turtleAdvancedBlockID").getInt(null);
}
catch (Exception e)
{
@ -654,7 +708,27 @@ public class WarpDriveConfig
e.printStackTrace();
}
}
private static void loadGT()
{
try
{
Class<?> z = Class.forName("gregtechmod.GT_Mod");
int[] t = (int[])z.getField("sBlockIDs").get(null);
GT_Machine = t[1];
GT_Ores = t[2]; // meta 1-15 = ores
GT_Granite = t[5]; // 0 - black, 1 - black cobble, 8 - red, 9 - red cobble
MinerOres.add(GT_Ores);
//MinerOres.add(GT_Granite);
}
catch (Exception e)
{
WarpDrive.debugPrint("WarpDriveConfig Error loading GT classes");
e.printStackTrace();
isGregLoaded = false;
}
}
private static void loadAppliedEnergistics()
{
try
@ -662,7 +736,7 @@ public class WarpDriveConfig
AEBlocks = Class.forName("appeng.api.Blocks");
AEMaterials = Class.forName("appeng.api.Materials");
AEItems = Class.forName("appeng.api.Items");
minerOres.add(Block.getBlockFromItem(((ItemStack)AEBlocks.getField("blkQuartzOre").get(null)).getItem()));
MinerOres.add(((ItemStack)AEBlocks.getField("blkQuartzOre").get(null)).itemID);
}
catch (Exception e)
{
@ -695,10 +769,11 @@ public class WarpDriveConfig
{
try
{
spaceHelmets.add(AdvancedSolarPanel.advancedSolarHelmet);
spaceHelmets.add(AdvancedSolarPanel.hybridSolarHelmet);
spaceHelmets.add(AdvancedSolarPanel.ultimateSolarHelmet);
Class<?> z = Class.forName("advsolar.common.AdvancedSolarPanel");
ASP = z.getField("idAdv").getInt(null);
SpaceHelmets.add(((Item)z.getField("advancedSolarHelmet").get(null)).itemID);
SpaceHelmets.add(((Item)z.getField("hybridSolarHelmet").get(null)).itemID);
SpaceHelmets.add(((Item)z.getField("ultimateSolarHelmet").get(null)).itemID);
}
catch (Exception e)
{
@ -709,25 +784,21 @@ public class WarpDriveConfig
}
private static void loadAtomicScience() {
//No 1.7.10 version
/*
try {
Class<?> z = Class.forName("resonantinduction.atomic.Atomic");
commonWorldGenOres.add(new int[] {((Block)z.getField("blockUraniumOre").get(null)).blockID, 0});
CommonWorldGenOres.add(new int[] {((Block)z.getField("blockUraniumOre").get(null)).blockID, 0});
AS_Turbine = ((Block)z.getField("blockElectricTurbine").get(null)).blockID;
AS_deuteriumCell = ((Item)z.getField("itemDeuteriumCell").get(null)).itemID;
} catch (Exception e) {
WarpDrive.debugPrint("WarpDriveConfig Error loading AS classes");
isAtomicScienceLoaded = false;
}*/
}
}
private static void loadICBM() {
//No 1.7 yet, second project
/*
try {
Class<?> z = Class.forName("icbm.core.ICBMCore");
commonWorldGenOres.add(new int[] {((Block)z.getField("blockSulfurOre").get(null)).blockID, 0});
CommonWorldGenOres.add(new int[] {((Block)z.getField("blockSulfurOre").get(null)).blockID, 0});
z = Class.forName("icbm.explosion.ICBMExplosion");
ICBM_Machine = ((Block)z.getField("blockMachine").get(null)).blockID;
ICBM_Missile = ((Item)z.getField("itemMissile").get(null)).itemID;
@ -736,12 +807,14 @@ public class WarpDriveConfig
WarpDrive.debugPrint("WarpDriveConfig Error loading ICBM classes");
e.printStackTrace();
isICBMLoaded = false;
}*/
}
}
private static void loadMFFS() {
try {
forceFieldBlocks.add(Content.forceField());
Class<?> z = Class.forName("mffs.ModularForceFieldSystem");
int blockId = ((Block)z.getField("blockForceField").get(null)).blockID;
forceFieldBlocks.add(blockId);
} catch (Exception e) {
WarpDrive.debugPrint("WarpDriveConfig Error loading MFFS classes");
e.printStackTrace();
@ -751,10 +824,12 @@ public class WarpDriveConfig
private static void loadGraviSuite() {
try {
spaceHelmets.add(GraviSuite.ultimateSolarHelmet);
jetpacks.add(GraviSuite.advJetpack);
jetpacks.add(GraviSuite.graviChestPlate);
GS_ultimateLappack = GraviSuite.ultimateLappack;
Class<?> z = Class.forName("gravisuite.GraviSuite");
if (z.getField("ultimateSolarHelmet").get(null) != null)
SpaceHelmets.add(((Item)z.getField("ultimateSolarHelmet").get(null)).itemID);
Jetpacks.add(z.getField("advJetpackID").getInt(null) + 256);
Jetpacks.add(z.getField("graviChestPlateID").getInt(null) + 256);
GS_ultimateLappack = z.getField("ultimateLappackID").getInt(null) + 256;
} catch (Exception e) {
WarpDrive.debugPrint("WarpDriveConfig Error loading GS classes");
e.printStackTrace();
@ -763,8 +838,6 @@ public class WarpDriveConfig
}
private static void loadUndergroundBiomes() {
//TODO: Re-add if desired. My patience has run out for mod compatibility.
/*
try {
Class<?> z = Class.forName("exterminatorJeff.undergroundBiomes.common.UndergroundBiomes");
UB_igneousStone = ((Block)z.getField("igneousStone").get(null)).blockID;
@ -778,7 +851,6 @@ public class WarpDriveConfig
e.printStackTrace();
isUndergroundBiomesLoaded = false;
}
*/
}
private static void loadNetherOres() {
@ -831,10 +903,10 @@ public class WarpDriveConfig
}
private static void loadAdvancedRepulsionSystems() {
//TODO: Cant find block object
try {
//forceFieldBlocks.add(BlockForceField);
Class<?> z = Class.forName("mods.immibis.ars.ARSMod");
int fieldBlockId = ((Block)z.getField("MFFSFieldblock").get(null)).blockID;
forceFieldBlocks.add(fieldBlockId);
} catch (Exception e) {
WarpDrive.print("WarpDriveConfig Error loading AdvancedRepulsionSystems classes");
e.printStackTrace();
@ -842,86 +914,173 @@ public class WarpDriveConfig
}
}
public static Block getDefaultSurfaceBlock(Random random, boolean corrupted, boolean isMoon) {
public static int[] getDefaultSurfaceBlock(Random random, boolean corrupted, boolean isMoon) {
if (isMoon) {
if (random.nextInt(5) == 1) {
return Blocks.netherrack;
if (isGregLoaded && (random.nextInt(100) == 1)) {
if (random.nextBoolean()) {
return new int[] {GT_Granite, (corrupted && random.nextBoolean())?1:0};
} else {
return new int[] {GT_Granite, (corrupted && random.nextBoolean())?9:8};
}
} else if (random.nextInt(5) == 1) {
return new int[] {Block.netherrack.blockID, 0};
} else if (random.nextInt(15) == 1) {
return Blocks.end_stone;
return new int[] {Block.whiteStone.blockID, 0};
}
} else {
if (random.nextInt(6) == 1) {
return Blocks.netherrack;
if (isGregLoaded && (random.nextInt(25) == 1)) {
if (random.nextBoolean()) {
return new int[] {GT_Granite, (corrupted && random.nextBoolean())?1:0};
} else {
return new int[] {GT_Granite, (corrupted && random.nextBoolean())?9:8};
}
} else if (random.nextInt(6) == 1) {
return new int[] {Block.netherrack.blockID, 0};
} else if (random.nextInt(50) == 1) {
return Blocks.end_stone;
return new int[] {Block.whiteStone.blockID, 0};
}
}
if (corrupted && random.nextBoolean()) {
if (isUndergroundBiomesLoaded) {
int rnd = random.nextInt(8 + 8 + 2);
if (rnd < 8) {
return UB_igneousCobblestone;
return new int[] {UB_igneousCobblestone, rnd};
} else if (rnd < (8 + 8)) {
return UB_metamorphicCobblestone;
return new int[] {UB_metamorphicCobblestone, rnd - 8};
}
}
return Blocks.cobblestone;
return new int[] {Block.cobblestone.blockID, 0};
}
if (isUndergroundBiomesLoaded) {
int rnd = random.nextInt(8 + 8 + 8 + 3);
if (rnd < 8) {
return UB_igneousCobblestone;
return new int[] {UB_igneousStone, rnd};
} else if (rnd < (8 + 8)) {
return UB_metamorphicStone;
return new int[] {UB_metamorphicStone, rnd - 8};
}
else if (rnd < (8 + 8 + 8)) {
return UB_sedimentaryStone;
if (rnd == 8 + 8 + 8) {
return new int[] {205, 0}; // emasher Limestone
} else {
return new int[] {UB_sedimentaryStone, rnd - 8 - 8};
}
}
}
return Blocks.stone;
return new int[] {Block.stone.blockID, 0};
}
public static Block getRandomSurfaceBlock(Random random, Block block, int blockMeta, boolean bedrock) {
public static int[] getRandomSurfaceBlock(Random random, int blockID, int blockMeta, boolean bedrock) {
if (bedrock && (random.nextInt(1000) == 1)) {
return Blocks.bedrock;
} else if (Blocks.end_stone.isAssociatedBlock(block)) {
return getRandomEndBlock(random, block, blockMeta);
} else if (Blocks.netherrack.isAssociatedBlock(block)) {
return getRandomNetherBlock(random, block, blockMeta);
return new int[] {Block.bedrock.blockID, 0};
} else if (blockID == GT_Granite) {
if ((blockMeta == 0) || (blockMeta == 1)) {
int[] t;
t = getRandomOverworldBlock(random, blockID, blockMeta);
if (t[0] == blockID)
t = getRandomOverworldBlock(random, blockID, blockMeta);
if (t[0] == blockID)
t = getRandomEndBlock(random, blockID, blockMeta);
return t;
} else if ((blockMeta == 8) || (blockMeta == 9)) {
int[] t;
t = getRandomOverworldBlock(random, blockID, blockMeta);
if (t[0] == blockID)
t = getRandomEndBlock(random, blockID, blockMeta);
if (t[0] == blockID)
t = getRandomOverworldBlock(random, blockID, blockMeta);
return t;
}
} else if (blockID == Block.whiteStone.blockID) {
return getRandomEndBlock(random, blockID, blockMeta);
} else if (blockID == Block.netherrack.blockID) {
return getRandomNetherBlock(random, blockID, blockMeta);
}
return getRandomOverworldBlock(random, block, blockMeta);
return getRandomOverworldBlock(random, blockID, blockMeta);
}
public static Block getRandomOverworldBlock(Random random, Block block, int blockMeta)
public static int[] getRandomOverworldBlock(Random random, int blockID, int blockMeta)
{
if (random.nextInt(25) == 5) {
return commonWorldGenOres.get(random.nextInt(commonWorldGenOres.size()));
return CommonWorldGenOres.get(random.nextInt(CommonWorldGenOres.size()));
} else if (isMetallurgyLoaded && (random.nextInt(25) == 1)) {
return Metallurgy_overworldOresBlock[random.nextInt(Metallurgy_overworldOresBlock.length)];
} else if (isAppliedEnergisticsLoaded && random.nextInt(750) == 1) {
return Block.getBlockFromItem(getAEBlock("blkQuartzOre").getItem());
return new int[] {getAEBlock("blkQuartzOre").itemID, getAEBlock("blkQuartzOre").getItemDamage()};
} else if (random.nextInt(250) == 1) {
return Blocks.diamond_ore;
return new int[] {Block.oreDiamond.blockID, 0};
} else if (!isNetherOresLoaded && (random.nextInt(10000) == 42)) {
return new int[] {iridiumBlockID, 0};
} else if (!isMagicalCropsLoaded && (random.nextInt(100) == 56)) {
return new int[] {3108, 0}; // Essence ore
} else if (isGregLoaded) {
if (random.nextInt(50) == 1)
return new int[] {GT_Ores, 5}; //Bauxite S /* Stone/Iron/Diamod pick | +S = Silktouch recommended */
else if (random.nextInt(50) == 1)
return new int[] {GT_Ores, 1}; //Galena S
else if (random.nextInt(100) == 1)
return new int[] {GT_Ores, 8}; //Sphalerite S+S
else if (random.nextInt(250) == 1)
return new int[] {GT_Ores, 13}; //Tetrahedrite I
else if (random.nextInt(250) == 1)
return new int[] {GT_Ores, 14}; //Cassiterite I
else if (random.nextInt(250) == 1)
return new int[] {GT_Ores, 15}; //Nickel I
else if (random.nextInt(500) == 1)
return new int[] {GT_Ores, 3}; //Ruby I+S
else if (random.nextInt(500) == 1)
return new int[] {GT_Ores, 4}; //Sapphire I+S
else if (random.nextInt(2000) == 1)
return new int[] {GT_Ores, 2}; //Iridium D+S
}
return block;
return new int[] {blockID, blockMeta};
}
public static Block getRandomNetherBlock(Random random, Block block, int blockMeta) {
public static int[] getRandomNetherBlock(Random random, int blockID, int blockMeta) {
if (isICLoaded && (!isNetherOresLoaded) && (random.nextInt(10000) == 42)) {
return WarpDrive.iridiumBlock;
return new int[] {iridiumBlockID, 0};
} else if (isNetherOresLoaded && (random.nextInt(25) == 1)) {
int rnd = random.nextInt(NetherOres_count);
return new int[] {NetherOres_block[rnd / 16], rnd % 16};
} else if (isMetallurgyLoaded && (random.nextInt(25) == 1)) {
return Metallurgy_netherOresBlock[random.nextInt(Metallurgy_netherOresBlock.length)];
} else if (random.nextInt(25) == 1) {
return Blocks.quartz_ore;
return new int[] {Block.oreNetherQuartz.blockID, 0};
} else if (!isMagicalCropsLoaded && (random.nextInt(100) == 56)) {
return new int[] {3109, 0}; // Nether essence ore
} else if (isGregLoaded) {
if (random.nextInt(100) == 1)
return new int[] {GT_Ores, 6}; //Pyrite S+S
else if (random.nextInt(100) == 1)
return new int[] {GT_Ores, 8}; //Sphalerite S+S
else if (random.nextInt(500) == 1)
return new int[] {GT_Ores, 7}; //Cinnabar I+S
} else if ((!isNetherOresLoaded) && (random.nextInt(100) == 13))
return commonWorldGenOres.get(random.nextInt(commonWorldGenOres.size()));
return block;
return CommonWorldGenOres.get(random.nextInt(CommonWorldGenOres.size()));
return new int[] {blockID, blockMeta};
}
public static Block getRandomEndBlock(Random random, Block block, int blockMeta)
public static int[] getRandomEndBlock(Random random, int blockID, int blockMeta)
{
if (isICLoaded && random.nextInt(10000) == 42) {
return WarpDrive.iridiumBlock;
return new int[] { iridiumBlockID, 0 };
} else if (isGregLoaded) {
if (random.nextInt(250) == 1)
return new int[] {GT_Ores, 9}; //Tungstate I
else if (random.nextInt(500) == 1)
return new int[] {GT_Ores, 12}; //Sodalite I+S
else if (random.nextInt(500) == 1)
return new int[] {GT_Ores, 10}; //Cooperite=Sheldonite D
else if (random.nextInt(1000) == 1)
return new int[] {GT_Ores, 11}; //Olivine D+S
} else if (isMetallurgyLoaded && (random.nextInt(25) == 1)) {
return Metallurgy_endOresBlock[random.nextInt(Metallurgy_endOresBlock.length)];
} else if (random.nextInt(200) == 13) {
return commonWorldGenOres.get(random.nextInt(commonWorldGenOres.size()));
return CommonWorldGenOres.get(random.nextInt(CommonWorldGenOres.size()));
}
return block;
return new int[] {blockID, blockMeta};
}
public static boolean isAirBlock(World worldObj, int id, int x, int y, int z) {
return id == 0 || Block.blocksList[id] == null || Block.blocksList[id].isAirBlock(worldObj, x, y, z);
}
}

File diff suppressed because it is too large Load diff

View file

@ -1,38 +1,83 @@
package cr0s.warpdrive.machines;
package cr0s.WarpDrive.machines;
import cpw.mods.fml.common.FMLCommonHandler;
import cr0s.WarpDrive.WarpDrive;
import cr0s.WarpDrive.api.IBlockUpdateDetector;
import cr0s.WarpDrive.api.IUpgradable;
import cr0s.WarpDrive.data.EnumUpgradeTypes;
import cr0s.WarpDrive.item.ItemWarpUpgrade;
import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import cr0s.warpdrive.WarpDrive;
import cr0s.warpdrive.api.IBlockUpdateDetector;
public abstract class WarpBlockContainer extends BlockContainer {
protected WarpBlockContainer() {
super(Material.iron);
protected WarpBlockContainer(int par1) {
super(par1, Material.iron);
}
protected WarpBlockContainer(Material m) {
super(m);
protected WarpBlockContainer(int par1, Material m) {
super(par1, m);
setHardness(0.5F);
setStepSound(Block.soundTypeMetal);
setStepSound(Block.soundMetalFootstep);
setCreativeTab(WarpDrive.warpdriveTab);
}
@Override
public void onBlockAdded(World w, int x, int y, int z) {
super.onBlockAdded(w, x, y, z);
TileEntity te = w.getTileEntity(x, y, z);
TileEntity te = w.getBlockTileEntity(x, y, z);
if (te instanceof IBlockUpdateDetector) {
((IBlockUpdateDetector)te).updatedNeighbours();
}
}
/* FIXME untested
@Override
public void onNeighborBlockChange(World w, int x, int y, int z, Block b) {
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int par6, float par7, float par8, float par9)
{
if (FMLCommonHandler.instance().getEffectiveSide().isClient()) {
return false;
}
boolean hasResponse = false;
TileEntity te = world.getBlockTileEntity(x, y, z);
if(te != null && te instanceof IUpgradable)
{
IUpgradable upgradable = (IUpgradable)te;
ItemStack is = player.inventory.getCurrentItem();
if(is != null)
{
Item i = is.getItem();
if(i instanceof ItemWarpUpgrade)
{
if(upgradable.takeUpgrade(EnumUpgradeTypes.values()[is.getItemDamage()],false))
{
if(!player.capabilities.isCreativeMode)
player.inventory.decrStackSize(player.inventory.currentItem, 1);
player.addChatMessage("Upgrade accepted");
}
else
{
player.addChatMessage("Upgrade declined");
}
hasResponse = true;
}
}
}
return hasResponse;
}
/**/
@Override
public void onNeighborBlockChange(World w, int x, int y, int z, int b) {
super.onNeighborBlockChange(w, x, y, z, b);
TileEntity te = w.getTileEntity(x, y, z);
TileEntity te = w.getBlockTileEntity(x, y, z);
if (te instanceof IBlockUpdateDetector) {
((IBlockUpdateDetector)te).updatedNeighbours();
}