diff --git a/.gitignore b/.gitignore index 7323db6..c42f1fa 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,5 @@ /.classpath /.project /bin -/libs \ No newline at end of file +/libs +To Do.txt \ No newline at end of file diff --git a/build.prop b/build.prop index 671c100..feea7d3 100644 --- a/build.prop +++ b/build.prop @@ -1,6 +1,6 @@ minecraft_version=1.7.10 forge_version=10.13.4.1566-1.7.10 tfc_version=0.79.27 -mod_version=1.17 +mod_version=1.18 mod_id=TerraFirmaPunkTweaks group_name=com.JAWolfe.TerraFirmaPunkTweaks \ No newline at end of file diff --git a/builds/TerraFirmaPunkTweaks-1.7.10-1.18.jar b/builds/TerraFirmaPunkTweaks-1.7.10-1.18.jar new file mode 100644 index 0000000..423156b Binary files /dev/null and b/builds/TerraFirmaPunkTweaks-1.7.10-1.18.jar differ diff --git a/changelog.txt b/changelog.txt index fc81d10..a949531 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,5 +1,11 @@ Changelog ================================================= +------------------------------------------------- +TFP Tweaks 1.18 +------------------------------------------------- +New Features ++Added Wolframite Ore world generation + ------------------------------------------------- TFP Tweaks 1.17 ------------------------------------------------- diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/TerraFirmaPunkTweaks.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/TerraFirmaPunkTweaks.java index 3dde1b2..37b5888 100644 --- a/src/main/java/com/JAWolfe/terrafirmapunktweaks/TerraFirmaPunkTweaks.java +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/TerraFirmaPunkTweaks.java @@ -55,6 +55,8 @@ public class TerraFirmaPunkTweaks proxy.registerRenderInformation(); + proxy.registerOreGen(); + proxy.registerWAILA(); } diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/BlockTFPLigntningRod.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/BlockTFPLigntningRod.java index d515853..60b7890 100644 --- a/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/BlockTFPLigntningRod.java +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/BlockTFPLigntningRod.java @@ -6,7 +6,6 @@ import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.init.Blocks; import net.minecraft.world.World; import steamcraft.common.blocks.machines.BlockLightningRod; -import steamcraft.common.init.InitBlocks; public class BlockTFPLigntningRod extends BlockLightningRod { diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/BlockWolframite.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/BlockWolframite.java new file mode 100644 index 0000000..5e027f3 --- /dev/null +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/BlockWolframite.java @@ -0,0 +1,142 @@ +package com.JAWolfe.terrafirmapunktweaks.blocks; + +import java.util.ArrayList; +import java.util.Random; + +import com.JAWolfe.terrafirmapunktweaks.items.TFPItems; +import com.JAWolfe.terrafirmapunktweaks.reference.Globals; +import com.JAWolfe.terrafirmapunktweaks.reference.References; +import com.bioxx.tfc.Blocks.Terrain.BlockOre; +import com.bioxx.tfc.Core.TFC_Core; +import com.bioxx.tfc.TileEntities.TEOre; +import com.bioxx.tfc.api.TFCItems; + +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.stats.StatList; +import net.minecraft.util.IIcon; +import net.minecraft.world.Explosion; +import net.minecraft.world.World; +import net.minecraftforge.oredict.OreDictionary; + +public class BlockWolframite extends BlockOre +{ + public String[] blockNames = Globals.ORE_METAL; + + public BlockWolframite(Material mat) + { + super(mat); + icons = new IIcon[blockNames.length]; + } + + @Override + public int damageDropped(int dmg) + { + return dmg; + } + + @Override + public int quantityDropped(int meta, int fortune, Random random) + { + return 1; + } + + @Override + public void registerBlockIcons(IIconRegister iconRegisterer) + { + for(int i = 0; i < blockNames.length; i++) + icons[i] = iconRegisterer.registerIcon(References.ModID + ":" + "ores/"+ blockNames[i] + " Ore"); + } + + @Override + public boolean removedByPlayer(World world, EntityPlayer player, int x, int y, int z) + { + if(!world.isRemote) + { + boolean dropOres = false; + boolean hasHammer = false; + int meta = world.getBlockMetadata(x, y, z); + ItemStack itemstack = null; + if(player != null) + { + TFC_Core.addPlayerExhaustion(player, 0.001f); + player.addStat(StatList.mineBlockStatArray[getIdFromBlock(this)], 1); + dropOres = player.canHarvestBlock(this); + ItemStack heldItem = player.getCurrentEquippedItem(); + if (heldItem != null) + { + int[] itemIDs = OreDictionary.getOreIDs(heldItem); + for (int id : itemIDs) + { + String name = OreDictionary.getOreName(id); + if (name.startsWith("itemHammer")) + { + hasHammer = true; + break; + } + } + } + } + + if (player == null || dropOres) + { + TEOre te = (TEOre) world.getTileEntity(x, y, z); + int ore = getOreGrade(te, meta); + itemstack = new ItemStack(TFPItems.oreChunk, 1, damageDropped(ore)); + } + else if (hasHammer) + itemstack = new ItemStack(TFCItems.smallOreChunk, 1, meta); + + if (itemstack != null) + dropBlockAsItem(world, x, y, z, itemstack); + } + return world.setBlockToAir(x, y, z); + } + + @Override + public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) + { + ArrayList ret = new ArrayList(); + TEOre te = (TEOre) world.getTileEntity(x, y, z); + int ore = getOreGrade(te, metadata); + + int count = quantityDropped(metadata, fortune, world.rand); + for (int i = 0; i < count; i++) + { + ItemStack itemstack = new ItemStack(TFPItems.oreChunk, 1, damageDropped(ore)); + ret.add(itemstack); + } + return ret; + } + + @Override + public void onBlockExploded(World world, int x, int y, int z, Explosion exp) + { + if (!world.isRemote) + { + TEOre te = (TEOre)world.getTileEntity(x, y, z); + ItemStack itemstack; + int meta = world.getBlockMetadata(x, y, z); + int ore = getOreGrade(te, meta); + itemstack = new ItemStack(TFPItems.oreChunk, 1, ore); + dropBlockAsItem(world, x, y, z, itemstack); + onBlockDestroyedByExplosion(world, x, y, z, exp); + } + } + + @Override + public int getOreGrade(TEOre te, int ore) + { + if(te != null) + { + int grade = te.extraData & 7; + if (grade == 1) + ore = 1; + else if (grade == 2) + ore = 2; + } + return ore; + } +} diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/TFPBlocks.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/TFPBlocks.java index 4dc9175..6d1af89 100644 --- a/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/TFPBlocks.java +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/blocks/TFPBlocks.java @@ -24,6 +24,7 @@ public class TFPBlocks public static Block tfpAltar; public static Block tfpAltarBlock; public static Block tfpLightningRod; + public static Block blockWolframite; public static int brickOvenRenderID; @@ -41,6 +42,9 @@ public class TFPBlocks oliveOil = new BlockOliveOil(TFCFluids.OLIVEOIL).setHardness(100.0F).setLightOpacity(3).setBlockName("OliveOil"); GameRegistry.registerBlock(oliveOil,"OliveOil"); + blockWolframite = new BlockWolframite(Material.rock).setHardness(10F).setResistance(10F).setBlockName("Wolframite"); + GameRegistry.registerBlock(blockWolframite, "OreWolferamite"); + if(Loader.isModLoaded("Steamcraft")) { tweakedboiler = new TweakedBoiler(false).setBlockName(SteamcraftBlocks.boiler.getUnlocalizedName().substring(5)).setHardness(5.0F).setResistance(10.0F); diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/items/ItemTFPOre.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/items/ItemTFPOre.java new file mode 100644 index 0000000..aed8eb7 --- /dev/null +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/items/ItemTFPOre.java @@ -0,0 +1,70 @@ +package com.JAWolfe.terrafirmapunktweaks.items; + +import com.JAWolfe.terrafirmapunktweaks.reference.Globals; +import com.JAWolfe.terrafirmapunktweaks.reference.References; +import com.bioxx.tfc.Items.ItemOre; +import com.bioxx.tfc.api.Metal; +import com.bioxx.tfc.api.TFCOptions; + +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; + +public class ItemTFPOre extends ItemOre +{ + public ItemTFPOre() + { + super(); + metaNames = new String[] {"Wolframite", "Rich Wolframite", "Poor Wolframite"}; + } + + @Override + public void registerIcons(IIconRegister registerer) + { + metaIcons = new IIcon[metaNames.length]; + for(int i = 0; i < metaNames.length; i++) + metaIcons[i] = registerer.registerIcon(References.ModID + ":" + textureFolder + metaNames[i] + " Ore"); + } + + @Override + public Metal getMetalType(ItemStack is) + { + switch(is.getItemDamage()) + { + case 0: case 1: case 2: return Globals.TUNGSTEN; + default: return null; + } + } + + @Override + public short getMetalReturnAmount(ItemStack is) + { + switch (is.getItemDamage()) + { + case 0: return (short) TFCOptions.normalOreUnits; + case 1: return (short) TFCOptions.richOreUnits; + case 2: return (short) TFCOptions.poorOreUnits; + default: return 0; + } + } + + @Override + public boolean isSmeltable(ItemStack is) + { + switch (is.getItemDamage()) + { + case 0: case 1: case 2: return true; + default: return false; + } + } + + @Override + public EnumTier getSmeltTier(ItemStack is) + { + switch (is.getItemDamage()) + { + case 0: case 1: case 2: return EnumTier.TierI; + default: return EnumTier.TierX; + } + } +} diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/items/ItemTFPOreSmall.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/items/ItemTFPOreSmall.java new file mode 100644 index 0000000..0a6737a --- /dev/null +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/items/ItemTFPOreSmall.java @@ -0,0 +1,48 @@ +package com.JAWolfe.terrafirmapunktweaks.items; + +import java.util.List; + +import com.JAWolfe.terrafirmapunktweaks.reference.References; +import com.bioxx.tfc.api.TFCOptions; +import com.bioxx.tfc.api.Enums.EnumSize; +import com.bioxx.tfc.api.Enums.EnumWeight; + +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; + +public class ItemTFPOreSmall extends ItemTFPOre +{ + public ItemTFPOreSmall() + { + super(); + setWeight(EnumWeight.HEAVY); + setSize(EnumSize.TINY); + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + @Override + public void getSubItems(Item item, CreativeTabs tabs, List list) + { + list.add(new ItemStack(this, 1, 0)); + } + + @Override + public void registerIcons(IIconRegister registerer) + { + metaIcons = new IIcon[1]; + metaIcons[0] = registerer.registerIcon(References.ModID + ":" + textureFolder + metaNames[0] + " Small Ore"); + } + + @Override + public short getMetalReturnAmount(ItemStack is) + { + switch (is.getItemDamage()) + { + case 0: return (short) TFCOptions.smallOreUnits; + default: return 0; + } + } +} diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/items/TFPItems.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/items/TFPItems.java index 2f67e9b..3eea0d0 100644 --- a/src/main/java/com/JAWolfe/terrafirmapunktweaks/items/TFPItems.java +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/items/TFPItems.java @@ -1,5 +1,8 @@ package com.JAWolfe.terrafirmapunktweaks.items; +import com.JAWolfe.terrafirmapunktweaks.reference.Globals; +import com.bioxx.tfc.api.Metal; + import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.item.Item; @@ -24,11 +27,22 @@ public class TFPItems public static Item HopperMold; public static Item TFPNecronomicon; + public static Item tungstenIngot; + public static Item tungstenIngot2x; + public static Item tungstenUnshaped; + + public static Item oreChunk; + public static void initialise() { CustomBucketOliveOil = new TFPCustomBucket().setUnlocalizedName("Wooden Bucket Olive Oil"); GameRegistry.registerItem(CustomBucketOliveOil, CustomBucketOliveOil.getUnlocalizedName()); + Globals.TUNGSTEN = new Metal("Tungsten", tungstenUnshaped, tungstenIngot); + + oreChunk = new ItemTFPOre().setFolder("ore/").setUnlocalizedName("Ore"); + GameRegistry.registerItem(oreChunk, oreChunk.getUnlocalizedName()); + if(Loader.isModLoaded("BuildCraft|Core")) { CustomBucketOil = new TFPCustomBucket().setUnlocalizedName("Wooden Bucket Oil"); diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/proxy/CommonProxy.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/proxy/CommonProxy.java index 4439e8c..bfadfd7 100644 --- a/src/main/java/com/JAWolfe/terrafirmapunktweaks/proxy/CommonProxy.java +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/proxy/CommonProxy.java @@ -1,13 +1,20 @@ package com.JAWolfe.terrafirmapunktweaks.proxy; +import static com.bioxx.tfc.WorldGen.Generators.WorldGenOre.oreList; + import com.JAWolfe.terrafirmapunktweaks.TFPFluids; import com.JAWolfe.terrafirmapunktweaks.items.TFPItems; +import com.JAWolfe.terrafirmapunktweaks.reference.References; import com.JAWolfe.terrafirmapunktweaks.tiles.TEAltar; import com.JAWolfe.terrafirmapunktweaks.tiles.TEBoiler; import com.JAWolfe.terrafirmapunktweaks.tiles.TEBrickOven; import com.JAWolfe.terrafirmapunktweaks.tiles.TEFlashBoiler; +import com.bioxx.tfc.Core.Config.TFC_ConfigFiles; +import com.bioxx.tfc.WorldGen.Generators.OreSpawnData; import com.bioxx.tfc.api.TFCFluids; import com.bioxx.tfc.api.TFCItems; +import com.bioxx.tfc.api.Constant.Global; +import com.google.common.collect.ObjectArrays; import com.sirolf2009.necromancy.item.ItemGeneric; import buildcraft.BuildCraftEnergy; @@ -15,12 +22,15 @@ import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.event.FMLInterModComms; import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.item.ItemStack; +import net.minecraftforge.common.config.Configuration; import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; public class CommonProxy { + private static Configuration oresConfig; + public void registerTileEntities() { GameRegistry.registerTileEntity(TEBrickOven.class, "TEBrickOven"); @@ -68,6 +78,41 @@ public class CommonProxy //Not server-sided } + public void registerOreGen() + { + oreList.put("Wolframite", getOreData("Wolframite", "default", "medium", References.ModID + ":OreWolferamite", 0, 120, new String[] {"granite", "quartzite"}, 5, 128, 80, 60)); + + for (String s : oresConfig.getCategoryNames()) { + // If this is a new entry, otherwise it has already been added by the previous bit of code. + if (!oreList.containsKey(s)) + oreList.put(s, getOreData(s, "default", "small", "Ore", 0, 100, new String[] { "granite", "basalt", "sedimentary" }, 5, 128, 50, 50)); + } + + if (oresConfig.hasChanged()) + oresConfig.save(); + } + + private static OreSpawnData getOreData(String category, String type, String size, String blockName, int meta, int rarity, String[] rocks, int min, int max, int v, int h) + { + oresConfig = TFC_ConfigFiles.getOresConfig(); + String[] ALLOWED_TYPES = new String[] { "default", "veins" }; + String[] ALLOWED_SIZES = new String[] { "small", "medium", "large" }; + String[] ALLOWED_BASE_ROCKS = ObjectArrays.concat(Global.STONE_ALL, new String[] { "igneous intrusive", "igneous extrusive", "sedimentary", "metamorphic" }, String.class); + + return new OreSpawnData( + oresConfig.get(category, "type", type).setValidValues(ALLOWED_TYPES).getString(), + oresConfig.get(category, "size", size).setValidValues(ALLOWED_SIZES).getString(), + oresConfig.get(category, "oreName", blockName).getString(), + oresConfig.get(category, "oreMeta", meta).getInt(), + oresConfig.get(category, "rarity", rarity).getInt(), + oresConfig.get(category, "baseRocks", rocks).setValidValues(ALLOWED_BASE_ROCKS).getStringList(), + oresConfig.get(category, "Minimum Height", min).getInt(), + oresConfig.get(category, "Maximum Height", max).getInt(), + oresConfig.get(category, "Vertical Density", v).getInt(), + oresConfig.get(category, "Horizontal Density", h).getInt() + ); + } + public void registerWAILA() { FMLInterModComms.sendMessage("Waila", "register", "com.JAWolfe.terrafirmapunktweaks.WAILAInfo.callbackRegister"); diff --git a/src/main/java/com/JAWolfe/terrafirmapunktweaks/reference/Globals.java b/src/main/java/com/JAWolfe/terrafirmapunktweaks/reference/Globals.java new file mode 100644 index 0000000..0736694 --- /dev/null +++ b/src/main/java/com/JAWolfe/terrafirmapunktweaks/reference/Globals.java @@ -0,0 +1,10 @@ +package com.JAWolfe.terrafirmapunktweaks.reference; + +import com.bioxx.tfc.api.Metal; + +public class Globals +{ + public static final String[] ORE_METAL = {"Wolframite"}; + + public static Metal TUNGSTEN; +} diff --git a/src/main/resources/assets/terrafirmapunktweaks/lang/en_US.lang b/src/main/resources/assets/terrafirmapunktweaks/lang/en_US.lang index dd36fa1..e9e0817 100644 --- a/src/main/resources/assets/terrafirmapunktweaks/lang/en_US.lang +++ b/src/main/resources/assets/terrafirmapunktweaks/lang/en_US.lang @@ -76,4 +76,16 @@ tile.tfpLightningRod.name=Lightning Rod #= Fluids = #========== fluid.tfpBlood=Blood -fluid.tfpWhaleOil=Whale Oil \ No newline at end of file +fluid.tfpWhaleOil=Whale Oil + +#======= +#= Ore = +#======= +#== Ore Items == +item.Ore.Wolframite.name=Wolframite +item.Ore.Rich Wolframite.name=Rich Wolframite +item.Ore.Poor Wolframite.name=Poor Wolframite +item.Small Ore.Wolframite.name=Small Wolframite + +#== Ore Blocks == +tile.Wolframite.name=Wolframite \ No newline at end of file diff --git a/src/main/resources/assets/terrafirmapunktweaks/textures/blocks/ores/Wolframite Ore.png b/src/main/resources/assets/terrafirmapunktweaks/textures/blocks/ores/Wolframite Ore.png new file mode 100644 index 0000000..6f6f7f1 Binary files /dev/null and b/src/main/resources/assets/terrafirmapunktweaks/textures/blocks/ores/Wolframite Ore.png differ diff --git a/src/main/resources/assets/terrafirmapunktweaks/textures/items/ore/Poor Wolframite Ore.png b/src/main/resources/assets/terrafirmapunktweaks/textures/items/ore/Poor Wolframite Ore.png new file mode 100644 index 0000000..1c4cb2a Binary files /dev/null and b/src/main/resources/assets/terrafirmapunktweaks/textures/items/ore/Poor Wolframite Ore.png differ diff --git a/src/main/resources/assets/terrafirmapunktweaks/textures/items/ore/Rich Wolframite Ore.png b/src/main/resources/assets/terrafirmapunktweaks/textures/items/ore/Rich Wolframite Ore.png new file mode 100644 index 0000000..d497aa4 Binary files /dev/null and b/src/main/resources/assets/terrafirmapunktweaks/textures/items/ore/Rich Wolframite Ore.png differ diff --git a/src/main/resources/assets/terrafirmapunktweaks/textures/items/ore/Wolframite Ore.png b/src/main/resources/assets/terrafirmapunktweaks/textures/items/ore/Wolframite Ore.png new file mode 100644 index 0000000..40e9ce3 Binary files /dev/null and b/src/main/resources/assets/terrafirmapunktweaks/textures/items/ore/Wolframite Ore.png differ