Bugfixes + config

Fixed:
* TE duplication and overclocking after jump
Added:
* Configuration file
This commit is contained in:
Anus 2013-08-23 15:47:20 +04:00
parent 3f8f99394b
commit f0e6d400cb
15 changed files with 251 additions and 121 deletions

View file

@ -25,7 +25,7 @@ public class CamRegistry {
public boolean isCamAlive(CamRegistryItem i) {
if (i.worldObj != null) {
if (i.worldObj.getBlockId(i.camPos.x, i.camPos.y, i.camPos.z) != WarpDrive.instance.CAMERA_BLOCKID && i.worldObj.getBlockId(i.camPos.x, i.camPos.y, i.camPos.z) != WarpDrive.instance.LASER_BLOCKCAM_BLOCKID) {
if (i.worldObj.getBlockId(i.camPos.x, i.camPos.y, i.camPos.z) != WarpDrive.instance.config.camID && i.worldObj.getBlockId(i.camPos.x, i.camPos.y, i.camPos.z) != WarpDrive.instance.config.laserCamID) {
return false;
}

View file

@ -90,7 +90,7 @@ public final class EntityCamera extends EntityLivingBase {
} else if (Keyboard.isKeyDown(Keyboard.KEY_SPACE) && fireWaitTicks-- == 0) {
fireWaitTicks = 2;
// Make a shoot with camera-laser
if (worldObj.getBlockId(xCoord, yCoord, zCoord) == WarpDrive.LASER_BLOCKCAM_BLOCKID) {
if (worldObj.getBlockId(xCoord, yCoord, zCoord) == WarpDrive.instance.config.laserCamID) {
sendTargetPacket();
}
} else {

View file

@ -7,10 +7,15 @@ import dan200.computer.api.IPeripheral;
import dan200.turtle.api.ITurtleAccess;
import dan200.turtle.api.TurtleSide;
import ic2.api.energy.tile.IEnergyTile;
import ic2.api.network.NetworkHelper;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import net.minecraft.block.Block;
import net.minecraft.entity.Entity;
@ -397,7 +402,20 @@ public class EntityJump extends Entity {
public void finishJump() {
System.out.println("[JE] Finished. Jump took " + ((System.currentTimeMillis() - msCounter) / 1000F) + " seconds");
// Прыжок окончен
//FIXME TileEntity duplication workaround
System.out.println("Removing TE duplicates. Size before: " + targetWorld.loadedTileEntityList.size());
LocalProfiler.start("EntityJump.removeDuplicates()");
try {
targetWorld.loadedTileEntityList = this.removeDuplicates(targetWorld.loadedTileEntityList);
} catch (Exception e) {
System.out.println("TE Duplicates removing exception: " + e.getMessage());
}
LocalProfiler.stop();
System.out.println("Removing TE duplicates. Size after: " + targetWorld.loadedTileEntityList.size());
killEntity("");
}
@ -452,9 +470,9 @@ public class EntityJump extends Entity {
method = c.getDeclaredMethod ("onLoaded", new Class[0]);
method.invoke (te, new Object[0]);
} catch (Exception e) {
e.printStackTrace();
//e.printStackTrace();
}
} else // Machine
} else // Machine/Generator
if (c.getName().equals("ic2.core.block.TileEntityBlock") || c.getName().contains("ic2.core.block.generator")) {
try {
Method method;
@ -465,9 +483,17 @@ public class EntityJump extends Entity {
method = c.getDeclaredMethod ("onLoaded", new Class[0]);
method.invoke (te, new Object[0]);
} catch (Exception e) {
e.printStackTrace();
//e.printStackTrace();
}
}
te.updateContainingBlockInfo();
try {
NetworkHelper.updateTileEntityField(te, "facing");
} catch (Exception e) {
//e.printStackTrace();
}
}
}
@ -502,7 +528,7 @@ public class EntityJump extends Entity {
for(int z = z1; z <= z2; z++) {
int blockID = worldObj.getBlockId(x, y, z);
// Skip air blocks
if (blockID == 0 || blockID == WarpDrive.GAS_BLOCKID) {
if (blockID == 0 || blockID == WarpDrive.instance.config.gasID) {
continue;
}
@ -583,7 +609,7 @@ public class EntityJump extends Entity {
int blockID = worldObj.getBlockId(x, y, z);
// Skipping air blocks
if (blockID == 0 || blockID == WarpDrive.GAS_BLOCKID) {
if (blockID == 0 || blockID == WarpDrive.instance.config.gasID) {
continue;
}
@ -786,7 +812,7 @@ public class EntityJump extends Entity {
return false;
}
if (blockOnShipID != 0 && blockID != 0 && blockID != WarpDrive.AIR_BLOCKID && blockID != WarpDrive.GAS_BLOCKID && blockID != 18) {
if (blockOnShipID != 0 && blockID != 0 && blockID != WarpDrive.instance.config.airID && blockID != WarpDrive.instance.config.gasID && blockID != 18) {
blowX = x;
blowY = y;
blowZ = z;
@ -843,7 +869,7 @@ public class EntityJump extends Entity {
for (int z = minZ; z <= maxZ; z++) {
for (int y = minY; y <= maxY; y++) {
int blockID = worldObj.getBlockId(x, y, z);
if (blockID == 0 || blockID == WarpDrive.AIR_BLOCKID || blockID == WarpDrive.GAS_BLOCKID) {
if (blockID == 0 || blockID == WarpDrive.instance.config.airID || blockID == WarpDrive.instance.config.gasID) {
continue;
}
@ -867,12 +893,6 @@ public class EntityJump extends Entity {
}
/**
* Перемещение одиночного блока на новое место
*
* @param indexInShip индекс блока в сохранённом в памяти корабле
* @return состояние перемещения
*/
public boolean moveBlockSimple(int indexInShip) {
try {
JumpBlock shipBlock = ship[indexInShip];
@ -894,7 +914,7 @@ public class EntityJump extends Entity {
mySetBlock(targetWorld, newX, newY, newZ, blockID, blockMeta, 2);
// Re-schedule air blocks update
if (blockID == WarpDrive.AIR_BLOCKID) {
if (blockID == WarpDrive.instance.config.airID) {
targetWorld.markBlockForUpdate(newX, newY, newZ);
targetWorld.scheduleBlockUpdate(newX, newY, newZ, blockID, 40 + targetWorld.rand.nextInt(20));
}
@ -930,6 +950,7 @@ public class EntityJump extends Entity {
newTileEntity.validate();
worldObj.removeBlockTileEntity(oldX, oldY, oldZ);
targetWorld.setBlockTileEntity(newX, newY, newZ, newTileEntity);
}
} catch (Exception exception) {
@ -940,6 +961,24 @@ public class EntityJump extends Entity {
return true;
}
public ArrayList<Object> removeDuplicates(List<TileEntity> l) {
Set<TileEntity> s = new TreeSet<TileEntity>(new Comparator<TileEntity>() {
@Override
public int compare(TileEntity o1, TileEntity o2) {
if (o1.xCoord == o2.xCoord && o1.yCoord == o2.yCoord && o1.zCoord == o2.zCoord) {
System.out.println("Removed duplicated TE: " + o1 + ", " + o2);
return 0;
} else {
return 1;
}
}
});
s.addAll(l);
return new ArrayList<Object>(Arrays.asList(s.toArray()));
}
@Override
protected void readEntityFromNBT(NBTTagCompound nbttagcompound) {
//System.out.println("[JE@"+this+"] readEntityFromNBT()");

View file

@ -6,9 +6,11 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import cr0s.WarpDrive.JumpBlock;
import cr0s.WarpDrive.LocalProfiler;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.entity.Entity;
import net.minecraft.nbt.NBTTagCompound;
@ -239,7 +241,7 @@ public final class EntitySphereGen extends Entity {
} else if (random.nextInt(1000) == 1) {
_blockID = Block.bedrock.blockID;
} else if (random.nextInt(10000) == 42) {
_blockID = WarpDrive.IRIDIUM_BLOCKID;
_blockID = WarpDrive.instance.config.iridiumID;
}
return _blockID;

View file

@ -187,8 +187,8 @@ public class HyperSpaceProvider extends WorldProvider {
worldObj.setBlock(var5.posX, var5.posY + 3, var5.posZ, Block.glass.blockID, 0, 2);
worldObj.setBlock(var5.posX, var5.posY, var5.posZ, WarpDrive.AIR_BLOCKID, 15, 2);
worldObj.setBlock(var5.posX, var5.posY + 1, var5.posZ, WarpDrive.AIR_BLOCKID, 15, 2);
worldObj.setBlock(var5.posX, var5.posY, var5.posZ, WarpDrive.instance.config.airID, 15, 2);
worldObj.setBlock(var5.posX, var5.posY + 1, var5.posZ, WarpDrive.instance.config.airID, 15, 2);
}
return var5;
}

View file

@ -1,6 +1,7 @@
package cr0s.WarpDrive;
import java.util.HashMap;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayerMP;
@ -101,7 +102,7 @@ public class SpaceEventHandler {
int id1 = e.worldObj.getBlockId(x, y, z);
int id2 = e.worldObj.getBlockId(x, y + 1, z);
if (id1 == WarpDrive.AIR_BLOCKID || id2 == WarpDrive.AIR_BLOCKID) {
if (id1 == WarpDrive.instance.config.airID || id2 == WarpDrive.instance.config.airID) {
return false;
}

View file

@ -210,7 +210,7 @@ public class SpaceWorldGenerator implements IWorldGenerator {
}
private void generateGasSphereEntity(World world, int x, int y, int z, int radius, boolean hollow, int color) {
EntitySphereGen esg = new EntitySphereGen(world, x, y, z, radius, WarpDrive.GAS_BLOCKID, color, hollow, true, false);
EntitySphereGen esg = new EntitySphereGen(world, x, y, z, radius, WarpDrive.instance.config.gasID, color, hollow, true, false);
esg.xCoord = x;
esg.yCoord = y;
esg.zCoord = z;
@ -514,7 +514,7 @@ public class SpaceWorldGenerator implements IWorldGenerator {
else if (random.nextInt(500) == 1) {
blockID = Block.oreDiamond.blockID;
} else if (random.nextInt(10000) == 42) {
blockID = WarpDrive.IRIDIUM_BLOCKID;
blockID = WarpDrive.instance.config.iridiumID;
}
return blockID;

View file

@ -57,32 +57,32 @@ public class TileEntityAirGenerator extends TileEntity implements IEnergySink {
private void releaseAir() {
if (worldObj.isAirBlock(xCoord + 1, yCoord, zCoord) && (currentEnergyValue - EU_PER_AIRBLOCK >= 0)) {
worldObj.setBlock(xCoord + 1, yCoord, zCoord, WarpDrive.AIR_BLOCKID, START_CONCENTRATION_VALUE, 2);
worldObj.setBlock(xCoord + 1, yCoord, zCoord, WarpDrive.instance.config.airID, START_CONCENTRATION_VALUE, 2);
currentEnergyValue -= EU_PER_AIRBLOCK;
}
if (worldObj.isAirBlock(xCoord - 1, yCoord, zCoord) && (currentEnergyValue - EU_PER_AIRBLOCK >= 0)) {
worldObj.setBlock(xCoord - 1, yCoord, zCoord, WarpDrive.AIR_BLOCKID, START_CONCENTRATION_VALUE, 2);
worldObj.setBlock(xCoord - 1, yCoord, zCoord, WarpDrive.instance.config.airID, START_CONCENTRATION_VALUE, 2);
currentEnergyValue -= EU_PER_AIRBLOCK;
}
if (worldObj.isAirBlock(xCoord, yCoord + 1, zCoord) && (currentEnergyValue - EU_PER_AIRBLOCK >= 0)) {
worldObj.setBlock(xCoord, yCoord + 1, zCoord, WarpDrive.AIR_BLOCKID, START_CONCENTRATION_VALUE, 2);
worldObj.setBlock(xCoord, yCoord + 1, zCoord, WarpDrive.instance.config.airID, START_CONCENTRATION_VALUE, 2);
currentEnergyValue -= EU_PER_AIRBLOCK;
}
if (worldObj.isAirBlock(xCoord, yCoord - 1, zCoord) && (currentEnergyValue - EU_PER_AIRBLOCK >= 0)) {
worldObj.setBlock(xCoord, yCoord - 1, zCoord, WarpDrive.AIR_BLOCKID, START_CONCENTRATION_VALUE, 2);
worldObj.setBlock(xCoord, yCoord - 1, zCoord, WarpDrive.instance.config.airID, START_CONCENTRATION_VALUE, 2);
currentEnergyValue -= EU_PER_AIRBLOCK;
}
if (worldObj.isAirBlock(xCoord, yCoord, zCoord + 1) && (currentEnergyValue - EU_PER_AIRBLOCK >= 0)) {
worldObj.setBlock(xCoord, yCoord, zCoord + 1, WarpDrive.AIR_BLOCKID, START_CONCENTRATION_VALUE, 2);
worldObj.setBlock(xCoord, yCoord, zCoord + 1, WarpDrive.instance.config.airID, START_CONCENTRATION_VALUE, 2);
currentEnergyValue -= EU_PER_AIRBLOCK;
}
if (worldObj.isAirBlock(xCoord, yCoord, zCoord - 1) && (currentEnergyValue - EU_PER_AIRBLOCK >= 0)) {
worldObj.setBlock(xCoord, yCoord, zCoord - 1, WarpDrive.AIR_BLOCKID, START_CONCENTRATION_VALUE, 2);
worldObj.setBlock(xCoord, yCoord, zCoord - 1, WarpDrive.instance.config.airID, START_CONCENTRATION_VALUE, 2);
currentEnergyValue -= EU_PER_AIRBLOCK;
}
}

View file

@ -226,7 +226,7 @@ public class TileEntityLaser extends TileEntity implements IPeripheral{
}
// Hit is a laser head
if (blockID == WarpDrive.instance.LASER_BLOCK_BLOCKID || blockID == WarpDrive.instance.LASER_BLOCKCAM_BLOCKID) {
if (blockID == WarpDrive.instance.config.laserID || blockID == WarpDrive.instance.config.laserCamID) {
// Compare frequencies
TileEntityLaser tel = (TileEntityLaser)worldObj.getBlockTileEntity(hit.blockX, hit.blockY, hit.blockZ);
if (tel != null && tel.getFrequency() == frequency) {
@ -310,7 +310,7 @@ public class TileEntityLaser extends TileEntity implements IPeripheral{
}
public boolean isWithCamera() {
return (worldObj.getBlockId(xCoord, yCoord, zCoord) == WarpDrive.LASER_BLOCKCAM_BLOCKID);
return (worldObj.getBlockId(xCoord, yCoord, zCoord) == WarpDrive.instance.config.laserCamID);
}
public int getFrequency() {

View file

@ -61,9 +61,9 @@ public class TileEntityMiningLaser extends TileEntity implements IPeripheral{
Block.oreRedstoneGlowing.blockID,
Block.oreRedstone.blockID,
Block.oreNetherQuartz.blockID,
247, // IC
248, // IC
249, // IC
Items.getItem("uraniumOre").itemID, // IC
Items.getItem("copperOre").itemID, // IC
Items.getItem("tinOre").itemID, // IC
4095 // AS uranus
));
@ -99,16 +99,25 @@ public class TileEntityMiningLaser extends TileEntity implements IPeripheral{
private int layerOffset = 1;
private Vector3 minerVector;
private long uid = 0;
//private long uid = 0;
TileEntityParticleBooster booster = null;
private final int MFFS_FIELD_BLOCKID = 1681;
private boolean isOnEarth = false;
//int t = 20;
@Override
public void updateEntity() {
/*if (uid == 0) {
uid = worldObj.rand.nextInt(99999);
}
if (--t == 0) {
t = 20;
System.out.println("[MINER] Ticked: " + uid + " | " + xCoord + "; " + yCoord + "; " + zCoord);
}*/
isOnEarth = (worldObj.provider.dimensionId == 0);
if (isMining) {

View file

@ -263,7 +263,7 @@ public class TileEntityReactor extends TileEntity implements IEnergySink {
for (int y = ymin; y <= ymax; y++) {
for (int x = xmin; x <= xmax; x++) {
for (int z = zmin; z <= zmax; z++) {
if (worldObj.getBlockId(x, y, z) == WarpDrive.ISOLATION_BLOCKID) {
if (worldObj.getBlockId(x, y, z) == WarpDrive.instance.config.isolationID) {
this.isolationBlocksCount++;
}
}

View file

@ -101,6 +101,8 @@ public class WarpCoresRegistry {
public boolean isWarpCoreIntersectsWithOthers(TileEntityReactor core) {
AxisAlignedBB aabb1, aabb2;
removeDeadCores();
for (TileEntityReactor c : registry) {
// Skip cores in other worlds
if (c.worldObj != core.worldObj) {
@ -143,10 +145,11 @@ public class WarpCoresRegistry {
}
public void removeDeadCores() {
LocalProfiler.start("WCR.removeDeadCores()");
ArrayList<TileEntityReactor> oldRegistry = (ArrayList<TileEntityReactor>) registry.clone();
for (TileEntityReactor c : registry) {
if (c != null && c.worldObj != null && (c.worldObj.getBlockId(c.xCoord, c.yCoord, c.zCoord) != WarpDrive.WARP_CORE_BLOCKID || (c.worldObj.getBlockTileEntity(c.xCoord, c.yCoord, c.zCoord) != null && c.worldObj.getBlockTileEntity(c.xCoord, c.yCoord, c.zCoord).isInvalid()))) {
if (c != null && c.worldObj != null && (c.worldObj.getBlockId(c.xCoord, c.yCoord, c.zCoord) != WarpDrive.instance.config.coreID|| (c.worldObj.getBlockTileEntity(c.xCoord, c.yCoord, c.zCoord) != null && c.worldObj.getBlockTileEntity(c.xCoord, c.yCoord, c.zCoord).isInvalid()))) {
oldRegistry.remove(c);
return;
}
@ -154,6 +157,7 @@ public class WarpCoresRegistry {
// Update old registry to new witout dead cores
this.registry = (ArrayList<TileEntityReactor>) oldRegistry.clone();
LocalProfiler.stop();
}
// TODO: fix it to normal work in client

View file

@ -2,6 +2,7 @@ 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.Init;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.Mod.PostInit;
@ -19,6 +20,7 @@ import ic2.api.item.Items;
import java.util.List;
import shipmod.ShipModConfig;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.Minecraft;
@ -27,6 +29,7 @@ import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraftforge.common.Configuration;
import net.minecraftforge.common.DimensionManager;
import net.minecraftforge.common.ForgeChunkManager;
import net.minecraftforge.common.ForgeChunkManager.LoadingCallback;
@ -39,83 +42,26 @@ import net.minecraftforge.common.MinecraftForge;
* @author Cr0s
*/
public class WarpDrive implements LoadingCallback {
public final static int WARP_CORE_BLOCKID = 500;
public final static int PROTOCOL_BLOCK_BLOCKID = 501;
public final static int RADAR_BLOCK_BLOCKID = 502;
public final static int ISOLATION_BLOCKID = 503;
public final static int AIR_BLOCKID = 504;
public final static int AIRGEN_BLOCKID = 505;
public final static int GAS_BLOCKID = 506;
public final static int LASER_BLOCK_BLOCKID = 507;
public final static int MINING_LASER_BLOCK_BLOCKID = 508;
public final static int PARTICLE_BOOSTER_BLOCKID = 509;
public final static int LIFT_BLOCKID = 510;
public final static int LASER_BLOCKCAM_BLOCKID = 512;
public final static int CAMERA_BLOCKID = 513;
public final static int MONITOR_BLOCKID = 514;
public final static int IRIDIUM_BLOCKID = 515;
// World limits
public final static int WORLD_LIMIT_BLOCKS = 100000;
public final static Block warpCore = new BlockReactor(WARP_CORE_BLOCKID, 0, Material.rock)
.setHardness(0.5F).setStepSound(Block.soundMetalFootstep)
.setCreativeTab(CreativeTabs.tabRedstone).setUnlocalizedName("Warp Core");
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 liftBlock;
public final static Block protocolBlock = new BlockProtocol(PROTOCOL_BLOCK_BLOCKID, 0, Material.rock)
.setHardness(0.5F).setStepSound(Block.soundMetalFootstep)
.setCreativeTab(CreativeTabs.tabRedstone).setUnlocalizedName("Warp Controller");
public static Block airBlock;
public static Block gasBlock;
public final static Block radarBlock = new BlockRadar(RADAR_BLOCK_BLOCKID, 0, Material.rock)
.setHardness(0.5F).setStepSound(Block.soundMetalFootstep)
.setCreativeTab(CreativeTabs.tabRedstone).setUnlocalizedName("W-Radar");
public final static Block isolationBlock = new BlockWarpIsolation(ISOLATION_BLOCKID, 0, Material.rock)
.setHardness(0.5F).setStepSound(Block.soundMetalFootstep)
.setCreativeTab(CreativeTabs.tabRedstone).setUnlocalizedName("Warp-Field Isolation Block");
public final static Block airgenBlock = new BlockAirGenerator(AIRGEN_BLOCKID, 0, Material.rock)
.setHardness(0.5F).setStepSound(Block.soundMetalFootstep)
.setCreativeTab(CreativeTabs.tabRedstone).setUnlocalizedName("Air Generator");
public final static Block laserBlock = new BlockLaser(LASER_BLOCK_BLOCKID, 0, Material.rock)
.setHardness(0.5F).setStepSound(Block.soundMetalFootstep)
.setCreativeTab(CreativeTabs.tabRedstone).setUnlocalizedName("Laser Emitter");
public final static Block laserCamBlock = new BlockLaserCam(LASER_BLOCKCAM_BLOCKID, 0, Material.rock)
.setHardness(0.5F).setStepSound(Block.soundMetalFootstep)
.setCreativeTab(CreativeTabs.tabRedstone).setUnlocalizedName("Laser Emitter + Camera");
public final static Block cameraBlock = new BlockCamera(CAMERA_BLOCKID, 0, Material.rock)
.setHardness(0.5F).setStepSound(Block.soundMetalFootstep)
.setCreativeTab(CreativeTabs.tabRedstone).setUnlocalizedName("Camera block");
public final static Block monitorBlock = new BlockMonitor(MONITOR_BLOCKID)
.setHardness(0.5F).setStepSound(Block.soundMetalFootstep)
.setCreativeTab(CreativeTabs.tabRedstone).setUnlocalizedName("Monitor");
public final static Block boosterBlock = new BlockParticleBooster(PARTICLE_BOOSTER_BLOCKID, 0, Material.rock)
.setHardness(0.5F).setStepSound(Block.soundMetalFootstep)
.setCreativeTab(CreativeTabs.tabRedstone).setUnlocalizedName("Particle Booster");
public final static Block miningLaserBlock = new BlockMiningLaser(MINING_LASER_BLOCK_BLOCKID, 0, Material.rock)
.setHardness(0.5F).setStepSound(Block.soundMetalFootstep)
.setCreativeTab(CreativeTabs.tabRedstone).setUnlocalizedName("Mining Laser");
public final static Block liftBlock = new BlockLift(LIFT_BLOCKID, 0, Material.rock)
.setHardness(0.5F).setStepSound(Block.soundMetalFootstep)
.setCreativeTab(CreativeTabs.tabRedstone).setUnlocalizedName("Laser lift");
public final static Block airBlock = (new BlockAir(AIR_BLOCKID)).setHardness(0.0F).setUnlocalizedName("Air block");
public final static Block gasBlock = (new BlockGas(GAS_BLOCKID)).setHardness(0.0F).setUnlocalizedName("Gas block");
public final static Block iridiumBlock = new BlockIridium(IRIDIUM_BLOCKID)
.setHardness(0.8F).setResistance(150 * 4).setStepSound(Block.soundMetalFootstep)
.setCreativeTab(CreativeTabs.tabRedstone).setUnlocalizedName("Block of Iridium");
public static Block iridiumBlock;
public static BiomeGenBase spaceBiome;
public World space;
@ -140,8 +86,14 @@ public class WarpDrive implements LoadingCallback {
public boolean isOverlayEnabled = false;
public int overlayType = 0;
@PreInit
public WarpDriveConfig config;
@EventHandler
//@PreInit
public void preInit(FMLPreInitializationEvent event) {
this.config = new WarpDriveConfig(new Configuration(event.getSuggestedConfigurationFile()));
this.config.loadAndSave();
if(FMLCommonHandler.instance().getSide().isClient())
{
System.out.println("[WarpDrive] Registering sounds event handler...");
@ -151,59 +103,114 @@ public class WarpDrive implements LoadingCallback {
@Init
public void load(FMLInitializationEvent event) {
// WARP CORE
this.warpCore = new BlockReactor(this.config.coreID, 0, Material.rock)
.setHardness(0.5F).setStepSound(Block.soundMetalFootstep)
.setCreativeTab(CreativeTabs.tabRedstone).setUnlocalizedName("Warp Core");
LanguageRegistry.addName(warpCore, "Warp Core");
GameRegistry.registerBlock(warpCore, "warpCore");
GameRegistry.registerTileEntity(TileEntityReactor.class, "warpCore");
// CORE CONTROLLER
this.protocolBlock = new BlockProtocol(config.controllerID, 0, Material.rock)
.setHardness(0.5F).setStepSound(Block.soundMetalFootstep)
.setCreativeTab(CreativeTabs.tabRedstone).setUnlocalizedName("Warp Controller");
LanguageRegistry.addName(protocolBlock, "Warp Controller");
GameRegistry.registerBlock(protocolBlock, "protocolBlock");
GameRegistry.registerTileEntity(TileEntityProtocol.class, "protocolBlock");
// WARP RADAR
this.radarBlock = new BlockRadar(config.radarID, 0, Material.rock)
.setHardness(0.5F).setStepSound(Block.soundMetalFootstep)
.setCreativeTab(CreativeTabs.tabRedstone).setUnlocalizedName("W-Radar");
LanguageRegistry.addName(radarBlock, "W-Radar");
GameRegistry.registerBlock(radarBlock, "radarBlock");
GameRegistry.registerTileEntity(TileEntityRadar.class, "radarBlock");
// WARP ISOLATION
this.isolationBlock = new BlockWarpIsolation(config.isolationID, 0, Material.rock)
.setHardness(0.5F).setStepSound(Block.soundMetalFootstep)
.setCreativeTab(CreativeTabs.tabRedstone).setUnlocalizedName("Warp-Field Isolation Block");
LanguageRegistry.addName(isolationBlock, "Warp-Field Isolation Block");
GameRegistry.registerBlock(isolationBlock, "isolationBlock");
// AIR GENERATOR
this.airgenBlock = new BlockAirGenerator(config.airgenID, 0, Material.rock)
.setHardness(0.5F).setStepSound(Block.soundMetalFootstep)
.setCreativeTab(CreativeTabs.tabRedstone).setUnlocalizedName("Air Generator");
LanguageRegistry.addName(airgenBlock, "Air Generator");
GameRegistry.registerBlock(airgenBlock, "airgenBlock");
GameRegistry.registerTileEntity(TileEntityAirGenerator.class, "airgenBlock");
// AIR BLOCK
this.airBlock = (new BlockAir(config.airID)).setHardness(0.0F).setUnlocalizedName("Air block");
LanguageRegistry.addName(airBlock, "Air block");
GameRegistry.registerBlock(airBlock, "airBlock");
// GAS BLOCK
this.gasBlock = (new BlockGas(config.gasID)).setHardness(0.0F).setUnlocalizedName("Gas block");
LanguageRegistry.addName(gasBlock, "Gas block");
GameRegistry.registerBlock(gasBlock, "gasBlock");
LanguageRegistry.addName(airgenBlock, "Air Generator");
GameRegistry.registerBlock(airgenBlock, "airgenBlock");
GameRegistry.registerTileEntity(TileEntityAirGenerator.class, "airgenBlock");
GameRegistry.registerBlock(gasBlock, "gasBlock");
// LASER EMITTER
this.laserBlock = new BlockLaser(config.laserID, 0, Material.rock)
.setHardness(0.5F).setStepSound(Block.soundMetalFootstep)
.setCreativeTab(CreativeTabs.tabRedstone).setUnlocalizedName("Laser Emitter");
LanguageRegistry.addName(laserBlock, "Laser Emitter");
GameRegistry.registerBlock(laserBlock, "laserBlock");
GameRegistry.registerTileEntity(TileEntityLaser.class, "laserBlock");
// LASER EMITTER WITH CAMERA
this.laserCamBlock = new BlockLaserCam(config.laserCamID, 0, Material.rock)
.setHardness(0.5F).setStepSound(Block.soundMetalFootstep)
.setCreativeTab(CreativeTabs.tabRedstone).setUnlocalizedName("Laser Emitter + Camera");
LanguageRegistry.addName(laserCamBlock, "Laser Emitter + Camera");
GameRegistry.registerBlock(laserCamBlock, "laserCamBlock");
// CAMERA
this.cameraBlock = new BlockCamera(config.camID, 0, Material.rock)
.setHardness(0.5F).setStepSound(Block.soundMetalFootstep)
.setCreativeTab(CreativeTabs.tabRedstone).setUnlocalizedName("Camera block");
LanguageRegistry.addName(cameraBlock, "Camera");
GameRegistry.registerBlock(cameraBlock, "cameraBlock");
GameRegistry.registerTileEntity(TileEntityCamera.class, "cameraBlock");
// MONITOR
this.monitorBlock = new BlockMonitor(config.monitorID)
.setHardness(0.5F).setStepSound(Block.soundMetalFootstep)
.setCreativeTab(CreativeTabs.tabRedstone).setUnlocalizedName("Monitor");
LanguageRegistry.addName(monitorBlock, "Monitor");
GameRegistry.registerBlock(monitorBlock, "monitorBlock");
GameRegistry.registerTileEntity(TileEntityMonitor.class, "monitorBlock");
// MINING LASER
this.miningLaserBlock = new BlockMiningLaser(config.miningLaserID, 0, Material.rock)
.setHardness(0.5F).setStepSound(Block.soundMetalFootstep)
.setCreativeTab(CreativeTabs.tabRedstone).setUnlocalizedName("Mining Laser");
LanguageRegistry.addName(miningLaserBlock, "Mining Laser");
GameRegistry.registerBlock(miningLaserBlock, "miningLaserBlock");
GameRegistry.registerTileEntity(TileEntityMiningLaser.class, "miningLaserBlock");
// PARTICLE BOOSTER
this.boosterBlock = new BlockParticleBooster(config.particleBoosterID, 0, Material.rock)
.setHardness(0.5F).setStepSound(Block.soundMetalFootstep)
.setCreativeTab(CreativeTabs.tabRedstone).setUnlocalizedName("Particle Booster");
LanguageRegistry.addName(boosterBlock, "Particle Booster");
GameRegistry.registerBlock(boosterBlock, "boosterBlock");
GameRegistry.registerTileEntity(TileEntityParticleBooster.class, "boosterBlock");
// RAY LIFT
this.liftBlock = new BlockLift(config.liftID, 0, Material.rock)
.setHardness(0.5F).setStepSound(Block.soundMetalFootstep)
.setCreativeTab(CreativeTabs.tabRedstone).setUnlocalizedName("Laser lift");
LanguageRegistry.addName(liftBlock, "Laser lift");
GameRegistry.registerBlock(liftBlock, "liftBlock");
GameRegistry.registerTileEntity(TileEntityLift.class, "liftBlock");
// IRIDIUM BLOCK
this.iridiumBlock = new BlockIridium(config.iridiumID)
.setHardness(0.8F).setResistance(150 * 4).setStepSound(Block.soundMetalFootstep)
.setCreativeTab(CreativeTabs.tabRedstone).setUnlocalizedName("Block of Iridium");
LanguageRegistry.addName(iridiumBlock, "Block of Iridium");
GameRegistry.registerBlock(iridiumBlock, "iridiumBlock");

View file

@ -0,0 +1,68 @@
package cr0s.WarpDrive;
import java.util.HashSet;
import java.util.Set;
import net.minecraftforge.common.Configuration;
public class WarpDriveConfig {
private Configuration config;
public Set<Integer> valuableOres;
public Set<Integer> minerValuables;
public int coreID, controllerID, radarID, isolationID, airID, airgenID, gasID, laserID, miningLaserID, particleBoosterID, liftID, laserCamID, camID, monitorID, iridiumID;
/*
* public final static int WARP_CORE_BLOCKID = 500;
public final static int PROTOCOL_BLOCK_BLOCKID = 501;
public final static int RADAR_BLOCK_BLOCKID = 502;
public final static int ISOLATION_BLOCKID = 503;
public final static int AIR_BLOCKID = 504;
public final static int AIRGEN_BLOCKID = 505;
public final static int GAS_BLOCKID = 506;
public final static int LASER_BLOCK_BLOCKID = 507;
public final static int MINING_LASER_BLOCK_BLOCKID = 508;
public final static int PARTICLE_BOOSTER_BLOCKID = 509;
public final static int LIFT_BLOCKID = 510;
public final static int LASER_BLOCKCAM_BLOCKID = 512;
public final static int CAMERA_BLOCKID = 513;
public final static int MONITOR_BLOCKID = 514;
public final static int IRIDIUM_BLOCKID = 515;
*/
public WarpDriveConfig(Configuration config) {
this.config = config;
this.valuableOres = new HashSet<Integer>();
this.minerValuables = new HashSet<Integer>();
}
public void loadAndSave() {
this.config.load();
this.coreID = this.config.getBlock("core", 500).getInt();
this.controllerID = this.config.getBlock("controller", 501).getInt();
this.radarID = this.config.getBlock("radar", 502).getInt();
this.isolationID = this.config.getBlock("isolation", 503).getInt();
this.airID = this.config.getBlock("air", 504).getInt();
this.airgenID = this.config.getBlock("airgen", 505).getInt();
this.gasID = this.config.getBlock("gas", 506).getInt();
this.laserID = this.config.getBlock("laser", 507).getInt();
this.miningLaserID = this.config.getBlock("mininglaser", 508).getInt();
this.particleBoosterID = this.config.getBlock("particlebooster", 509).getInt();
this.liftID = this.config.getBlock("lift", 510).getInt();
this.laserCamID = this.config.getBlock("lasercam", 512).getInt();
this.camID = this.config.getBlock("camera", 513).getInt();
this.monitorID = this.config.getBlock("monitor", 514).getInt();
this.iridiumID = this.config.getBlock("iridium", 515).getInt();
this.config.save();
}
}

View file

@ -296,7 +296,7 @@ public class WorldGenSmallShip extends WorldGenerator
world.setBlock(i + 9, j + 6, k + 6, cableType.itemID, cableType.getItemDamage(), 0);
world.setBlock(i + 9, j + 6, k + 7, ADV_SOLAR_BLOCKID, solarType, 0);
// Placing air generator
world.setBlock(i + 9, j + 5, k + 7, WarpDrive.AIRGEN_BLOCKID, 0, 0);
world.setBlock(i + 9, j + 5, k + 7, WarpDrive.instance.config.airgenID, 0, 0);
world.setBlock(i + 9, j + 6, k + 10, WorldGenStructure.getStoneBlock(corrupted, rand));
world.setBlock(i + 9, j + 6, k + 11, WorldGenStructure.getStoneBlock(corrupted, rand));
@ -338,7 +338,7 @@ public class WorldGenSmallShip extends WorldGenerator
world.setBlock(i + 10, j + 6, k + 7, ADV_SOLAR_BLOCKID, solarType, 0);
// Placing air generator
world.setBlock(i + 10, j + 5, k + 7, WarpDrive.AIRGEN_BLOCKID, 0, 0);
world.setBlock(i + 10, j + 5, k + 7, WarpDrive.instance.config.airgenID, 0, 0);
world.setBlock(i + 10, j + 6, k + 10, WorldGenStructure.getStoneBlock(corrupted, rand));
world.setBlock(i + 10, j + 6, k + 11, WorldGenStructure.getStoneBlock(corrupted, rand));
@ -372,7 +372,7 @@ public class WorldGenSmallShip extends WorldGenerator
// Place warp-controller
if (rand.nextBoolean()) {
world.setBlock(i + 11, j + 3, k + 7, WarpDrive.PROTOCOL_BLOCK_BLOCKID);
world.setBlock(i + 11, j + 3, k + 7, WarpDrive.instance.config.controllerID);
}
world.setBlock(i + 11, j + 3, k + 8, WorldGenStructure.getGlassBlock(corrupted, rand));
@ -427,7 +427,7 @@ public class WorldGenSmallShip extends WorldGenerator
// Place warp-core
if (rand.nextBoolean()) {
world.setBlock(i + 12, j + 3, k + 7, WarpDrive.WARP_CORE_BLOCKID);
world.setBlock(i + 12, j + 3, k + 7, WarpDrive.instance.config.coreID);
}
world.setBlock(i + 12, j + 3, k + 8, WorldGenStructure.getGlassBlock(corrupted, rand));