Here you go, elusivehawk.

changelog later.
This commit is contained in:
Aidan Brady 2012-11-01 21:30:40 -04:00
parent d7782bcdec
commit 8b2a156f79
40 changed files with 1960 additions and 291 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

BIN
bin/minecraft/gui/GuiWasher.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 820 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View file

@ -0,0 +1,105 @@
package hawk.api;
/**
*
* Used in order to store Endium Teleporter coordinates.
*
* @author Elusivehawk
*/
public class EndiumTeleporterCoords
{
private int xCoord;
private int yCoord;
private int zCoord;
private int dimensionID;
private int symbolA;
private int symbolB;
private int symbolC;
public EndiumTeleporterCoords(int x, int y, int z, int dimension, int symbol1, int symbol2, int symbol3)
{
if (symbol1 != 0 && symbol2 != 0 && symbol3 != 0)
{
this.xCoord = x;
this.yCoord = y;
this.zCoord = z;
this.dimensionID = dimension;
this.symbolA = symbol1;
this.symbolB = symbol2;
this.symbolC = symbol3;
}
else
{
throw new RuntimeException("Hawk's Machinery: Symbol cannot be 0!");
}
}
public boolean isEqual(int symbol1, int symbol2, int symbol3)
{
return this.symbolA == symbol1 && this.symbolB == symbol2 && this.symbolC == symbol3;
}
public boolean isEqualXYZ(int x, int y, int z)
{
return this.xCoord == x && this.yCoord == y && this.zCoord == z;
}
public int x()
{
return this.xCoord;
}
public int y()
{
return this.yCoord;
}
public int z()
{
return this.zCoord;
}
public int symA()
{
return this.symbolA;
}
public int symB()
{
return this.symbolB;
}
public int symC()
{
return this.symbolC;
}
public int dimension()
{
return this.dimensionID;
}
public void setSymbolA(int symbol)
{
this.symbolA = symbol;
}
public void setSymbolB(int symbol)
{
this.symbolB = symbol;
}
public void setSymbolC(int symbol)
{
this.symbolC = symbol;
}
public void setDimension(int dimension)
{
this.dimensionID = dimension;
}
}

View file

@ -0,0 +1,201 @@
package hawk.api;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import net.minecraft.src.Block;
import net.minecraft.src.Item;
import net.minecraft.src.ItemStack;
import net.minecraftforge.oredict.OreDictionary;
/**
*
*
*
* @author Elusivehawk
*/
public class ProcessingRecipes
{
private static Map washerSecondaries = new HashMap();
private static Map washerRarities = new HashMap();
private static Map quantityMapping = new HashMap();
/**
*
* Instead of IDs, processing now uses enums.
*
* @author Elusivehawk
*/
public enum EnumProcessing
{
CRUSHING_EXPLOSIVES(new HashMap()),
WASHING(new HashMap()),
STAR_FORGE(new HashMap()),
ENDIUM_FORGE(new HashMap()),
HM_E2MM(new HashMap());
private Map processingList;
EnumProcessing(Map recipeList)
{
processingList = recipeList;
}
public Map getRecipeList()
{
return processingList;
}
}
/**
*
* Adds a processing recipe.
*
* @param input The input.
* @param output The output.
* @param processType What type of processing this recipe is for.
*/
public static void addHMProcessingRecipe(ItemStack input, ItemStack output, EnumProcessing processType)
{
processType.getRecipeList().put(Arrays.asList(input.getItem(), input.isItemStackDamageable() ? 0 : input.getItemDamage(), input.isItemEnchanted(), input.stackTagCompound != null), output);
quantityMapping.put(Arrays.asList(input.getItem(), input.getItemDamage(), processType), (Integer)input.stackSize);
}
public static void addHMProcessingRecipe(Item input, ItemStack output, EnumProcessing processType)
{
addHMProcessingRecipe(new ItemStack(input), output, processType);
}
public static void addHMProcessingRecipe(Item input, Item output, EnumProcessing processType)
{
addHMProcessingRecipe(new ItemStack(input), new ItemStack(output), processType);
}
public static void addHMProcessingRecipe(Item input, Block output, EnumProcessing processType)
{
addHMProcessingRecipe(new ItemStack(input), new ItemStack(output), processType);
}
public static void addHMProcessingRecipe(Block input, ItemStack output, EnumProcessing processType)
{
addHMProcessingRecipe(new ItemStack(input), output, processType);
}
public static void addHMProcessingRecipe(Block input, Item output, EnumProcessing processType)
{
addHMProcessingRecipe(new ItemStack(input), new ItemStack(output), processType);
}
public static void addHMProcessingRecipe(Block input, Block output, EnumProcessing processType)
{
addHMProcessingRecipe(new ItemStack(input), new ItemStack(output), processType);
}
/**
*
* Forge Ore Dictionary supported version.
*
* @param input
* @param output
* @param processingType
*/
public static void addHMFoDProcessingRecipe(String input, ItemStack output, EnumProcessing processType)
{
for (ItemStack ore : OreDictionary.getOres(input))
{
if (ore != null)
{
addHMProcessingRecipe(ore, output, processType);
}
}
}
public static void addHMWashingSecondary(ItemStack input, Object output, boolean isCommon)
{
if (isCommon)
{
washerSecondaries.put(Arrays.asList(input.getItem(), input.getItemDamage()), output);
}
else
{
washerRarities.put(Arrays.asList(input.getItem(), input.getItemDamage()), output);
}
}
public static ItemStack getResult(ItemStack input, EnumProcessing processType)
{
if (input == null)
{
return null;
}
else
{
ItemStack output = (ItemStack)processType.getRecipeList().get(Arrays.asList(input.getItem(), input.isItemStackDamageable() ? 0 : input.getItemDamage(), input.isItemEnchanted(), input.stackTagCompound != null));
if (output != null)
{
if (input.isItemEqual(output) && input.isItemStackDamageable() && output.isItemStackDamageable())
{
output.setItemDamage(input.getItemDamage());
}
}
return output;
}
}
public static int getQuantity(ItemStack item, EnumProcessing processType)
{
return (Integer)quantityMapping.get(Arrays.asList(item.getItem(), item.getItemDamage(), processType));
}
public static ItemStack getWashingSecondaryResult(ItemStack item, Random random)
{
int secondaryChance = random.nextInt(100);
if (item == null)
{
return null;
}
else
{
if (secondaryChance < 5)
{
ItemStack ret = (ItemStack)washerRarities.get(Arrays.asList(item.getItem(), item.getItemDamage()));
if (ret != null)
{
return ret;
}
}
else if (secondaryChance < 10)
{
ItemStack ret = (ItemStack)washerSecondaries.get(Arrays.asList(item.getItem(), item.getItemDamage()));
if (ret != null)
{
return ret;
}
}
return null;
}
}
}

View file

@ -0,0 +1,106 @@
package hawk.api;
import java.util.List;
import java.util.Random;
import net.minecraft.server.MinecraftServer;
import net.minecraft.src.Entity;
import net.minecraft.src.EntityPlayer;
import net.minecraft.src.EntityPlayerMP;
import net.minecraft.src.ServerConfigurationManager;
import net.minecraft.src.World;
import net.minecraftforge.common.DimensionManager;
/**
*
*
*
* @author Elusivehawk
*/
public class TeleportationHelper
{
private List<EndiumTeleporterCoords> coordsList;
private static TeleportationHelper INSTANCE;
public TeleportationHelper()
{
INSTANCE = this;
}
public boolean registerCoords(EndiumTeleporterCoords coords)
{
for (EndiumTeleporterCoords otherCoords : this.coordsList)
{
if (otherCoords.isEqual(coords.symA(), coords.symB(), coords.symC()))
{
return false;
}
else
{
continue;
}
}
this.coordsList.add(coords);
return true;
}
public boolean removeCoords(EndiumTeleporterCoords coords)
{
return this.coordsList.remove(coords);
}
public EndiumTeleporterCoords getCoordsFromSymbols(int sym1, int sym2, int sym3)
{
for (EndiumTeleporterCoords coords : this.coordsList)
{
if (coords.isEqual(sym1, sym2, sym3))
{
return coords;
}
}
return null;
}
public void teleportEntity(Entity entity, EndiumTeleporterCoords coords)
{
if (new Random().nextInt(100) > 10)
{
entity.travelToTheEnd(entity.dimension);
return;
}
if (!entity.worldObj.isRemote)
{
if (coords.dimension() != entity.dimension)
{
ServerConfigurationManager manager = MinecraftServer.getServer().getConfigurationManager();
if (entity instanceof EntityPlayerMP)
{
manager.transferPlayerToDimension(((EntityPlayerMP)entity), coords.dimension());
}
else
{
manager.func_82448_a(entity, coords.dimension(), DimensionManager.getWorld(entity.dimension), DimensionManager.getWorld(coords.dimension()));
}
}
entity.setPosition(coords.x() - 0.5, coords.y(), coords.z() - 0.5);
}
}
public static TeleportationHelper instance()
{
return INSTANCE;
}
}

View file

@ -7,6 +7,9 @@ import cpw.mods.fml.common.Side;
import cpw.mods.fml.common.asm.SideOnly;
import net.minecraft.src.*;
import net.minecraftforge.common.ForgeDirection;
import net.uberkat.obsidian.hawk.common.TileEntityDamagableMachine;
import net.uberkat.obsidian.hawk.common.TileEntityTeleporter;
import net.uberkat.obsidian.hawk.common.TileEntityWasher;
/**
* Block class for handling multiple machine block IDs.
@ -15,6 +18,8 @@ import net.minecraftforge.common.ForgeDirection;
* 2: Combiner
* 3: Crusher
* 4: Theoretical Elementizer
* 5: Washer
* 6: Teleporter
* @author AidanBrady
*
*/
@ -32,6 +37,8 @@ public class BlockMachine extends BlockContainer
}
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLiving entityliving)
{
if(!(world.getBlockMetadata(x, y, z) == 6))
{
TileEntityBasicMachine tileEntity = (TileEntityBasicMachine)world.getBlockTileEntity(x, y, z);
int side = MathHelper.floor_double((double)(entityliving.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
@ -47,9 +54,14 @@ public class BlockMachine extends BlockContainer
tileEntity.setFacing((short)change);
}
}
@SideOnly(Side.CLIENT)
public void randomDisplayTick(World world, int x, int y, int z, Random random)
{
int meta = world.getBlockMetadata(x, y, z);
if(meta != 5 && meta != 6)
{
TileEntityBasicMachine tileEntity = (TileEntityBasicMachine)world.getBlockTileEntity(x, y, z);
if (isActive(world, x, y, z))
@ -82,6 +94,7 @@ public class BlockMachine extends BlockContainer
}
}
}
}
public int getBlockTextureFromSideAndMetadata(int side, int meta)
{
@ -139,6 +152,34 @@ public class BlockMachine extends BlockContainer
return 19;
}
}
else if(meta == 5)
{
if(side == 1)
{
return 29;
}
else if(side == 3)
{
return 30;
}
else {
return 31;
}
}
else if(meta == 6)
{
if(side == 0)
{
return 34;
}
else if(side == 1)
{
return 32;
}
else {
return 33;
}
}
else {
return 0;
}
@ -211,6 +252,34 @@ public class BlockMachine extends BlockContainer
}
}
}
else if(metadata == 5)
{
if(side == 1)
{
return 29;
}
else if(side == tileEntity.facing)
{
return 30;
}
else {
return 31;
}
}
else if(metadata == 6)
{
if(side == 0)
{
return 34;
}
else if(side == 1)
{
return 32;
}
else {
return 33;
}
}
else {
return 0;
}
@ -229,6 +298,8 @@ public class BlockMachine extends BlockContainer
list.add(new ItemStack(i, 1, 2));
list.add(new ItemStack(i, 1, 3));
list.add(new ItemStack(i, 1, 4));
list.add(new ItemStack(i, 1, 5));
list.add(new ItemStack(i, 1, 6));
}
/**
@ -298,12 +369,13 @@ public class BlockMachine extends BlockContainer
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer entityplayer, int facing, float playerX, float playerY, float playerZ)
{
if (world.isRemote)
if(world.isRemote)
{
return true;
return false;
}
else
{
//If the block isn't a washer
else {
TileEntityBasicMachine tileEntity = (TileEntityBasicMachine)world.getBlockTileEntity(x, y, z);
int metadata = world.getBlockMetadata(x, y, z);
@ -318,13 +390,14 @@ public class BlockMachine extends BlockContainer
else if(metadata == 2) id = 5;
else if(metadata == 3) id = 6;
else if(metadata == 4) id = 7;
else if(metadata == 5) id = 10;
else if(metadata == 6) id = 11;
entityplayer.openGui(ObsidianIngots.instance, id, world, x, y, z);
return true;
}
else {
return false;
}
}
return true;
}
}
@ -356,6 +429,14 @@ public class BlockMachine extends BlockContainer
{
return new TileEntityTheoreticalElementizer();
}
else if(metadata == MachineType.WASHER.index)
{
return new TileEntityWasher();
}
else if(metadata == MachineType.TELEPORTER.index)
{
return new TileEntityTeleporter();
}
else {
return null;
}
@ -373,7 +454,9 @@ public class BlockMachine extends BlockContainer
PLATINUM_COMPRESSOR(1),
COMBINER(2),
CRUSHER(3),
THEORETICAL_ELEMENTIZER(4);
THEORETICAL_ELEMENTIZER(4),
WASHER(5),
TELEPORTER(6);
private int index;
@ -381,5 +464,10 @@ public class BlockMachine extends BlockContainer
{
index = i;
}
public String toString()
{
return Integer.toString(index);
}
}
}

View file

@ -7,6 +7,8 @@ import cpw.mods.fml.common.Side;
import cpw.mods.fml.common.asm.SideOnly;
import net.minecraft.src.*;
import net.minecraftforge.common.ForgeChunkManager;
import net.uberkat.obsidian.hawk.common.TileEntityEndiumChunkloader;
/**
* Block class for handling multiple metal block IDs.
@ -15,11 +17,14 @@ import net.minecraft.src.*;
* 2: Refined Obsidian
* 3: Coal Block
* 4: Refined Glowstone
* 5: Endium Chunkloader
* @author AidanBrady
*
*/
public class BlockMulti extends Block
{
public TileEntityEndiumChunkloader tileChunkloader;
public BlockMulti(int i)
{
super(i, Material.iron);
@ -60,6 +65,7 @@ public class BlockMulti extends Block
list.add(new ItemStack(i, 1, 2));
list.add(new ItemStack(i, 1, 3));
list.add(new ItemStack(i, 1, 4));
list.add(new ItemStack(i, 1, 5));
}
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer entityplayer, int i1, float f1, float f2, float f3)
@ -86,16 +92,90 @@ public class BlockMulti extends Block
return 8;
case 4:
return 15;
case 5:
return 15;
}
return 0;
}
public boolean hasTileEntity(int metadata)
{
return metadata == 5;
}
public TileEntity createTileEntity(World world, int metadata)
{
if(metadata == 5)
{
tileChunkloader = new TileEntityEndiumChunkloader();
return tileChunkloader;
}
return null;
}
public void randomDisplayTick(World world, int x, int y, int z, Random random)
{
if (world.isBlockIndirectlyGettingPowered(x, y + 1, z) && world.getBlockMetadata(z, y, z) == 5)
{
Chunk chunkInside = world.getChunkFromBlockCoords(x, z);
int xPosMax = chunkInside.xPosition << 4;
int zPosMax = chunkInside.zPosition << 4;
int xPosMin = xPosMax + 16;
int zPosMin = zPosMax + 16;
world.spawnParticle("portal", xPosMax + 0.5, y + 1, zPosMax + 0.5, 0, 0, 0);
world.spawnParticle("portal", xPosMax + 1.5, y + 1, zPosMax + 0.5, 0, 0, 0);
world.spawnParticle("portal", xPosMax + 2.5, y + 1, zPosMax + 0.5, 0, 0, 0);
world.spawnParticle("portal", xPosMax + 3.5, y + 1, zPosMax + 0.5, 0, 0, 0);
world.spawnParticle("portal", xPosMax + 4.5, y + 1, zPosMax + 0.5, 0, 0, 0);
world.spawnParticle("portal", xPosMax + 0.5, y + 1, zPosMax + 1.5, 0, 0, 0);
world.spawnParticle("portal", xPosMax + 0.5, y + 1, zPosMax + 2.5, 0, 0, 0);
world.spawnParticle("portal", xPosMax + 0.5, y + 1, zPosMax + 3.5, 0, 0, 0);
world.spawnParticle("portal", xPosMax + 0.5, y + 1, zPosMax + 4.5, 0, 0, 0);
world.spawnParticle("portal", xPosMin - 0.5, y + 1, zPosMax + 0.5, 0, 0, 0);
world.spawnParticle("portal", xPosMin - 1.5, y + 1, zPosMax + 0.5, 0, 0, 0);
world.spawnParticle("portal", xPosMin - 2.5, y + 1, zPosMax + 0.5, 0, 0, 0);
world.spawnParticle("portal", xPosMin - 3.5, y + 1, zPosMax + 0.5, 0, 0, 0);
world.spawnParticle("portal", xPosMin - 4.5, y + 1, zPosMax + 0.5, 0, 0, 0);
world.spawnParticle("portal", xPosMin - 0.5, y + 1, zPosMax + 1.5, 0, 0, 0);
world.spawnParticle("portal", xPosMin - 0.5, y + 1, zPosMax + 2.5, 0, 0, 0);
world.spawnParticle("portal", xPosMin - 0.5, y + 1, zPosMax + 3.5, 0, 0, 0);
world.spawnParticle("portal", xPosMin - 0.5, y + 1, zPosMax + 4.5, 0, 0, 0);
world.spawnParticle("portal", xPosMax + 0.5, y + 1, zPosMin - 0.5, 0, 0, 0);
world.spawnParticle("portal", xPosMax + 1.5, y + 1, zPosMin - 0.5, 0, 0, 0);
world.spawnParticle("portal", xPosMax + 2.5, y + 1, zPosMin - 0.5, 0, 0, 0);
world.spawnParticle("portal", xPosMax + 3.5, y + 1, zPosMin - 0.5, 0, 0, 0);
world.spawnParticle("portal", xPosMax + 4.5, y + 1, zPosMin - 0.5, 0, 0, 0);
world.spawnParticle("portal", xPosMax + 0.5, y + 1, zPosMin - 1.5, 0, 0, 0);
world.spawnParticle("portal", xPosMax + 0.5, y + 1, zPosMin - 2.5, 0, 0, 0);
world.spawnParticle("portal", xPosMax + 0.5, y + 1, zPosMin - 3.5, 0, 0, 0);
world.spawnParticle("portal", xPosMax + 0.5, y + 1, zPosMin - 4.5, 0, 0, 0);
world.spawnParticle("portal", xPosMin - 0.5, y + 1, zPosMin - 0.5, 0, 0, 0);
world.spawnParticle("portal", xPosMin - 1.5, y + 1, zPosMin - 0.5, 0, 0, 0);
world.spawnParticle("portal", xPosMin - 2.5, y + 1, zPosMin - 0.5, 0, 0, 0);
world.spawnParticle("portal", xPosMin - 3.5, y + 1, zPosMin - 0.5, 0, 0, 0);
world.spawnParticle("portal", xPosMin - 4.5, y + 1, zPosMin - 0.5, 0, 0, 0);
world.spawnParticle("portal", xPosMin - 0.5, y + 1, zPosMin - 1.5, 0, 0, 0);
world.spawnParticle("portal", xPosMin - 0.5, y + 1, zPosMin - 2.5, 0, 0, 0);
world.spawnParticle("portal", xPosMin - 0.5, y + 1, zPosMin - 3.5, 0, 0, 0);
world.spawnParticle("portal", xPosMin - 0.5, y + 1, zPosMin - 4.5, 0, 0, 0);
}
}
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLiving entityliving)
{
world.markBlockAsNeedsUpdate(x, y, z);
world.updateAllLightTypes(x, y, z);
}
public void onBlockHarvested(World par1World, int par2, int par3, int par4, int par5, EntityPlayer par6EntityPlayer)
{
ForgeChunkManager.releaseTicket(tileChunkloader.heldChunk);
}
public String getTextureFile()
{
return "/textures/terrain.png";

View file

@ -9,6 +9,7 @@ import net.minecraft.src.*;
/**
* Block class for handling multiple ore block IDs.
* 0: Platinum Ore
* 1: Endium Ore
* @author AidanBrady
*
*/
@ -23,12 +24,19 @@ public class BlockOre extends Block
setRequiresSelfNotify();
}
public boolean canDragonDestroy(World world, int x, int y, int z)
{
return world.getBlockMetadata(x, y, z) != 1;
}
public int getBlockTextureFromSideAndMetadata(int side, int meta)
{
switch(meta)
{
case 0:
return 3;
case 1:
return 28;
}
return 0;
}
@ -42,6 +50,7 @@ public class BlockOre extends Block
public void getSubBlocks(int i, CreativeTabs creativetabs, List list)
{
list.add(new ItemStack(i, 1, 0));
list.add(new ItemStack(i, 1, 1));
}
public String getTextureFile()

View file

@ -11,6 +11,12 @@ import net.minecraft.src.Container;
import net.minecraft.src.EntityPlayer;
import net.minecraft.src.World;
import net.minecraftforge.common.Configuration;
import net.uberkat.obsidian.hawk.client.GuiTeleporter;
import net.uberkat.obsidian.hawk.client.GuiWasher;
import net.uberkat.obsidian.hawk.common.ContainerTeleporter;
import net.uberkat.obsidian.hawk.common.ContainerWasher;
import net.uberkat.obsidian.hawk.common.TileEntityTeleporter;
import net.uberkat.obsidian.hawk.common.TileEntityWasher;
import cpw.mods.fml.common.network.IGuiHandler;
/**
@ -121,6 +127,11 @@ public class CommonProxy
case 9:
TileEntityGenerator tileentity6 = (TileEntityGenerator)world.getBlockTileEntity(x, y, z);
return new ContainerGenerator(player.inventory, tileentity6);
case 10:
TileEntityWasher tileentity7 = (TileEntityWasher)world.getBlockTileEntity(x, y, z);
return new ContainerWasher(player.inventory, tileentity7);
case 11:
return new ContainerTeleporter(player.inventory);
}
return null;
}

View file

@ -11,6 +11,6 @@ public class CreativeTabOI extends CreativeTabs
public ItemStack getIconItemStack()
{
return new ItemStack(ObsidianIngots.ObsidianIngot);
return new ItemStack(ObsidianIngots.Ingot, 1, 0);
}
}

View file

@ -11,6 +11,8 @@ import net.minecraft.src.ItemStack;
* 2: Combiner
* 3: Crusher
* 4: Theoretical Elementizer
* 5: Washer
* 6: Teleporter
* @author AidanBrady
*
*/
@ -55,6 +57,12 @@ public class ItemBlockMachine extends ItemBlock
case 4:
name = "TheoreticalElementizer";
break;
case 5:
name = "Washer";
break;
case 6:
name = "Teleporter";
break;
default:
name = "Unknown";
break;

View file

@ -9,6 +9,7 @@ import net.minecraft.src.*;
* 2: Refined Obsidian
* 3: Coal Block
* 4: Refined Glowstone
* 5: Endium Chunkloader
* @author AidanBrady
*
*/
@ -33,6 +34,15 @@ public class ItemBlockMulti extends ItemBlock
return metaBlock.getBlockTextureFromSideAndMetadata(2, i);
}
public EnumRarity getRarity(ItemStack item)
{
if(item.getItemDamage() == 5)
{
return EnumRarity.rare;
}
return EnumRarity.common;
}
public String getItemNameIS(ItemStack itemstack)
{
String name = "";
@ -53,6 +63,9 @@ public class ItemBlockMulti extends ItemBlock
case 4:
name = "RefinedGlowstone";
break;
case 5:
name = "EndiumChunkloader";
break;
default:
name = "Unknown";
break;

View file

@ -5,6 +5,7 @@ import net.minecraft.src.*;
/**
* Item class for handling multiple ore block IDs.
* 0: Platinum Ore
* 1: Endium Ore
* @author AidanBrady
*
*/
@ -37,6 +38,9 @@ public class ItemBlockOre extends ItemBlock
case 0:
name = "PlatinumOre";
break;
case 1:
name = "EndiumOre";
break;
default:
name = "Unknown";
break;

View file

@ -0,0 +1,51 @@
package net.uberkat.obsidian.common;
import java.util.ArrayList;
import java.util.List;
import cpw.mods.fml.common.registry.LanguageRegistry;
import net.minecraft.src.*;
public class ItemDust extends ItemObsidian
{
public static String[] en_USNames = {"Iron", "Gold", "Platinum",
"Obsidian", "Diamond", "Glass",
"Emerald", "Star", "Endium"};
public ItemDust(int id)
{
super(id);
setHasSubtypes(true);
setCreativeTab(ObsidianIngots.tabOBSIDIAN);
}
public int getIconFromDamage(int meta)
{
switch (meta)
{
case 0: return 248;
case 1: return 250;
case 2: return 242;
case 3: return 241;
case 4: return 249;
case 5: return 251;
case 6: return 252;
case 7: return 253;
case 8: return 254;
default: return 0;
}
}
public void getSubItems(int id, CreativeTabs tabs, List itemList)
{
for (int counter = 0; counter <= 8; ++counter)
{
itemList.add(new ItemStack(this, 1, counter));
}
}
public String getItemNameIS(ItemStack item)
{
return en_USNames[item.getItemDamage()].toLowerCase() + "Dust";
}
}

View file

@ -0,0 +1,46 @@
package net.uberkat.obsidian.common;
import java.util.ArrayList;
import java.util.List;
import cpw.mods.fml.common.registry.LanguageRegistry;
import net.minecraft.src.*;
public class ItemIngot extends ItemObsidian
{
public static String[] en_USNames = {"Obsidian", "Platinum", "Redstone",
"Glowstone", "Endium"};
public ItemIngot(int id)
{
super(id);
setHasSubtypes(true);
setCreativeTab(ObsidianIngots.tabOBSIDIAN);
}
public int getIconFromDamage(int meta)
{
switch (meta)
{
case 0: return 161;
case 1: return 162;
case 2: return 163;
case 3: return 164;
case 4: return 174;
default: return 0;
}
}
public void getSubItems(int id, CreativeTabs tabs, List itemList)
{
for (int counter = 0; counter <= 4; ++counter)
{
itemList.add(new ItemStack(this, 1, counter));
}
}
public String getItemNameIS(ItemStack item)
{
return en_USNames[item.getItemDamage()].toLowerCase() + "Ingot";
}
}

View file

@ -40,6 +40,7 @@ public class ItemLightningRod extends ItemObsidian
EntityLightningBolt entitybolt = new EntityLightningBolt(world, 0D, 0D, 0D);
entitybolt.setLocationAndAngles(x, y, z, 0, 0.0F);
world.spawnEntityInWorld(entitybolt);
entityplayer.swingItem();
if(!entityplayer.capabilities.isCreativeMode)
{
itemstack.damageItem(99, entityplayer);

View file

@ -38,7 +38,7 @@ public class ObsidianHooks
IC2IronDust = getIC2Item("ironDust");
IC2GoldDust = getIC2Item("goldDust");
Ic2Recipes.addMaceratorRecipe(new ItemStack(ObsidianIngots.OreBlock, 1, 0), new ItemStack(ObsidianIngots.PlatinumDust, 2));
Ic2Recipes.addMaceratorRecipe(new ItemStack(ObsidianIngots.OreBlock, 1, 0), new ItemStack(ObsidianIngots.Dust, 2, 2));
Ic2Recipes.addMatterAmplifier(ObsidianIngots.EnrichedAlloy, 100000);
System.out.println("[ObsidianIngots] Hooked into IC2 successfully.");

View file

@ -17,6 +17,9 @@ import java.util.logging.Logger;
import net.minecraftforge.common.*;
import net.minecraft.src.*;
import net.uberkat.obsidian.client.SoundHandler;
import net.uberkat.obsidian.hawk.common.TileEntityEndiumChunkloader;
import net.uberkat.obsidian.hawk.common.TileEntityTeleporter;
import net.uberkat.obsidian.hawk.common.TileEntityWasher;
import cpw.mods.fml.client.registry.RenderingRegistry;
import cpw.mods.fml.common.*;
import cpw.mods.fml.common.Mod.Init;
@ -122,11 +125,8 @@ public class ObsidianIngots
public static Item IronKnife;
public static Item DiamondKnife;
public static Item GoldKnife;
public static Item IronDust;
public static Item GoldDust;
//Glowstone Items
public static Item GlowstoneIngot;
public static Item GlowstonePaxel;
public static Item GlowstonePickaxe;
public static Item GlowstoneAxe;
@ -140,7 +140,6 @@ public class ObsidianIngots
public static Item GlowstoneKnife;
//Redstone Items
public static Item RedstoneIngot;
public static Item RedstonePaxel;
public static Item RedstonePickaxe;
public static Item RedstoneAxe;
@ -154,8 +153,6 @@ public class ObsidianIngots
public static Item RedstoneKnife;
//Platinum Items
public static Item PlatinumDust;
public static Item PlatinumIngot;
public static Item PlatinumPaxel;
public static Item PlatinumPickaxe;
public static Item PlatinumAxe;
@ -169,12 +166,10 @@ public class ObsidianIngots
public static Item PlatinumKnife;
//Obsidian Items
public static Item ObsidianDust;
public static Item ObsidianHelmet;
public static Item ObsidianBody;
public static Item ObsidianLegs;
public static Item ObsidianBoots;
public static Item ObsidianIngot;
public static Item ObsidianPaxel;
public static Item ObsidianPickaxe;
public static Item ObsidianAxe;
@ -217,6 +212,10 @@ public class ObsidianIngots
public static Block PowerUnit;
public static Block Generator;
//MultiID Items
public static Item Dust;
public static Item Ingot;
//Boolean Values
public static boolean extrasEnabled = true;
public static boolean oreGenerationEnabled = true;
@ -277,84 +276,84 @@ public class ObsidianIngots
//Obsidian
GameRegistry.addRecipe(new ItemStack(MultiBlock, 1, 2), new Object[] {
"***", "***", "***", Character.valueOf('*'), ObsidianIngot
"***", "***", "***", Character.valueOf('*'), new ItemStack(Ingot, 1, 0)
});
GameRegistry.addRecipe(new ItemStack(ObsidianIngot, 9), new Object[] {
GameRegistry.addRecipe(new ItemStack(Ingot, 9, 0), new Object[] {
"*", Character.valueOf('*'), new ItemStack(MultiBlock, 1, 2)
});
GameRegistry.addRecipe(new ItemStack(ObsidianHelmet, 1), new Object[] {
"***", "* *", Character.valueOf('*'), ObsidianIngot
"***", "* *", Character.valueOf('*'), new ItemStack(Ingot, 1, 0)
});
GameRegistry.addRecipe(new ItemStack(ObsidianBody, 1), new Object[] {
"* *", "***", "***", Character.valueOf('*'), ObsidianIngot
"* *", "***", "***", Character.valueOf('*'), new ItemStack(Ingot, 1, 0)
});
GameRegistry.addRecipe(new ItemStack(ObsidianLegs, 1), new Object[] {
"***", "* *", "* *", Character.valueOf('*'), ObsidianIngot
"***", "* *", "* *", Character.valueOf('*'), new ItemStack(Ingot, 1, 0)
});
GameRegistry.addRecipe(new ItemStack(ObsidianBoots, 1), new Object[] {
"* *", "* *", Character.valueOf('*'), ObsidianIngot
"* *", "* *", Character.valueOf('*'), new ItemStack(Ingot, 1, 0)
});
GameRegistry.addRecipe(new ItemStack(ObsidianPaxel, 1), new Object[] {
"XYZ", " T ", " T ", Character.valueOf('X'), ObsidianAxe, Character.valueOf('Y'), ObsidianPickaxe, Character.valueOf('Z'), ObsidianSpade, Character.valueOf('T'), Item.stick
});
GameRegistry.addRecipe(new ItemStack(ObsidianPickaxe, 1), new Object[] {
"XXX", " T ", " T ", Character.valueOf('X'), ObsidianIngot, Character.valueOf('T'), Item.stick
"XXX", " T ", " T ", Character.valueOf('X'), new ItemStack(Ingot, 1, 0), Character.valueOf('T'), Item.stick
});
GameRegistry.addRecipe(new ItemStack(ObsidianAxe, 1), new Object[] {
"XX", "XT", " T", Character.valueOf('X'), ObsidianIngot, Character.valueOf('T'), Item.stick
"XX", "XT", " T", Character.valueOf('X'), new ItemStack(Ingot, 1, 0), Character.valueOf('T'), Item.stick
});
GameRegistry.addRecipe(new ItemStack(ObsidianSpade, 1), new Object[] {
"X", "T", "T", Character.valueOf('X'), ObsidianIngot, Character.valueOf('T'), Item.stick
"X", "T", "T", Character.valueOf('X'), new ItemStack(Ingot, 1, 0), Character.valueOf('T'), Item.stick
});
GameRegistry.addRecipe(new ItemStack(ObsidianHoe, 1), new Object[] {
"XX", " T", " T", Character.valueOf('X'), ObsidianIngot, Character.valueOf('T'), Item.stick
"XX", " T", " T", Character.valueOf('X'), new ItemStack(Ingot, 1, 0), Character.valueOf('T'), Item.stick
});
GameRegistry.addRecipe(new ItemStack(ObsidianSword, 1), new Object[] {
"X", "X", "T", Character.valueOf('X'), ObsidianIngot, Character.valueOf('T'), Item.stick
"X", "X", "T", Character.valueOf('X'), new ItemStack(Ingot, 1, 0), Character.valueOf('T'), Item.stick
});
GameRegistry.addRecipe(new ItemStack(ObsidianKnife, 1), new Object[] {
" ^", "I ", Character.valueOf('^'), ObsidianIngot, Character.valueOf('I'), Item.stick
" ^", "I ", Character.valueOf('^'), new ItemStack(Ingot, 1, 0), Character.valueOf('I'), Item.stick
});
//Glowstone
GameRegistry.addRecipe(new ItemStack(MultiBlock, 1, 4), new Object[] {
"***", "***", "***", Character.valueOf('*'), GlowstoneIngot
"***", "***", "***", Character.valueOf('*'), new ItemStack(Ingot, 1, 3)
});
GameRegistry.addRecipe(new ItemStack(GlowstoneIngot, 9), new Object[] {
GameRegistry.addRecipe(new ItemStack(Ingot, 9, 3), new Object[] {
"*", Character.valueOf('*'), new ItemStack(MultiBlock, 1, 4)
});
GameRegistry.addRecipe(new ItemStack(GlowstonePaxel, 1), new Object[] {
"XYZ", " T ", " T ", Character.valueOf('X'), GlowstoneAxe, Character.valueOf('Y'), GlowstonePickaxe, Character.valueOf('Z'), GlowstoneSpade, Character.valueOf('T'), Item.stick
});
GameRegistry.addRecipe(new ItemStack(GlowstonePickaxe, 1), new Object[] {
"XXX", " T ", " T ", Character.valueOf('X'), GlowstoneIngot, Character.valueOf('T'), Item.stick
"XXX", " T ", " T ", Character.valueOf('X'), new ItemStack(Ingot, 1, 3), Character.valueOf('T'), Item.stick
});
GameRegistry.addRecipe(new ItemStack(GlowstoneAxe, 1), new Object[] {
"XX", "XT", " T", Character.valueOf('X'), GlowstoneIngot, Character.valueOf('T'), Item.stick
"XX", "XT", " T", Character.valueOf('X'), new ItemStack(Ingot, 1, 3), Character.valueOf('T'), Item.stick
});
GameRegistry.addRecipe(new ItemStack(GlowstoneSpade, 1), new Object[] {
"X", "T", "T", Character.valueOf('X'), GlowstoneIngot, Character.valueOf('T'), Item.stick
"X", "T", "T", Character.valueOf('X'), new ItemStack(Ingot, 1, 3), Character.valueOf('T'), Item.stick
});
GameRegistry.addRecipe(new ItemStack(GlowstoneHoe, 1), new Object[] {
"XX", " T", " T", Character.valueOf('X'), GlowstoneIngot, Character.valueOf('T'), Item.stick
"XX", " T", " T", Character.valueOf('X'), new ItemStack(Ingot, 1, 3), Character.valueOf('T'), Item.stick
});
GameRegistry.addRecipe(new ItemStack(GlowstoneSword, 1), new Object[] {
"X", "X", "T", Character.valueOf('X'), GlowstoneIngot, Character.valueOf('T'), Item.stick
"X", "X", "T", Character.valueOf('X'), new ItemStack(Ingot, 1, 3), Character.valueOf('T'), Item.stick
});
GameRegistry.addRecipe(new ItemStack(GlowstoneHelmet, 1), new Object[] {
"***", "* *", Character.valueOf('*'), GlowstoneIngot
"***", "* *", Character.valueOf('*'), new ItemStack(Ingot, 1, 3)
});
GameRegistry.addRecipe(new ItemStack(GlowstoneBody, 1), new Object[] {
"* *", "***", "***", Character.valueOf('*'), GlowstoneIngot
"* *", "***", "***", Character.valueOf('*'), new ItemStack(Ingot, 1, 3)
});
GameRegistry.addRecipe(new ItemStack(GlowstoneLegs, 1), new Object[] {
"***", "* *", "* *", Character.valueOf('*'), GlowstoneIngot
"***", "* *", "* *", Character.valueOf('*'), new ItemStack(Ingot, 1, 3)
});
GameRegistry.addRecipe(new ItemStack(GlowstoneBoots, 1), new Object[] {
"* *", "* *", Character.valueOf('*'), GlowstoneIngot
"* *", "* *", Character.valueOf('*'), new ItemStack(Ingot, 1, 3)
});
GameRegistry.addRecipe(new ItemStack(GlowstoneKnife, 1), new Object[] {
" ^", "I ", Character.valueOf('^'), GlowstoneIngot, Character.valueOf('I'), Item.stick
" ^", "I ", Character.valueOf('^'), new ItemStack(Ingot, 1, 3), Character.valueOf('I'), Item.stick
});
//Lazuli
@ -394,84 +393,84 @@ public class ObsidianIngots
//Platinum
GameRegistry.addRecipe(new ItemStack(MultiBlock, 1, 0), new Object[] {
"XXX", "XXX", "XXX", Character.valueOf('X'), PlatinumIngot
"XXX", "XXX", "XXX", Character.valueOf('X'), new ItemStack(Ingot, 1, 1)
});
GameRegistry.addRecipe(new ItemStack(PlatinumPaxel, 1), new Object[] {
"XYZ", " T ", " T ", Character.valueOf('X'), PlatinumAxe, Character.valueOf('Y'), PlatinumPickaxe, Character.valueOf('Z'), PlatinumSpade, Character.valueOf('T'), Item.stick
});
GameRegistry.addRecipe(new ItemStack(PlatinumPickaxe, 1), new Object[] {
"XXX", " T ", " T ", Character.valueOf('X'), PlatinumIngot, Character.valueOf('T'), Item.stick
"XXX", " T ", " T ", Character.valueOf('X'), new ItemStack(Ingot, 1, 1), Character.valueOf('T'), Item.stick
});
GameRegistry.addRecipe(new ItemStack(PlatinumAxe, 1), new Object[] {
"XX", "XT", " T", Character.valueOf('X'), PlatinumIngot, Character.valueOf('T'), Item.stick
"XX", "XT", " T", Character.valueOf('X'), new ItemStack(Ingot, 1, 1), Character.valueOf('T'), Item.stick
});
GameRegistry.addRecipe(new ItemStack(PlatinumSpade, 1), new Object[] {
"X", "T", "T", Character.valueOf('X'), PlatinumIngot, Character.valueOf('T'), Item.stick
"X", "T", "T", Character.valueOf('X'), new ItemStack(Ingot, 1, 1), Character.valueOf('T'), Item.stick
});
GameRegistry.addRecipe(new ItemStack(PlatinumHoe, 1), new Object[] {
"XX", " T", " T", Character.valueOf('X'), PlatinumIngot, Character.valueOf('T'), Item.stick
"XX", " T", " T", Character.valueOf('X'), new ItemStack(Ingot, 1, 1), Character.valueOf('T'), Item.stick
});
GameRegistry.addRecipe(new ItemStack(PlatinumSword, 1), new Object[] {
"X", "X", "T", Character.valueOf('X'), PlatinumIngot, Character.valueOf('T'), Item.stick
"X", "X", "T", Character.valueOf('X'), new ItemStack(Ingot, 1, 1), Character.valueOf('T'), Item.stick
});
GameRegistry.addRecipe(new ItemStack(PlatinumHelmet, 1), new Object[] {
"***", "* *", Character.valueOf('*'), PlatinumIngot
"***", "* *", Character.valueOf('*'), new ItemStack(Ingot, 1, 1)
});
GameRegistry.addRecipe(new ItemStack(PlatinumBody, 1), new Object[] {
"* *", "***", "***", Character.valueOf('*'), PlatinumIngot
"* *", "***", "***", Character.valueOf('*'), new ItemStack(Ingot, 1, 1)
});
GameRegistry.addRecipe(new ItemStack(PlatinumLegs, 1), new Object[] {
"***", "* *", "* *", Character.valueOf('*'), PlatinumIngot
"***", "* *", "* *", Character.valueOf('*'), new ItemStack(Ingot, 1, 1)
});
GameRegistry.addRecipe(new ItemStack(PlatinumBoots, 1), new Object[] {
"* *", "* *", Character.valueOf('*'), PlatinumIngot
"* *", "* *", Character.valueOf('*'), new ItemStack(Ingot, 1, 1)
});
GameRegistry.addRecipe(new ItemStack(PlatinumIngot, 9), new Object[] {
GameRegistry.addRecipe(new ItemStack(Ingot, 9, 1), new Object[] {
"*", Character.valueOf('*'), new ItemStack(MultiBlock, 1, 0)
});
GameRegistry.addRecipe(new ItemStack(PlatinumKnife, 1), new Object[] {
" ^", "I ", Character.valueOf('^'), PlatinumIngot, Character.valueOf('I'), Item.stick
" ^", "I ", Character.valueOf('^'), new ItemStack(Ingot, 1, 1), Character.valueOf('I'), Item.stick
});
//Redstone
GameRegistry.addRecipe(new ItemStack(MultiBlock, 1, 1), new Object[] {
"***", "***", "***", Character.valueOf('*'), RedstoneIngot
"***", "***", "***", Character.valueOf('*'), new ItemStack(Ingot, 1, 2)
});
GameRegistry.addRecipe(new ItemStack(RedstoneIngot, 9), new Object[] {
GameRegistry.addRecipe(new ItemStack(Ingot, 9, 2), new Object[] {
"*", Character.valueOf('*'), new ItemStack(MultiBlock, 1, 1)
});
GameRegistry.addRecipe(new ItemStack(RedstonePaxel, 1), new Object[] {
"XYZ", " T ", " T ", Character.valueOf('X'), RedstoneAxe, Character.valueOf('Y'), RedstonePickaxe, Character.valueOf('Z'), RedstoneSpade, Character.valueOf('T'), Item.stick
});
GameRegistry.addRecipe(new ItemStack(RedstonePickaxe, 1), new Object[] {
"XXX", " T ", " T ", Character.valueOf('X'), RedstoneIngot, Character.valueOf('T'), Item.stick
"XXX", " T ", " T ", Character.valueOf('X'), new ItemStack(Ingot, 1, 2), Character.valueOf('T'), Item.stick
});
GameRegistry.addRecipe(new ItemStack(RedstoneAxe, 1), new Object[] {
"XX", "XT", " T", Character.valueOf('X'), RedstoneIngot, Character.valueOf('T'), Item.stick
"XX", "XT", " T", Character.valueOf('X'), new ItemStack(Ingot, 1, 2), Character.valueOf('T'), Item.stick
});
GameRegistry.addRecipe(new ItemStack(RedstoneSpade, 1), new Object[] {
"X", "T", "T", Character.valueOf('X'), RedstoneIngot, Character.valueOf('T'), Item.stick
"X", "T", "T", Character.valueOf('X'), new ItemStack(Ingot, 1, 2), Character.valueOf('T'), Item.stick
});
GameRegistry.addRecipe(new ItemStack(RedstoneHoe, 1), new Object[] {
"XX", " T", " T", Character.valueOf('X'), RedstoneIngot, Character.valueOf('T'), Item.stick
"XX", " T", " T", Character.valueOf('X'), new ItemStack(Ingot, 1, 2), Character.valueOf('T'), Item.stick
});
GameRegistry.addRecipe(new ItemStack(RedstoneSword, 1), new Object[] {
"X", "X", "T", Character.valueOf('X'), RedstoneIngot, Character.valueOf('T'), Item.stick
"X", "X", "T", Character.valueOf('X'), new ItemStack(Ingot, 1, 2), Character.valueOf('T'), Item.stick
});
GameRegistry.addRecipe(new ItemStack(RedstoneHelmet, 1), new Object[] {
"***", "* *", Character.valueOf('*'), RedstoneIngot
"***", "* *", Character.valueOf('*'), new ItemStack(Ingot, 1, 2)
});
GameRegistry.addRecipe(new ItemStack(RedstoneBody, 1), new Object[] {
"* *", "***", "***", Character.valueOf('*'), RedstoneIngot
"* *", "***", "***", Character.valueOf('*'), new ItemStack(Ingot, 1, 2)
});
GameRegistry.addRecipe(new ItemStack(RedstoneLegs, 1), new Object[] {
"***", "* *", "* *", Character.valueOf('*'), RedstoneIngot
"***", "* *", "* *", Character.valueOf('*'), new ItemStack(Ingot, 1, 2)
});
GameRegistry.addRecipe(new ItemStack(RedstoneBoots, 1), new Object[] {
"* *", "* *", Character.valueOf('*'), RedstoneIngot
"* *", "* *", Character.valueOf('*'), new ItemStack(Ingot, 1, 2)
});
GameRegistry.addRecipe(new ItemStack(RedstoneKnife, 1), new Object[] {
" ^", "I ", Character.valueOf('^'), RedstoneIngot, Character.valueOf('I'), Item.stick
" ^", "I ", Character.valueOf('^'), new ItemStack(Ingot, 1, 2), Character.valueOf('I'), Item.stick
});
//Extra
@ -479,10 +478,10 @@ public class ObsidianIngots
"***", "XXX", "***", Character.valueOf('*'), Block.obsidian, Character.valueOf('X'), Block.tnt
});
GameRegistry.addRecipe(new ItemStack(ObsidianBow, 1), new Object[] {
" AB", "A B", " AB", Character.valueOf('A'), ObsidianIngot, Character.valueOf('B'), Item.silk
" AB", "A B", " AB", Character.valueOf('A'), new ItemStack(Ingot, 1, 0), Character.valueOf('B'), Item.silk
});
GameRegistry.addRecipe(EnergyCube.getUnchargedItem(), new Object[] {
"RAR", "APA", "RAR", Character.valueOf('R'), Item.redstone, Character.valueOf('A'), EnrichedAlloy, Character.valueOf('P'), PlatinumDust
"RAR", "APA", "RAR", Character.valueOf('R'), Item.redstone, Character.valueOf('A'), EnrichedAlloy, Character.valueOf('P'), new ItemStack(Dust, 1, 2)
});
GameRegistry.addRecipe(EnergyTablet.getUnchargedItem(), new Object[] {
"RCR", "ECE", "RCR", Character.valueOf('C'), EnergyCube.getUnchargedItem(), Character.valueOf('R'), Item.redstone, Character.valueOf('E'), EnrichedAlloy
@ -497,7 +496,7 @@ public class ObsidianIngots
"ECE", "CPC", "ECE", Character.valueOf('E'), EnrichedAlloy, Character.valueOf('C'), EnergyCube.getUnchargedItem(), Character.valueOf('P'), new ItemStack(PowerUnit, 1, 0)
});
GameRegistry.addRecipe(new ItemStack(MachineBlock, 1, 0), new Object[] {
"***", "*R*", "***", Character.valueOf('*'), PlatinumIngot, Character.valueOf('R'), Item.redstone
"***", "*R*", "***", Character.valueOf('*'), new ItemStack(Ingot, 1, 1), Character.valueOf('R'), Item.redstone
});
GameRegistry.addRecipe(new ItemStack(MachineBlock, 1, 1), new Object[] {
"***", "*P*", "***", Character.valueOf('*'), Item.redstone, Character.valueOf('P'), new ItemStack(MultiBlock, 1, 0)
@ -506,10 +505,10 @@ public class ObsidianIngots
"***", "*P*", "***", Character.valueOf('*'), Block.cobblestone, Character.valueOf('P'), new ItemStack(MultiBlock, 1, 0)
});
GameRegistry.addRecipe(new ItemStack(MachineBlock, 1, 3), new Object[] {
"***", "*L*", "***", Character.valueOf('*'), PlatinumIngot, Character.valueOf('L'), Item.bucketLava
"***", "*L*", "***", Character.valueOf('*'), new ItemStack(Ingot, 1, 1), Character.valueOf('L'), Item.bucketLava
});
GameRegistry.addRecipe(new ItemStack(SpeedUpgrade), new Object[] {
"PAP", "ARA", "PAP", Character.valueOf('P'), PlatinumDust, Character.valueOf('A'), EnrichedAlloy, Character.valueOf('E'), Item.emerald
"PAP", "ARA", "PAP", Character.valueOf('P'), new ItemStack(Dust, 1, 2), Character.valueOf('A'), EnrichedAlloy, Character.valueOf('E'), Item.emerald
});
GameRegistry.addRecipe(new ItemStack(EnergyUpgrade), new Object[] {
"RAR", "AEA", "RAR", Character.valueOf('R'), Item.redstone, Character.valueOf('A'), EnrichedAlloy, Character.valueOf('E'), Item.emerald
@ -526,28 +525,28 @@ public class ObsidianIngots
}
//Furnace Recipes
GameRegistry.addSmelting(new ItemStack(OreBlock, 1, 0).itemID, new ItemStack(PlatinumIngot, 2), 1.0F);
GameRegistry.addSmelting(PlatinumDust.shiftedIndex, new ItemStack(PlatinumIngot, 1), 1.0F);
GameRegistry.addSmelting(new ItemStack(OreBlock, 1, 0).itemID, new ItemStack(Ingot, 2, 1), 1.0F);
GameRegistry.addSmelting(new ItemStack(Dust, 1, 2).itemID, new ItemStack(Ingot, 1, 1), 1.0F);
//Enrichment Chamber Recipes
RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(OreBlock, 1, 0), new ItemStack(PlatinumDust, 2));
RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(OreBlock, 1, 0), new ItemStack(Dust, 2, 2));
RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(Block.oreRedstone), new ItemStack(Item.redstone, 2));
//Platinum Compressor Recipes
RecipeHandler.addPlatinumCompressorRecipe(new ItemStack(Item.redstone), new ItemStack(RedstoneIngot));
RecipeHandler.addPlatinumCompressorRecipe(new ItemStack(Item.lightStoneDust), new ItemStack(GlowstoneIngot));
RecipeHandler.addPlatinumCompressorRecipe(new ItemStack(Item.redstone), new ItemStack(Ingot, 1, 2));
RecipeHandler.addPlatinumCompressorRecipe(new ItemStack(Item.lightStoneDust), new ItemStack(Ingot, 1, 3));
//Combiner Recipes
RecipeHandler.addCombinerRecipe(new ItemStack(Item.redstone, 4), new ItemStack(Block.oreRedstone));
RecipeHandler.addCombinerRecipe(new ItemStack(Item.redstone), new ItemStack(RedstoneIngot));
RecipeHandler.addCombinerRecipe(new ItemStack(PlatinumDust, 2), new ItemStack(OreBlock, 1, 0));
RecipeHandler.addCombinerRecipe(new ItemStack(Item.redstone), new ItemStack(Ingot, 1, 2));
RecipeHandler.addCombinerRecipe(new ItemStack(Dust, 2, 2), new ItemStack(OreBlock, 1, 0));
RecipeHandler.addCombinerRecipe(new ItemStack(Item.diamond), new ItemStack(Block.oreDiamond));
RecipeHandler.addCombinerRecipe(new ItemStack(Item.dyePowder, 4, 4), new ItemStack(Block.oreLapis));
//Crusher Recipes
RecipeHandler.addCrusherRecipe(new ItemStack(RedstoneIngot), new ItemStack(Item.redstone));
RecipeHandler.addCrusherRecipe(new ItemStack(PlatinumIngot), new ItemStack(PlatinumDust));
RecipeHandler.addCrusherRecipe(new ItemStack(GlowstoneIngot), new ItemStack(Item.lightStoneDust));
RecipeHandler.addCrusherRecipe(new ItemStack(Ingot, 1, 2), new ItemStack(Item.redstone));
RecipeHandler.addCrusherRecipe(new ItemStack(Ingot, 1, 1), new ItemStack(Dust, 1, 2));
RecipeHandler.addCrusherRecipe(new ItemStack(Ingot, 1, 3), new ItemStack(Item.lightStoneDust));
//Theoretical Elementizer Recipes
RecipeHandler.addTheoreticalElementizerRecipe(new ItemStack(EnrichedAlloy), new ItemStack(TileEntityTheoreticalElementizer.getRandomMagicItem()));
@ -575,7 +574,6 @@ public class ObsidianIngots
LanguageRegistry.addName(ObsidianBody, "Obsidian Chestplate");
LanguageRegistry.addName(ObsidianLegs, "Obsidian Leggings");
LanguageRegistry.addName(ObsidianBoots, "Obsidian Boots");
LanguageRegistry.addName(ObsidianIngot, "Obsidian Ingot");
LanguageRegistry.addName(ObsidianPaxel, "Obsidian Paxel");
LanguageRegistry.addName(ObsidianPickaxe, "Obsidian Pickaxe");
LanguageRegistry.addName(ObsidianAxe, "Obsidian Axe");
@ -598,12 +596,10 @@ public class ObsidianIngots
LanguageRegistry.addName(LazuliKnife, "Lazuli Knife");
//Platinum
LanguageRegistry.addName(PlatinumDust, "Platinum Dust");
LanguageRegistry.addName(PlatinumHelmet, "Platinum Helmet");
LanguageRegistry.addName(PlatinumBody, "Platinum Chestplate");
LanguageRegistry.addName(PlatinumLegs, "Platinum Leggings");
LanguageRegistry.addName(PlatinumBoots, "Platinum Boots");
LanguageRegistry.addName(PlatinumIngot, "Platinum Ingot");
LanguageRegistry.addName(PlatinumPaxel, "Platinum Paxel");
LanguageRegistry.addName(PlatinumPickaxe, "Platinum Pickaxe");
LanguageRegistry.addName(PlatinumAxe, "Platinum Axe");
@ -617,7 +613,6 @@ public class ObsidianIngots
LanguageRegistry.addName(RedstoneBody, "Redstone Chestplate");
LanguageRegistry.addName(RedstoneLegs, "Redstone Leggings");
LanguageRegistry.addName(RedstoneBoots, "Redstone Boots");
LanguageRegistry.addName(RedstoneIngot, "Redstone Ingot");
LanguageRegistry.addName(RedstonePaxel, "Redstone Paxel");
LanguageRegistry.addName(RedstonePickaxe, "Redstone Pickaxe");
LanguageRegistry.addName(RedstoneAxe, "Redstone Axe");
@ -627,7 +622,6 @@ public class ObsidianIngots
LanguageRegistry.addName(RedstoneKnife, "Redstone Knife");
//Glowstone
LanguageRegistry.addName(GlowstoneIngot, "Glowstone Ingot");
LanguageRegistry.addName(GlowstonePaxel, "Glowstone Paxel");
LanguageRegistry.addName(GlowstonePickaxe, "Glowstone Pickaxe");
LanguageRegistry.addName(GlowstoneAxe, "Glowstone Axe");
@ -665,15 +659,20 @@ public class ObsidianIngots
LanguageRegistry.instance().addStringLocalization("tile.MultiBlock.RefinedObsidian.name", "Refined Obsidian");
LanguageRegistry.instance().addStringLocalization("tile.MultiBlock.CoalBlock.name", "Coal Block");
LanguageRegistry.instance().addStringLocalization("tile.MultiBlock.RefinedGlowstone.name", "Refined Glowstone Block");
LanguageRegistry.instance().addStringLocalization("tile.MultiBlock.EndiumChunkloader.name", "Endium Chunkloader");
//Localization for MachineBlock
LanguageRegistry.instance().addStringLocalization("tile.MachineBlock.EnrichmentChamber.name", "Enrichment Chamber");
LanguageRegistry.instance().addStringLocalization("tile.MachineBlock.PlatinumCompressor.name", "Platinum Compressor");
LanguageRegistry.instance().addStringLocalization("tile.MachineBlock.Combiner.name", "Combiner");
LanguageRegistry.instance().addStringLocalization("tile.MachineBlock.Crusher.name", "Crusher");
LanguageRegistry.instance().addStringLocalization("tile.MachineBlock.TheoreticalElementizer.name", "Theoretical Elementizer");
LanguageRegistry.instance().addStringLocalization("tile.MachineBlock.Washer.name", "Washer");
LanguageRegistry.instance().addStringLocalization("tile.MachineBlock.Teleporter.name", "Teleporter");
//Localization for OreBlock
LanguageRegistry.instance().addStringLocalization("tile.OreBlock.PlatinumOre.name", "Platinum Ore");
LanguageRegistry.instance().addStringLocalization("tile.OreBlock.EndiumOre.name", "Endium Ore");
//Localization for PowerUnit
LanguageRegistry.instance().addStringLocalization("tile.PowerUnit.PowerUnit.name", "Power Unit");
@ -682,10 +681,23 @@ public class ObsidianIngots
//Localization for Generator
LanguageRegistry.instance().addStringLocalization("tile.Generator.HeatGenerator.name", "Heat Generator");
if(extrasEnabled == true)
{
LanguageRegistry.instance().addStringLocalization("tile.MachineBlock.TheoreticalElementizer.name", "Theoretical Elementizer");
}
//Localization for Dust
LanguageRegistry.instance().addStringLocalization("item.ironDust.name", "Iron Dust");
LanguageRegistry.instance().addStringLocalization("item.goldDust.name", "Gold Dust");
LanguageRegistry.instance().addStringLocalization("item.platinumDust.name", "Platinum Dust");
LanguageRegistry.instance().addStringLocalization("item.obsidianDust.name", "Obsidian Dust");
LanguageRegistry.instance().addStringLocalization("item.diamondDust.name", "Diamond Dust");
LanguageRegistry.instance().addStringLocalization("item.glassDust.name", "Glass Dust");
LanguageRegistry.instance().addStringLocalization("item.emeraldDust.name", "Emerald Dust");
LanguageRegistry.instance().addStringLocalization("item.starDust.name", "Star Dust");
LanguageRegistry.instance().addStringLocalization("item.endiumDust.name", "Endium Dust");
//Localization for Ingot
LanguageRegistry.instance().addStringLocalization("item.obsidianIngot.name", "Obsidian Ingot");
LanguageRegistry.instance().addStringLocalization("item.platinumIngot.name", "Platinum Ingot");
LanguageRegistry.instance().addStringLocalization("item.redstoneIngot.name", "Redstone Ingot");
LanguageRegistry.instance().addStringLocalization("item.glowstoneIngot.name", "Glowstone Ingot");
LanguageRegistry.instance().addStringLocalization("item.endiumIngot.name", "Endium Ingot");
}
/**
@ -710,8 +722,6 @@ public class ObsidianIngots
GlowstoneBody.setIconIndex(20);
GlowstoneLegs.setIconIndex(36);
GlowstoneBoots.setIconIndex(52);
GlowstoneIngot.setIconIndex(164);
GlowstoneIngot.setIconIndex(164);
GlowstonePaxel.setIconIndex(148);
GlowstonePickaxe.setIconIndex(68);
GlowstoneAxe.setIconIndex(84);
@ -725,7 +735,6 @@ public class ObsidianIngots
RedstoneBody.setIconIndex(19);
RedstoneLegs.setIconIndex(35);
RedstoneBoots.setIconIndex(51);
RedstoneIngot.setIconIndex(163);
RedstonePaxel.setIconIndex(147);
RedstonePickaxe.setIconIndex(67);
RedstoneAxe.setIconIndex(83);
@ -735,12 +744,10 @@ public class ObsidianIngots
RedstoneKnife.setIconIndex(211);
//Platinum
PlatinumDust.setIconIndex(242);
PlatinumHelmet.setIconIndex(2);
PlatinumBody.setIconIndex(18);
PlatinumLegs.setIconIndex(34);
PlatinumBoots.setIconIndex(50);
PlatinumIngot.setIconIndex(162);
PlatinumPaxel.setIconIndex(146);
PlatinumPickaxe.setIconIndex(66);
PlatinumAxe.setIconIndex(82);
@ -754,7 +761,6 @@ public class ObsidianIngots
ObsidianBody.setIconIndex(17);
ObsidianLegs.setIconIndex(33);
ObsidianBoots.setIconIndex(49);
ObsidianIngot.setIconIndex(161);
ObsidianPaxel.setIconIndex(145);
ObsidianPickaxe.setIconIndex(65);
ObsidianAxe.setIconIndex(81);
@ -804,7 +810,6 @@ public class ObsidianIngots
RedstoneBody = (new ItemObsidianArmor(11236, armorREDSTONE, proxy.getArmorIndex("redstone"), 1)).setItemName("RedstoneBody");
RedstoneLegs = (new ItemObsidianArmor(11237, armorREDSTONE, proxy.getArmorIndex("redstone"), 2)).setItemName("RedstoneLegs");
RedstoneBoots = (new ItemObsidianArmor(11238, armorREDSTONE, proxy.getArmorIndex("redstone"), 3)).setItemName("RedstoneBoots");
RedstoneIngot = new ItemObsidian(11239).setItemName("RedstoneIngot").setCreativeTab(tabOBSIDIAN);
RedstonePaxel = new ItemObsidianPaxel(11240, toolREDSTONE2).setItemName("RedstonePaxel");
RedstonePickaxe = new ItemObsidianPickaxe(11241, toolREDSTONE).setItemName("RedstonePickaxe");
RedstoneAxe = new ItemObsidianAxe(11242, toolREDSTONE).setItemName("RedstoneAxe");
@ -815,7 +820,6 @@ public class ObsidianIngots
PlatinumBody = (new ItemObsidianArmor(11247, EnumArmorMaterial.DIAMOND, proxy.getArmorIndex("platinum"), 1)).setItemName("PlatinumBody");
PlatinumLegs = (new ItemObsidianArmor(11248, EnumArmorMaterial.DIAMOND, proxy.getArmorIndex("platinum"), 2)).setItemName("PlatinumLegs");
PlatinumBoots = (new ItemObsidianArmor(11249, EnumArmorMaterial.DIAMOND, proxy.getArmorIndex("platinum"), 3)).setItemName("PlatinumBoots");
PlatinumIngot = new ItemObsidian(11250).setItemName("PlatinumIngot").setCreativeTab(tabOBSIDIAN);
PlatinumPaxel = new ItemObsidianPaxel(11251, toolPLATINUM2).setItemName("PlatinumPaxel");
PlatinumPickaxe = new ItemObsidianPickaxe(11252, toolPLATINUM).setItemName("PlatinumPickaxe");
PlatinumAxe = new ItemObsidianAxe(11253, toolPLATINUM).setItemName("PlatinumAxe");
@ -826,7 +830,6 @@ public class ObsidianIngots
ObsidianBody = (new ItemObsidianArmor(11258, armorOBSIDIAN, proxy.getArmorIndex("obsidian"), 1)).setItemName("ObsidianBody");
ObsidianLegs = (new ItemObsidianArmor(11259, armorOBSIDIAN, proxy.getArmorIndex("obsidian"), 2)).setItemName("ObsidianLegs");
ObsidianBoots = (new ItemObsidianArmor(11260, armorOBSIDIAN, proxy.getArmorIndex("obsidian"), 3)).setItemName("ObsidianBoots");
ObsidianIngot = new ItemObsidian(11261).setItemName("ObsidianIngot").setCreativeTab(tabOBSIDIAN);
ObsidianPaxel = new ItemObsidianPaxel(11262, toolOBSIDIAN2).setItemName("ObsidianPaxel");
ObsidianPickaxe = new ItemObsidianPickaxe(11263, toolOBSIDIAN).setItemName("ObsidianPickaxe");
ObsidianAxe = new ItemObsidianAxe(11264, toolOBSIDIAN).setItemName("ObsidianAxe");
@ -865,8 +868,8 @@ public class ObsidianIngots
LazuliKnife = new ItemObsidianKnife(11294, toolLAZULI).setItemName("LazuliKnife");
PlatinumKnife = new ItemObsidianKnife(11295, toolPLATINUM).setItemName("PlatinumKnife");
RedstoneKnife = new ItemObsidianKnife(11296, toolREDSTONE).setItemName("RedstoneKnife");
PlatinumDust = new ItemObsidian(11300).setItemName("PlatinumDust").setCreativeTab(tabOBSIDIAN);
GlowstoneIngot = new ItemObsidian(11301).setItemName("GlowstoneIngot").setCreativeTab(tabOBSIDIAN);
Dust = new ItemDust(11297-256);
Ingot = new ItemIngot(11298-256);
GlowstonePaxel = new ItemObsidianPaxel(11302, toolGLOWSTONE2).setItemName("GlowstonePaxel");
GlowstonePickaxe = new ItemObsidianPickaxe(11303, toolGLOWSTONE).setItemName("GlowstonePickaxe");
GlowstoneAxe = new ItemObsidianAxe(11304, toolGLOWSTONE).setItemName("GlowstoneAxe");
@ -915,48 +918,24 @@ public class ObsidianIngots
*/
public void addIntegratedItems()
{
if(hooks.IC2Loaded && hooks.IC2GoldDust != null && hooks.IC2IronDust != null)
{
IronDust = hooks.IC2IronDust.getItem();
GoldDust = hooks.IC2GoldDust.getItem();
}
else {
IronDust = new ItemObsidian(11298).setItemName("IronDust").setCreativeTab(tabOBSIDIAN);
GoldDust = new ItemObsidian(11299).setItemName("GoldDust").setCreativeTab(tabOBSIDIAN);
IronDust.setIconIndex(248);
GoldDust.setIconIndex(250);
LanguageRegistry.addName(IronDust, "Iron Dust");
LanguageRegistry.addName(GoldDust, "Gold Dust");
}
if(hooks.RailcraftLoaded && hooks.RailcraftObsidianDust != null)
{
ObsidianDust = hooks.RailcraftObsidianDust.getItem();
}
else {
ObsidianDust = new ItemObsidian(11297).setItemName("ObsidianDust").setCreativeTab(tabOBSIDIAN);
ObsidianDust.setIconIndex(241);
LanguageRegistry.addName(ObsidianDust, "Obsidian Dust");
}
if(!hooks.RailcraftLoaded && hooks.IC2Loaded)
{
Ic2Recipes.addMaceratorRecipe(new ItemStack(Block.obsidian), new ItemStack(ObsidianIngots.ObsidianDust));
Ic2Recipes.addMaceratorRecipe(new ItemStack(Block.obsidian), new ItemStack(Dust, 1, 3));
}
RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(Block.obsidian), new ItemStack(ObsidianDust));
RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(Block.oreIron), new ItemStack(IronDust, 2));
RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(Block.oreGold), new ItemStack(GoldDust, 2));
RecipeHandler.addPlatinumCompressorRecipe(new ItemStack(ObsidianDust), new ItemStack(ObsidianIngot));
RecipeHandler.addCombinerRecipe(new ItemStack(ObsidianDust), new ItemStack(Block.obsidian));
RecipeHandler.addCombinerRecipe(new ItemStack(IronDust, 2), new ItemStack(Block.oreIron));
RecipeHandler.addCombinerRecipe(new ItemStack(GoldDust, 2), new ItemStack(Block.oreGold));
RecipeHandler.addCrusherRecipe(new ItemStack(ObsidianIngot), new ItemStack(ObsidianDust));
RecipeHandler.addCrusherRecipe(new ItemStack(Item.ingotIron), new ItemStack(IronDust));
RecipeHandler.addCrusherRecipe(new ItemStack(Item.ingotGold), new ItemStack(GoldDust));
RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(Block.obsidian), new ItemStack(Dust, 1, 3));
RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(Block.oreIron), new ItemStack(Dust, 2, 0));
RecipeHandler.addEnrichmentChamberRecipe(new ItemStack(Block.oreGold), new ItemStack(Dust, 2, 1));
RecipeHandler.addPlatinumCompressorRecipe(new ItemStack(Dust, 1, 3), new ItemStack(Ingot, 1, 0));
RecipeHandler.addCombinerRecipe(new ItemStack(Dust, 1, 3), new ItemStack(Block.obsidian));
RecipeHandler.addCombinerRecipe(new ItemStack(Dust, 2, 0), new ItemStack(Block.oreIron));
RecipeHandler.addCombinerRecipe(new ItemStack(Dust, 2, 1), new ItemStack(Block.oreGold));
RecipeHandler.addCrusherRecipe(new ItemStack(Ingot, 1, 0), new ItemStack(Dust, 1, 3));
RecipeHandler.addCrusherRecipe(new ItemStack(Item.ingotIron), new ItemStack(Dust, 1, 0));
RecipeHandler.addCrusherRecipe(new ItemStack(Item.ingotGold), new ItemStack(Dust, 1, 1));
GameRegistry.addShapelessRecipe(new ItemStack(EnrichedAlloy, 1), new Object[] {
Item.redstone, Item.lightStoneDust, IronDust, GoldDust, ObsidianDust, PlatinumDust
Item.redstone, Item.lightStoneDust, new ItemStack(Dust, 1, 0), new ItemStack(Dust, 1, 1), new ItemStack(Dust, 1, 3), new ItemStack(Dust, 1, 2)
});
}
@ -982,6 +961,9 @@ public class ObsidianIngots
GameRegistry.registerTileEntity(TileEntityPowerUnit.class, "PowerUnit");
GameRegistry.registerTileEntity(TileEntityAdvancedPowerUnit.class, "AdvancedPowerUnit");
GameRegistry.registerTileEntity(TileEntityHeatGenerator.class, "HeatGenerator");
GameRegistry.registerTileEntity(TileEntityWasher.class, "Washer");
GameRegistry.registerTileEntity(TileEntityTeleporter.class, "TeleporterSender");
GameRegistry.registerTileEntity(TileEntityEndiumChunkloader.class, "EndiumChunkloader");
}
/**

View file

@ -27,13 +27,20 @@ public class OreHandler implements IWorldGenerator
{
if(ObsidianIngots.oreGenerationEnabled == true)
{
for (int i=0;i<6;i++)
for(int i=0;i<6;i++)
{
int randPosX = chunkX + random.nextInt(16);
int randPosY = random.nextInt(60);
int randPosZ = chunkZ + random.nextInt(16);
(new WorldGenMinable(new ItemStack(ObsidianIngots.OreBlock, 1, 0).itemID, 8)).generate(world, random, randPosX, randPosY, randPosZ);
}
for(int i=0;i<2;i++)
{
int randPosX = chunkX + random.nextInt(16);
int randPosY = random.nextInt(60);
int randPosZ = chunkZ + random.nextInt(16);
(new WorldGenMinable(new ItemStack(ObsidianIngots.OreBlock, 1, 1).itemID, 6)).generate(world, random, randPosX, randPosY, randPosZ);
}
}
}
}

View file

@ -18,6 +18,7 @@ import net.minecraft.src.Packet;
import net.minecraft.src.Packet250CustomPayload;
import net.minecraft.src.TileEntity;
import net.minecraft.src.World;
import net.uberkat.obsidian.hawk.common.TileEntityWasher;
import cpw.mods.fml.client.FMLClientHandler;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.network.IPacketHandler;
@ -384,6 +385,84 @@ public class PacketHandler implements IPacketHandler
PacketDispatcher.sendPacketToAllAround(sender.xCoord, sender.yCoord, sender.zCoord, distance, sender.worldObj.provider.dimensionId, packet);
}
/**
* Send a damagable machine update packet from server to client. This will send the data int '4,' as well as
* the machine's x, y, and z coordinates, along with it's facing, active state, operating ticks, energy stored, max energy,
* HP, and water units.
* @param sender - tile entity who is sending the packet
*/
public static void sendWasherPacket(TileEntityWasher sender)
{
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(bytes);
try {
output.writeInt(EnumPacketType.TILE_ENTITY.id);
output.writeInt(sender.xCoord);
output.writeInt(sender.yCoord);
output.writeInt(sender.zCoord);
output.writeInt(sender.facing);
output.writeByte(sender.isActive ? 1 : 0);
output.writeInt(sender.operatingTicks);
output.writeInt(sender.energyStored);
output.writeInt(sender.currentMaxEnergy);
output.writeInt(sender.currentTicksRequired);
output.writeFloat(sender.waterUnits);
} catch (IOException e)
{
System.err.println("[ObsidianIngots] Error while writing tile entity packet.");
e.printStackTrace();
}
Packet250CustomPayload packet = new Packet250CustomPayload();
packet.channel = "ObsidianIngots";
packet.data = bytes.toByteArray();
packet.length = packet.data.length;
if(FMLCommonHandler.instance().getMinecraftServerInstance() != null)
{
FMLCommonHandler.instance().getMinecraftServerInstance().getConfigurationManager().sendPacketToAllPlayers(packet);
}
}
/**
* Send a damagable machine update packet from server to client with a defined range. This will send the data int '4,' as well as
* the machine's x, y, and z coordinates, along with it's facing, active state, operating ticks, energy stored, max energy,
* HP, and water units.
* @param sender - tile entity who is sending the packet
* @param distance - radius to send packet in
*/
public static void sendWasherPacketWithRange(TileEntityWasher sender, double distance)
{
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(bytes);
try {
output.writeInt(EnumPacketType.TILE_ENTITY.id);
output.writeInt(sender.xCoord);
output.writeInt(sender.yCoord);
output.writeInt(sender.zCoord);
output.writeInt(sender.facing);
output.writeByte(sender.isActive ? 1 : 0);
output.writeInt(sender.operatingTicks);
output.writeInt(sender.energyStored);
output.writeInt(sender.currentMaxEnergy);
output.writeInt(sender.currentTicksRequired);
output.writeFloat(sender.waterUnits);
} catch (IOException e)
{
System.err.println("[ObsidianIngots] Error while writing tile entity packet.");
e.printStackTrace();
}
Packet250CustomPayload packet = new Packet250CustomPayload();
packet.channel = "ObsidianIngots";
packet.data = bytes.toByteArray();
packet.length = packet.data.length;
PacketDispatcher.sendPacketToAllAround(sender.xCoord, sender.yCoord, sender.zCoord, distance, sender.worldObj.provider.dimensionId, packet);
}
/**
* Sends the server the defined packet data int.
* @param type - packet type

View file

@ -2,6 +2,7 @@ package net.uberkat.obsidian.common;
import java.util.*;
import net.minecraft.src.*;
import net.uberkat.obsidian.hawk.common.TileEntityWasher;
/**
* Class used to handle machine recipes. This is used for both adding recipes and checking outputs.

View file

@ -349,60 +349,14 @@ public abstract class TileEntityAdvancedElectricMachine extends TileEntityBasicM
{
super.readFromNBT(nbtTags);
if(PowerFramework.currentFramework != null)
{
PowerFramework.currentFramework.loadPowerProvider(this, nbtTags);
}
NBTTagList tagList = nbtTags.getTagList("Items");
inventory = new ItemStack[getSizeInventory()];
for (int slots = 0; slots < tagList.tagCount(); ++slots)
{
NBTTagCompound tagCompound = (NBTTagCompound)tagList.tagAt(slots);
byte slotID = tagCompound.getByte("Slot");
if (slotID >= 0 && slotID < inventory.length)
{
inventory[slotID] = ItemStack.loadItemStackFromNBT(tagCompound);
}
}
operatingTicks = nbtTags.getInteger("operatingTicks");
energyStored = nbtTags.getInteger("energyStored");
secondaryEnergyStored = nbtTags.getInteger("secondaryEnergyStored");
prevActive = isActive = nbtTags.getBoolean("isActive");
facing = nbtTags.getInteger("facing");
}
public void writeToNBT(NBTTagCompound nbtTags)
{
super.writeToNBT(nbtTags);
if(PowerFramework.currentFramework != null)
{
PowerFramework.currentFramework.savePowerProvider(this, nbtTags);
}
nbtTags.setInteger("operatingTicks", operatingTicks);
nbtTags.setInteger("energyStored", energyStored);
nbtTags.setInteger("secondaryEnergyStored", secondaryEnergyStored);
nbtTags.setBoolean("isActive", isActive);
nbtTags.setInteger("facing", facing);
NBTTagList tagList = new NBTTagList();
for (int slots = 0; slots < inventory.length; ++slots)
{
if (inventory[slots] != null)
{
NBTTagCompound tagCompound = new NBTTagCompound();
tagCompound.setByte("Slot", (byte)slots);
inventory[slots].writeToNBT(tagCompound);
tagList.appendTag(tagCompound);
}
}
nbtTags.setTag("Items", tagList);
}
/**

View file

@ -108,6 +108,32 @@ public abstract class TileEntityBasicMachine extends TileEntityElectricBlock imp
}
}
public void readFromNBT(NBTTagCompound nbtTags)
{
super.readFromNBT(nbtTags);
if(PowerFramework.currentFramework != null)
{
PowerFramework.currentFramework.loadPowerProvider(this, nbtTags);
}
operatingTicks = nbtTags.getInteger("operatingTicks");
isActive = nbtTags.getBoolean("isActive");
}
public void writeToNBT(NBTTagCompound nbtTags)
{
super.writeToNBT(nbtTags);
if(PowerFramework.currentFramework != null)
{
PowerFramework.currentFramework.savePowerProvider(this, nbtTags);
}
nbtTags.setInteger("operatingTicks", operatingTicks);
nbtTags.setBoolean("isActive", isActive);
}
public void invalidate()
{
super.invalidate();

View file

@ -1,5 +1,6 @@
package net.uberkat.obsidian.common;
import buildcraft.api.power.PowerFramework;
import obsidian.api.ITileNetwork;
import universalelectricity.prefab.TileEntityDisableable;
import ic2.api.EnergyNet;
@ -157,6 +158,50 @@ public abstract class TileEntityElectricBlock extends TileEntityDisableable impl
}
}
public void readFromNBT(NBTTagCompound nbtTags)
{
super.readFromNBT(nbtTags);
NBTTagList tagList = nbtTags.getTagList("Items");
inventory = new ItemStack[getSizeInventory()];
for (int slots = 0; slots < tagList.tagCount(); ++slots)
{
NBTTagCompound tagCompound = (NBTTagCompound)tagList.tagAt(slots);
byte slotID = tagCompound.getByte("Slot");
if (slotID >= 0 && slotID < inventory.length)
{
inventory[slotID] = ItemStack.loadItemStackFromNBT(tagCompound);
}
}
energyStored = nbtTags.getInteger("energyStored");
facing = nbtTags.getInteger("facing");
}
public void writeToNBT(NBTTagCompound nbtTags)
{
super.writeToNBT(nbtTags);
nbtTags.setInteger("energyStored", energyStored);
nbtTags.setInteger("facing", facing);
NBTTagList tagList = new NBTTagList();
for (int slots = 0; slots < inventory.length; ++slots)
{
if (inventory[slots] != null)
{
NBTTagCompound tagCompound = new NBTTagCompound();
tagCompound.setByte("Slot", (byte)slots);
inventory[slots].writeToNBT(tagCompound);
tagList.appendTag(tagCompound);
}
}
nbtTags.setTag("Items", tagList);
}
public boolean isUseableByPlayer(EntityPlayer entityplayer)
{
return worldObj.getBlockTileEntity(xCoord, yCoord, zCoord) != this ? false : entityplayer.getDistanceSq((double)xCoord + 0.5D, (double)yCoord + 0.5D, (double)zCoord + 0.5D) <= 64.0D;

View file

@ -283,64 +283,6 @@ public abstract class TileEntityElectricMachine extends TileEntityBasicMachine
}
}
public void readFromNBT(NBTTagCompound nbtTags)
{
super.readFromNBT(nbtTags);
if(PowerFramework.currentFramework != null)
{
PowerFramework.currentFramework.loadPowerProvider(this, nbtTags);
}
NBTTagList tagList = nbtTags.getTagList("Items");
inventory = new ItemStack[getSizeInventory()];
for (int slots = 0; slots < tagList.tagCount(); ++slots)
{
NBTTagCompound tagCompound = (NBTTagCompound)tagList.tagAt(slots);
byte slotID = tagCompound.getByte("Slot");
if (slotID >= 0 && slotID < inventory.length)
{
inventory[slotID] = ItemStack.loadItemStackFromNBT(tagCompound);
}
}
operatingTicks = nbtTags.getInteger("operatingTicks");
energyStored = nbtTags.getInteger("energyStored");
isActive = nbtTags.getBoolean("isActive");
facing = nbtTags.getInteger("facing");
}
public void writeToNBT(NBTTagCompound nbtTags)
{
super.writeToNBT(nbtTags);
if(PowerFramework.currentFramework != null)
{
PowerFramework.currentFramework.savePowerProvider(this, nbtTags);
}
nbtTags.setInteger("operatingTicks", operatingTicks);
nbtTags.setInteger("energyStored", energyStored);
nbtTags.setBoolean("isActive", isActive);
nbtTags.setInteger("facing", facing);
NBTTagList tagList = new NBTTagList();
for (int slots = 0; slots < inventory.length; ++slots)
{
if (inventory[slots] != null)
{
NBTTagCompound tagCompound = new NBTTagCompound();
tagCompound.setByte("Slot", (byte)slots);
inventory[slots].writeToNBT(tagCompound);
tagList.appendTag(tagCompound);
}
}
nbtTags.setTag("Items", tagList);
}
public String[] getMethodNames()
{
return new String[] {"getStored", "getProgress", "isActive", "facing", "canOperate", "getMaxEnergy", "getEnergyNeeded"};

View file

@ -27,7 +27,7 @@ public class TileEntityPlatinumCompressor extends TileEntityAdvancedElectricMach
public int getFuelTicks(ItemStack itemstack)
{
if (itemstack.itemID == ObsidianIngots.PlatinumIngot.shiftedIndex) return 200;
if (itemstack.itemID == new ItemStack(ObsidianIngots.Ingot, 1, 1).itemID) return 200;
return 0;
}
}

View file

@ -0,0 +1,32 @@
package net.uberkat.obsidian.hawk.common;
import net.minecraft.src.Container;
import net.minecraft.src.EntityPlayer;
import net.minecraft.src.InventoryPlayer;
import net.minecraft.src.Slot;
public class ContainerTeleporter extends Container
{
public ContainerTeleporter(InventoryPlayer playerInv)
{
for (int counter = 0; counter < 3; ++counter)
{
for (int var4 = 0; var4 < 9; ++var4)
{
this.addSlotToContainer(new Slot(playerInv, var4 + counter * 9 + 9, 8 + var4 * 18, 84 + counter * 18));
}
}
for (int counter = 0; counter < 9; ++counter)
{
this.addSlotToContainer(new Slot(playerInv, counter, 8 + counter * 18, 142));
}
}
@Override
public boolean canInteractWith(EntityPlayer player)
{
return true;
}
}

View file

@ -0,0 +1,122 @@
package net.uberkat.obsidian.hawk.common;
import hawk.api.ProcessingRecipes;
import net.minecraft.src.Container;
import net.minecraft.src.EntityPlayer;
import net.minecraft.src.InventoryPlayer;
import net.minecraft.src.ItemStack;
import net.minecraft.src.Slot;
import net.minecraft.src.SlotFurnace;
import net.minecraft.src.TileEntity;
import universalelectricity.prefab.SlotElectricItem;
import universalelectricity.implement.IItemElectric;
public class ContainerWasher extends Container
{
private TileEntityWasher tileEntity;
public ContainerWasher(InventoryPlayer playerInventory, TileEntityWasher tentity)
{
tileEntity = tentity;
addSlotToContainer(new SlotElectricItem(tileEntity, 0, 36, 47));//Electric item
addSlotToContainer(new Slot(tileEntity, 1, 58, 52));//Water input
addSlotToContainer(new Slot(tileEntity, 2, 36, 15));//Actual input
addSlotToContainer(new SlotFurnace(playerInventory.player, tileEntity, 3, 107, 32));
addSlotToContainer(new SlotFurnace(playerInventory.player, tileEntity, 4, 125, 32));
addSlotToContainer(new SlotFurnace(playerInventory.player, tileEntity, 5, 143, 32));
for (int counter = 0; counter < 3; ++counter)
{
for (int var4 = 0; var4 < 9; ++var4)
{
addSlotToContainer(new Slot(playerInventory, var4 + counter * 9 + 9, 8 + var4 * 18, 84 + counter * 18));
}
}
for (int counter = 0; counter < 9; ++counter)
{
addSlotToContainer(new Slot(playerInventory, counter, 8 + counter * 18, 142));
}
}
@Override
public boolean canInteractWith(EntityPlayer var1)
{
return true;
}
@Override
public ItemStack func_82846_b(EntityPlayer player, int par1)
{
ItemStack var2 = null;
Slot var3 = (Slot)inventorySlots.get(par1);
if (var3 != null && var3.getHasStack())
{
ItemStack var4 = var3.getStack();
var2 = var4.copy();
if (par1 == 2)
{
if (!mergeItemStack(var4, 3, 39, true))
{
return null;
}
var3.onSlotChange(var4, var2);
}
else if (par1 != 1 && par1 != 0)
{
if (var4.getItem() instanceof IItemElectric)
{
if (!mergeItemStack(var4, 0, 1, false))
{
return null;
}
}
else if (ProcessingRecipes.getResult(var4, ProcessingRecipes.EnumProcessing.WASHING) != null)
{
if (!mergeItemStack(var4, 1, 2, false))
{
return null;
}
}
else if (par1 >= 3 && par1 < 30)
{
if (!mergeItemStack(var4, 30, 39, false))
{
return null;
}
}
else if (par1 >= 30 && par1 < 39 && !mergeItemStack(var4, 3, 30, false))
{
return null;
}
}
else if (!mergeItemStack(var4, 3, 39, false))
{
return null;
}
if (var4.stackSize == 0)
{
var3.putStack((ItemStack)null);
}
else
{
var3.onSlotChanged();
}
if (var4.stackSize == var2.stackSize)
{
return null;
}
var3.func_82870_a(player, var4);
}
return var2;
}
}

View file

@ -0,0 +1,134 @@
package net.uberkat.obsidian.hawk.common;
import java.io.File;
import java.util.List;
import java.util.Random;
import net.minecraft.src.Achievement;
import net.minecraft.src.AchievementList;
import net.minecraft.src.ChunkProviderEnd;
import net.minecraft.src.ChunkProviderGenerate;
import net.minecraft.src.ChunkProviderHell;
import net.minecraft.src.EntityPlayer;
import net.minecraft.src.EntityVillager;
import net.minecraft.src.IChunkProvider;
import net.minecraft.src.IInventory;
import net.minecraft.src.Item;
import net.minecraft.src.ItemStack;
import net.minecraft.src.MerchantRecipe;
import net.minecraft.src.MerchantRecipeList;
import net.minecraft.src.NBTTagCompound;
import net.minecraft.src.World;
import net.minecraftforge.client.event.sound.SoundLoadEvent;
import net.minecraftforge.common.AchievementPage;
import net.minecraftforge.common.Configuration;
import net.minecraftforge.common.ForgeChunkManager.LoadingCallback;
import net.minecraftforge.common.ForgeChunkManager.Ticket;
import net.minecraftforge.event.ForgeSubscribe;
import net.uberkat.obsidian.common.ObsidianIngots;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.ICraftingHandler;
import cpw.mods.fml.common.IWorldGenerator;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.registry.VillagerRegistry.IVillageTradeHandler;
/**
*
*
*
* @author Elusivehawk
*/
public class HawkCore implements LoadingCallback, ICraftingHandler
{
private static int chunkLimit;
public static int partsID;
public static int endiumPlateID;
public static int rivetsID;
public static int rivetGunID;
public static int ingotsID;
public static int ACHprospector;
public static int ACHtimeToCrush;
public static int ACHminerkiin;
public static int ACHwash;
public static int washerTicks;
public static int maxChunksLoaded;
public static boolean enableUpdateChecking;
public static boolean enableAutoDL;
public static boolean enableChunkloader;
public static Configuration HMConfig = new Configuration(new File(Loader.instance().getConfigDir(), "HawksMachinery/HMConfig.cfg"));
public static void loadConfig()
{
HMConfig.load();
//NOTE ID #3964 saved for the Endium Chunkloader.
//endiumTeleporterID = HMConfig.getBlock("Endium Teleporter", 3965).getInt(3965);
enableUpdateChecking = HMConfig.get(Configuration.CATEGORY_GENERAL, "Enable Update Checking", true).getBoolean(true);
enableAutoDL = HMConfig.get(Configuration.CATEGORY_GENERAL, "Enable Auto DL", true).getBoolean(true);
enableChunkloader = HMConfig.get(Configuration.CATEGORY_GENERAL, "Enable Chunkloader Block", true).getBoolean(true);
if (enableChunkloader)
{
maxChunksLoaded = HMConfig.get("Max Chunks Loaded", Configuration.CATEGORY_GENERAL, 25).getInt(25);
}
partsID = HMConfig.get(Configuration.CATEGORY_ITEM, "Parts", 24152).getInt(24152);
endiumPlateID = HMConfig.get(Configuration.CATEGORY_ITEM, "Endium Plate", 24154).getInt(24154);
rivetsID = HMConfig.get(Configuration.CATEGORY_ITEM, "Rivets", 24155).getInt(24155);
rivetGunID = HMConfig.get(Configuration.CATEGORY_ITEM, "Rivet Gun", 24156).getInt(24156);
ingotsID = HMConfig.get(Configuration.CATEGORY_ITEM, "Ingots", 24157).getInt(24157);
ACHprospector = HMConfig.get(Configuration.CATEGORY_GENERAL, "ACH Prospector", 1500).getInt(1500);
ACHtimeToCrush = HMConfig.get(Configuration.CATEGORY_GENERAL, "ACH Time To Crush", 1501).getInt(1501);
ACHminerkiin = HMConfig.get(Configuration.CATEGORY_GENERAL, "ACH Minerkiin", 1503).getInt(1503);
ACHwash = HMConfig.get(Configuration.CATEGORY_GENERAL, "ACH Wash", 1504).getInt(1504);
if (FMLCommonHandler.instance().getSide().isServer())
{
HMConfig.addCustomCategoryComment("advanced_settings", "Advanced server OP settings, don't be a moron with them.");
washerTicks = HMConfig.get("advanced_settings", "Washer Ticks", 100).getInt(100);
}
HMConfig.save();
}
@Override
public void ticketsLoaded(List<Ticket> tickets, World world)
{
for (Ticket ticket : tickets)
{
int xPos = ticket.getModData().getInteger("xCoord");
int yPos = ticket.getModData().getInteger("yCoord");
int zPos = ticket.getModData().getInteger("zCoord");
if (world.getBlockTileEntity(xPos, yPos, zPos) != null)
{
if (world.getBlockTileEntity(xPos, yPos, zPos) instanceof TileEntityEndiumChunkloader)
{
((TileEntityEndiumChunkloader)world.getBlockTileEntity(xPos, yPos, zPos)).forceChunkLoading(ticket);
}
}
}
}
public void onCrafting(EntityPlayer player, ItemStack item, IInventory craftMatrix)
{
if (item.equals(new ItemStack(ObsidianIngots.MachineBlock, 1, 5)))
{
item.setTagCompound(new NBTTagCompound());
item.stackTagCompound.setInteger("MachineHP", 0);
}
}
@Override
public void onSmelting(EntityPlayer player, ItemStack item) {}
}

View file

@ -0,0 +1,70 @@
package net.uberkat.obsidian.hawk.common;
import hawk.api.ProcessingRecipes;
import hawk.api.ProcessingRecipes.EnumProcessing;
import java.io.File;
import java.util.List;
import obsidian.api.ItemRetriever;
import com.google.common.collect.ObjectArrays;
import universalelectricity.core.UniversalElectricity;
import universalelectricity.prefab.ItemElectric;
import universalelectricity.prefab.network.ConnectionHandler;
import universalelectricity.prefab.network.PacketManager;
import universalelectricity.prefab.ore.OreGenBase;
import universalelectricity.prefab.ore.OreGenerator;
import net.minecraft.src.Achievement;
import net.minecraft.src.AchievementList;
import net.minecraft.src.Block;
import net.minecraft.src.CraftingManager;
import net.minecraft.src.CreativeTabs;
import net.minecraft.src.Enchantment;
import net.minecraft.src.EntityPlayer;
import net.minecraft.src.EnumRarity;
import net.minecraft.src.EnumToolMaterial;
import net.minecraft.src.FurnaceRecipes;
import net.minecraft.src.IInventory;
import net.minecraft.src.Item;
import net.minecraft.src.ItemStack;
import net.minecraft.src.Material;
import net.minecraft.src.NBTTagCompound;
import net.minecraft.src.StepSound;
import net.minecraft.src.World;
import net.minecraftforge.common.AchievementPage;
import net.minecraftforge.common.Configuration;
import net.minecraftforge.common.DungeonHooks;
import net.minecraftforge.common.EnumHelper;
import net.minecraftforge.common.ForgeChunkManager;
import net.minecraftforge.common.ForgeChunkManager.Ticket;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.oredict.OreDictionary;
import net.minecraftforge.oredict.ShapedOreRecipe;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.ICraftingHandler;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.Metadata;
import cpw.mods.fml.common.ModMetadata;
import cpw.mods.fml.common.Side;
import cpw.mods.fml.common.Mod.Init;
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.Mod.PostInit;
import cpw.mods.fml.common.Mod.PreInit;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.asm.SideOnly;
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.network.NetworkMod;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.VillagerRegistry;
public class HawksMachinery
{
public static ProcessingRecipes PROCESS_RECIPES;
public static EnumProcessing WASH = EnumProcessing.WASHING;
public static HawkCore CORE = new HawkCore();
}

View file

@ -0,0 +1,52 @@
package net.uberkat.obsidian.hawk.common;
import hawk.api.ProcessingRecipes.EnumProcessing;
import java.util.Random;
import com.google.common.io.ByteArrayDataInput;
import universalelectricity.electricity.ElectricInfo;
import universalelectricity.implement.IRotatable;
import universalelectricity.prefab.TileEntityElectricityReceiver;
import universalelectricity.prefab.network.IPacketReceiver;
import universalelectricity.prefab.network.PacketManager;
import universalelectricity.core.Vector3;
import net.minecraft.src.Entity;
import net.minecraft.src.EntityPlayer;
import net.minecraft.src.ItemStack;
import net.minecraft.src.NBTTagCompound;
import net.minecraft.src.NBTTagList;
import net.minecraft.src.INetworkManager;
import net.minecraft.src.Packet;
import net.minecraft.src.Packet250CustomPayload;
import net.minecraft.src.TileEntity;
import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.common.ISidedInventory;
import net.uberkat.obsidian.common.TileEntityBasicMachine;
/**
*
* Extend this if you'd like to make a machine slightly faster.
*
* @author Elusivehawk
*/
public abstract class TileEntityDamagableMachine extends TileEntityBasicMachine
{
public EnumProcessing machineEnum;
protected boolean isProcessor;
public TileEntityDamagableMachine(String soundPath, String name, String path, int perTick, int ticksRequired, int maxEnergy)
{
super(soundPath, name, path, perTick, ticksRequired, maxEnergy);
}
protected void explodeMachine(float strength)
{
worldObj.createExplosion((Entity)null, xCoord, yCoord, zCoord, strength, true);
}
public void handlePacketData(INetworkManager network, Packet250CustomPayload packet, EntityPlayer player, ByteArrayDataInput dataStream)
{
}
}

View file

@ -0,0 +1,50 @@
package net.uberkat.obsidian.hawk.common;
import net.minecraft.src.ChunkCoordIntPair;
import net.minecraft.src.EntityPlayer;
import net.minecraft.src.TileEntity;
import net.minecraftforge.common.ForgeChunkManager;
import net.minecraftforge.common.ForgeChunkManager.Ticket;
import net.minecraftforge.common.ForgeChunkManager.Type;
import net.uberkat.obsidian.common.ObsidianIngots;
public class TileEntityEndiumChunkloader extends TileEntity
{
public Ticket heldChunk;
public void invalidate()
{
forceChunkLoading(null);
}
public void validate()
{
forceChunkLoading(null);
}
public void forceChunkLoading(Ticket ticket)
{
if (ticket != null)
{
heldChunk = ticket;
ForgeChunkManager.forceChunk(heldChunk, new ChunkCoordIntPair(xCoord >> 4, zCoord >> 4));
}
else
{
if (heldChunk == null)
{
Ticket newTicket = ForgeChunkManager.requestTicket(ObsidianIngots.instance, worldObj, Type.NORMAL);
newTicket.getModData().setInteger("xCoord", xCoord);
newTicket.getModData().setInteger("yCoord", yCoord);
newTicket.getModData().setInteger("zCoord", zCoord);
newTicket.setChunkListDepth(HawksMachinery.CORE.maxChunksLoaded);
heldChunk = newTicket;
}
else
{
ForgeChunkManager.releaseTicket(heldChunk);
heldChunk = null;
}
}
}
}

View file

@ -0,0 +1,72 @@
package net.uberkat.obsidian.hawk.common;
import hawk.api.EndiumTeleporterCoords;
import hawk.api.TeleportationHelper;
import java.util.List;
import dan200.computer.api.IComputerAccess;
import net.minecraft.src.Entity;
import net.minecraftforge.common.ForgeDirection;
public class TileEntityTeleporter extends TileEntityDamagableMachine
{
public EndiumTeleporterCoords coords;
public TileEntityTeleporter()
{
super("hawk/Teleporter.ogg", "Teleporter", "/gui/hawk/Teleporter.png", 200, 0, 100000);
}
public boolean isReadyToTeleport()
{
return energyStored == MAX_ENERGY && worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord) && coords != null;
}
public void teleportEntity(Entity entity)
{
TeleportationHelper.instance().teleportEntity(entity, coords);
energyStored = 0;
}
public boolean canReceiveFromSide(ForgeDirection side)
{
return side.ordinal() == 0;
}
public boolean canOperate()
{
return false;
}
public void operate()
{
}
public List getRecipes()
{
return null;
}
public String[] getMethodNames()
{
return null;
}
public Object[] callMethod(IComputerAccess computer, int method, Object[] arguments) throws Exception
{
return null;
}
public void sendPacket()
{
//Nothing to see here
}
public void sendPacketWithRange()
{
//Nothing to see here either.
}
}

View file

@ -0,0 +1,266 @@
package net.uberkat.obsidian.hawk.common;
import hawk.api.ProcessingRecipes;
import hawk.api.ProcessingRecipes.EnumProcessing;
import java.util.List;
import java.util.Random;
import java.util.Vector;
import obsidian.api.IEnergizedItem;
import buildcraft.api.core.Orientations;
import com.google.common.io.ByteArrayDataInput;
import cpw.mods.fml.common.FMLCommonHandler;
import dan200.computer.api.IComputerAccess;
import net.minecraft.src.EntityItem;
import net.minecraft.src.EntityPlayer;
import net.minecraft.src.IInventory;
import net.minecraft.src.Block;
import net.minecraft.src.Item;
import net.minecraft.src.ItemStack;
import net.minecraft.src.NBTTagCompound;
import net.minecraft.src.NBTTagList;
import net.minecraft.src.INetworkManager;
import net.minecraft.src.Packet;
import net.minecraft.src.Packet250CustomPayload;
import net.minecraft.src.TileEntity;
import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.common.ISidedInventory;
import net.uberkat.obsidian.common.PacketHandler;
import net.uberkat.obsidian.common.TileEntityBasicMachine;
import universalelectricity.electricity.ElectricInfo;
import universalelectricity.prefab.TileEntityElectricityReceiver;
import universalelectricity.implement.IItemElectric;
import universalelectricity.implement.IRedstoneReceptor;
import universalelectricity.implement.IRotatable;
import universalelectricity.prefab.network.IPacketReceiver;
import universalelectricity.prefab.network.PacketManager;
public class TileEntityWasher extends TileEntityDamagableMachine
{
public static Vector recipes;
public float waterUnits = 0;
public float WATER_LIMIT = 25.0F;
public TileEntityWasher()
{
super("hawk/Washer.ogg", "Washer", "/gui/hawk/GuiWasher.png", 10, 200, 1200);
inventory = new ItemStack[6];
machineEnum = EnumProcessing.WASHING;
isProcessor = true;
}
public void onUpdate()
{
super.onUpdate();
if (inventory[0] != null)
{
if(energyStored < currentMaxEnergy)
{
if(inventory[0].getItem() instanceof IEnergizedItem)
{
int received = 0;
int energyNeeded = currentMaxEnergy - energyStored;
IEnergizedItem item = (IEnergizedItem)inventory[0].getItem();
if(item.getRate() <= energyNeeded)
{
received = item.discharge(inventory[0], item.getRate());
}
else if(item.getRate() > energyNeeded)
{
received = item.discharge(inventory[0], energyNeeded);
}
setEnergy(energyStored + received);
}
}
}
if (inventory[1] != null)
{
if (inventory[1].getItem() == Item.bucketWater && waterUnits + 1.0F <= WATER_LIMIT)
{
waterUnits += 1.0;
inventory[1] = new ItemStack(Item.bucketEmpty, 1);
}
}
if (canOperate())
{
if (inventory[2] != null && operatingTicks == 0)
{
operatingTicks = TICKS_REQUIRED;
}
if (canOperate() && operatingTicks > 0)
{
--operatingTicks;
waterUnits -= 0.01F;
if (operatingTicks == 1)
{
operate();
operatingTicks = 0;
}
energyStored = energyStored - ENERGY_PER_TICK;
}
else
{
operatingTicks = 0;
}
}
if (waterUnits > WATER_LIMIT)
{
waterUnits = WATER_LIMIT;
}
if (worldObj.getBlockId(xCoord, yCoord + 1, zCoord) == Block.waterStill.blockID && waterUnits + 1.0F <= WATER_LIMIT)
{
waterUnits += 1.0F;
worldObj.setBlockWithNotify(xCoord, yCoord + 1, zCoord, 0);
}
if (!canOperate() && operatingTicks != 0)
{
operatingTicks = 0;
}
}
public boolean canOperate()
{
if (inventory[2] == null)
{
return false;
}
else
{
if (energyStored >= ENERGY_PER_TICK * 2 && waterUnits >= 1.0F && !isDisabled())
{
ItemStack var1 = ProcessingRecipes.getResult(inventory[2], machineEnum);
if (var1 == null) return false;
if (inventory[3] == null) return true;
if (!inventory[3].isItemEqual(var1)) return false;
int result = inventory[3].stackSize + var1.stackSize;
return (result <= getInventoryStackLimit() && result <= var1.getMaxStackSize());
}
else
{
return false;
}
}
}
public void operate()
{
if (canOperate())
{
ItemStack newItem = ProcessingRecipes.getResult(inventory[2], machineEnum);
if (inventory[3] == null)
{
inventory[3] = newItem.copy();
}
else if (inventory[3].isItemEqual(newItem))
{
inventory[3].stackSize += newItem.stackSize;
}
inventory[2].stackSize -= ProcessingRecipes.getQuantity(inventory[2], machineEnum);
if (inventory[2].stackSize <= 0)
{
inventory[2] = null;
}
}
}
public void handlePacketData(INetworkManager network, Packet250CustomPayload packet, EntityPlayer player, ByteArrayDataInput dataStream)
{
try {
facing = dataStream.readInt();
isActive = dataStream.readByte() != 0;
operatingTicks = dataStream.readInt();
energyStored = dataStream.readInt();
currentMaxEnergy = dataStream.readInt();
currentTicksRequired = dataStream.readInt();
waterUnits = dataStream.readFloat();
worldObj.markBlockAsNeedsUpdate(xCoord, yCoord, zCoord);
} catch (Exception e)
{
System.out.println("[ObsidianIngots] Error while handling tile entity packet.");
e.printStackTrace();
}
}
public int getWashingStatus(int par1)
{
return operatingTicks * par1 / 200;
}
public void readFromNBT(NBTTagCompound NBTTag)
{
super.readFromNBT(NBTTag);
waterUnits = NBTTag.getFloat("waterUnits");
}
public void writeToNBT(NBTTagCompound NBTTag)
{
super.writeToNBT(NBTTag);
NBTTag.setFloat("waterUnits", waterUnits);
}
public void sendPacket()
{
PacketHandler.sendWasherPacket(this);
}
public void sendPacketWithRange()
{
PacketHandler.sendWasherPacketWithRange(this, 50);
}
public String[] getMethodNames()
{
return new String[] {"getStored", "getProgress", "isActive", "facing", "canOperate", "getMaxEnergy", "getEnergyNeeded", "getWater", "getWaterNeeded"};
}
public Object[] callMethod(IComputerAccess computer, int method, Object[] arguments) throws Exception
{
switch(method)
{
case 0:
return new Object[] {energyStored};
case 1:
return new Object[] {operatingTicks};
case 2:
return new Object[] {isActive};
case 3:
return new Object[] {facing};
case 4:
return new Object[] {canOperate()};
case 5:
return new Object[] {currentMaxEnergy};
case 6:
return new Object[] {(currentMaxEnergy-energyStored)};
case 7:
return new Object[] {waterUnits};
case 8:
return new Object[] {(WATER_LIMIT - waterUnits)};
default:
System.err.println("[ObsidianIngots] Attempted to call unknown method with computer ID " + computer.getID());
return new Object[] {"Unknown command."};
}
}
public List getRecipes()
{
return recipes;
}
}

View file

@ -35,6 +35,10 @@ import net.uberkat.obsidian.common.TileEntityGenerator;
import net.uberkat.obsidian.common.TileEntityPlatinumCompressor;
import net.uberkat.obsidian.common.TileEntityPowerUnit;
import net.uberkat.obsidian.common.TileEntityTheoreticalElementizer;
import net.uberkat.obsidian.hawk.client.GuiTeleporter;
import net.uberkat.obsidian.hawk.client.GuiWasher;
import net.uberkat.obsidian.hawk.common.TileEntityTeleporter;
import net.uberkat.obsidian.hawk.common.TileEntityWasher;
/**
* Client proxy for Obsidian Ingots mod.
@ -61,6 +65,10 @@ public class ClientProxy extends CommonProxy
MinecraftForgeClient.preloadTexture("/textures/ElementizerBack.png");
MinecraftForgeClient.preloadTexture("/textures/ElementizerSide.png");
//Hawk's Machines
MinecraftForgeClient.preloadTexture("/textures/hawk/blocks.png");
MinecraftForgeClient.preloadTexture("/textures/hawk/items.png");
//Register animated TextureFX for machines
try {
TextureFXManager.instance().addAnimation(new TextureAnimatedFX("/textures/CompressorFront.png", ObsidianIngots.ANIMATED_TEXTURE_INDEX));
@ -122,6 +130,12 @@ public class ClientProxy extends CommonProxy
case 9:
TileEntityGenerator tileentity6 = (TileEntityGenerator)world.getBlockTileEntity(x, y, z);
return new GuiGenerator(player.inventory, tileentity6);
case 10:
TileEntityWasher tileentity7 = (TileEntityWasher)world.getBlockTileEntity(x, y, z);
return new GuiWasher(player.inventory, tileentity7);
case 11:
TileEntityTeleporter tileentity8 = (TileEntityTeleporter)world.getBlockTileEntity(x, y, z);
return new GuiTeleporter(player.inventory, tileentity8);
}
return null;
}

View file

@ -0,0 +1,38 @@
package net.uberkat.obsidian.hawk.client;
import org.lwjgl.opengl.GL11;
import net.minecraft.src.GuiButton;
import net.minecraft.src.GuiContainer;
import net.minecraft.src.InventoryPlayer;
import net.uberkat.obsidian.hawk.common.ContainerTeleporter;
import net.uberkat.obsidian.hawk.common.HawksMachinery;
import net.uberkat.obsidian.hawk.common.TileEntityTeleporter;
public class GuiTeleporter extends GuiContainer
{
public TileEntityTeleporter tileEntity;
private int containerWidth;
private int containerHeight;
public GuiTeleporter(InventoryPlayer player, TileEntityTeleporter tentity)
{
super(new ContainerTeleporter(player));
tileEntity = tentity;
}
public void initGui()
{
controlList.add(new GuiButton(0, containerHeight - 9, containerWidth - 9, 16, 16, null));
}
protected void drawGuiContainerBackgroundLayer(float var1, int var2, int var3)
{
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
mc.renderEngine.bindTexture(mc.renderEngine.getTexture("/gui/GuiEndiumTeleporter.png"));
containerWidth = (width - xSize) / 2;
containerHeight = (height - ySize) / 2;
drawTexturedModalRect(containerWidth, containerHeight, 0, 0, xSize, ySize);
}
}

View file

@ -0,0 +1,60 @@
package net.uberkat.obsidian.hawk.client;
import org.lwjgl.opengl.GL11;
import universalelectricity.electricity.ElectricInfo;
import net.minecraft.src.GuiContainer;
import net.minecraft.src.InventoryPlayer;
import net.minecraft.src.StatCollector;
import net.uberkat.obsidian.hawk.common.ContainerWasher;
import net.uberkat.obsidian.hawk.common.HawksMachinery;
import net.uberkat.obsidian.hawk.common.TileEntityWasher;
/**
*
*
*
* @author Elusivehawk
*/
public class GuiWasher extends GuiContainer
{
private TileEntityWasher tileEntity;
private int containerWidth;
private int containerHeight;
public GuiWasher(InventoryPlayer playerInv, TileEntityWasher tentity)
{
super(new ContainerWasher(playerInv, tentity));
tileEntity = tentity;
}
@Override
protected void drawGuiContainerForegroundLayer(int par1, int par2)
{
fontRenderer.drawString(ElectricInfo.getDisplayShort(tileEntity.getVoltage(), ElectricInfo.ElectricUnit.VOLTAGE), 116, 60, 4210752);
fontRenderer.drawString(ElectricInfo.getDisplayShort(tileEntity.energyStored, ElectricInfo.ElectricUnit.WATT), 116, 70, 4210752);
}
/**
* Draw the background layer for the GuiContainer (everything behind the items)
*/
@Override
protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3)
{
int var4 = mc.renderEngine.getTexture("/gui/GuiWasher.png");
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
mc.renderEngine.bindTexture(var4);
containerWidth = (width - xSize) / 2;
containerHeight = (height - ySize) / 2;
drawTexturedModalRect(containerWidth, containerHeight, 0, 0, xSize, ySize);
if (tileEntity.operatingTicks > 0)
{
int scale = tileEntity.getWashingStatus(tileEntity.TICKS_REQUIRED);
drawTexturedModalRect(containerWidth + 52, containerHeight + 28, 176, 0, 52 - scale, 20);
}
drawTexturedModalRect(containerWidth - 32, containerHeight - 16, 0, 232, 240, 16);
}
}