Added turbine creative builder and tweaked wind turbine attributes

This commit is contained in:
Calclavia 2014-02-27 19:11:24 +08:00
parent 2892fd9b9b
commit 4d2e7a10f6
31 changed files with 159 additions and 55 deletions

View file

@ -27,7 +27,7 @@ public class TileGenerator extends TileElectrical implements IRotatable
public TileGenerator()
{
energy = new EnergyStorageHandler(100000);
energy = new EnergyStorageHandler(1000000);
}
public byte toggleGearRatio()
@ -63,12 +63,12 @@ public class TileGenerator extends TileElectrical implements IRotatable
if (mech != null)
{
long receive = energy.receiveEnergy((long) Math.abs(mech.getTorque() * mech.getAngularVelocity()), true);
long power = (long) Math.abs(mech.getTorque() * mech.getAngularVelocity());
long receive = energy.receiveEnergy(power, true);
if (receive > 0)
{
double percentageUsed = (double) receive / ((double) mech.getTorque() * (double) mech.getAngularVelocity());
// TODO: Make sure this calculation/decrease is correct!
double percentageUsed = (double) receive / (double) power;
mech.setTorque((long) (mech.getTorque() - (mech.getTorque() * percentageUsed)));
mech.setAngularVelocity((float) (mech.getAngularVelocity() - (mech.getAngularVelocity() * percentageUsed)));
}
@ -90,7 +90,7 @@ public class TileGenerator extends TileElectrical implements IRotatable
{
if (extract > 0)
{
long torqueRatio = (long) ((gearRatio + 1) / 5d * (extract));
long torqueRatio = (long) ((gearRatio + 1) / 4d * (extract));
final float maxAngularVelocity = extract / (float) torqueRatio;

View file

@ -1,10 +1,10 @@
package resonantinduction.mechanical;
import net.minecraftforge.client.MinecraftForgeClient;
import resonantinduction.mechanical.energy.gear.RenderGear;
import resonantinduction.mechanical.energy.gear.RenderGearShaft;
import resonantinduction.mechanical.fluid.pipe.RenderPipe;
import resonantinduction.mechanical.fluid.tank.ItemTankRenderer;
import resonantinduction.mechanical.gear.RenderGear;
import resonantinduction.mechanical.gear.RenderGearShaft;
import calclavia.lib.render.item.GlobalItemRenderer;
public class ClientProxy extends CommonProxy

View file

@ -13,6 +13,15 @@ import resonantinduction.core.Settings;
import resonantinduction.core.TabRI;
import resonantinduction.mechanical.belt.BlockConveyorBelt;
import resonantinduction.mechanical.belt.TileConveyorBelt;
import resonantinduction.mechanical.energy.gear.ItemGear;
import resonantinduction.mechanical.energy.gear.ItemGearShaft;
import resonantinduction.mechanical.energy.network.PacketNetwork;
import resonantinduction.mechanical.energy.turbine.BlockWaterTurbine;
import resonantinduction.mechanical.energy.turbine.BlockWindTurbine;
import resonantinduction.mechanical.energy.turbine.SchematicWaterTurbine;
import resonantinduction.mechanical.energy.turbine.SchematicWindTurbine;
import resonantinduction.mechanical.energy.turbine.TileWaterTurbine;
import resonantinduction.mechanical.energy.turbine.TileWindTurbine;
import resonantinduction.mechanical.fluid.pipe.ItemBlockFluidContainer;
import resonantinduction.mechanical.fluid.pipe.ItemPipe;
import resonantinduction.mechanical.fluid.tank.BlockTank;
@ -21,15 +30,12 @@ import resonantinduction.mechanical.fluid.transport.BlockGrate;
import resonantinduction.mechanical.fluid.transport.BlockPump;
import resonantinduction.mechanical.fluid.transport.TileGrate;
import resonantinduction.mechanical.fluid.transport.TilePump;
import resonantinduction.mechanical.gear.ItemGear;
import resonantinduction.mechanical.gear.ItemGearShaft;
import resonantinduction.mechanical.logistic.belt.BlockDetector;
import resonantinduction.mechanical.logistic.belt.BlockManipulator;
import resonantinduction.mechanical.logistic.belt.BlockRejector;
import resonantinduction.mechanical.logistic.belt.TileDetector;
import resonantinduction.mechanical.logistic.belt.TileManipulator;
import resonantinduction.mechanical.logistic.belt.TileRejector;
import resonantinduction.mechanical.network.PacketNetwork;
import resonantinduction.mechanical.process.BlockFilter;
import resonantinduction.mechanical.process.TileFilter;
import resonantinduction.mechanical.process.crusher.BlockMechanicalPiston;
@ -38,13 +44,11 @@ import resonantinduction.mechanical.process.grinder.BlockGrindingWheel;
import resonantinduction.mechanical.process.grinder.TileGrinderWheel;
import resonantinduction.mechanical.process.purifier.BlockMixer;
import resonantinduction.mechanical.process.purifier.TileMixer;
import resonantinduction.mechanical.turbine.BlockWaterTurbine;
import resonantinduction.mechanical.turbine.BlockWindTurbine;
import resonantinduction.mechanical.turbine.TileWaterTurbine;
import resonantinduction.mechanical.turbine.TileWindTurbine;
import calclavia.components.creative.BlockCreativeBuilder;
import calclavia.lib.content.ContentRegistry;
import calclavia.lib.network.PacketAnnotation;
import calclavia.lib.network.PacketHandler;
import calclavia.lib.prefab.item.ItemBlockMetadata;
import calclavia.lib.recipe.UniversalRecipe;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
@ -85,8 +89,8 @@ public class Mechanical
// Energy
public static Item itemGear;
public static Item itemGearShaft;
public static Block windTurbine;
public static Block waterTurbine;
public static Block blockWindTurbine;
public static Block blockWaterTurbine;
// Transport
public static Block blockConveyorBelt;
@ -115,11 +119,13 @@ public class Mechanical
Settings.load();
NetworkRegistry.instance().registerGuiHandler(this, proxy);
MinecraftForge.EVENT_BUS.register(new MicroblockHighlightHandler());
BlockCreativeBuilder.register(new SchematicWindTurbine());
BlockCreativeBuilder.register(new SchematicWaterTurbine());
itemGear = contentRegistry.createItem(ItemGear.class);
itemGearShaft = contentRegistry.createItem(ItemGearShaft.class);
windTurbine = contentRegistry.createTile(BlockWindTurbine.class, TileWindTurbine.class);
waterTurbine = contentRegistry.createTile(BlockWaterTurbine.class, TileWaterTurbine.class);
blockWindTurbine = contentRegistry.createBlock(BlockWindTurbine.class, ItemBlockMetadata.class, TileWindTurbine.class);
blockWaterTurbine = contentRegistry.createBlock(BlockWaterTurbine.class, ItemBlockMetadata.class, TileWaterTurbine.class);
blockConveyorBelt = contentRegistry.createTile(BlockConveyorBelt.class, TileConveyorBelt.class);
blockManipulator = contentRegistry.createTile(BlockManipulator.class, TileManipulator.class);
@ -171,8 +177,8 @@ public class Mechanical
GameRegistry.addRecipe(new ShapedOreRecipe(blockDetector, "SWS", "SRS", "SWS", 'S', Item.ingotIron, 'W', UniversalRecipe.WIRE.get()));
GameRegistry.addRecipe(new ShapedOreRecipe(blockRejector, "S S", "SPS", "SRS", 'P', Block.pistonBase, 'S', Item.ingotIron, 'R', Item.redstone));
GameRegistry.addRecipe(new ShapedOreRecipe(windTurbine, "CWC", "WGW", "CWC", 'G', itemGear, 'C', Block.cloth, 'W', "plankWood"));
GameRegistry.addRecipe(new ShapedOreRecipe(waterTurbine, " W ", "WGW", " W ", 'G', itemGear, 'W', UniversalRecipe.PRIMARY_METAL.get()));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockWindTurbine, 1, 0), "CWC", "WGW", "CWC", 'G', itemGear, 'C', Block.cloth, 'W', "plankWood"));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockWaterTurbine, 1, 0), " W ", "WGW", " W ", 'G', itemGear, 'W', UniversalRecipe.PRIMARY_METAL.get()));
GameRegistry.addRecipe(new ShapedOreRecipe(blockTank, "GGG", "GSG", "GGG", 'G', Block.glass, 'S', Item.ingotIron));
GameRegistry.addRecipe(new ShapedOreRecipe(blockGrate, "BBB", "B B", "BBB", 'B', Block.fenceIron));

View file

@ -1,8 +1,8 @@
package resonantinduction.mechanical;
import resonantinduction.mechanical.energy.gear.PartGear;
import resonantinduction.mechanical.energy.gear.PartGearShaft;
import resonantinduction.mechanical.fluid.pipe.PartPipe;
import resonantinduction.mechanical.gear.PartGear;
import resonantinduction.mechanical.gear.PartGearShaft;
import codechicken.multipart.MultiPartRegistry;
import codechicken.multipart.MultiPartRegistry.IPartFactory;
import codechicken.multipart.MultipartGenerator;

View file

@ -16,7 +16,7 @@ import resonantinduction.api.mechanical.IMechanical;
import resonantinduction.core.Reference;
import resonantinduction.core.ResonantInduction;
import resonantinduction.mechanical.Mechanical;
import resonantinduction.mechanical.network.TileMechanical;
import resonantinduction.mechanical.energy.network.TileMechanical;
import universalelectricity.api.vector.Vector3;
import calclavia.lib.prefab.tile.IRotatable;

View file

@ -1,4 +1,4 @@
package resonantinduction.mechanical.gear;
package resonantinduction.mechanical.energy.gear;
import java.util.HashMap;

View file

@ -1,4 +1,4 @@
package resonantinduction.mechanical.gear;
package resonantinduction.mechanical.energy.gear;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection;

View file

@ -1,4 +1,4 @@
package resonantinduction.mechanical.gear;
package resonantinduction.mechanical.energy.gear;
import java.util.List;

View file

@ -1,4 +1,4 @@
package resonantinduction.mechanical.gear;
package resonantinduction.mechanical.energy.gear;
import java.util.List;

View file

@ -1,4 +1,4 @@
package resonantinduction.mechanical.gear;
package resonantinduction.mechanical.energy.gear;
import java.lang.ref.WeakReference;
import java.util.Arrays;
@ -16,7 +16,7 @@ import resonantinduction.api.mechanical.IMechanical;
import resonantinduction.core.Reference;
import resonantinduction.core.resource.ItemHandCrank;
import resonantinduction.mechanical.Mechanical;
import resonantinduction.mechanical.network.PartMechanical;
import resonantinduction.mechanical.energy.network.PartMechanical;
import calclavia.lib.multiblock.reference.IMultiBlockStructure;
import calclavia.lib.multiblock.reference.MultiBlockHandler;
import calclavia.lib.utility.WrenchUtility;

View file

@ -1,4 +1,4 @@
package resonantinduction.mechanical.gear;
package resonantinduction.mechanical.energy.gear;
import java.lang.ref.WeakReference;
import java.util.Collection;
@ -10,7 +10,7 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection;
import resonantinduction.api.mechanical.IMechanical;
import resonantinduction.mechanical.Mechanical;
import resonantinduction.mechanical.network.PartMechanical;
import resonantinduction.mechanical.energy.network.PartMechanical;
import codechicken.lib.raytracer.IndexedCuboid6;
import codechicken.lib.vec.Cuboid6;
import codechicken.lib.vec.Vector3;

View file

@ -1,4 +1,4 @@
package resonantinduction.mechanical.gear;
package resonantinduction.mechanical.energy.gear;
import net.minecraft.item.ItemStack;
import net.minecraftforge.client.model.AdvancedModelLoader;

View file

@ -1,4 +1,4 @@
package resonantinduction.mechanical.gear;
package resonantinduction.mechanical.energy.gear;
import static org.lwjgl.opengl.GL11.glRotatef;
import net.minecraft.item.ItemStack;

View file

@ -1,4 +1,4 @@
package resonantinduction.mechanical.network;
package resonantinduction.mechanical.energy.network;
import java.util.EnumSet;
import java.util.HashMap;

View file

@ -1,4 +1,4 @@
package resonantinduction.mechanical.network;
package resonantinduction.mechanical.energy.network;
import java.util.ArrayList;
import java.util.List;

View file

@ -1,4 +1,4 @@
package resonantinduction.mechanical.network;
package resonantinduction.mechanical.energy.network;
import java.lang.ref.WeakReference;
import java.util.ArrayList;

View file

@ -1,4 +1,4 @@
package resonantinduction.mechanical.network;
package resonantinduction.mechanical.energy.network;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
@ -8,7 +8,7 @@ import resonantinduction.api.mechanical.IMechanical;
import resonantinduction.api.mechanical.IMechanicalNetwork;
import resonantinduction.core.ResonantInduction;
import resonantinduction.mechanical.Mechanical;
import resonantinduction.mechanical.gear.PartGearShaft;
import resonantinduction.mechanical.energy.gear.PartGearShaft;
import universalelectricity.api.vector.Vector3;
import calclavia.lib.network.IPacketReceiver;
import calclavia.lib.network.PacketHandler;

View file

@ -1,4 +1,4 @@
package resonantinduction.mechanical.turbine;
package resonantinduction.mechanical.energy.turbine;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;

View file

@ -1,4 +1,4 @@
package resonantinduction.mechanical.turbine;
package resonantinduction.mechanical.energy.turbine;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;

View file

@ -1,4 +1,4 @@
package resonantinduction.mechanical.turbine;
package resonantinduction.mechanical.energy.turbine;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.item.ItemStack;

View file

@ -1,4 +1,4 @@
package resonantinduction.mechanical.turbine;
package resonantinduction.mechanical.energy.turbine;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity;
@ -44,14 +44,14 @@ public class RenderWindTurbine extends TileEntitySpecialRenderer
if (tile.getMultiBlock().isConstructed())
{
GL11.glScalef(0.3f, 1, 0.3f);
GL11.glScalef(tile.multiBlockRadius * 2 + 1, 1, tile.multiBlockRadius * 2 + 1);
GL11.glScalef(tile.multiBlockRadius * 2 + 1, Math.min(tile.multiBlockRadius, 2), tile.multiBlockRadius * 2 + 1);
RenderUtility.bind(Reference.BLOCK_TEXTURE_DIRECTORY + "planks_oak.png");
MODEL.renderOnly("LargeBladeArm");
RenderUtility.bind(Reference.BLOCK_TEXTURE_DIRECTORY + "wool_colored_white.png");
MODEL.renderOnly("LargeBlade");
RenderUtility.bind(Reference.BLOCK_TEXTURE_DIRECTORY + "cobblestone.png");
GL11.glScalef(1f, 2f, 1f);
GL11.glTranslatef(0, -0.08f, 0);
GL11.glTranslatef(0, -0.05f, 0);
MODEL.renderOnly("LargeHub");
}
else

View file

@ -0,0 +1,44 @@
package resonantinduction.mechanical.energy.turbine;
import java.util.HashMap;
import net.minecraftforge.common.ForgeDirection;
import resonantinduction.mechanical.Mechanical;
import universalelectricity.api.vector.Vector3;
import calclavia.lib.schematic.Schematic;
import com.builtbroken.common.Pair;
public class SchematicWaterTurbine extends Schematic
{
@Override
public String getName()
{
return "schematic.waterTurbine.name";
}
@Override
public HashMap<Vector3, Pair<Integer, Integer>> getStructure(ForgeDirection dir, int size)
{
HashMap<Vector3, Pair<Integer, Integer>> returnMap = new HashMap<Vector3, Pair<Integer, Integer>>();
int r = size;
for (int x = -r; x <= r; x++)
{
for (int y = -r; y <= r; y++)
{
for (int z = -r; z <= r; z++)
{
if ((dir.offsetX != 0 && x == 0) || (dir.offsetY != 0 && y == 0) || (dir.offsetZ != 0 && z == 0))
{
Vector3 targetPosition = new Vector3(x, y, z);
returnMap.put(targetPosition, new Pair(Mechanical.blockWaterTurbine.blockID, dir.ordinal()));
}
}
}
}
return returnMap;
}
}

View file

@ -0,0 +1,44 @@
package resonantinduction.mechanical.energy.turbine;
import java.util.HashMap;
import net.minecraftforge.common.ForgeDirection;
import resonantinduction.mechanical.Mechanical;
import universalelectricity.api.vector.Vector3;
import calclavia.lib.schematic.Schematic;
import com.builtbroken.common.Pair;
public class SchematicWindTurbine extends Schematic
{
@Override
public String getName()
{
return "schematic.windTurbine.name";
}
@Override
public HashMap<Vector3, Pair<Integer, Integer>> getStructure(ForgeDirection dir, int size)
{
HashMap<Vector3, Pair<Integer, Integer>> returnMap = new HashMap<Vector3, Pair<Integer, Integer>>();
int r = size;
for (int x = -r; x <= r; x++)
{
for (int y = -r; y <= r; y++)
{
for (int z = -r; z <= r; z++)
{
if ((dir.offsetX != 0 && x == 0) || (dir.offsetY != 0 && y == 0) || (dir.offsetZ != 0 && z == 0))
{
Vector3 targetPosition = new Vector3(x, y, z);
returnMap.put(targetPosition, new Pair(Mechanical.blockWindTurbine.blockID, dir.ordinal()));
}
}
}
}
return returnMap;
}
}

View file

@ -1,15 +1,21 @@
package resonantinduction.mechanical.turbine;
package resonantinduction.mechanical.energy.turbine;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection;
import resonantinduction.api.mechanical.IMechanical;
import resonantinduction.api.mechanical.IMechanicalNetwork;
import resonantinduction.mechanical.network.MechanicalNetwork;
import resonantinduction.mechanical.energy.network.MechanicalNetwork;
import universalelectricity.api.energy.EnergyStorageHandler;
import universalelectricity.api.vector.Vector3;
import calclavia.lib.prefab.turbine.TileTurbine;
public class TileMechanicalTurbine extends TileTurbine implements IMechanical
{
public TileMechanicalTurbine()
{
super();
energy = new EnergyStorageHandler(0);
}
/**
* Mechanical Methods

View file

@ -1,4 +1,4 @@
package resonantinduction.mechanical.turbine;
package resonantinduction.mechanical.energy.turbine;
import java.lang.reflect.Method;

View file

@ -1,4 +1,4 @@
package resonantinduction.mechanical.turbine;
package resonantinduction.mechanical.energy.turbine;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraft.world.biome.BiomeGenOcean;
@ -37,7 +37,7 @@ public class TileWindTurbine extends TileMechanicalTurbine
}
if (getMultiBlock().isConstructed())
torque = (long) (defaultTorque / (9f / multiBlockRadius));
torque = (long) (defaultTorque / (2.5f / multiBlockRadius));
else
torque = defaultTorque / 12;
@ -52,6 +52,6 @@ public class TileWindTurbine extends TileMechanicalTurbine
if (!worldObj.canBlockSeeTheSky(xCoord, yCoord + 4, zCoord))
return 0;
return (long) (((((float) yCoord + 4) / 256) * maxPower) * (hasBonus ? 2 : 1)) * (worldObj.isRaining() ? 2 : 1);
return (long) (((((float) yCoord + 4) / 256) * maxPower) * (hasBonus ? 2 : 1) * (worldObj.isRaining() ? 1.5 : 1));
}
}

View file

@ -8,7 +8,7 @@ import net.minecraftforge.fluids.FluidTankInfo;
import net.minecraftforge.fluids.IFluidHandler;
import resonantinduction.api.mechanical.fluid.IFluidPipe;
import resonantinduction.api.mechanical.fluid.IPressure;
import resonantinduction.mechanical.network.TileMechanical;
import resonantinduction.mechanical.energy.network.TileMechanical;
import universalelectricity.api.vector.Vector3;
import calclavia.lib.prefab.tile.IRotatable;

View file

@ -7,7 +7,7 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeDirection;
import resonantinduction.mechanical.network.TileMechanical;
import resonantinduction.mechanical.energy.network.TileMechanical;
import universalelectricity.api.vector.Vector3;
import calclavia.lib.utility.MovementUtility;
import cpw.mods.fml.common.Loader;

View file

@ -13,7 +13,7 @@ import resonantinduction.api.recipe.MachineRecipes.RecipeType;
import resonantinduction.api.recipe.RecipeResource;
import resonantinduction.core.Reference;
import resonantinduction.core.ResonantInduction;
import resonantinduction.mechanical.network.TileMechanical;
import resonantinduction.mechanical.energy.network.TileMechanical;
import resonantinduction.mechanical.process.Timer;
import universalelectricity.api.vector.Vector3;
import calclavia.lib.prefab.tile.IRotatable;

View file

@ -18,7 +18,7 @@ import resonantinduction.api.recipe.MachineRecipes.RecipeType;
import resonantinduction.core.Reference;
import resonantinduction.core.resource.ResourceGenerator;
import resonantinduction.core.resource.fluid.BlockFluidMixture;
import resonantinduction.mechanical.network.TileMechanical;
import resonantinduction.mechanical.energy.network.TileMechanical;
import resonantinduction.mechanical.process.Timer;
import universalelectricity.api.vector.Vector3;

View file

@ -11,6 +11,10 @@ meta.resonantinduction.credits=Visit website for credits.
fluid.mixture=Mixture
toolmode.link.name=Linking
### Schematics
schematic.windTurbine.name=Wind Turbine
schematic.waterTurbine.name=Water Turbine
### Core
misc.resonantinduction.ingot=Ingot
item.resonantinduction\:ingot.name=%v Ingot