diff options
| author | Giovanni Harting <chefeificationful@gmail.com> | 2016-12-05 20:34:02 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-12-05 20:34:02 +0100 |
| commit | 826ab1cf3a01dadae2a5d5a204fa557f7134eac6 (patch) | |
| tree | b05921acb96d2380e193471a6ce9bce6d39e7ffd /src/main/java/com/sosnitzka | |
| parent | 9554b56931735ddfa0f3222cc5287893fb77f5a0 (diff) | |
[1.2] Material rework (#60)
* Developement tests for nbt data in traits
* Lot of trait changes and better balancing
* Traits reworked a bit, new traits added.
* First correction of NBT Data in Trait (Soulbound). Is shown twice. Still needs corrections.
* Few fixes in traits and new trait "catcher"
* Small fix, needs workaround
* fixed some catch issues
* Fixed Catcher and Reviving Traits, new Trait: Souleater. Updated build.gradle for new TiC Version.
* Splitted SoulEater to get the bad touch to an extra trait "Cursed". Added method for using nbt more easily. Changed declaration names of fluids
* Some minor changes in Traits, Registry and Utils.
* Iron_nugget is replaced with oreDict Item when not loaded via TAIGA.
* Beginning of new material integration. Lot of names changed, lot more work to do here. Many null pointer exceptions and no changes of values up to now.
* Some Small changes in names, registry and recipes
* Some weird stuff I don't remember :D
* fixed some things I missed while merging
* Rollback to something
* More Stuff
* fixed some merging stuff
* Fixed some misspelled names. Actually working with lots of restrictions.
* Rearranged alloys, tried to add blocks / ingots for non-tinker-materials, but they won't work.
* Again tried to fix the melting issue, but non-tinker materials still are not able to be casted as a block, ingot or nugget...
* Fixed integration of materials without tools.
* changed IMC to direct lib calls
* removed more IMC, removed redundant code
* some reformatting
* Alloy integration reworked, needs to be balanced.
* updated deps, renamed some func's, added duplicate material check
* some more renaming
* some reformatting, fixed wrong import, fixed string cmp's
* Added images for blocks, ingots, nuggets and dust. Json changes do not work yet.
* some reformatting
* Removed old json files. Placeholder needed.
* Fixed block json, items not working yet.
* Fixed my own derp (missing json files)
* Reduced materials to ensure unique traits for most of them. Still 30 though, but reduced by 20 more :'( RIP
* Changed some generator stuff, not working properly right now!
* rewrote offset generation, added some debug command, fixed some stuff
* fixed on-surface-generation, made dependencies more flexible
* reverted gen-weight back to its normal value
* Meteor generator implemented.
* fixed generating on ground
* optimized a thing
* Replaced Uru with Osram, replaced Meteorite with Uru, added Meteorite again for Hull-Material and late game alloy.
* Some changes in generation of ores, not ready yet.
* Added Cobble Meteorite. Added debug command. Implemented rest of ore generation. Some minor fixes left for generation including balancing.
* Some changes for ore generation. Added 2 separate Generic Blocks for meteorite and their cobble variant.
* some cleanup in Generator class, added meteor world save handler
* Added Textures. Added blockstates and item models. Fixed fluid rendering.
* renamed world save data file to be little more specific, removed a unused method
* some preps for the upcoming release
* First attempt of well balancing material stats. Renamed TiberiumX to Triberium.
* Final changes... ready for beta testing
* Added missing alloys.
* Corrected balancing of ore generation. Still WIP
* removed some last debug out
* one last reformat
Diffstat (limited to 'src/main/java/com/sosnitzka')
64 files changed, 2100 insertions, 1192 deletions
diff --git a/src/main/java/com/sosnitzka/taiga/Alloys.java b/src/main/java/com/sosnitzka/taiga/Alloys.java index d728179..d08957e 100644 --- a/src/main/java/com/sosnitzka/taiga/Alloys.java +++ b/src/main/java/com/sosnitzka/taiga/Alloys.java @@ -1,35 +1,43 @@ package com.sosnitzka.taiga; -import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidStack; +import slimeknights.tconstruct.shared.TinkerFluids; import static com.sosnitzka.taiga.Fluids.*; -import static com.sosnitzka.taiga.util.Utils.registerTinkerAlloys; +import static com.sosnitzka.taiga.util.Utils.registerTinkerAlloy; public class Alloys { /** * Registers alloying in the smeltery */ - static void register() { - registerTinkerAlloys(nitroniteFluid, 2, tiberiumFluid, 4, vibraniumFluid, 3, nitroFluid, 3); - registerTinkerAlloys(bysmuidFluid, 1, rubiumFluid, 3, bismuthFluid, 2, anthraciteFluid, 3); - registerTinkerAlloys(ultraniteFluid, 1, prometheumFluid, 3, adamantiteFluid, 2, radiant_enderium, 3); - registerTinkerAlloys(astriumFluid, 1, arcaniteFluid, 3, karmesineFluid, 2, energy_enderium, 3); + public static void register() { + registerTinkerAlloy(new FluidStack(triberiumFluid, 1), new FluidStack(tiberiumFluid, 5), new FluidStack(basaltFluid, 1)); + registerTinkerAlloy(new FluidStack(fractumFluid, 2), new FluidStack(triberiumFluid, 3), new FluidStack(TinkerFluids.obsidian, 3), new FluidStack(abyssumFluid, 1)); + registerTinkerAlloy(new FluidStack(violiumFluid, 2), new FluidStack(auroriumFluid, 3), new FluidStack(TinkerFluids.ardite, 2)); + registerTinkerAlloy(new FluidStack(proxiiFluid, 3), new FluidStack(prometheumFluid, 3), new FluidStack(palladiumFluid, 3), new FluidStack(eezoFluid, 1)); + registerTinkerAlloy(new FluidStack(tritoniteFluid, 2), new FluidStack(TinkerFluids.cobalt, 3), new FluidStack(karmesineFluid, 2)); + registerTinkerAlloy(new FluidStack(ignitzFluid, 2), new FluidStack(TinkerFluids.ardite, 2), new FluidStack(karmesineFluid, 2), new FluidStack(osramFluid, 1)); + registerTinkerAlloy(new FluidStack(imperomiteFluid, 2), new FluidStack(duraniteFluid, 3), new FluidStack(prometheumFluid, 1), new FluidStack(abyssumFluid, 1)); + registerTinkerAlloy(new FluidStack(solariumFluid, 2), new FluidStack(valyriumFluid, 2), new FluidStack(uruFluid, 2), new FluidStack(nucleumFluid, 1)); + registerTinkerAlloy(new FluidStack(adamantFluid, 3), new FluidStack(vibraniumFluid, 1), new FluidStack(solariumFluid, 1), new FluidStack(ioxFluid, 3)); + registerTinkerAlloy(new FluidStack(nihiliteFluid, 1), new FluidStack(vibraniumFluid, 1), new FluidStack(solariumFluid, 1)); + registerTinkerAlloy(new FluidStack(seismumFluid, 4), new FluidStack(TinkerFluids.obsidian, 4), new FluidStack(triberiumFluid, 2), new FluidStack(eezoFluid, 1)); + registerTinkerAlloy(new FluidStack(astriumFluid, 2), new FluidStack(karmesineFluid, 3), new FluidStack(auroriumFluid, 2)); + registerTinkerAlloy(new FluidStack(niobFluid, 3), new FluidStack(palladiumFluid, 3), new FluidStack(duraniteFluid, 1), new FluidStack(osramFluid, 1)); + registerTinkerAlloy(new FluidStack(yrdeenFluid, 3), new FluidStack(uruFluid, 3), new FluidStack(valyriumFluid, 3), new FluidStack(osramFluid, 1)); + registerTinkerAlloy(new FluidStack(yrdeenFluid, 3), new FluidStack(uruFluid, 3), new FluidStack(valyriumFluid, 3), new FluidStack(eezoFluid, 1)); + registerTinkerAlloy(new FluidStack(yrdeenFluid, 3), new FluidStack(uruFluid, 3), new FluidStack(valyriumFluid, 3), new FluidStack(abyssumFluid, 1)); + registerTinkerAlloy(new FluidStack(ioxFluid, 1), new FluidStack(eezoFluid, 2), new FluidStack(abyssumFluid, 2), new FluidStack(osramFluid, 2), new FluidStack(obsidioriteFluid, 9)); + registerTinkerAlloy(new FluidStack(ioxFluid, 1), new FluidStack(eezoFluid, 2), new FluidStack(abyssumFluid, 2), new FluidStack(osramFluid, 2), new FluidStack(meteoriteFluid, 9), new FluidStack(TinkerFluids.obsidian, 9)); + registerTinkerAlloy(new FluidStack(lumixFluid, 1), new FluidStack(palladiumFluid, 1), new FluidStack(karmesineFluid, 1)); + registerTinkerAlloy(new FluidStack(obsidioriteFluid, 1), new FluidStack(meteoriteFluid, 1), new FluidStack(TinkerFluids.obsidian, 1)); + registerTinkerAlloy(new FluidStack(nucleumFluid, 3), new FluidStack(proxiiFluid, 3), new FluidStack(abyssumFluid, 1), new FluidStack(osramFluid, 1)); + registerTinkerAlloy(new FluidStack(nucleumFluid, 3), new FluidStack(imperomiteFluid, 3), new FluidStack(osramFluid, 1), new FluidStack(eezoFluid, 1)); + registerTinkerAlloy(new FluidStack(nucleumFluid, 3), new FluidStack(niobFluid, 3), new FluidStack(eezoFluid, 1), new FluidStack(abyssumFluid, 1)); + registerTinkerAlloy(new FluidStack(dyoniteFluid, 3), new FluidStack(triberiumFluid, 3), new FluidStack(fractumFluid, 1), new FluidStack(seismumFluid, 1), new FluidStack(osramFluid, 1)); + registerTinkerAlloy(new FluidStack(dyoniteFluid, 3), new FluidStack(tiberiumFluid, 12), new FluidStack(fractumFluid, 1), new FluidStack(seismumFluid, 1), new FluidStack(osramFluid, 1)); - registerTinkerAlloys(imperomiteFluid, 2, titaniteFluid, 3, palladiumFluid, 3, FluidRegistry.LAVA, 3); - registerTinkerAlloys(dyoniteFluid, 1, meteoriteFluid, 3, tiberiumFluid, 2, spectrumFluid, 3); - registerTinkerAlloys(solariumFluid, 2, vibraniumFluid, 4, ignititeFluid, 4, nitroFluid, 3); - registerTinkerAlloys(fractoryteFluid, 2, adamantiteFluid, 4, rubiumFluid, 2, FluidRegistry.LAVA, 3); - - registerTinkerAlloys(aegisaltFluid, 1, eterniteFluid, 3, mindoriteFluid, 3, glimmercoalFluid, 3); - registerTinkerAlloys(noctunyxFluid, 1, mythrilFluid, 4, titaniteFluid, 2, spectrumFluid, 3); - registerTinkerAlloys(nucleumFluid, 1, palladiumFluid, 3, violiumFluid, 3, radiant_enderium, 3); - registerTinkerAlloys(seismodiumFluid, 2, ignititeFluid, 5, meteoriteFluid, 3, glimming_enderium, 3); - - registerTinkerAlloys(lumixylFluid, 1, bismuthFluid, 3, prometheumFluid, 2, glimming_enderium, 6); - registerTinkerAlloys(terramiteFluid, 2, violiumFluid, 4, eterniteFluid, 2, energy_enderium, 3); - registerTinkerAlloys(cryptogenFluid, 1, mindoriteFluid, 4, arcaniteFluid, 2, anthraciteFluid, 3); - registerTinkerAlloys(proxideumFluid, 1, karmesineFluid, 3, mythrilFluid, 2, glimmercoalFluid, 3); } } diff --git a/src/main/java/com/sosnitzka/taiga/Blocks.java b/src/main/java/com/sosnitzka/taiga/Blocks.java index fd63131..582d5ce 100644 --- a/src/main/java/com/sosnitzka/taiga/Blocks.java +++ b/src/main/java/com/sosnitzka/taiga/Blocks.java @@ -1,10 +1,10 @@ package com.sosnitzka.taiga; import com.google.common.base.Joiner; -import com.sosnitzka.taiga.blocks.BlockLignite; +import com.sosnitzka.taiga.blocks.BlockCobble; +import com.sosnitzka.taiga.blocks.BlockMeteoriteRock; import com.sosnitzka.taiga.blocks.BlockTiberium; import com.sosnitzka.taiga.generic.BasicBlock; -import com.sosnitzka.taiga.generic.BasicBlockGround; import com.sosnitzka.taiga.util.Utils; import net.minecraft.block.Block; import net.minecraft.block.material.Material; @@ -22,75 +22,60 @@ import static slimeknights.tconstruct.library.utils.HarvestLevels.*; public class Blocks { - /// /regular Ores / Blocks without extra abilites - public static Block basalt = new BasicBlock("basalt", Material.ROCK, 45.0f, 35.0f, OBSIDIAN); - public static Block rottenGround = new BasicBlockGround("rotten_ground", Material.GROUND, 2.0f, 2.0f, STONE); - public static Block ligniteOre = new BlockLignite(); - // will be optional / config - public static Block slagironOre = new BasicBlock("slagiron_ore", Material.ROCK, 3.0f, 5.0f, IRON); - public static Block slaggoldOre = new BasicBlock("slaggold_ore", Material.ROCK, 3.0f, 5.0f, IRON); - - // Ores - // Group: Solide - public static Block titaniteOre = new BasicBlock("titanite_ore", Material.ROCK, 55.0f, 40f, TITANITE, PREFIX_ORE); - public static Block meteoriteOre = new BasicBlock("meteorite_ore", Material.ROCK, 60.0f, 50f, METEORITE, PREFIX_ORE); - public static Block vibraniumOre = new BasicBlock("vibranium_ore", Material.ROCK, 70.0f, 60f, VIBRANIUM, PREFIX_ORE); - public static Block adamantiteOre = new BasicBlock("adamantite_ore", Material.ROCK, 80.0f, 70f, ADAMANTITE, PREFIX_ORE); - // Group: Arcane - public static Block prometheumOre = new BasicBlock("prometheum_ore", Material.ROCK, 35.0f, 12f, COBALT, 0.4f, PREFIX_ORE); - public static Block rubiumOre = new BasicBlock("rubium_ore", Material.ROCK, 13.0f, 12f, TITANITE, PREFIX_ORE); + // blocks and ores spawned via worldgen + public static Block basaltBlock = new BasicBlock("basalt_block", Material.ROCK, 45.0f, 35.0f, DIAMOND, PREFIX_BLOCK); public static Block tiberiumOre = new BlockTiberium(); - public static Block arcaniteOre = new BasicBlock("arcanite_ore", Material.ROCK, 23.0f, 12f, METEORITE, PREFIX_ORE); - // Group: Etheri - public static Block eterniteOre = new BasicBlock("eternite_ore", Material.ROCK, 24.0f, 15f, COBALT, PREFIX_ORE); - public static Block mythrilOre = new BasicBlock("mythril_ore", Material.ROCK, 25.0f, 15f, TITANITE, PREFIX_ORE); - public static Block palladiumOre = new BasicBlock("palladium_ore", Material.ROCK, 25.0f, 15f, METEORITE, 0.4f, PREFIX_ORE); - public static Block ignititeOre = new BasicBlock("ignitite_ore", Material.ROCK, 23.0f, 15f, VIBRANIUM, PREFIX_ORE); - // Group: Ratio - public static Block violiumOre = new BasicBlock("violium_ore", Material.ROCK, 13.0f, 10f, COBALT, PREFIX_ORE); - public static Block bismuthOre = new BasicBlock("bismuth_ore", Material.ROCK, 8.0f, 5f, OBSIDIAN, PREFIX_ORE); - public static Block mindoriteOre = new BasicBlock("mindorite_ore", Material.ROCK, 12.0f, 10f, TITANITE, PREFIX_ORE); - public static Block karmesineOre = new BasicBlock("karmesine_ore", Material.ROCK, 13.0f, 10f, METEORITE, PREFIX_ORE); + public static Block auroriumOre = new BasicBlock("aurorium_ore", Material.ROCK, 13.0f, 12f, COBALT, 0.2f, PREFIX_ORE); + public static Block prometheumOre = new BasicBlock("prometheum_ore", Material.ROCK, 35.0f, 12f, DURANITE, 0.4f, PREFIX_ORE); + public static Block duraniteOre = new BasicBlock("duranite_ore", Material.ROCK, 80.0f, 70f, DURANITE, PREFIX_ORE); + public static Block valyriumOre = new BasicBlock("valyrium_ore", Material.ROCK, 60.0f, 50f, VALYRIUM, PREFIX_ORE); + public static Block vibraniumOre = new BasicBlock("vibranium_ore", Material.ROCK, 70.0f, 60f, VIBRANIUM, PREFIX_ORE); + public static Block karmesineOre = new BasicBlock("karmesine_ore", Material.ROCK, 13.0f, 10f, COBALT, PREFIX_ORE); + public static Block palladiumOre = new BasicBlock("palladium_ore", Material.ROCK, 25.0f, 15f, DURANITE, 0.4f, PREFIX_ORE); + public static Block uruOre = new BasicBlock("uru_ore", Material.ROCK, 25.0f, 15f, VALYRIUM, PREFIX_ORE); + public static Block osramOre = new BasicBlock("osram_ore", Material.ROCK, 45.0f, 35.0f, COBALT, PREFIX_ORE); + public static Block eezoOre = new BasicBlock("eezo_ore", Material.ROCK, 45.0f, 35.0f, COBALT, PREFIX_ORE); + public static Block abyssumOre = new BasicBlock("abyssum_ore", Material.ROCK, 45.0f, 35.0f, COBALT, PREFIX_ORE); + + // Ore Casts + public static Block tiberiumBlock = new BasicBlock("tiberium_block", Material.ROCK, 30.0f, 15f, STONE, 1f, PREFIX_BLOCK); + public static Block auroriumBlock = new BasicBlock("aurorium_block", Material.ROCK, 13.0f, 15f, COBALT, PREFIX_BLOCK); + public static Block prometheumBlock = new BasicBlock("prometheum_block", Material.ROCK, 35.0f, 15f, DURANITE, 0.5f, PREFIX_BLOCK); + public static Block duraniteBlock = new BasicBlock("duranite_block", Material.ROCK, 60.0f, 60f, DURANITE, PREFIX_BLOCK); + public static Block valyriumBlock = new BasicBlock("valyrium_block", Material.ROCK, 70.0f, 70f, VALYRIUM, PREFIX_BLOCK); + public static Block vibraniumBlock = new BasicBlock("vibranium_block", Material.ROCK, 80.0f, 80f, VIBRANIUM, PREFIX_BLOCK); + public static Block karmesineBlock = new BasicBlock("karmesine_block", Material.ROCK, 13.0f, 12f, COBALT, PREFIX_BLOCK); + public static Block palladiumBlock = new BasicBlock("palladium_block", Material.ROCK, 25.0f, 20f, DURANITE, 0.5f, PREFIX_BLOCK); + public static Block uruBlock = new BasicBlock("uru_block", Material.ROCK, 25.0f, 20f, VALYRIUM, PREFIX_BLOCK); + public static Block osramBlock = new BasicBlock("osram_block", Material.ROCK, 13.0f, 12f, COBALT, PREFIX_BLOCK); + public static Block abyssumBlock = new BasicBlock("abyssum_block", Material.ROCK, 13.0f, 12f, COBALT, PREFIX_BLOCK); + public static Block eezoBlock = new BasicBlock("eezo_block", Material.ROCK, 13.0f, 12f, COBALT, PREFIX_BLOCK); + + public static Block triberiumBlock = new BasicBlock("triberium_block", Material.ROCK, 30.0f, 15f, OBSIDIAN, 1f, PREFIX_BLOCK); + public static Block fractumBlock = new BasicBlock("fractum_block", Material.ROCK, 25.0f, 25f, COBALT, PREFIX_BLOCK); + public static Block violiumBlock = new BasicBlock("violium_block", Material.ROCK, 25.0f, 25f, COBALT, PREFIX_BLOCK); + public static Block proxiiBlock = new BasicBlock("proxii_block", Material.ROCK, 25.0f, 25f, DURANITE, PREFIX_BLOCK); + public static Block tritoniteBlock = new BasicBlock("tritonite_block", Material.ROCK, 25.0f, 25f, COBALT, PREFIX_BLOCK); + public static Block ignitzBlock = new BasicBlock("ignitz_block", Material.ROCK, 23.0f, 20f, COBALT, PREFIX_BLOCK); + public static Block imperomiteBlock = new BasicBlock("imperomite_block", Material.ROCK, 25.0f, 25f, DURANITE, PREFIX_BLOCK); + public static Block solariumBlock = new BasicBlock("solarium_block", Material.ROCK, 25.0f, 25f, VIBRANIUM, PREFIX_BLOCK); + public static Block nihiliteBlock = new BasicBlock("nihilite_block", Material.ROCK, 25.0f, 25f, VALYRIUM, PREFIX_BLOCK); + public static Block adamantBlock = new BasicBlock("adamant_block", Material.ROCK, 25.0f, 25f, VIBRANIUM, PREFIX_BLOCK); + public static Block dyoniteBlock = new BasicBlock("dyonite_block", Material.ROCK, 25.0f, 25f, DURANITE, PREFIX_BLOCK); + public static Block nucleumBlock = new BasicBlock("nucleum_block", Material.ROCK, 25.0f, 25f, VALYRIUM, PREFIX_BLOCK); + public static Block lumixBlock = new BasicBlock("lumix_block", Material.ROCK, 25.0f, 25f, COBALT, PREFIX_BLOCK); + public static Block seismumBlock = new BasicBlock("seismum_block", Material.ROCK, 25.0f, 25f, COBALT, PREFIX_BLOCK); + public static Block astriumBlock = new BasicBlock("astrium_block", Material.ROCK, 25.0f, 25f, COBALT, PREFIX_BLOCK); + public static Block niobBlock = new BasicBlock("niob_block", Material.ROCK, 25.0f, 25f, DURANITE, PREFIX_BLOCK); + public static Block yrdeenBlock = new BasicBlock("yrdeen_block", Material.ROCK, 25.0f, 25f, VALYRIUM, PREFIX_BLOCK); + public static Block ioxBlock = new BasicBlock("iox_block", Material.ROCK, 25.0f, 25f, DURANITE, PREFIX_BLOCK); - // Blocks - // Group: Solide - public static Block titaniteBlock = new BasicBlock("titanite_block", Material.ROCK, 55.0f, 50f, 5, PREFIX_BLOCK); - public static Block meteoriteBlock = new BasicBlock("meteorite_block", Material.ROCK, 60.0f, 60f, 6, PREFIX_BLOCK); - public static Block vibraniumBlock = new BasicBlock("vibranium_block", Material.ROCK, 70.0f, 70f, 7, PREFIX_BLOCK); - public static Block adamantiteBlock = new BasicBlock("adamantite_block", Material.ROCK, 80.0f, 80f, 8, PREFIX_BLOCK); - // Group: Arcane - public static Block prometheumBlock = new BasicBlock("prometheum_block", Material.ROCK, 35.0f, 15f, 2, 0.5f, PREFIX_BLOCK); - public static Block rubiumBlock = new BasicBlock("rubium_block", Material.ROCK, 13.0f, 15f, 5, PREFIX_BLOCK); - public static Block tiberiumBlock = new BasicBlock("tiberium_block", Material.ROCK, 30.0f, 15f, 6, 1f, PREFIX_BLOCK); - public static Block arcaniteBlock = new BasicBlock("arcanite_block", Material.ROCK, 23.0f, 15f, 7, PREFIX_BLOCK); - // Group: Etheri - public static Block eterniteBlock = new BasicBlock("eternite_block", Material.ROCK, 24.0f, 20f, 4, PREFIX_BLOCK); - public static Block mythrilBlock = new BasicBlock("mythril_block", Material.ROCK, 25.0f, 20f, 5, PREFIX_BLOCK); - public static Block palladiumBlock = new BasicBlock("palladium_block", Material.ROCK, 25.0f, 20f, 6, 0.5f, PREFIX_BLOCK); - public static Block ignititeBlock = new BasicBlock("ignitite_block", Material.ROCK, 23.0f, 20f, 7, PREFIX_BLOCK); - // Group: Ratio - public static Block violiumBlock = new BasicBlock("violium_block", Material.ROCK, 13.0f, 12f, 4, PREFIX_BLOCK); - public static Block bismuthBlock = new BasicBlock("bismuth_block", Material.ROCK, 8.0f, 10f, 5, PREFIX_BLOCK); - public static Block mindoriteBlock = new BasicBlock("mindorite_block", Material.ROCK, 12.0f, 12f, 2, PREFIX_BLOCK); - public static Block karmesineBlock = new BasicBlock("karmesine_block", Material.ROCK, 13.0f, 12f, 3, PREFIX_BLOCK); + public static Block blockMeteoriteCobble = new BlockCobble("meteoritecobble_block", Material.ROCK, 35f, 10f, COBALT, 0.075f, PREFIX_BLOCK); + public static Block blockObsidioriteCobble = new BlockCobble("obsidioritecobble_block", Material.ROCK, 60f, 20f, DURANITE, 0.035f, PREFIX_BLOCK); + public static Block blockMeteorite = new BlockMeteoriteRock("meteorite_block", Material.ROCK, 70f, 2000f, COBALT, 0.15f, PREFIX_BLOCK, blockMeteoriteCobble.getDefaultState()); + public static Block blockObsidiorite = new BlockMeteoriteRock("obsidiorite_block", Material.ROCK, 120f, 4000f, DURANITE, 0.2f, PREFIX_BLOCK, blockObsidioriteCobble.getDefaultState()); - public static Block imperomiteBlock = new BasicBlock("imperomite_block", Material.ROCK, 24.0f, 25f, 5, PREFIX_BLOCK); - public static Block fractoryteBlock = new BasicBlock("fractoryte_block", Material.ROCK, 8.0f, 15f, 8, PREFIX_BLOCK); - public static Block noctunyxBlock = new BasicBlock("noctunyx_block", Material.ROCK, 60.0f, 15f, 6, PREFIX_BLOCK); - public static Block nitroniteBlock = new BasicBlock("nitronite_block", Material.ROCK, 13.0f, 12f, 7, 0.8f, PREFIX_BLOCK); - public static Block cryptogenBlock = new BasicBlock("cryptogen_block", Material.ROCK, 23.0f, 15f, 6, PREFIX_BLOCK); - public static Block seismodiumBlock = new BasicBlock("seismodium_block", Material.ROCK, 30.0f, 25f, 7, PREFIX_BLOCK); - public static Block aegisaltBlock = new BasicBlock("aegisalt_block", Material.ROCK, 13.0f, 15f, 5, PREFIX_BLOCK); - public static Block ultraniteBlock = new BasicBlock("ultranite_block", Material.ROCK, 13.0f, 25f, 8, 0.6f, PREFIX_BLOCK); - public static Block bysmuidBlock = new BasicBlock("bysmuid_block", Material.ROCK, 35.0f, 15f, 5, PREFIX_BLOCK); - public static Block nucleumBlock = new BasicBlock("nucleum_block", Material.ROCK, 25.0f, 15f, 4, 0.85f, PREFIX_BLOCK); - public static Block terramiteBlock = new BasicBlock("terramite_block", Material.ROCK, 70.0f, 15f, 4, PREFIX_BLOCK); - public static Block solariumBlock = new BasicBlock("solarium_block", Material.ROCK, 80.0f, 25f, 5, PREFIX_BLOCK); - public static Block lumixylBlock = new BasicBlock("lumixyl_block", Material.ROCK, 12.0f, 15f, 5, 1f, PREFIX_BLOCK); - public static Block dyoniteBlock = new BasicBlock("dyonite_block", Material.ROCK, 23.0f, 15f, 4, 0.3f, PREFIX_BLOCK); - public static Block proxideumBlock = new BasicBlock("proxideum_block", Material.ROCK, 25.0f, 15f, 4, PREFIX_BLOCK); - public static Block astriumBlock = new BasicBlock("astrium_block", Material.ROCK, 55.0f, 15f, 7, PREFIX_BLOCK); /** * Registers all materials' ingots and nuggets <br> diff --git a/src/main/java/com/sosnitzka/taiga/CreativeTab.java b/src/main/java/com/sosnitzka/taiga/CreativeTab.java index d421373..6cdb9a3 100644 --- a/src/main/java/com/sosnitzka/taiga/CreativeTab.java +++ b/src/main/java/com/sosnitzka/taiga/CreativeTab.java @@ -4,24 +4,23 @@ package com.sosnitzka.taiga; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; -import static com.sosnitzka.taiga.Blocks.adamantiteBlock; -import static com.sosnitzka.taiga.Items.noctunyxIngot; +import static com.sosnitzka.taiga.Blocks.adamantBlock; +import static com.sosnitzka.taiga.Items.solariumIngot; + public class CreativeTab { public static final CreativeTabs tabTaigaBlock = new CreativeTabs("taiga_block") { @Override public Item getTabIconItem() { - return Item.getItemFromBlock(adamantiteBlock); + return Item.getItemFromBlock(adamantBlock); } }; public static final CreativeTabs tabTaigaItem = new CreativeTabs("taiga_item") { @Override public Item getTabIconItem() { - return noctunyxIngot; + return solariumIngot; } }; - - } diff --git a/src/main/java/com/sosnitzka/taiga/Fluids.java b/src/main/java/com/sosnitzka/taiga/Fluids.java index d618ccd..901b501 100644 --- a/src/main/java/com/sosnitzka/taiga/Fluids.java +++ b/src/main/java/com/sosnitzka/taiga/Fluids.java @@ -3,63 +3,48 @@ package com.sosnitzka.taiga; import com.sosnitzka.taiga.generic.BasicTinkerFluid; import com.sosnitzka.taiga.util.Utils; -import net.minecraft.init.Blocks; -import net.minecraftforge.fluids.FluidRegistry; -import slimeknights.tconstruct.shared.TinkerFluids; +import slimeknights.tconstruct.library.TinkerRegistry; import slimeknights.tconstruct.smeltery.block.BlockMolten; import java.lang.reflect.Field; -import static com.sosnitzka.taiga.Blocks.slaggoldOre; -import static com.sosnitzka.taiga.Blocks.slagironOre; -import static com.sosnitzka.taiga.Items.*; import static com.sosnitzka.taiga.util.Utils.registerFluid; -import static slimeknights.tconstruct.library.TinkerRegistry.registerMelting; public class Fluids { - public static BasicTinkerFluid arcaniteFluid = new BasicTinkerFluid("arcanite", 0xFF272354, true, 538, 8, 3768); - public static BasicTinkerFluid titaniteFluid = new BasicTinkerFluid("titanite", 0xFFe0ede7, true, 942, 7, 1858); - public static BasicTinkerFluid adamantiteFluid = new BasicTinkerFluid("adamantite", 0xFFc45c82, true, 1100, 10, 3597); - public static BasicTinkerFluid violiumFluid = new BasicTinkerFluid("violium", 0xFF264c4f, true, 875, 10, 3970); - public static BasicTinkerFluid bismuthFluid = new BasicTinkerFluid("bismuth", 0xFF555555, true, 612, 9, 2552); - public static BasicTinkerFluid eterniteFluid = new BasicTinkerFluid("eternite", 0xFFfafa98, true, 542, 10, 3980); - public static BasicTinkerFluid ignititeFluid = new BasicTinkerFluid("ignitite", 0xFFff6642, true, 422, 9, 3787); - public static BasicTinkerFluid karmesineFluid = new BasicTinkerFluid("karmesine", 0xFFc16d6d, true, 499, 7, 3978); - public static BasicTinkerFluid meteoriteFluid = new BasicTinkerFluid("meteorite", 0xFF6e6a62, true, 942, 10, 2588); - public static BasicTinkerFluid mindoriteFluid = new BasicTinkerFluid("mindorite", 0xFF6bbbff, true, 671, 8, 2956); - public static BasicTinkerFluid mythrilFluid = new BasicTinkerFluid("mythril", 0xFFa8c0ba, true, 841, 10, 1579); - public static BasicTinkerFluid palladiumFluid = new BasicTinkerFluid("palladium", 0xFFfe5c05, true, 786, 10, 3302); - public static BasicTinkerFluid prometheumFluid = new BasicTinkerFluid("prometheum", 0xFF2b282f, true, 786, 2, 2256); - public static BasicTinkerFluid tiberiumFluid = new BasicTinkerFluid("tiberium", 0xFF5f9e2d, true, 352, 10, 1553); - public static BasicTinkerFluid vibraniumFluid = new BasicTinkerFluid("vibranium", 0xFFc4ddc8, true, 1050, 9, 3402); - public static BasicTinkerFluid rubiumFluid = new BasicTinkerFluid("rubium", 0xFFe371b0, true, 200, 600, 1653); - public static BasicTinkerFluid astriumFluid = new BasicTinkerFluid("astrium", 0xFF7a3b74, true, 810, 10, 1525); - public static BasicTinkerFluid nitroniteFluid = new BasicTinkerFluid("nitronite", 0xFFdfe553, true, 680, 10, 2185); - public static BasicTinkerFluid proxideumFluid = new BasicTinkerFluid("proxideum", 0xFF2f7177, true, 700, 9, 3859); - public static BasicTinkerFluid noctunyxFluid = new BasicTinkerFluid("noctunyx", 0xFF5f5081, true, 712, 8, 3983); - public static BasicTinkerFluid imperomiteFluid = new BasicTinkerFluid("imperomite", 0xFF5cc96b, true, 510, 10, 2353); - public static BasicTinkerFluid cryptogenFluid = new BasicTinkerFluid("cryptogen", 0xFF9f8a4a, true, 560, 10, 3243); - public static BasicTinkerFluid fractoryteFluid = new BasicTinkerFluid("fractoryte", 0xFF983f11, true, 670, 8, 3805); - public static BasicTinkerFluid seismodiumFluid = new BasicTinkerFluid("seismodium", 0xFF46131D, true, 831, 10, 1837); - public static BasicTinkerFluid terramiteFluid = new BasicTinkerFluid("terramite", 0xFFa6b27a, true, 687, 10, 2121); - public static BasicTinkerFluid lumixylFluid = new BasicTinkerFluid("lumixyl", 0xFFfbe8cb, true, 548, 10, 2165); - public static BasicTinkerFluid solariumFluid = new BasicTinkerFluid("solarium", 0xFFffc81d, true, 482, 8, 3232); - public static BasicTinkerFluid dyoniteFluid = new BasicTinkerFluid("dyonite", 0xFFff6743, true, 486, 8, 3269); - public static BasicTinkerFluid ultraniteFluid = new BasicTinkerFluid("ultranite", 0xFFf5f294, true, 941, 9, 1784); - public static BasicTinkerFluid nucleumFluid = new BasicTinkerFluid("nucleum", 0xFFa8ea3b, true, 813, 10, 2355); - public static BasicTinkerFluid aegisaltFluid = new BasicTinkerFluid("aegisalt", 0xFFb6af74, true, 660, 7, 2089); - public static BasicTinkerFluid bysmuidFluid = new BasicTinkerFluid("bysmuid", 0xFF7b97b0, true, 560, 8, 2674); - - - // Additional fluids to cast alloys - public static BasicTinkerFluid radiant_enderium = new BasicTinkerFluid("radiant_enderium", 0xFFbcea5d, false, 529, 10, 768); - public static BasicTinkerFluid glimming_enderium = new BasicTinkerFluid("glimming_enderium", 0xFFfffc98, false, 633, 10, 821); - public static BasicTinkerFluid energy_enderium = new BasicTinkerFluid("energy_enderium", 0xFFffb498, false, 562, 10, 421); - public static BasicTinkerFluid glimmercoalFluid = new BasicTinkerFluid("glimmercoal_fluid", 0xFFee7c28, false, 531, 10, 312); - public static BasicTinkerFluid nitroFluid = new BasicTinkerFluid("nitro_fluid", 0xFF223512, false, 405, 5, 772); - public static BasicTinkerFluid anthraciteFluid = new BasicTinkerFluid("anthracite_fluid", 0xFF111111, false, 500, 0, 632); - public static BasicTinkerFluid spectrumFluid = new BasicTinkerFluid("spectrum_fluid", 0xFF64748f, false, 600, 0, 512); + public static BasicTinkerFluid basaltFluid = new BasicTinkerFluid("basalt_fluid", 0xFFe4ddc3, 550, 10, 6000); + public static BasicTinkerFluid tiberiumFluid = new BasicTinkerFluid("tiberium_fluid", 0xFF66f136, 400, 10, 8000); + public static BasicTinkerFluid auroriumFluid = new BasicTinkerFluid("aurorium_fluid", 0xFFefae94, 750, 10, 10000); + public static BasicTinkerFluid prometheumFluid = new BasicTinkerFluid("prometheum_fluid", 0xFF271c29, 850, 10, 10000); + public static BasicTinkerFluid duraniteFluid = new BasicTinkerFluid("duranite_fluid", 0xFFacddeb, 10000, 10, 10000); + public static BasicTinkerFluid valyriumFluid = new BasicTinkerFluid("valyrium_fluid", 0xFFe85c31, 1250, 10, 10000); + public static BasicTinkerFluid vibraniumFluid = new BasicTinkerFluid("vibranium_fluid", 0xFFbad2d9, 1400, 10, 10000); + public static BasicTinkerFluid karmesineFluid = new BasicTinkerFluid("karmesine_fluid", 0xFFeb484a, 750, 10, 9000); + public static BasicTinkerFluid palladiumFluid = new BasicTinkerFluid("palladium_fluid", 0xFFee8736, 690, 10, 10000); + public static BasicTinkerFluid uruFluid = new BasicTinkerFluid("uru_fluid", 0xFFbfb9f0, 1200, 10, 10000); + public static BasicTinkerFluid osramFluid = new BasicTinkerFluid("osram_fluid", 0xFFffbc90, 800, 10, 4000); + public static BasicTinkerFluid abyssumFluid = new BasicTinkerFluid("abyssum_fluid", 0xFF21bcc2, 700, 10, 10000); + public static BasicTinkerFluid eezoFluid = new BasicTinkerFluid("eezo_fluid", 0xFF58798a, 450, 0, 1000); + public static BasicTinkerFluid triberiumFluid = new BasicTinkerFluid("triberium_fluid", 0xFFe4ff00, 550, 10, 9000); + public static BasicTinkerFluid fractumFluid = new BasicTinkerFluid("fractum_fluid", 0xFFd2c583, 750, 10, 10000); + public static BasicTinkerFluid violiumFluid = new BasicTinkerFluid("violium_fluid", 0xFFbfb0e2, 850, 10, 10000); + public static BasicTinkerFluid proxiiFluid = new BasicTinkerFluid("proxii_fluid", 0xFFcefde1, 750, 10, 10000); + public static BasicTinkerFluid tritoniteFluid = new BasicTinkerFluid("tritonite_fluid", 0xFF8edeff, 550, 10, 10000); + public static BasicTinkerFluid ignitzFluid = new BasicTinkerFluid("ignitz_fluid", 0xFFff284b, 950, 10, 6000); + public static BasicTinkerFluid imperomiteFluid = new BasicTinkerFluid("imperomite_fluid", 0xFF7fefa0, 900, 10, 10000); + public static BasicTinkerFluid solariumFluid = new BasicTinkerFluid("solarium_fluid", 0xFFfef864, 1500, 10, 2000); + public static BasicTinkerFluid nihiliteFluid = new BasicTinkerFluid("nihilite_fluid", 0xFF6645ba, 580, 10, 10000); + public static BasicTinkerFluid adamantFluid = new BasicTinkerFluid("adamant_fluid", 0xFFff8efe, 1650, 10, 10000); + public static BasicTinkerFluid dyoniteFluid = new BasicTinkerFluid("dyonite_fluid", 0xFFffbd3f, 660, 10, 7000); + public static BasicTinkerFluid nucleumFluid = new BasicTinkerFluid("nucleum_fluid", 0xFFe6ff40, 490, 10, 10000); + public static BasicTinkerFluid lumixFluid = new BasicTinkerFluid("lumix_fluid", 0xFFf9f3cc, 450, 10, 8000); + public static BasicTinkerFluid seismumFluid = new BasicTinkerFluid("seismum_fluid", 0xFFecbca8, 720, 10, 10000); + public static BasicTinkerFluid astriumFluid = new BasicTinkerFluid("astrium_fluid", 0xFF8f385f, 680, 10, 10000); + public static BasicTinkerFluid niobFluid = new BasicTinkerFluid("niob_fluid", 0xFF7398b9, 550, 10, 10000); + public static BasicTinkerFluid yrdeenFluid = new BasicTinkerFluid("yrdeen_fluid", 0xFF8f385f, 710, 10, 10000); + public static BasicTinkerFluid ioxFluid = new BasicTinkerFluid("iox_fluid", 0xFF99323c, 900, 10, 10000); + public static BasicTinkerFluid meteoriteFluid = new BasicTinkerFluid("meteorite_fluid", 0xFF374f3d, 950, 10, 7000); + public static BasicTinkerFluid obsidioriteFluid = new BasicTinkerFluid("obsidiorite_fluid", 0xFF224853, 1050, 10, 7000); /** * Registers all materials' fluids <br> @@ -95,20 +80,7 @@ public class Fluids { * Registers special smeltery recipes (not alloying) */ static void registerfromItem() { - registerMelting(radiant_pearl, radiant_enderium, 72); - registerMelting(glimmer_pearl, glimming_enderium, 72); - registerMelting(energy_pearl, energy_enderium, 72); - registerMelting(glimmercoal, glimmercoalFluid, 72); - registerMelting(nitro_brick, nitroFluid, 72); - registerMelting(anthracite_dust, anthraciteFluid, 72); - registerMelting(spectrum_dust, spectrumFluid, 72); - registerMelting(Blocks.OBSIDIAN, FluidRegistry.LAVA, 432); - registerMelting(Blocks.NETHERRACK, FluidRegistry.LAVA, 48); - registerMelting(Blocks.STONE, FluidRegistry.LAVA, 144); - registerMelting(slagironOre, TinkerFluids.iron, 16); - registerMelting(slagironIngot, TinkerFluids.iron, 24); - registerMelting(slaggoldOre, TinkerFluids.gold, 16); - registerMelting(slaggoldIngot, TinkerFluids.gold, 24); - + TinkerRegistry.registerMelting(Blocks.blockMeteoriteCobble, meteoriteFluid, 144); } + } diff --git a/src/main/java/com/sosnitzka/taiga/Items.java b/src/main/java/com/sosnitzka/taiga/Items.java index 4e0e184..0df15a2 100644 --- a/src/main/java/com/sosnitzka/taiga/Items.java +++ b/src/main/java/com/sosnitzka/taiga/Items.java @@ -11,97 +11,143 @@ import org.apache.commons.lang3.StringUtils; import java.lang.reflect.Field; import java.util.Arrays; -import static com.sosnitzka.taiga.util.Utils.PREFIX_INGOT; -import static com.sosnitzka.taiga.util.Utils.PREFIX_NUGGET; +import static com.sosnitzka.taiga.util.Utils.*; public class Items { - public static Item lignite = new BasicItem("lignite", null, "lignite"); - public static Item iron_nugget = new BasicItem("iron_nugget", PREFIX_NUGGET); - public static Item slaggoldIngot = new BasicItem("slaggold_ingot"); - public static Item slagironIngot = new BasicItem("slagiron_ingot"); - public static Item fuel_brick = new BasicItem("fuel_brick"); - - //Nuggets - public static Item titanite_nugget = new BasicItem("titanite_nugget", PREFIX_NUGGET); - public static Item adamantite_nugget = new BasicItem("adamantite_nugget", PREFIX_NUGGET); - public static Item arcanite_nugget = new BasicItem("arcanite_nugget", PREFIX_NUGGET); - public static Item violium_nugget = new BasicItem("violium_nugget", PREFIX_NUGGET); - public static Item bismuth_nugget = new BasicItem("bismuth_nugget", PREFIX_NUGGET); - public static Item eternite_nugget = new BasicItem("eternite_nugget", PREFIX_NUGGET); - public static Item ignitite_nugget = new BasicItem("ignitite_nugget", PREFIX_NUGGET); - public static Item karmesine_nugget = new BasicItem("karmesine_nugget", PREFIX_NUGGET); - public static Item meteorite_nugget = new BasicItem("meteorite_nugget", PREFIX_NUGGET); - public static Item mindorite_nugget = new BasicItem("mindorite_nugget", PREFIX_NUGGET); - public static Item mythril_nugget = new BasicItem("mythril_nugget", PREFIX_NUGGET); - public static Item palladium_nugget = new BasicItem("palladium_nugget", PREFIX_NUGGET); - public static Item prometheum_nugget = new BasicItem("prometheum_nugget", PREFIX_NUGGET); - // NAH! public static Item tiberium_nugget = new BasicItem("tiberium_nugget", PREFIX_NUGGET); - public static Item vibranium_nugget = new BasicItem("vibranium_nugget", PREFIX_NUGGET); - public static Item rubium_nugget = new BasicItem("rubium_nugget", PREFIX_NUGGET); - public static Item astrium_nugget = new BasicItem("astrium_nugget", PREFIX_NUGGET); - public static Item nitronite_nugget = new BasicItem("nitronite_nugget", PREFIX_NUGGET); - public static Item proxideum_nugget = new BasicItem("proxideum_nugget", PREFIX_NUGGET); - public static Item noctunyx_nugget = new BasicItem("noctunyx_nugget", PREFIX_NUGGET); - public static Item imperomite_nugget = new BasicItem("imperomite_nugget", PREFIX_NUGGET); - public static Item cryptogen_nugget = new BasicItem("cryptogen_nugget", PREFIX_NUGGET); - public static Item fractoryte_nugget = new BasicItem("fractoryte_nugget", PREFIX_NUGGET); - public static Item seismodium_nugget = new BasicItem("seismodium_nugget", PREFIX_NUGGET); - public static Item tiberium_nugget = new BasicItem("tiberium_nugget", PREFIX_NUGGET); - public static Item terramite_nugget = new BasicItem("terramite_nugget", PREFIX_NUGGET); - public static Item lumixyl_nugget = new BasicItem("lumixyl_nugget", PREFIX_NUGGET); - public static Item solarium_nugget = new BasicItem("solarium_nugget", PREFIX_NUGGET); - public static Item dyonite_nugget = new BasicItem("dyonite_nugget", PREFIX_NUGGET); - public static Item ultranite_nugget = new BasicItem("ultranite_nugget", PREFIX_NUGGET); - public static Item nucleum_nugget = new BasicItem("nucleum_nugget", PREFIX_NUGGET); - public static Item aegisalt_nugget = new BasicItem("aegisalt_nugget", PREFIX_NUGGET); - public static Item bysmuid_nugget = new BasicItem("bysmuid_nugget", PREFIX_NUGGET); - - public static Item glimmercoal = new BasicItem("glimmercoal"); - public static Item radiant_pearl = new BasicItem("radiant_pearl"); - public static Item glimmer_pearl = new BasicItem("glimmer_pearl"); - public static Item energy_pearl = new BasicItem("energy_pearl"); - public static Item glimmerstone_dust = new BasicItem("glimmerstone_dust"); - public static Item luminar_dust = new BasicItem("luminar_dust"); - public static Item spectrum_dust = new BasicItem("spectrum_dust"); - public static Item anthracite_dust = new BasicItem("anthracite_dust"); - public static Item nitro_brick = new BasicItem("nitro_brick"); - - public static Item titaniteIngot = new BasicItem("titanite_ingot", PREFIX_INGOT); - public static Item adamantiteIngot = new BasicItem("adamantite_ingot", PREFIX_INGOT); - public static Item arcaniteIngot = new BasicItem("arcanite_ingot", PREFIX_INGOT); - public static Item violiumIngot = new BasicItem("violium_ingot", PREFIX_INGOT); - public static Item bismuthIngot = new BasicItem("bismuth_ingot", PREFIX_INGOT); - public static Item eterniteIngot = new BasicItem("eternite_ingot", PREFIX_INGOT); - public static Item ignititeIngot = new BasicItem("ignitite_ingot", PREFIX_INGOT); - public static Item karmesineIngot = new BasicItem("karmesine_ingot", PREFIX_INGOT); - public static Item meteoriteIngot = new BasicItem("meteorite_ingot", PREFIX_INGOT); - public static Item mindoriteIngot = new BasicItem("mindorite_ingot", PREFIX_INGOT); - public static Item mythrilIngot = new BasicItem("mythril_ingot", PREFIX_INGOT); - public static Item palladiumIngot = new BasicItem("palladium_ingot", PREFIX_INGOT); - public static Item prometheumIngot = new BasicItem("prometheum_ingot", PREFIX_INGOT); + public static Item ironNugget = new BasicItem("iron_nugget", PREFIX_NUGGET); + public static Item tiberiumIngot = new BasicItem("tiberium_ingot", PREFIX_INGOT); + public static Item tiberiumDust = new BasicItem("tiberium_dust", PREFIX_DUST); + public static Item tiberiumNugget = new BasicItem("tiberium_nugget", PREFIX_NUGGET); + + public static Item auroriumIngot = new BasicItem("aurorium_ingot", PREFIX_INGOT); + public static Item auroriumDust = new BasicItem("aurorium_dust", PREFIX_DUST); + public static Item auroriumNugget = new BasicItem("aurorium_nugget", PREFIX_NUGGET); + + public static Item prometheumIngot = new BasicItem("prometheum_ingot", PREFIX_INGOT); + public static Item prometheumDust = new BasicItem("prometheum_dust", PREFIX_DUST); + public static Item prometheumNugget = new BasicItem("prometheum_nugget", PREFIX_NUGGET); + + public static Item duraniteIngot = new BasicItem("duranite_ingot", PREFIX_INGOT); + public static Item duraniteDust = new BasicItem("duranite_dust", PREFIX_DUST); + public static Item duraniteNugget = new BasicItem("duranite_nugget", PREFIX_NUGGET); + + public static Item valyriumIngot = new BasicItem("valyrium_ingot", PREFIX_INGOT); + public static Item valyriumDust = new BasicItem("valyrium_dust", PREFIX_DUST); + public static Item valyriumNugget = new BasicItem("valyrium_nugget", PREFIX_NUGGET); + public static Item vibraniumIngot = new BasicItem("vibranium_ingot", PREFIX_INGOT); - public static Item rubiumIngot = new BasicItem("rubium_ingot", PREFIX_INGOT); + public static Item vibraniumDust = new BasicItem("vibranium_dust", PREFIX_DUST); + public static Item vibraniumNugget = new BasicItem("vibranium_nugget", PREFIX_NUGGET); + + public static Item karmesineIngot = new BasicItem("karmesine_ingot", PREFIX_INGOT); + public static Item karmesineDust = new BasicItem("karmesine_dust", PREFIX_DUST); + public static Item karmesineNugget = new BasicItem("karmesine_nugget", PREFIX_NUGGET); + + public static Item palladiumIngot = new BasicItem("palladium_ingot", PREFIX_INGOT); + public static Item palladiumDust = new BasicItem("palladium_dust", PREFIX_DUST); + public static Item palladiumNugget = new BasicItem("palladium_nugget", PREFIX_NUGGET); + + public static Item uruIngot = new BasicItem("uru_ingot", PREFIX_INGOT); + public static Item uruDust = new BasicItem("uru_dust", PREFIX_DUST); + public static Item uruNugget = new BasicItem("uru_nugget", PREFIX_NUGGET); + + public static Item osramIngot = new BasicItem("osram_ingot", PREFIX_INGOT); + public static Item osramDust = new BasicItem("osram_dust", PREFIX_DUST); + public static Item osramNugget = new BasicItem("osram_nugget", PREFIX_NUGGET); + + public static Item abyssumIngot = new BasicItem("abyssum_ingot", PREFIX_INGOT); + public static Item abyssumDust = new BasicItem("abyssum_dust", PREFIX_DUST); + public static Item abyssumNugget = new BasicItem("abyssum_nugget", PREFIX_NUGGET); + + public static Item eezoIngot = new BasicItem("eezo_ingot", PREFIX_INGOT); + public static Item eezoDust = new BasicItem("eezo_dust", PREFIX_DUST); + public static Item eezoNugget = new BasicItem("eezo_nugget", PREFIX_NUGGET); + + public static Item triberiumIngot = new BasicItem("triberium_ingot", PREFIX_INGOT); + public static Item triberiumDust = new BasicItem("triberium_dust", PREFIX_DUST); + public static Item triberiumNugget = new BasicItem("triberium_nugget", PREFIX_NUGGET); + + public static Item fractumIngot = new BasicItem("fractum_ingot", PREFIX_INGOT); + public static Item fractumDust = new BasicItem("fractum_dust", PREFIX_DUST); + public static Item fractumNugget = new BasicItem("fractum_nugget", PREFIX_NUGGET); + + public static Item violiumIngot = new BasicItem("violium_ingot", PREFIX_INGOT); + public static Item violiumDust = new BasicItem("violium_dust", PREFIX_DUST); + public static Item violiumNugget = new BasicItem("violium_nugget", PREFIX_NUGGET); + + public static Item proxiiIngot = new BasicItem("proxii_ingot", PREFIX_INGOT); + public static Item proxiiDust = new BasicItem("proxii_dust", PREFIX_DUST); + public static Item proxiiNugget = new BasicItem("proxii_nugget", PREFIX_NUGGET); + + public static Item tritoniteIngot = new BasicItem("tritonite_ingot", PREFIX_INGOT); + public static Item tritoniteDust = new BasicItem("tritonite_dust", PREFIX_DUST); + public static Item tritoniteNugget = new BasicItem("tritonite_nugget", PREFIX_NUGGET); + + public static Item ignitzIngot = new BasicItem("ignitz_ingot", PREFIX_INGOT); + public static Item ignitzDust = new BasicItem("ignitz_dust", PREFIX_DUST); + public static Item ignitzNugget = new BasicItem("ignitz_nugget", PREFIX_NUGGET); - public static Item astriumIngot = new BasicItem("astrium_ingot", PREFIX_INGOT); - public static Item nitroniteIngot = new BasicItem("nitronite_ingot", PREFIX_INGOT); - public static Item proxideumIngot = new BasicItem("proxideum_ingot", PREFIX_INGOT); - public static Item noctunyxIngot = new BasicItem("noctunyx_ingot", PREFIX_INGOT); public static Item imperomiteIngot = new BasicItem("imperomite_ingot", PREFIX_INGOT); - public static Item cryptogenIngot = new BasicItem("cryptogen_ingot", PREFIX_INGOT); - public static Item fractoryteIngot = new BasicItem("fractoryte_ingot", PREFIX_INGOT); - public static Item seismodiumIngot = new BasicItem("seismodium_ingot", PREFIX_INGOT); - public static Item terramiteIngot = new BasicItem("terramite_ingot", PREFIX_INGOT); - public static Item lumixylIngot = new BasicItem("lumixyl_ingot", PREFIX_INGOT); + public static Item imperomiteDust = new BasicItem("imperomite_dust", PREFIX_DUST); + public static Item imperomiteNugget = new BasicItem("imperomite_nugget", PREFIX_NUGGET); + public static Item solariumIngot = new BasicItem("solarium_ingot", PREFIX_INGOT); + public static Item solariumDust = new BasicItem("solarium_dust", PREFIX_DUST); + public static Item solariumNugget = new BasicItem("solarium_nugget", PREFIX_NUGGET); + + public static Item nihiliteIngot = new BasicItem("nihilite_ingot", PREFIX_INGOT); + public static Item nihiliteDust = new BasicItem("nihilite_dust", PREFIX_DUST); + public static Item nihiliteNugget = new BasicItem("nihilite_nugget", PREFIX_NUGGET); + + public static Item adamantIngot = new BasicItem("adamant_ingot", PREFIX_INGOT); + public static Item adamantDust = new BasicItem("adamant_dust", PREFIX_DUST); + public static Item adamantNugget = new BasicItem("adamant_nugget", PREFIX_NUGGET); + public static Item dyoniteIngot = new BasicItem("dyonite_ingot", PREFIX_INGOT); - public static Item ultraniteIngot = new BasicItem("ultranite_ingot", PREFIX_INGOT); + public static Item dyoniteDust = new BasicItem("dyonite_dust", PREFIX_DUST); + public static Item dyoniteNugget = new BasicItem("dyonite_nugget", PREFIX_NUGGET); + public static Item nucleumIngot = new BasicItem("nucleum_ingot", PREFIX_INGOT); - public static Item aegisaltIngot = new BasicItem("aegisalt_ingot", PREFIX_INGOT); - public static Item bysmuidIngot = new BasicItem("bysmuid_ingot", PREFIX_INGOT); + public static Item nucleumDust = new BasicItem("nucleum_dust", PREFIX_DUST); + public static Item nucleumNugget = new BasicItem("nucleum_nugget", PREFIX_NUGGET); - public static Item tiberiumShardInstable = new BasicItem("tiberium_shard_instable"); + public static Item lumixIngot = new BasicItem("lumix_ingot", PREFIX_INGOT); + public static Item lumixDust = new BasicItem("lumix_dust", PREFIX_DUST); + public static Item lumixNugget = new BasicItem("lumix_nugget", PREFIX_NUGGET); + + public static Item seismumIngot = new BasicItem("seismum_ingot", PREFIX_INGOT); + public static Item seismumDust = new BasicItem("seismum_dust", PREFIX_DUST); + public static Item seismumNugget = new BasicItem("seismum_nugget", PREFIX_NUGGET); + + public static Item astriumIngot = new BasicItem("astrium_ingot", PREFIX_INGOT); + public static Item astriumDust = new BasicItem("astrium_dust", PREFIX_DUST); + public static Item astriumNugget = new BasicItem("astrium_nugget", PREFIX_NUGGET); + + public static Item niobIngot = new BasicItem("niob_ingot", PREFIX_INGOT); + public static Item niobDust = new BasicItem("niob_dust", PREFIX_DUST); + public static Item niobNugget = new BasicItem("niob_nugget", PREFIX_NUGGET); + + public static Item yrdeenIngot = new BasicItem("yrdeen_ingot", PREFIX_INGOT); + public static Item yrdeenDust = new BasicItem("yrdeen_dust", PREFIX_DUST); + public static Item yrdeenNugget = new BasicItem("yrdeen_nugget", PREFIX_NUGGET); + + public static Item ioxIngot = new BasicItem("iox_ingot", PREFIX_INGOT); + public static Item ioxDust = new BasicItem("iox_dust", PREFIX_DUST); + public static Item ioxNugget = new BasicItem("iox_nugget", PREFIX_NUGGET); + + public static Item meteoriteIngot = new BasicItem("meteorite_ingot", PREFIX_INGOT); + public static Item meteoriteDust = new BasicItem("meteorite_dust", PREFIX_DUST); + public static Item meteoriteNugget = new BasicItem("meteorite_nugget", PREFIX_NUGGET); + + public static Item basaltIngot = new BasicItem("basalt_ingot", PREFIX_INGOT); + public static Item basaltDust = new BasicItem("basalt_dust", PREFIX_DUST); + public static Item basaltNugget = new BasicItem("basalt_nugget", PREFIX_NUGGET); + + public static Item obsidioriteIngot = new BasicItem("obsidiorite_ingot", PREFIX_INGOT); + public static Item obsidioriteDust = new BasicItem("obsidiorite_dust", PREFIX_DUST); + public static Item obsidioriteNugget = new BasicItem("obsidiorite_nugget", PREFIX_NUGGET); /** * Registers all materials' ingots and nuggets <br> @@ -109,6 +155,7 @@ public class Items { * Gets the ingots declared in the class (fields and reflection) and iterates through them: <br> * Checks that the field is static, registers the field (item), and adds an oreDict entry if needed */ + public static void register() { Field[] declaredFields = Items.class.getDeclaredFields(); // Gets the fields (ingots) declared above for (Field field : declaredFields) { // Iterates through the fields declared above @@ -116,7 +163,7 @@ public class Items { Class<?> targetType = field.getType(); try { Item item = (Item) field.get(targetType); // Gets the field as a BasicItem which is then casted to an Item - if (item.equals(iron_nugget) && OreDictionary.doesOreNameExist("nuggetIron")) { + if (item.equals(ironNugget) && OreDictionary.doesOreNameExist("nuggetIron")) { System.out.println("TAIGA: Skipped registration of nuggetIron which already exists."); continue; } diff --git a/src/main/java/com/sosnitzka/taiga/MaterialTraits.java b/src/main/java/com/sosnitzka/taiga/MaterialTraits.java index c5ab2ba..f2ca5bf 100644 --- a/src/main/java/com/sosnitzka/taiga/MaterialTraits.java +++ b/src/main/java/com/sosnitzka/taiga/MaterialTraits.java @@ -7,15 +7,15 @@ import slimeknights.tconstruct.library.materials.Material; import slimeknights.tconstruct.library.materials.MaterialTypes; import slimeknights.tconstruct.library.traits.AbstractTrait; +import static com.sosnitzka.taiga.Fluids.obsidioriteFluid; import static slimeknights.tconstruct.tools.TinkerTraits.*; public class MaterialTraits { // new hardness levels - public static final int TITANITE = 5; - public static final int METEORITE = 6; + public static final int DURANITE = 5; + public static final int VALYRIUM = 6; public static final int VIBRANIUM = 7; - public static final int ADAMANTITE = 8; // Init of new traits public static final AbstractTrait instable = new TraitInstable(); @@ -34,50 +34,65 @@ public class MaterialTraits { public static final AbstractTrait dark = new TraitDark(); public static final AbstractTrait bright = new TraitBright(); public static final AbstractTrait slaughtering = new TraitSlaughtering(); - public static final AbstractTrait haunted = new TraitHaunted(); public static final AbstractTrait fragile = new TraitFragile(); public static final AbstractTrait dissolving = new TraitDissolving(); - public static final AbstractTrait organizing = new TraitOrganizing(); public static final AbstractTrait arcane = new TraitArcane(); public static final AbstractTrait heroic = new TraitHeroic(); public static final AbstractTrait hollow = new TraitHollow(); public static final AbstractTrait diffuse = new TraitDiffuse(); - public static final AbstractTrait randomize = new TraitRandomize(); public static final AbstractTrait reviving = new TraitReviving(); public static final AbstractTrait melting = new TraitMelting(); public static final AbstractTrait traditional = new TraitTraditional(); + public static final AbstractTrait tantrum = new TraitTantrum(); + public static final AbstractTrait catcher = new TraitCatcher(); + public static final AbstractTrait congenial = new TraitCongenial(); + public static final AbstractTrait souleater = new TraitSoulEater(); + public static final AbstractTrait cursed = new TraitCursed(); + public static final AbstractTrait ported = new TraitPorted(); + public static final AbstractTrait decay = new TraitDecay(); + public static final AbstractTrait whirl = new TraitWhirl(); + /** + * Assign traits to related materials. <br> + * <p> + * <p> Example: + * .addTrait(x, HandleMaterialStats.TYPE).addTrait(y, HeadMaterialStats.TYPE) + * .addTrait(z) + */ - public static Material arcanite = new Material("arcanite", TextFormatting.LIGHT_PURPLE).addTrait(arcane, MaterialTypes.HEAD).addTrait(blind, MaterialTypes.HANDLE); public static Material tiberium = new Material("tiberium", TextFormatting.GREEN).addTrait(instable); - public static Material prometheum = new Material("prometheum", TextFormatting.DARK_PURPLE).addTrait(haunted, MaterialTypes.HEAD).addTrait(blind); - public static Material rubium = new Material("rubium", TextFormatting.RED).addTrait(enderference, MaterialTypes.HEAD).addTrait(blind); - public static Material violium = new Material("violium", TextFormatting.DARK_GREEN).addTrait(stonebound, MaterialTypes.HANDLE).addTrait(poisonous, MaterialTypes.HEAD); - public static Material bismuth = new Material("bismuth", TextFormatting.GREEN).addTrait(splintering, MaterialTypes.HEAD).addTrait(splinters, MaterialTypes.HANDLE); - public static Material karmesine = new Material("karmesine", TextFormatting.DARK_RED).addTrait(aridiculous, MaterialTypes.HANDLE).addTrait(superheat, MaterialTypes.HEAD); - public static Material mindorite = new Material("mindorite", TextFormatting.AQUA).addTrait(cheap); - public static Material titanite = new Material("titanite", TextFormatting.GRAY).addTrait(shocking, MaterialTypes.HANDLE).addTrait(sharp, MaterialTypes.HEAD); - public static Material meteorite = new Material("meteorite", TextFormatting.GRAY).addTrait(established, MaterialTypes.HANDLE).addTrait(momentum, MaterialTypes.HEAD); - public static Material adamantite = new Material("adamantite", TextFormatting.GRAY).addTrait(coldblooded, MaterialTypes.HEAD).addTrait(magnetic, MaterialTypes.HANDLE); - public static Material vibranium = new Material("vibranium", TextFormatting.GRAY).addTrait(resonance); - public static Material ignitite = new Material("ignitite", TextFormatting.RED).addTrait(melting, MaterialTypes.HANDLE).addTrait(flammable, MaterialTypes.HEAD); - public static Material palladium = new Material("palladium", TextFormatting.DARK_GRAY).addTrait(dark); - public static Material eternite = new Material("eternite", TextFormatting.AQUA).addTrait(writable2); //.addTrait(traditional) - public static Material mythril = new Material("mythril", TextFormatting.GRAY).addTrait(holy, MaterialTypes.HEAD).addTrait(hellish, MaterialTypes.HANDLE); - public static Material imperomite = new Material("imperomite", TextFormatting.DARK_RED).addTrait(cascade); - public static Material fractoryte = new Material("fractoryte", TextFormatting.DARK_RED).addTrait(fracture); - public static Material noctunyx = new Material("noctunyx", TextFormatting.LIGHT_PURPLE).addTrait(hollow, MaterialTypes.HEAD).addTrait(reviving, MaterialTypes.HANDLE); - public static Material nitronite = new Material("nitronite", TextFormatting.YELLOW).addTrait(uncertain); - public static Material cryptogen = new Material("cryptogen", TextFormatting.DARK_GREEN).addTrait(randomize); - public static Material seismodium = new Material("seismodium", TextFormatting.WHITE).addTrait(heroic).addTrait(fragile); - public static Material aegisalt = new Material("aegisalt", TextFormatting.AQUA).addTrait(analysing); - public static Material ultranite = new Material("ultranite", TextFormatting.AQUA).addTrait(pulverizing); - public static Material bysmuid = new Material("bysmuid", TextFormatting.AQUA).addTrait(organizing, MaterialTypes.HANDLE).addTrait(melting, MaterialTypes.HEAD); - public static Material nucleum = new Material("nucleum", TextFormatting.AQUA).addTrait(diffuse).addTrait(bright, MaterialTypes.HEAD); - public static Material lumixyl = new Material("lumixyl", TextFormatting.YELLOW).addTrait(glimmer); - public static Material dyonite = new Material("dyonite", TextFormatting.GRAY).addTrait(slaughtering, MaterialTypes.HEAD).addTrait(dissolving, MaterialTypes.HANDLE); - public static Material terramite = new Material("terramite", TextFormatting.GRAY).addTrait(naturebound).addTrait(fragile); - public static Material solarium = new Material("solarium", TextFormatting.RED).addTrait(garishly); - public static Material astrium = new Material("astrium", TextFormatting.DARK_PURPLE).addTrait(curvature); - public static Material proxideum = new Material("proxideum", TextFormatting.LIGHT_PURPLE).addTrait(softy, MaterialTypes.HANDLE).addTrait(lightweight); + public static Material aurorium = new Material("aurorium", TextFormatting.RED).addTrait(arcane); + public static Material prometheum = new Material("prometheum", TextFormatting.DARK_PURPLE).addTrait(blind, MaterialTypes.HANDLE).addTrait(catcher); + public static Material duranite = new Material("duranite", TextFormatting.YELLOW).addTrait(analysing); + public static Material valyrium = new Material("valyrium", TextFormatting.DARK_GRAY).addTrait(congenial); + public static Material vibranium = new Material("vibranium", TextFormatting.GRAY).addTrait(resonance, MaterialTypes.HANDLE).addTrait(heroic, MaterialTypes.HEAD); + public static Material karmesine = new Material("karmesine", TextFormatting.RED).addTrait(slaughtering); + public static Material palladium = new Material("palladium", TextFormatting.GOLD).addTrait(dark).addTrait(cursed); + public static Material uru = new Material("uru", TextFormatting.DARK_RED).addTrait(diffuse); + public static Material basalt = new Material("basalt", TextFormatting.WHITE).addTrait(softy); + public static Material eezo = new Material("eezo", TextFormatting.GOLD).addTrait(dissolving); + public static Material triberium = new Material("triberium", TextFormatting.GREEN).addTrait(fragile); + public static Material fractum = new Material("fractum", TextFormatting.DARK_RED).addTrait(fracture); + public static Material violium = new Material("violium", TextFormatting.DARK_PURPLE).addTrait(arcane); + public static Material proxii = new Material("proxii", TextFormatting.LIGHT_PURPLE).addTrait(curvature); + public static Material tritonite = new Material("tritonite", TextFormatting.GOLD).addTrait(whirl); + public static Material ignitz = new Material("ignitz", TextFormatting.RED).addTrait(melting).addTrait(garishly, MaterialTypes.HANDLE); + public static Material imperomite = new Material("imperomite", TextFormatting.DARK_RED).addTrait(hollow); + public static Material solarium = new Material("solarium", TextFormatting.YELLOW).addTrait(pulverizing); + public static Material nihilite = new Material("nihilite", TextFormatting.BLACK).addTrait(souleater); + public static Material adamant = new Material("adamant", TextFormatting.GOLD); + public static Material dyonite = new Material("dyonite", TextFormatting.GREEN).addTrait(tantrum); + public static Material nucleum = new Material("nucleum", TextFormatting.YELLOW).addTrait(decay); + public static Material lumix = new Material("lumix", TextFormatting.YELLOW).addTrait(bright, MaterialTypes.HANDLE).addTrait(glimmer, MaterialTypes.HEAD); + public static Material seismum = new Material("seismum", TextFormatting.GREEN).addTrait(cascade); + public static Material astrium = new Material("astrium", TextFormatting.DARK_PURPLE).addTrait(ported); + public static Material niob = new Material("niob", TextFormatting.RED).addTrait(reviving); + public static Material yrdeen = new Material("yrdeen", TextFormatting.RED).addTrait(naturebound); + public static Material meteorite = new Material("meteorite", TextFormatting.DARK_GREEN).addTrait(crumbling, MaterialTypes.HEAD).addTrait(cheap); + public static Material obsidiorite = new Material("obsidiorite", obsidioriteFluid.getColor()).addTrait(alien); + + public static Material osram = new Material("osram", TextFormatting.GOLD); + public static Material abyssum = new Material("abyssum", TextFormatting.GOLD); + public static Material iox = new Material("iox", TextFormatting.RED); + } diff --git a/src/main/java/com/sosnitzka/taiga/TAIGA.java b/src/main/java/com/sosnitzka/taiga/TAIGA.java index b7d0f00..3a29255 100644 --- a/src/main/java/com/sosnitzka/taiga/TAIGA.java +++ b/src/main/java/com/sosnitzka/taiga/TAIGA.java @@ -4,32 +4,25 @@ import com.google.common.collect.Lists; import com.sosnitzka.taiga.proxy.CommonProxy; import com.sosnitzka.taiga.recipes.CraftingRegistry; import com.sosnitzka.taiga.recipes.SmeltingRegistry; -import com.sosnitzka.taiga.util.FuelHandler; -import com.sosnitzka.taiga.world.ZWorldGen; -import net.minecraft.item.Item; -import net.minecraftforge.fluids.Fluid; +import com.sosnitzka.taiga.world.WorldGen; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventHandler; import net.minecraftforge.fml.common.SidedProxy; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; +import net.minecraftforge.fml.common.event.FMLServerStartingEvent; import net.minecraftforge.fml.common.registry.GameRegistry; -import org.apache.commons.lang3.StringUtils; import slimeknights.tconstruct.library.MaterialIntegration; -import slimeknights.tconstruct.library.TinkerRegistry; -import slimeknights.tconstruct.library.materials.ExtraMaterialStats; -import slimeknights.tconstruct.library.materials.HandleMaterialStats; -import slimeknights.tconstruct.library.materials.HeadMaterialStats; -import slimeknights.tconstruct.library.materials.Material; +import slimeknights.tconstruct.library.materials.BowMaterialStats; import slimeknights.tconstruct.tools.TinkerMaterials; -import java.lang.reflect.Field; import java.util.List; import static com.sosnitzka.taiga.Fluids.*; import static com.sosnitzka.taiga.MaterialTraits.*; -import static com.sosnitzka.taiga.TAIGAConfiguration.*; +import static com.sosnitzka.taiga.util.Utils.integrateMaterial; +import static com.sosnitzka.taiga.util.Utils.integrateOre; import static slimeknights.tconstruct.library.utils.HarvestLevels.*; @Mod(modid = TAIGA.MODID, version = TAIGA.VERSION, guiFactory = TAIGA.GUIFACTORY, dependencies = "required-after:tconstruct@[1.10.2-2.5.0,);" + "required-after:mantle@[1.10.2-1.0.0,)") @@ -42,7 +35,7 @@ public class TAIGA { @SidedProxy(clientSide = "com.sosnitzka.taiga.proxy.ClientProxy", serverSide = "com.sosnitzka.taiga.proxy.CommonProxy") public static CommonProxy proxy; - private List<MaterialIntegration> integrateList = Lists.newArrayList(); // List of materials needed to be integrated + public static List<MaterialIntegration> integrateList = Lists.newArrayList(); // List of materials needed to be integrated @EventHandler public void preInit(FMLPreInitializationEvent e) { @@ -53,23 +46,22 @@ public class TAIGA { Fluids.register(); // Registers all fluids and its buckets Fluids.registerfromItem(); // Registers some special smeltery recipes (not alloying) Alloys.register(); // Registers alloying recipes - registerTinkerMaterials(); // Registers materials and associated fluids and stats into tconstruct } @EventHandler public void init(FMLInitializationEvent e) { proxy.registerModels(); // Registers models on the client side - GameRegistry.registerWorldGenerator(new ZWorldGen(), 100); // Generates ores - GameRegistry.registerFuelHandler(new FuelHandler()); // Registeres fuels' burn times + GameRegistry.registerWorldGenerator(new WorldGen(), 100); // Generates ores + // GameRegistry.registerFuelHandler(new FuelHandler()); Registeres fuels' burn times SmeltingRegistry.register(); // Registers smelting recipes CraftingRegistry.register(); // Registers crafting recipes // Adds new harvest levels' names - harvestLevelNames.put(METEORITE, TinkerMaterials.bone.getTextColor() + "Meteorite"); + harvestLevelNames.put(DURANITE, TinkerMaterials.bone.getTextColor() + "Duranite"); + harvestLevelNames.put(VALYRIUM, TinkerMaterials.bone.getTextColor() + "Valyrium"); harvestLevelNames.put(VIBRANIUM, TinkerMaterials.blueslime.getTextColor() + "Vibranium"); - harvestLevelNames.put(ADAMANTITE, TinkerMaterials.ardite.getTextColor() + "Adamantite"); - harvestLevelNames.put(TITANITE, TinkerMaterials.silver.getTextColor() + "Titanite"); + for (MaterialIntegration m : integrateList) { m.integrateRecipes(); @@ -78,49 +70,11 @@ public class TAIGA { @EventHandler public void postInit(FMLPostInitializationEvent e) { - } - /** - * @param oreSuffix Suffix in the oreDict, also the name. ex) the "Iron" in "ingotIron" - * @param material TConstruct material - * @param fluid material's fluid - * @param headDura Durability (head) - * @param headSpeed Mining speed (head) - * @param headAttack Attack speed (head) - * @param handleMod Durability multiplier (handle) - * @param handleDura Extra durability (handle) - * @param extra Extra durability (binding and more) - * @param headLevel Mining level (head) - * @param craft Can craft parts in part builder - * @param cast Can craft parts by casting with fluid (smeltery) - */ - private void registerTinkerMaterial(String oreSuffix, Material material, Fluid fluid, int headDura, float headSpeed, float headAttack, float handleMod, int handleDura, int extra, int headLevel, boolean craft, boolean cast) { - TinkerRegistry.addMaterialStats(material, new HeadMaterialStats(headDura, headSpeed, headAttack, headLevel)); - TinkerRegistry.addMaterialStats(material, new HandleMaterialStats(handleMod, handleDura)); - TinkerRegistry.addMaterialStats(material, new ExtraMaterialStats(extra)); - - Item item = null; - Field[] items = Items.class.getDeclaredFields(); - for (Field i : items) { - if (i.getName().equals(StringUtils.uncapitalize(oreSuffix) + "Ingot")) { - Item r = null; - try { - r = (Item) i.get(i.getType()); - } catch (Exception e) { - e.printStackTrace(); - } - item = r; - } - } - - material.setFluid(fluid).setCraftable(craft).setCastable(cast).addItem(item, 1, Material.VALUE_Ingot); - material.setRepresentativeItem(item); - - proxy.setRenderInfo(material); - MaterialIntegration integration = new MaterialIntegration(material, fluid, oreSuffix); - integration.integrate(); - integrateList.add(integration); + @EventHandler + public void serverLoad(FMLServerStartingEvent event) { + proxy.registerServerCommands(event); } @@ -128,50 +82,46 @@ public class TAIGA { * Registers materials and associated fluids and stats into tconstruct */ private void registerTinkerMaterials() { + BowMaterialStats shitty = new BowMaterialStats(0.2f, 0.4f, -1f); + + integrateMaterial("Tiberium", tiberium, tiberiumFluid, 80, 3.3f, 4f, 0.7f, -25, 50, DIAMOND, shitty, true, false); + integrateMaterial("Aurorium", aurorium, auroriumFluid, 750, 3.6f, 3.78f, 0.77f, 25, 130, COBALT, 0.45f, 1f, 1); + integrateMaterial("Prometheum", prometheum, prometheumFluid, 844, 4.75f, 6.6f, 1.2f, 25, 50, DURANITE, 0.2f, 0.6f, 3); + integrateMaterial("Duranite", duranite, duraniteFluid, 1550, 3.2f, 3.2f, 1.16f, 100, 100, DURANITE, 0.3f, 1.4f, 2); + integrateMaterial("Valyrium", valyrium, valyriumFluid, 1111, 5.37f, 4.8f, 1.30f, 100, 100, VALYRIUM, 1.1f, 1.2f, 4); + integrateMaterial("Vibranium", vibranium, vibraniumFluid, 1235, 7.62f, 8.1f, 1.3f, 100, 100, VIBRANIUM, 1.1f, 1.8f, 4); + integrateMaterial("Karmesine", karmesine, karmesineFluid, 444, 4.77f, 2.9f, 0.8f, 100, 50, COBALT, shitty, true, true); + integrateMaterial("Palladium", palladium, palladiumFluid, 797, 4.35f, 6.8f, 1.3f, 130, -50, DURANITE, .5f, .2f, 3); + integrateMaterial("Uru", uru, uruFluid, 877, 2f, 8.2f, 1.5f, -50, 175, VALYRIUM, 1.3f, 0.8f, 6); + integrateMaterial("Eezo", eezo, eezoFluid, 50, 14f, 3.5f, .1f, 10, 10, COBALT, shitty, true, false); + integrateMaterial("Basalt", basalt, basaltFluid, 200, 3, 2.5f, 0.5f, -25, 25, STONE, shitty, true, false); + integrateMaterial("Triberium", triberium, triberiumFluid, 223, 6.2f, 8.35f, 0.63f, 50, 50, DIAMOND, shitty, true, true); + integrateMaterial("Fractum", fractum, fractumFluid, 538, 5.71f, 6.93f, 0.88f, 58, 117, DIAMOND, shitty); + integrateMaterial("Violium", violium, violiumFluid, 925, 3.8f, 3.75f, .90f, 175, 50, COBALT, .45f, .95f, 1); + integrateMaterial("Proxii", proxii, proxiiFluid, 625, 6.8f, 4.21f, 1.25f, 80, 25, DURANITE, .35f, .5f, 3); + integrateMaterial("Tritonite", tritonite, tritoniteFluid, 780, 8f, 3.3f, 1.45f, -25, 150, COBALT, shitty); + integrateMaterial("Ignitz", ignitz, ignitzFluid, 350, 2f, 6.66f, .85f, 150, 250, COBALT, .8f, .8f, 3); + integrateMaterial("Imperomite", imperomite, imperomiteFluid, 1350, 4.65f, 5.9f, 1.15f, -100, 150, DURANITE, 1.2f, 1.8f, 2); + integrateMaterial("Solarium", solarium, solariumFluid, 1100, 13.78f, 7f, 1.25f, 150, 150, VIBRANIUM, .8f, 1.5f, 5); + integrateMaterial("Nihilite", nihilite, nihiliteFluid, 400, 2.8f, 4.50f, .77f, 350, 155, VALYRIUM, 1.5f, .8f, 3); + integrateMaterial("Adamant", adamant, adamantFluid, 1750, 6f, 6f, 2f, 0, 0, VIBRANIUM, .35f, 1.85f, 8); + integrateMaterial("Dyonite", dyonite, dyoniteFluid, 900, 6.45f, 5f, 0.66f, -50, 250, DURANITE, 2, .9f, -1); + integrateMaterial("Nucleum", nucleum, nucleumFluid, 505, 15.5f, 9.5f, 1.05f, 100, 125, VALYRIUM, shitty); + integrateMaterial("Lumix", lumix, lumixFluid, 666, 3.84f, 3.92f, 0.85f, 250, 200, COBALT, .8f, 1.3f, 1); + integrateMaterial("Seismum", seismum, seismumFluid, 780, 3.66f, 6.05f, .95f, 250, 50, COBALT, shitty); + integrateMaterial("Astrium", astrium, astriumFluid, 750, 8.35f, 5.4f, 0.95f, -100, 200, COBALT, .7f, .8f, 2); + integrateMaterial("Niob", niob, niobFluid, 700, 4.5f, 4.5f, 2f, 200, 50, COBALT, shitty); + integrateMaterial("Yrdeen", yrdeen, yrdeenFluid, 999, 9.1f, 3f, 1.35f, 150, 250, COBALT, shitty); + integrateMaterial("Meteorite", meteorite, meteoriteFluid, 1500, 1.5f, 1.5f, .5f, 0, 0, OBSIDIAN, shitty); + integrateMaterial("Obsidiorite", obsidiorite, obsidioriteFluid, 1500, .5f, .5f, 1, -100, 100, COBALT, shitty); + // when more traits / ideas are available + // integrateMaterial("Uru", uru, uruFluid, (552), 8.75f, 2.87f, 0.98f, -100, 200, DIAMOND); + // integrateMaterial("Osram", osram, osramFluid, 500, 5f, 3f, 0.8f, -50, 50, DIAMOND); + // integrateMaterial("Abyssum", abyssum, abyssumFluid, 100, 1f, 1f, 1f, 300, 300, DIAMOND); + integrateOre("Osram", osramFluid); + integrateOre("Abyssum", abyssumFluid); + integrateOre("Iox", ioxFluid); + - double d = durabilityFactorGeneral; - System.out.println("Durability=" + d); - float s = (float) speedFactorGeneral; - System.out.println("Speed=" + s); - float a = (float) attackFactorGeneral; - System.out.println("Attack=" + a); - - // ARCANE ORES - registerTinkerMaterial("Tiberium", tiberium, tiberiumFluid, (int) (223 * d), 6.2f * s, 8.35f * a, 0.63f, 50, 50, OBSIDIAN, false, true); - registerTinkerMaterial("Rubium", rubium, rubiumFluid, (int) (351 * d), 5.15f * s, 7.00f * a, 1.05f, -100, 250, COBALT, false, true); - registerTinkerMaterial("Prometheum", prometheum, prometheumFluid, (int) (539 * d), 3.6f * s, 6.60f, 0.90f, 0, 150, TITANITE, false, true); - registerTinkerMaterial("Arcanite", arcanite, arcaniteFluid, (int) (698 * d), 4.3f * s, 7.88f * a, 0.85f, -50, 150, METEORITE, false, true); - // SOLIDE ORES - registerTinkerMaterial("Titanite", titanite, titaniteFluid, (int) (811 * d), 4.8f * s, 6.40f * a, 1.00f, -50, 150, TITANITE, false, true); - registerTinkerMaterial("Meteorite", meteorite, meteoriteFluid, (int) (823 * d), 6.1f * s, 6.83f * a, 1.20f, -50, 200, METEORITE, false, true); - registerTinkerMaterial("Vibranium", vibranium, vibraniumFluid, (int) (917 * d), 7.45f * s, 7.17f * a, 1.15f, 50, 150, VIBRANIUM, false, true); - registerTinkerMaterial("Adamantite", adamantite, adamantiteFluid, (int) (981 * d), 8.9f * s, 9.11f * a, 1.20f, -200, 300, ADAMANTITE, false, true); - // ETHERE ORES - registerTinkerMaterial("Eternite", eternite, eterniteFluid, (int) (592 * d), 7.35f * s, 1.95f * a, 1.10f, 150, 150, COBALT, false, true); - registerTinkerMaterial("Mythril", mythril, mythrilFluid, (int) (552 * d), 8.75f * s, 2.87f * a, 0.98f, -100, 200, TITANITE, false, true); - registerTinkerMaterial("Palladium", palladium, palladiumFluid, (int) (578 * d), 10.4f * s, 3.13f * a, 1.09f, 0, 100, METEORITE, false, true); - registerTinkerMaterial("Ignitite", ignitite, ignititeFluid, (int) (673 * d), 12.1f * s, 4.10f * a, 1.15f, -50, 150, VIBRANIUM, false, true); - // RATIO ORES - registerTinkerMaterial("Bismuth", bismuth, bismuthFluid, (int) (235 * d), 5.33f * s, 3.80f * a, 1.15f, 17, 117, OBSIDIAN, false, true); - registerTinkerMaterial("Violium", violium, violiumFluid, (int) (427 * d), 4.2f * s, 3.30f * a, 1.00f, 133, 150, COBALT, false, true); - registerTinkerMaterial("Mindorite", mindorite, mindoriteFluid, (int) (458 * d), 6.41f * s, 4.40f * a, 0.90f, 83, 100, TITANITE, false, true); - registerTinkerMaterial("Karmesine", karmesine, karmesineFluid, (int) (627 * d), 6.75f * s, 5.10f * a, 0.99f, 0, 200, METEORITE, false, true); - // Material from alloys - registerTinkerMaterial("Nitronite", nitronite, nitroniteFluid, (int) (745 * d), 6.74f * s, 8.74f * a, 0.85f, 75, 93, TITANITE, false, true); - registerTinkerMaterial("Bysmuid", bysmuid, bysmuidFluid, (int) (305 * d), 5.22f * s, 6.47f * a, 1.09f, -80, 197, COBALT, false, true); - registerTinkerMaterial("Ultranite", ultranite, ultraniteFluid, (int) (1016 * d), 5.72f * s, 6.76f * a, 1.02f, -120, 210, VIBRANIUM, false, true); - registerTinkerMaterial("Astrium", astrium, astriumFluid, (int) (670 * d), 5.28f * s, 9.14f * a, 0.91f, -45, 170, VIBRANIUM, false, true); - registerTinkerMaterial("Imperomite", imperomite, imperomiteFluid, (int) (770 * d), 11.60f * s, 3.57f * a, 1.05f, -38, 125, METEORITE, false, true); - registerTinkerMaterial("Dyonite", dyonite, dyoniteFluid, (int) (733 * d), 6.14f * s, 7.69f * a, 0.97f, -15, 140, TITANITE, false, true); - registerTinkerMaterial("Solarium", solarium, solariumFluid, (int) (1020 * d), 13.78f * s, 4.64f * a, 1.15f, 0, 150, ADAMANTITE, false, true); - registerTinkerMaterial("Fractoryte", fractoryte, fractoryteFluid, (int) (1071 * d), 7.65f * s, 7.75f * a, 1.15f, -250, 283, METEORITE, false, true); - registerTinkerMaterial("Aegisalt", aegisalt, aegisaltFluid, (int) (355 * d), 8.88f * s, 3.18f * a, 1.00f, 175, 125, TITANITE, false, true); - registerTinkerMaterial("Noctunyx", noctunyx, noctunyxFluid, (int) (713 * d), 10.43f * s, 3.25f * a, 0.99f, -125, 183, METEORITE, false, true); - registerTinkerMaterial("Nucleum", nucleum, nucleumFluid, (int) (503 * d), 11.30f * s, 3.22f * a, 1.05f, 100, 125, TITANITE, false, true); - registerTinkerMaterial("Seismodium", seismodium, seismodiumFluid, (int) (879 * d), 13.85f * s, 4.19f * a, 1.17f, -75, 169, VIBRANIUM, false, true); - registerTinkerMaterial("Lumixyl", lumixyl, lumixylFluid, (int) (357 * d), 4.64f * s, 5.92f * a, 1.05f, 15, 130, COBALT, false, true); - registerTinkerMaterial("Terramite", terramite, terramiteFluid, (int) (482 * d), 7.25f * s, 2.85f * a, 1.03f, 208, 150, TITANITE, false, true); - registerTinkerMaterial("Cryptogen", cryptogen, cryptogenFluid, (int) (538 * d), 5.71f * s, 6.93f * a, 0.88f, 58, 117, METEORITE, false, true); - registerTinkerMaterial("Proxideum", proxideum, proxideumFluid, (int) (597 * d), 10.55f * s, 4.21f * a, 0.99f, -60, 200, METEORITE, false, true); } }
\ No newline at end of file diff --git a/src/main/java/com/sosnitzka/taiga/TAIGAConfiguration.java b/src/main/java/com/sosnitzka/taiga/TAIGAConfiguration.java index 4c1c630..b6e5990 100644 --- a/src/main/java/com/sosnitzka/taiga/TAIGAConfiguration.java +++ b/src/main/java/com/sosnitzka/taiga/TAIGAConfiguration.java @@ -17,14 +17,11 @@ public class TAIGAConfiguration { public static final String CATEGORY_NAME_ORE_GEN = "category_ore_gen"; public static final String CATEGORY_NAME_ORE_VAL = "category_ore_val"; - public static double oreFactorGeneral; public static double speedFactorGeneral; public static double attackFactorGeneral; public static double durabilityFactorGeneral; public static double ironFactor; - public static double slagironFactor; - public static double slaggoldFactor; public static double titaniteFactor; public static double adamantiteFactor; public static double arcaniteFactor; @@ -45,9 +42,6 @@ public class TAIGAConfiguration { public static double rottengroundFactor; public static double ligniteFactor; - - public static boolean slagIronGen; - public static boolean slagGoldGen; public static boolean ironGen; private static Configuration config = null; @@ -83,7 +77,7 @@ public class TAIGAConfiguration { config.load(); } - /** + /* * Declaration of general ore generation values: <br> * Activation of additional ores (iron/gold) <br> * Ore generation chance multiplier @@ -104,9 +98,6 @@ public class TAIGAConfiguration { ironSwitch.setComment("Switch ore on/off"); ironSwitch.setLanguageKey("gui.taiga_configuration.gen_iron"); - Property oreFactorGeneralProp = config.get(CATEGORY_NAME_GENERAL, "Ore factor", RESFAC_DEFAULT_VALUE, - "General multiplier for all TAIGA ores at once", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE); - oreFactorGeneralProp.setLanguageKey("gui.taiga_configuration.ore_multiplier"); Property durabilityFactorGeneralProp = config.get(CATEGORY_NAME_GENERAL, "Durability factor", RESFAC_DEFAULT_VALUE, "General multiplier for all TAIGA materials", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE); durabilityFactorGeneralProp.setLanguageKey("gui.taiga_configuration.durability_multiplier"); @@ -124,25 +115,18 @@ public class TAIGAConfiguration { propOrderGeneral.add(ironSwitch.getName()); propOrderGeneral.add(slagIronSwitch.getName()); propOrderGeneral.add(slagGoldSwitch.getName()); - propOrderGeneral.add(oreFactorGeneralProp.getName()); propOrderGeneral.add(durabilityFactorGeneralProp.getName()); propOrderGeneral.add(speedFactorGeneralProp.getName()); propOrderGeneral.add(attackFactorGeneralProp.getName()); config.setCategoryPropertyOrder(CATEGORY_NAME_GENERAL, propOrderGeneral); - /** + /* * Declaration of specific ore generation values: <br> * Generation chance multiplier */ Property ironFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Iron factor", RESFAC_DEFAULT_VALUE, "specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE); ironFactorProp.setLanguageKey("gui.taiga_configuration.titanite_multiplier"); - Property slagironFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Slagiorn factor", RESFAC_DEFAULT_VALUE, - "specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE); - slagironFactorProp.setLanguageKey("gui.taiga_configuration.titanite_multiplier"); - Property slaggoldFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Slaggold factor", RESFAC_DEFAULT_VALUE, - "specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE); - slaggoldFactorProp.setLanguageKey("gui.taiga_configuration.titanite_multiplier"); Property titaniteFactorProp = config.get(CATEGORY_NAME_ORE_GEN, "Titanite factor", RESFAC_DEFAULT_VALUE, "specific generation multiplier", RESFAC_MIN_VALUE, RESFAC_MAX_VALUE); titaniteFactorProp.setLanguageKey("gui.taiga_configuration.titanite_multiplier"); @@ -204,8 +188,6 @@ public class TAIGAConfiguration { List<String> propOrderOreGen = new ArrayList<String>(); propOrderOreGen.add(ironFactorProp.getName()); - propOrderOreGen.add(slagironFactorProp.getName()); - propOrderOreGen.add(slaggoldFactorProp.getName()); propOrderOreGen.add(ligniteFactorProp.getName()); propOrderOreGen.add(basaltFactorProp.getName()); propOrderOreGen.add(rottengroundFactorProp.getName()); @@ -233,10 +215,6 @@ public class TAIGAConfiguration { if (readFieldsFromConfig) { - oreFactorGeneral = oreFactorGeneralProp.getDouble(RESFAC_DEFAULT_VALUE); - if (oreFactorGeneral > RESFAC_MAX_VALUE || oreFactorGeneral < RESFAC_MIN_VALUE) { - oreFactorGeneral = RESFAC_DEFAULT_VALUE; - } durabilityFactorGeneral = durabilityFactorGeneralProp.getDouble(RESFAC_DEFAULT_VALUE); if (durabilityFactorGeneral > RESFAC_MAX_VALUE || durabilityFactorGeneral < RESFAC_MIN_VALUE) { durabilityFactorGeneral = RESFAC_DEFAULT_VALUE; @@ -250,20 +228,10 @@ public class TAIGAConfiguration { attackFactorGeneral = RESFAC_DEFAULT_VALUE; } ironGen = ironSwitch.getBoolean(GENERATION_DEFAULT_VALUE); - slagIronGen = slagIronSwitch.getBoolean(GENERATION_DEFAULT_VALUE); - slagGoldGen = slagGoldSwitch.getBoolean(GENERATION_DEFAULT_VALUE); ironFactor = ironFactorProp.getDouble(RESFAC_DEFAULT_VALUE); if (ironFactor > RESFAC_MAX_VALUE || ironFactor < RESFAC_MIN_VALUE) { ironFactor = RESFAC_DEFAULT_VALUE; } - slagironFactor = slagironFactorProp.getDouble(RESFAC_DEFAULT_VALUE); - if (slagironFactor > RESFAC_MAX_VALUE || slagironFactor < RESFAC_MIN_VALUE) { - slagironFactor = RESFAC_DEFAULT_VALUE; - } - slaggoldFactor = slaggoldFactorProp.getDouble(RESFAC_DEFAULT_VALUE); - if (slaggoldFactor > RESFAC_MAX_VALUE || slaggoldFactor < RESFAC_MIN_VALUE) { - slaggoldFactor = RESFAC_DEFAULT_VALUE; - } titaniteFactor = titaniteFactorProp.getDouble(RESFAC_DEFAULT_VALUE); if (titaniteFactor > RESFAC_MAX_VALUE || titaniteFactor < RESFAC_MIN_VALUE) { titaniteFactor = RESFAC_DEFAULT_VALUE; @@ -343,9 +311,6 @@ public class TAIGAConfiguration { } ironSwitch.set(ironGen); - slagIronSwitch.set(slagIronGen); - slagGoldSwitch.set(slagGoldGen); - oreFactorGeneralProp.set(oreFactorGeneral); durabilityFactorGeneralProp.set(durabilityFactorGeneral); speedFactorGeneralProp.set(speedFactorGeneral); attackFactorGeneralProp.set(attackFactorGeneral); diff --git a/src/main/java/com/sosnitzka/taiga/blocks/BlockCobble.java b/src/main/java/com/sosnitzka/taiga/blocks/BlockCobble.java new file mode 100644 index 0000000..f525e99 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/blocks/BlockCobble.java @@ -0,0 +1,33 @@ +package com.sosnitzka.taiga.blocks; + +import com.sosnitzka.taiga.generic.BasicBlock; +import net.minecraft.block.material.Material; +import net.minecraft.init.Blocks; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.world.BlockEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; + +import static slimeknights.tconstruct.TConstruct.random; + +public class BlockCobble extends BasicBlock { + + public BlockCobble(String name, Material material, float hardness, float resistance, int harvestlevel, float light, String oreDictPrefix) { + super(name, material, hardness, resistance, harvestlevel, light, oreDictPrefix); + MinecraftForge.EVENT_BUS.register(this); + } + + @SubscribeEvent + public void breakMoonRock(BlockEvent.BreakEvent e) { + if (e.getWorld().getBlockState(e.getPos()).getBlock().equals(this)) { + if (!e.getWorld().isRemote && random.nextFloat() > .9) { + e.setCanceled(true); + if (random.nextBoolean()) { + e.getWorld().setBlockState(e.getPos(), Blocks.LAVA.getDefaultState()); + } else { + e.getWorld().newExplosion(null, e.getPos().getX(), e.getPos().getY() + 1 / 16f, e.getPos().getZ(), 0.5f + random.nextFloat() * 1.5f, false, true); + } + } + } + } + +} diff --git a/src/main/java/com/sosnitzka/taiga/blocks/BlockLignite.java b/src/main/java/com/sosnitzka/taiga/blocks/BlockLignite.java index d399a9e..ebd4d75 100644 --- a/src/main/java/com/sosnitzka/taiga/blocks/BlockLignite.java +++ b/src/main/java/com/sosnitzka/taiga/blocks/BlockLignite.java @@ -3,7 +3,6 @@ package com.sosnitzka.taiga.blocks; import com.sosnitzka.taiga.generic.BasicBlock; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; -import net.minecraft.item.Item; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; import net.minecraft.world.IBlockAccess; @@ -12,8 +11,6 @@ import net.minecraft.world.World; import javax.annotation.ParametersAreNonnullByDefault; import java.util.Random; -import static com.sosnitzka.taiga.Items.lignite; - public class BlockLignite extends BasicBlock { public BlockLignite() { @@ -34,9 +31,4 @@ public class BlockLignite extends BasicBlock { public int quantityDropped(IBlockState state, int fortune, Random random) { return random.nextInt(3) + 1 + fortune; } - - @Override - public Item getItemDropped(IBlockState state, Random rand, int fortune) { - return lignite; - } } diff --git a/src/main/java/com/sosnitzka/taiga/blocks/BlockMetal.java b/src/main/java/com/sosnitzka/taiga/blocks/BlockMetal.java new file mode 100644 index 0000000..1aa4017 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/blocks/BlockMetal.java @@ -0,0 +1,70 @@ +package com.sosnitzka.taiga.blocks; + +import net.minecraft.block.material.Material; +import net.minecraft.block.properties.PropertyEnum; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IStringSerializable; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; +import slimeknights.mantle.block.EnumBlock; + +import javax.annotation.Nonnull; +import java.util.List; +import java.util.Locale; + +public class BlockMetal extends EnumBlock<BlockMetal.MetalTypes> { + + public static final PropertyEnum<MetalTypes> TYPE = PropertyEnum.create("type", MetalTypes.class); + + public BlockMetal() { + super(Material.IRON, TYPE, MetalTypes.class); + } + + @SideOnly(Side.CLIENT) + @Override + public void getSubBlocks(@Nonnull Item itemIn, CreativeTabs tab, List<ItemStack> list) { + for (MetalTypes type : MetalTypes.values()) { + list.add(new ItemStack(this, 1, type.getMeta())); + } + } + + public enum MetalTypes implements IStringSerializable, EnumBlock.IEnumMeta { + TIBERIUM, + AURODIUM, + PROMETHEUM, + ARCANITE, + TITANITE, + MYTHRIL, + URU, + VIBRANIUM, + ETERNITE, + FRACTORYTE, + PALLADIUM, + IGNITITE, + BISMUTH, + JAUXITE, + VIOLIUM, + KARMESINE; + + public final int meta; + + MetalTypes() { + meta = ordinal(); + } + + @Override + public String getName() { + return this.toString().toLowerCase(Locale.US); + } + + @Override + public int getMeta() { + return meta; + } + + } + + +} diff --git a/src/main/java/com/sosnitzka/taiga/blocks/BlockMeteoriteRock.java b/src/main/java/com/sosnitzka/taiga/blocks/BlockMeteoriteRock.java new file mode 100644 index 0000000..d87794b --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/blocks/BlockMeteoriteRock.java @@ -0,0 +1,33 @@ +package com.sosnitzka.taiga.blocks; + +import com.sosnitzka.taiga.generic.BasicBlock; +import net.minecraft.block.material.Material; +import net.minecraft.block.state.IBlockState; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.world.BlockEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; + +import static slimeknights.tconstruct.TConstruct.random; + +public class BlockMeteoriteRock extends BasicBlock { + + private IBlockState cobbblestate; + + public BlockMeteoriteRock(String name, Material material, float hardness, float resistance, int harvestlevel, float light, String oreDictPrefix, IBlockState cobble) { + super(name, material, hardness, resistance, harvestlevel, light, oreDictPrefix); + MinecraftForge.EVENT_BUS.register(this); + this.cobbblestate = cobble; + } + + @SubscribeEvent + public void breakMoonRock(BlockEvent.BreakEvent e) { + if (e.getWorld().getBlockState(e.getPos()).getBlock().equals(this)) { + if (!e.getWorld().isRemote && random.nextFloat() > .25) { + e.setCanceled(true); + e.getWorld().setBlockState(e.getPos(), cobbblestate); + } + } + + } + +} diff --git a/src/main/java/com/sosnitzka/taiga/blocks/BlockOre.java b/src/main/java/com/sosnitzka/taiga/blocks/BlockOre.java new file mode 100644 index 0000000..e0ad9f6 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/blocks/BlockOre.java @@ -0,0 +1,68 @@ +package com.sosnitzka.taiga.blocks; + +import net.minecraft.block.material.Material; +import net.minecraft.block.properties.PropertyEnum; +import net.minecraft.util.BlockRenderLayer; +import net.minecraft.util.IStringSerializable; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; +import slimeknights.mantle.block.EnumBlock; + +import javax.annotation.Nonnull; +import java.util.Locale; + +public class BlockOre extends EnumBlock<BlockOre.OreTypes> { + + public static final PropertyEnum<OreTypes> TYPE = PropertyEnum.create("type", OreTypes.class); + + public BlockOre() { + this(Material.ROCK); + } + + public BlockOre(Material material) { + super(material, TYPE, OreTypes.class); + } + + @Nonnull + @Override + @SideOnly(Side.CLIENT) + public BlockRenderLayer getBlockLayer() { + return BlockRenderLayer.CUTOUT_MIPPED; + } + + public enum OreTypes implements IStringSerializable, EnumBlock.IEnumMeta { + TIBERIUM, + AURODIUM, + PROMETHEUM, + ARCANITE, + TITANITE, + MYTHRIL, + URU, + VIBRANIUM, + ETERNITE, + FRACTORYTE, + PALLADIUM, + IGNITITE, + BISMUTH, + JAUXITE, + VIOLIUM, + KARMESINE; + + public final int meta; + + OreTypes() { + meta = ordinal(); + } + + @Override + public String getName() { + return this.toString().toLowerCase(Locale.US); + } + + @Override + public int getMeta() { + return meta; + } + } + +} diff --git a/src/main/java/com/sosnitzka/taiga/blocks/BlockTiberium.java b/src/main/java/com/sosnitzka/taiga/blocks/BlockTiberium.java index 977e65a..c3167a0 100644 --- a/src/main/java/com/sosnitzka/taiga/blocks/BlockTiberium.java +++ b/src/main/java/com/sosnitzka/taiga/blocks/BlockTiberium.java @@ -4,9 +4,9 @@ import com.sosnitzka.taiga.Items; import com.sosnitzka.taiga.generic.BasicBlock; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; import net.minecraft.world.Explosion; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -16,12 +16,12 @@ import java.util.Random; import static com.sosnitzka.taiga.util.Utils.PREFIX_ORE; import static slimeknights.tconstruct.TConstruct.random; -import static slimeknights.tconstruct.library.utils.HarvestLevels.OBSIDIAN; +import static slimeknights.tconstruct.library.utils.HarvestLevels.STONE; public class BlockTiberium extends BasicBlock { public BlockTiberium() { - super("tiberium_ore", Material.ROCK, 15.0f, 2.0f, OBSIDIAN, 1.0F, PREFIX_ORE); + super("tiberium_ore", Material.ROCK, 15.0f, 2.0f, STONE, 1.0F, PREFIX_ORE); } @Override @@ -39,23 +39,23 @@ public class BlockTiberium extends BasicBlock { @Override public Item getItemDropped(IBlockState state, Random rand, int fortune) { - return Items.tiberiumShardInstable; + return Items.tiberiumDust; } @Override public void onBlockDestroyedByExplosion(World worldIn, BlockPos pos, Explosion explosionIn) { if (!worldIn.isRemote) { - if (MathHelper.getRandomIntegerInRange(random, 1, 15) > 10) { - worldIn.newExplosion(null, pos.getX(), pos.getY(), pos.getZ(), 1.6f, true, true); + if (random.nextFloat() < 0.5) { + worldIn.newExplosion(null, pos.getX(), pos.getY(), pos.getZ(), random.nextFloat() * 2f + 1.5f, true, true); } } } @Override - public void onBlockDestroyedByPlayer(World worldIn, BlockPos pos, IBlockState state) { - if (MathHelper.getRandomIntegerInRange(random, 1, 30) < 3) { + public void onBlockHarvested(World worldIn, BlockPos pos, IBlockState state, EntityPlayer player) { + if (random.nextFloat() < 0.1) { if (!worldIn.isRemote) { - worldIn.newExplosion(null, pos.getX(), pos.getY() + 1 / 16f, pos.getZ(), 1.1f, true, true); + worldIn.newExplosion(null, pos.getX(), pos.getY() + 1 / 16f, pos.getZ(), 1.5f, true, true); } } } diff --git a/src/main/java/com/sosnitzka/taiga/generic/BasicTinkerFluid.java b/src/main/java/com/sosnitzka/taiga/generic/BasicTinkerFluid.java index c32f54d..57c4924 100644 --- a/src/main/java/com/sosnitzka/taiga/generic/BasicTinkerFluid.java +++ b/src/main/java/com/sosnitzka/taiga/generic/BasicTinkerFluid.java @@ -11,7 +11,7 @@ public class BasicTinkerFluid extends FluidMolten { private boolean toolForge; - public BasicTinkerFluid(String fluidName, int color, boolean toolForge, int temp, int lumen, int visk) { + public BasicTinkerFluid(String fluidName, int color, int temp, int lumen, int visk) { // Constructs the FluidMolten with textures and color super(fluidName, color, new ResourceLocation("tconstruct:blocks/fluids/molten_metal"), new ResourceLocation("tconstruct:blocks/fluids/molten_metal_flow")); //Settings @@ -20,9 +20,10 @@ public class BasicTinkerFluid extends FluidMolten { this.setLuminosity(lumen); this.setViscosity(visk); this.setDensity(2000); - this.toolForge = toolForge; + this.toolForge = true; } + public boolean isToolForge() { return toolForge; } diff --git a/src/main/java/com/sosnitzka/taiga/proxy/ClientProxy.java b/src/main/java/com/sosnitzka/taiga/proxy/ClientProxy.java index 5b512b8..8c024b5 100644 --- a/src/main/java/com/sosnitzka/taiga/proxy/ClientProxy.java +++ b/src/main/java/com/sosnitzka/taiga/proxy/ClientProxy.java @@ -23,8 +23,10 @@ import slimeknights.tconstruct.library.materials.Material; import javax.annotation.Nonnull; import java.lang.reflect.Field; +import static com.sosnitzka.taiga.Fluids.*; import static com.sosnitzka.taiga.MaterialTraits.*; +@SuppressWarnings("unused") public class ClientProxy extends CommonProxy { private static void registerBlockModel(Block block) { @@ -65,33 +67,34 @@ public class ClientProxy extends CommonProxy { } public void setRenderInfo(final Material material) { - - if (material.equals(adamantite)) specialRender(material, 0xd55cdf, 0.5f, 0.6f, 0.2f); - else if (material.equals(solarium)) specialRender(material, 0xFFDD11, 0.7f, 0.3f, 0.1f); - else if (material.equals(proxideum)) specialRender(material, 0x2d8f8b, 0.4f, 0.3f, 0.1f); - else if (material.equals(meteorite)) specialRender(material, 0xaaaaaa, 0.6f, 0.8f, 0.0f); - else if (material.equals(tiberium)) specialRender(material, 0x33ff33, 0.5f, 0.2f, 0.1f); - else if (material.equals(bismuth)) specialRender(material, 0xffffff, 0.3f, 0.0f, 0.0f); - else if (material.equals(bysmuid)) specialRender(material, 0xccccee, 0.6f, 0.2f, 0.0f); - else if (material.equals(imperomite)) specialRender(material, 0x8decaf, 0.8f, 0.5f, -0.0f); - else if (material.equals(noctunyx)) specialRender(material, 0xce70e8, 0.5f, 0.2f, 0.3f); - else if (material.equals(nucleum)) specialRender(material, 0xd9f446, 1.0f, 0.4f, 0.3f); - else if (material.equals(dyonite)) specialRender(material, 0xffe240, 0.6f, 1.0f, 0.2f); - else if (material.equals(arcanite)) specialRender(material, 0x5e5499, 0.6f, 0.8f, 0.2f); + if (material.equals(adamant)) metalRender(material, adamantFluid.getColor(), 1f, 0.8f, 0f); + else if (material.equals(duranite)) metalRender(material, duraniteFluid.getColor(), .4f, .4f, 0); + else if (material.equals(tiberium)) metalRender(material, tiberiumFluid.getColor(), 1f, .3f, 0f); + else if (material.equals(palladium)) metalRender(material, palladiumFluid.getColor(), .7f, .6f, 0f); + else if (material.equals(osram)) metalRender(material, osramFluid.getColor(), .7f, .6f, 0f); + else if (material.equals(tritonite)) metalRender(material, tritoniteFluid.getColor(), .3f, .3f, 0f); + else if (material.equals(nucleum)) metalRender(material, nucleumFluid.getColor(), .4f, .6f, .2f); + else if (material.equals(triberium)) metalRender(material, triberiumFluid.getColor(), 2f, 2f, 0.5f); + else if (material.equals(solarium)) metalRender(material, solariumFluid.getColor(), 1.5f, 1.5f, 0.5f); + else if (material.equals(uru)) metalRender(material, uruFluid.getColor(), 1.0f, 1.0f, 0.3f); + else if (material.equals(imperomite)) metalRender(material, imperomiteFluid.getColor(), 0.4f, 1.0f, 0.7f); + else if (material.equals(vibranium)) metalRender(material, vibraniumFluid.getColor(), 0.6f, .8f, 1f); + else if (material.equals(valyrium)) metalRender(material, valyriumFluid.getColor(), .8f, 1.5f, -0.1f); else { - material.setRenderInfo(new MaterialRenderInfo.BlockTexture("taiga:blocks/" + material.getIdentifier() + "_block")); + material.setRenderInfo(new MaterialRenderInfo.BlockTexture("taiga:blocks/block/" + material.getIdentifier())); } } - private void specialRender(final Material material, final int f, final float shine, final float brightness, final float hueshift) { + private void metalRender(final Material material, final int f, final float shine, final float brightness, final float hueshift) { material.setRenderInfo(new MaterialRenderInfo.AbstractMaterialRenderInfo() { @Override public TextureAtlasSprite getTexture(TextureAtlasSprite baseTexture, String location) { - return new MetalTextureTexture("taiga:blocks/materials/" + material.getIdentifier(), baseTexture, location, f, shine, brightness, hueshift); + return new MetalTextureTexture("taiga:materials/" + material.getIdentifier(), baseTexture, location, f, shine, brightness, hueshift); } }); } + @Override public void registerFluidModels(Fluid fluid) { if (fluid == null) { diff --git a/src/main/java/com/sosnitzka/taiga/proxy/CommonProxy.java b/src/main/java/com/sosnitzka/taiga/proxy/CommonProxy.java index c3b2e64..c340408 100644 --- a/src/main/java/com/sosnitzka/taiga/proxy/CommonProxy.java +++ b/src/main/java/com/sosnitzka/taiga/proxy/CommonProxy.java @@ -2,6 +2,7 @@ package com.sosnitzka.taiga.proxy; import com.sosnitzka.taiga.TAIGAConfiguration; import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fml.common.event.FMLServerStartingEvent; import slimeknights.tconstruct.library.materials.Material; public class CommonProxy { @@ -20,4 +21,7 @@ public class CommonProxy { public void initConfig() { TAIGAConfiguration.preInit(); } + + public void registerServerCommands(FMLServerStartingEvent e) { + } } diff --git a/src/main/java/com/sosnitzka/taiga/recipes/CraftingRegistry.java b/src/main/java/com/sosnitzka/taiga/recipes/CraftingRegistry.java index 72d4fe2..ed366d9 100644 --- a/src/main/java/com/sosnitzka/taiga/recipes/CraftingRegistry.java +++ b/src/main/java/com/sosnitzka/taiga/recipes/CraftingRegistry.java @@ -1,76 +1,7 @@ package com.sosnitzka.taiga.recipes; - -import net.minecraft.block.Block; -import net.minecraft.init.Items; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fml.common.registry.GameRegistry; -import net.minecraftforge.oredict.ShapedOreRecipe; - -import static com.sosnitzka.taiga.Blocks.*; -import static com.sosnitzka.taiga.Items.*; -import static slimeknights.tconstruct.shared.TinkerCommons.matNecroticBone; - public class CraftingRegistry { public static void register() { - GameRegistry.addShapelessRecipe(new ItemStack(fuel_brick), Items.COAL, Items.COAL, Items.COAL, lignite, lignite, lignite); - - GameRegistry.addShapelessRecipe(new ItemStack(luminar_dust), Items.REDSTONE, Items.GLOWSTONE_DUST); - GameRegistry.addShapelessRecipe(new ItemStack(glimmerstone_dust), luminar_dust, Items.BLAZE_POWDER); - GameRegistry.addShapelessRecipe(new ItemStack(glimmerstone_dust), Items.REDSTONE, Items.GLOWSTONE_DUST, Items.BLAZE_POWDER); - - GameRegistry.addShapelessRecipe(new ItemStack(glimmercoal), Items.COAL, glimmerstone_dust); - GameRegistry.addShapelessRecipe(new ItemStack(glimmercoal), lignite, glimmerstone_dust); - - GameRegistry.addShapelessRecipe(new ItemStack(radiant_pearl), Items.ENDER_PEARL, luminar_dust, new ItemStack(Items.DYE, 1, 4)); - GameRegistry.addShapelessRecipe(new ItemStack(glimmer_pearl), Items.ENDER_PEARL, glimmerstone_dust); - GameRegistry.addShapelessRecipe(new ItemStack(energy_pearl), Items.ENDER_PEARL, luminar_dust, Items.GUNPOWDER); - - GameRegistry.addShapelessRecipe(new ItemStack(nitro_brick), fuel_brick, Items.GUNPOWDER, Items.BLAZE_POWDER); - GameRegistry.addShapelessRecipe(new ItemStack(anthracite_dust), matNecroticBone, Items.COAL, Items.GUNPOWDER); - GameRegistry.addShapelessRecipe(new ItemStack(spectrum_dust), matNecroticBone, glimmerstone_dust); - - registerMetalRecipes(arcaniteIngot, arcanite_nugget, arcaniteBlock); - registerMetalRecipes(tiberiumIngot, tiberium_nugget, tiberiumBlock); - registerMetalRecipes(prometheumIngot, prometheum_nugget, prometheumBlock); - registerMetalRecipes(rubiumIngot, rubium_nugget, rubiumBlock); - registerMetalRecipes(violiumIngot, violium_nugget, violiumBlock); - registerMetalRecipes(bismuthIngot, bismuth_nugget, bismuthBlock); - registerMetalRecipes(karmesineIngot, karmesine_nugget, karmesineBlock); - registerMetalRecipes(mindoriteIngot, mindorite_nugget, mindoriteBlock); - registerMetalRecipes(titaniteIngot, titanite_nugget, titaniteBlock); - registerMetalRecipes(meteoriteIngot, meteorite_nugget, meteoriteBlock); - registerMetalRecipes(adamantiteIngot, adamantite_nugget, adamantiteBlock); - registerMetalRecipes(vibraniumIngot, vibranium_nugget, vibraniumBlock); - registerMetalRecipes(ignititeIngot, ignitite_nugget, ignititeBlock); - registerMetalRecipes(palladiumIngot, palladium_nugget, palladiumBlock); - registerMetalRecipes(eterniteIngot, eternite_nugget, eterniteBlock); - registerMetalRecipes(mythrilIngot, mythril_nugget, mythrilBlock); - registerMetalRecipes(imperomiteIngot, imperomite_nugget, imperomiteBlock); - registerMetalRecipes(fractoryteIngot, fractoryte_nugget, fractoryteBlock); - registerMetalRecipes(noctunyxIngot, noctunyx_nugget, noctunyxBlock); - registerMetalRecipes(nitroniteIngot, nitronite_nugget, nitroniteBlock); - registerMetalRecipes(cryptogenIngot, cryptogen_nugget, cryptogenBlock); - registerMetalRecipes(seismodiumIngot, seismodium_nugget, seismodiumBlock); - registerMetalRecipes(aegisaltIngot, aegisalt_nugget, aegisaltBlock); - registerMetalRecipes(ultraniteIngot, ultranite_nugget, ultraniteBlock); - registerMetalRecipes(bysmuidIngot, bysmuid_nugget, bysmuidBlock); - registerMetalRecipes(nucleumIngot, nucleum_nugget, nucleumBlock); - registerMetalRecipes(lumixylIngot, lumixyl_nugget, lumixylBlock); - registerMetalRecipes(dyoniteIngot, dyonite_nugget, dyoniteBlock); - registerMetalRecipes(terramiteIngot, terramite_nugget, terramiteBlock); - registerMetalRecipes(solariumIngot, solarium_nugget, solariumBlock); - registerMetalRecipes(astriumIngot, astrium_nugget, astriumBlock); - registerMetalRecipes(proxideumIngot, proxideum_nugget, proxideumBlock); - } - - private static void registerMetalRecipes(Item ingot, Item nugget, Block block) { - - GameRegistry.addShapelessRecipe(new ItemStack(nugget, 9), new ItemStack(ingot)); - GameRegistry.addShapelessRecipe(new ItemStack(ingot, 9), new ItemStack(block)); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(block), "###", "###", "###", '#', new ItemStack(ingot))); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ingot), "###", "###", "###", '#', new ItemStack(nugget))); } } diff --git a/src/main/java/com/sosnitzka/taiga/recipes/SmeltingRegistry.java b/src/main/java/com/sosnitzka/taiga/recipes/SmeltingRegistry.java index f1a0ef0..70eb7cb 100644 --- a/src/main/java/com/sosnitzka/taiga/recipes/SmeltingRegistry.java +++ b/src/main/java/com/sosnitzka/taiga/recipes/SmeltingRegistry.java @@ -1,22 +1,13 @@ package com.sosnitzka.taiga.recipes; -import net.minecraft.init.Items; import net.minecraft.item.ItemStack; -import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.oredict.OreDictionary; -import static com.sosnitzka.taiga.Blocks.*; -import static com.sosnitzka.taiga.Items.*; - public class SmeltingRegistry { public static void register() { - GameRegistry.addSmelting(slagironOre, new ItemStack(slagironIngot), 1.0F); ItemStack nugget_iron = OreDictionary.getOres("nuggetIron").get(OreDictionary.getOres("nuggetIron").size() - 1); - GameRegistry.addSmelting(slagironIngot, nugget_iron, 0); - GameRegistry.addSmelting(slaggoldIngot, new ItemStack(Items.GOLD_NUGGET), 0); - GameRegistry.addSmelting(slaggoldOre, new ItemStack(slaggoldIngot), 1.0F); - GameRegistry.addSmelting(tiberiumOre, new ItemStack(tiberiumShardInstable, 6), (2F)); - GameRegistry.addSmelting(tiberiumShardInstable, new ItemStack(tiberiumIngot), (.1F)); + //GameRegistry.addSmelting(tiberiumOre, new ItemStack(tiberiumShardInstable, 6), (1F)); + //GameRegistry.addSmelting(tiberiumShardInstable, new ItemStack(tiberiumIngot), (.1F)); } } diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitAnalysing.java b/src/main/java/com/sosnitzka/taiga/traits/TraitAnalysing.java index a9e6d77..283c431 100644 --- a/src/main/java/com/sosnitzka/taiga/traits/TraitAnalysing.java +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitAnalysing.java @@ -43,7 +43,7 @@ public class TraitAnalysing extends AbstractTrait { @SubscribeEvent public void onMobDrops(LivingDropsEvent event) { World w = event.getEntity().getEntityWorld(); - if (event.getSource().getEntity() instanceof EntityPlayer) { + if (random.nextFloat() < .1f && event.getSource().getEntity() instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) event.getSource().getEntity(); if (!w.isRemote && event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) { event.getDrops().clear(); @@ -52,13 +52,13 @@ public class TraitAnalysing extends AbstractTrait { } private int getUpdateXP(int xp) { - float exp = random.nextFloat() * random.nextFloat() * random.nextFloat() * (xp + 18) * 50; + float exp = random.nextFloat() * random.nextFloat() * random.nextFloat() * (xp + random.nextInt(xp) * (1 + random.nextFloat())); return Math.round(exp); } @Override public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) { - if (random.nextFloat() < 0.85) { + if (random.nextFloat() < 0.1) { event.getDrops().clear(); } } diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitArcane.java b/src/main/java/com/sosnitzka/taiga/traits/TraitArcane.java index c61cc28..3009b67 100644 --- a/src/main/java/com/sosnitzka/taiga/traits/TraitArcane.java +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitArcane.java @@ -1,12 +1,19 @@ package com.sosnitzka.taiga.traits; import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.EntityCreature; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.math.BlockPos; import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.entity.living.LivingDeathEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import slimeknights.tconstruct.library.traits.AbstractTrait; +import slimeknights.tconstruct.library.utils.TagUtil; +import slimeknights.tconstruct.library.utils.TinkerUtil; import slimeknights.tconstruct.library.utils.ToolHelper; import static com.sosnitzka.taiga.util.Utils.isNight; @@ -15,21 +22,36 @@ public class TraitArcane extends AbstractTrait { public TraitArcane() { super("arcane", TextFormatting.DARK_PURPLE); + MinecraftForge.EVENT_BUS.register(this); } @Override public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) { int time = (int) world.getWorldTime(); - if (random.nextFloat() <= 0.1 && isNight(time)) { - ToolHelper.healTool(tool, random.nextInt(15) + 1, null); + if (random.nextFloat() <= 0.05 && isNight(time)) { + ToolHelper.healTool(tool, random.nextInt(8) + 1, null); } } @Override public void afterHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean wasCritical, boolean wasHit) { int time = (int) player.getEntityWorld().getWorldTime(); - if (random.nextFloat() <= 0.1 && isNight(time)) { - ToolHelper.healTool(tool, random.nextInt(15) + 1, null); + if (random.nextFloat() <= 0.05 && isNight(time)) { + ToolHelper.healTool(tool, random.nextInt(8) + 1, null); + } + } + + + @SubscribeEvent + public void onEntityKill(LivingDeathEvent e) { + World w = e.getEntity().getEntityWorld(); + if (!w.isRemote && e.getSource().getEntity() != null) { + if (e.getSource().getEntity() instanceof EntityPlayer && e.getEntity() instanceof EntityCreature) { + ItemStack tool = ((EntityPlayer) e.getSource().getEntity()).getHeldItemMainhand(); + if (isNight((int) w.getWorldTime()) && random.nextFloat() < 0.1 && TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier)) { + ToolHelper.healTool(tool, random.nextInt(16), null); + } + } } } } diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitBlind.java b/src/main/java/com/sosnitzka/taiga/traits/TraitBlind.java index f061387..62a41bc 100644 --- a/src/main/java/com/sosnitzka/taiga/traits/TraitBlind.java +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitBlind.java @@ -21,7 +21,7 @@ public class TraitBlind extends AbstractTrait { @Override public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) { int time = (int) world.getWorldTime(); - if (random.nextFloat() <= 0.05 || (random.nextFloat() <= 0.1 && isNight(time))) { + if (random.nextFloat() <= 0.01 || (random.nextFloat() <= 0.03 && isNight(time))) { if (random.nextBoolean()) player.addPotionEffect(new PotionEffect(MobEffects.BLINDNESS, random.nextInt(200) + 100)); else @@ -32,7 +32,7 @@ public class TraitBlind extends AbstractTrait { @Override public void afterHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean wasCritical, boolean wasHit) { int time = (int) player.getEntityWorld().getWorldTime(); - if (random.nextFloat() <= 0.05 || (random.nextFloat() <= 0.1 && isNight(time))) { + if (random.nextFloat() <= 0.01 || (random.nextFloat() <= 0.03 && isNight(time))) { if (random.nextBoolean()) player.addPotionEffect(new PotionEffect(MobEffects.BLINDNESS, random.nextInt(400) + 200)); else diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitBright.java b/src/main/java/com/sosnitzka/taiga/traits/TraitBright.java index 1182c90..2db80a5 100644 --- a/src/main/java/com/sosnitzka/taiga/traits/TraitBright.java +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitBright.java @@ -1,22 +1,22 @@ package com.sosnitzka.taiga.traits; -import net.minecraft.entity.Entity; +import net.minecraft.block.state.IBlockState; import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.MobEffects; import net.minecraft.item.ItemStack; import net.minecraft.potion.PotionEffect; +import net.minecraft.util.math.BlockPos; import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; import slimeknights.tconstruct.library.traits.AbstractTrait; -import slimeknights.tconstruct.library.utils.TagUtil; -import slimeknights.tconstruct.library.utils.TinkerUtil; import static com.sosnitzka.taiga.util.Utils.isNight; +import static net.minecraft.init.MobEffects.GLOWING; public class TraitBright extends AbstractTrait { + private static final float chance = 0.90f; + public TraitBright() { super("bright", TextFormatting.DARK_GRAY); } @@ -25,19 +25,16 @@ public class TraitBright extends AbstractTrait { public float damage(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, float newDamage, boolean isCritical) { int time = (int) target.getEntityWorld().getWorldTime(); if (!isNight(time)) { - newDamage += damage / 2f; - } + newDamage = damage * (1 + random.nextFloat() / 2f); + } else newDamage = damage / (1 + random.nextFloat() / 3f); return super.damage(tool, player, target, damage, newDamage, isCritical); - } + @Override - public void onUpdate(ItemStack item, World world, Entity entity, int i, boolean b) { - if (entity instanceof EntityPlayer) { - EntityPlayer e = (EntityPlayer) entity; - if (TinkerUtil.hasTrait(TagUtil.getTagSafe(e.getHeldItemMainhand()), identifier)) { - e.addPotionEffect(new PotionEffect(MobEffects.GLOWING, 100)); - } + public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) { + if (random.nextFloat() >= chance) { + player.addPotionEffect(new PotionEffect(GLOWING, 200)); } } } diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitCascade.java b/src/main/java/com/sosnitzka/taiga/traits/TraitCascade.java index 72f2e0b..02403d7 100644 --- a/src/main/java/com/sosnitzka/taiga/traits/TraitCascade.java +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitCascade.java @@ -36,7 +36,7 @@ public class TraitCascade extends AbstractTrait { sx = x = nextBlock.getX(); sy = y = nextBlock.getY(); sz = z = nextBlock.getZ(); - ToolHelper.damageTool(tool, random.nextInt(2), player); + ToolHelper.damageTool(tool, 1, player); } else { x = sx; y = sy; diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitCatcher.java b/src/main/java/com/sosnitzka/taiga/traits/TraitCatcher.java new file mode 100644 index 0000000..ae64b52 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitCatcher.java @@ -0,0 +1,113 @@ +package com.sosnitzka.taiga.traits; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.init.SoundEvents; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.TextFormatting; +import net.minecraft.world.World; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.entity.player.ItemTooltipEvent; +import net.minecraftforge.event.entity.player.PlayerInteractEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import slimeknights.tconstruct.library.traits.AbstractTrait; +import slimeknights.tconstruct.library.utils.TagUtil; +import slimeknights.tconstruct.library.utils.TinkerUtil; +import slimeknights.tconstruct.library.utils.ToolHelper; + + +public class TraitCatcher extends AbstractTrait { + + public static int chance = 1; + public static float costMulti = 0.25f; + + public TraitCatcher() { + super(TraitCatcher.class.getSimpleName().toLowerCase().substring(5), TextFormatting.RED); + MinecraftForge.EVENT_BUS.register(this); + } + + @Override + public void onHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean isCritical) { + World w = player.worldObj; + if (!w.isRemote && random.nextInt((int) target.getMaxHealth()) <= chance && target instanceof EntityLiving) { + NBTTagCompound tag = TagUtil.getExtraTag(tool); + Data data = Data.read(tag); + if (data.mobClass.isEmpty()) { + data.mobClass = target.getClass().getName(); + data.mobName = target.getName(); + data.write(tag); + TagUtil.setEnchantEffect(tool, true); + TagUtil.setExtraTag(tool, tag); + player.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F); + target.setDropItemsWhenDead(false); + target.setDead(); + } + } + } + + @SubscribeEvent + public void onRightClickItem(PlayerInteractEvent.RightClickItem event) { + World w = event.getWorld(); + BlockPos pos = event.getEntityPlayer().getPosition(); + ItemStack tool = event.getEntityPlayer().getHeldItemMainhand(); + if (!w.isRemote && TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier)) { + NBTTagCompound tag = TagUtil.getExtraTag(tool); + Data data = Data.read(tag); + if (!data.mobClass.isEmpty()) { + Entity ent = null; + try { + ent = (Entity) Class.forName(data.mobClass).getConstructor(World.class).newInstance(w); + } catch (Exception e) { + System.out.println(e.toString()); + } + + if (ent != null) { + ent.setPosition(pos.getX(), pos.getY(), pos.getZ()); // TODO: set to player view target + w.spawnEntityInWorld(ent); + event.getEntityPlayer().playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F); + data.mobClass = ""; + data.mobName = ""; + data.write(tag); + TagUtil.setExtraTag(tool, tag); + TagUtil.setEnchantEffect(tool, false); + ToolHelper.damageTool(tool, random.nextInt((int) (ToolHelper.getCurrentDurability(tool) * costMulti)), event.getEntityPlayer()); + } + } + } + } + + + @SubscribeEvent + public void onItemTooltip(ItemTooltipEvent e) { + ItemStack tool = e.getItemStack(); + if (TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier)) { + NBTTagCompound tag = TagUtil.getExtraTag(tool); + Data data = Data.read(tag); + if (!data.mobClass.isEmpty()) + e.getToolTip().add(TextFormatting.DARK_PURPLE + "Captured: " + TextFormatting.LIGHT_PURPLE + data.mobName); + } + } + + public static class Data { + String mobClass; + String mobName; + + public static Data read(NBTTagCompound tag) { + Data data = new Data(); + data.mobName = tag.getString("mobName"); + data.mobClass = tag.getString("mobClass"); + return data; + } + + public void write(NBTTagCompound tag) { + tag.setString("mobClass", mobClass); + tag.setString("mobName", mobName); + } + } +} + + + diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitCongenial.java b/src/main/java/com/sosnitzka/taiga/traits/TraitCongenial.java new file mode 100644 index 0000000..fed3c36 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitCongenial.java @@ -0,0 +1,78 @@ +package com.sosnitzka.taiga.traits; + +import com.sosnitzka.taiga.util.Utils; +import net.minecraft.entity.EntityCreature; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.text.TextFormatting; +import net.minecraft.world.World; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.entity.living.LivingDeathEvent; +import net.minecraftforge.event.entity.player.ItemTooltipEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import slimeknights.tconstruct.library.traits.AbstractTrait; +import slimeknights.tconstruct.library.utils.TagUtil; +import slimeknights.tconstruct.library.utils.TinkerUtil; + + +public class TraitCongenial extends AbstractTrait { + + + public TraitCongenial() { + super(TraitCongenial.class.getSimpleName().toLowerCase().substring(5), TextFormatting.RED); + MinecraftForge.EVENT_BUS.register(this); + } + + @SubscribeEvent + public void onEntityKill(LivingDeathEvent e) { + if (e.getSource().getEntity() instanceof EntityPlayer && !e.getSource().getEntity().worldObj.isRemote && e.getEntity() instanceof EntityCreature) { + if (TinkerUtil.hasTrait(TagUtil.getTagSafe(((EntityPlayer) e.getSource().getEntity()).getHeldItemMainhand()), identifier)) { + ItemStack tool = ((EntityPlayer) e.getSource().getEntity()).getHeldItemMainhand(); + String name = e.getEntity().getName(); + NBTTagCompound tag = TagUtil.getExtraTag(tool); + Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag); + if (!data.name.isEmpty()) { + return; + } + data.name = name; + data.write(tag); + assert tool != null; + TagUtil.setExtraTag(tool, tag); + } + } + } + + @Override + public float damage(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, float newDamage, boolean isCritical) { + World w = player.getEntityWorld(); + if (!w.isRemote) { + NBTTagCompound tag = TagUtil.getExtraTag(tool); + Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag); + if (data.name.isEmpty()) { + return damage; + } + if (!data.name.equals(target.getName())) { + return damage / (random.nextInt(5) + 5); + } + float x = (1 + random.nextFloat() * 9); + return damage * x; + } + return damage; + } + + @SubscribeEvent + public void onItemTooltip(ItemTooltipEvent e) { + ItemStack tool = e.getItemStack(); + if (TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier)) { + NBTTagCompound tag = TagUtil.getExtraTag(tool); + Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag); + if (data.name.isEmpty()) e.getToolTip().add(TextFormatting.LIGHT_PURPLE + "Unbound"); + else { + e.getToolTip().add(TextFormatting.DARK_PURPLE + "Bound to: " + TextFormatting.LIGHT_PURPLE + data.name); + } + } + } + +} diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitCursed.java b/src/main/java/com/sosnitzka/taiga/traits/TraitCursed.java new file mode 100644 index 0000000..297eb9f --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitCursed.java @@ -0,0 +1,58 @@ +package com.sosnitzka.taiga.traits; + +import com.sosnitzka.taiga.util.Utils; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.DamageSource; +import net.minecraft.util.text.TextFormatting; +import net.minecraft.world.World; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.entity.player.ItemTooltipEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import slimeknights.tconstruct.library.traits.AbstractTrait; +import slimeknights.tconstruct.library.utils.TagUtil; +import slimeknights.tconstruct.library.utils.TinkerUtil; + + +public class TraitCursed extends AbstractTrait { + + private static int chance = 60 * 1000; + + public TraitCursed() { + super(TraitCursed.class.getSimpleName().toLowerCase().substring(5), TextFormatting.RED); + MinecraftForge.EVENT_BUS.register(this); + } + + @Override + public void onUpdate(ItemStack tool, World world, Entity entity, int itemSlot, boolean isSelected) { + + NBTTagCompound tag = TagUtil.getExtraTag(tool); + Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag); + if (random.nextInt((chance + data.curse) / (data.curse + 1)) == 1) { + if (isSelected) data.curse += 10; + else data.curse++; + entity.attackEntityFrom(new DamageSource("Curse"), random.nextFloat() * ((EntityPlayer) entity).getHealth() / 2); + } + + data.write(tag); + TagUtil.setExtraTag(tool, tag); + + + } + + @SubscribeEvent + public void onItemTooltip(ItemTooltipEvent e) { + ItemStack tool = e.getItemStack(); + if (TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier)) { + NBTTagCompound tag = TagUtil.getExtraTag(tool); + Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag); + if (data.curse != 0) { + e.getToolTip().add(TextFormatting.DARK_PURPLE + "Curse: " + TextFormatting.WHITE + data.curse); + } + } + } + + +} diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitCurvature.java b/src/main/java/com/sosnitzka/taiga/traits/TraitCurvature.java index 521eb0a..eebd275 100644 --- a/src/main/java/com/sosnitzka/taiga/traits/TraitCurvature.java +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitCurvature.java @@ -1,5 +1,7 @@ package com.sosnitzka.taiga.traits; +import com.google.common.collect.Lists; +import com.sosnitzka.taiga.util.Utils; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; @@ -10,76 +12,74 @@ import net.minecraft.init.Items; import net.minecraft.init.SoundEvents; import net.minecraft.item.ItemStack; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.TextComponentString; import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.living.LivingDropsEvent; +import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import slimeknights.tconstruct.library.traits.AbstractTrait; import slimeknights.tconstruct.library.utils.TagUtil; import slimeknights.tconstruct.library.utils.TinkerUtil; +import java.util.List; + public class TraitCurvature extends AbstractTrait { + public static int chance = 5; + public static int distance = 10; + public TraitCurvature() { - super("curvature", TextFormatting.BLACK); + super("curvature", TextFormatting.DARK_PURPLE); MinecraftForge.EVENT_BUS.register(this); } @Override - public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) { - if (player.worldObj.isRemote) { - return; - } - if (random.nextFloat() <= 0.01 && world.provider.getDimension() != -1) { - teleport(player, world); - player.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F); + public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) { + if (!event.getWorld().isRemote && random.nextFloat() < 0.05) { + List<IBlockState> blockstates = Lists.newArrayList(Blocks.STONE.getDefaultState(), Blocks.NETHERRACK.getDefaultState(), Blocks.END_STONE.getDefaultState(), Blocks.AIR.getDefaultState(), Blocks.DIRT.getDefaultState()); + IBlockState mainstate = event.getState(); + if (blockstates.contains(mainstate)) return; + for (int i = 0; i < chance; i++) { + int x = event.getPos().getX() + Utils.nextInt(random, -distance, distance); + int y = event.getPos().getY() + Utils.nextInt(random, -distance, distance); + int z = event.getPos().getZ() + Utils.nextInt(random, -distance, distance); + BlockPos cPos = new BlockPos(x, y, z); + IBlockState state = event.getWorld().getBlockState(cPos); + if (blockstates.contains(state)) { + event.getDrops().clear(); + event.getWorld().setBlockState(cPos, mainstate); + event.getHarvester().playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F); + event.getHarvester().addChatComponentMessage(new TextComponentString("Teleported to: " + x + " " + y + " " + z)); + return; + } + + } + } } - @Override public void afterHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean wasCritical, boolean wasHit) { - if (random.nextFloat() <= 0.3) { + if (random.nextFloat() <= 0.15) { target.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F); changePos(player, target); } } - @SubscribeEvent public void onMobDrops(LivingDropsEvent event) { World w = event.getEntity().getEntityWorld(); if (!w.isRemote && event.getSource().getEntity() instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) event.getSource().getEntity(); if (event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) { - ItemStack i = new ItemStack(Items.ENDER_PEARL, random.nextInt(3)); + ItemStack i = new ItemStack(Items.ENDER_PEARL, random.nextInt(2)); event.getDrops().add(0, new EntityItem(w, event.getEntity().posX, event.getEntity().posY, event.getEntity().posZ, i)); } } } - private void teleport(EntityLivingBase e, World w) { - int x = e.getPosition().getX() + random.nextInt(250) - 125; - int y = e.getPosition().getY(); - int z = e.getPosition().getZ() + random.nextInt(250) - 125; - - // TODO: Make this a proper search for top block (if there is one) - while (w.getBlockState(new BlockPos(x, y, z)).getBlock() != Blocks.AIR) { - y++; - } - while (w.getBlockState(new BlockPos(x, y - 1, z)).getBlock() == Blocks.AIR) { - if (y <= 0) { - y = 1; - break; - } - - y--; - } - - e.setPosition(x, y, z); - } - private void changePos(EntityLivingBase player, EntityLivingBase target) { BlockPos pp = new BlockPos(player.getPosition()); BlockPos tp = new BlockPos(target.getPosition()); diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitDark.java b/src/main/java/com/sosnitzka/taiga/traits/TraitDark.java index f665d49..87d0741 100644 --- a/src/main/java/com/sosnitzka/taiga/traits/TraitDark.java +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitDark.java @@ -18,9 +18,8 @@ public class TraitDark extends AbstractTrait { public float damage(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, float newDamage, boolean isCritical) { int time = (int) target.getEntityWorld().getWorldTime(); if (isNight(time)) { - newDamage += damage / 2f; - } + newDamage = damage * (1 + random.nextFloat() / 2f); + } else newDamage = damage / (1 + random.nextFloat() / 3f); return super.damage(tool, player, target, damage, newDamage, isCritical); - } } diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitDecay.java b/src/main/java/com/sosnitzka/taiga/traits/TraitDecay.java new file mode 100644 index 0000000..3109dca --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitDecay.java @@ -0,0 +1,115 @@ +package com.sosnitzka.taiga.traits; + +import com.google.common.collect.ImmutableList; +import net.minecraft.entity.Entity; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.text.TextFormatting; +import net.minecraft.world.World; +import net.minecraftforge.common.util.FakePlayer; +import slimeknights.tconstruct.library.materials.HeadMaterialStats; +import slimeknights.tconstruct.library.tools.ToolNBT; +import slimeknights.tconstruct.library.utils.TagUtil; + +import java.util.List; + +/** + * Gives the tool bonus stats on crafting. + * The bonus stats are distributed over time and are more or less random. + * The stats that will be rewarded are already designated on the first time the tool is crafted + */ +public class TraitDecay extends TraitProgressiveStats { + + protected static int TICK_PER_STAT = 24; + protected static int DURABILITY_STEP = 10; + protected static float SPEED_STEP = 0.05f; + protected static float ATTACK_STEP = 0.05f; + + public TraitDecay() { + super("decay", TextFormatting.GREEN); + } + + @Override + public void applyEffect(NBTTagCompound rootCompound, NBTTagCompound modifierTag) { + // check if we have stats already distributed, and if not add them + if (!hasPool(rootCompound)) { + // ok, we need new stats. Let the fun begin! + StatNBT data = new StatNBT(); + + int statPoints = 800; // we distribute a whopping X points worth of stats! + for (; statPoints > 0; statPoints--) { + switch (random.nextInt(3)) { + // durability + case 0: + data.durability += DURABILITY_STEP; + break; + // speed + case 1: + data.speed += SPEED_STEP; + break; + // attack + case 2: + data.attack += ATTACK_STEP; + break; + } + } + + setPool(rootCompound, data); + } + + super.applyEffect(rootCompound, modifierTag); + } + + @Override + public void onUpdate(ItemStack tool, World world, Entity entity, int itemSlot, boolean isSelected) { + if (entity instanceof FakePlayer || entity.worldObj.isRemote) { + return; + } + // every 3.6 seconds we distribute one stat. This means 1h = 1000 applications + if (entity.ticksExisted % TICK_PER_STAT > 0) { + return; + } + + // we don't update if the player is currently breaking a block because that'd reset it + if (playerIsBreakingBlock(entity)) { + return; + } + + NBTTagCompound root = TagUtil.getTagSafe(tool); + StatNBT distributed = getBonus(root); + ToolNBT data = TagUtil.getToolStats(tool); + + // attack + if (entity.ticksExisted % (TICK_PER_STAT * 3) == 0) { + float A = ATTACK_STEP * random.nextFloat(); + data.attack -= A; + distributed.attack -= A; + } + // speed + else if (entity.ticksExisted % (TICK_PER_STAT * 2) == 0) { + float S = SPEED_STEP * random.nextFloat(); + data.speed -= S; + distributed.speed -= S; + } + // durability + else { + int D = random.nextInt(DURABILITY_STEP) + 1; + data.durability -= D; + distributed.durability -= D; + } + + // update tool stats + TagUtil.setToolTag(root, data.get()); + // update statistics on distributed stats + setBonus(root, distributed); + } + + @Override + public List<String> getExtraInfo(ItemStack tool, NBTTagCompound modifierTag) { + StatNBT pool = getBonus(TagUtil.getTagSafe(tool)); + + return ImmutableList.of(HeadMaterialStats.formatDurability(pool.durability), + HeadMaterialStats.formatMiningSpeed(pool.speed), + HeadMaterialStats.formatAttack(pool.attack)); + } +}
\ No newline at end of file diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitDiffuse.java b/src/main/java/com/sosnitzka/taiga/traits/TraitDiffuse.java index bf5fd42..25fddc6 100644 --- a/src/main/java/com/sosnitzka/taiga/traits/TraitDiffuse.java +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitDiffuse.java @@ -1,13 +1,12 @@ package com.sosnitzka.taiga.traits; -import net.minecraft.entity.monster.EntityMob; +import net.minecraft.entity.EntityCreature; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.living.LivingDropsEvent; -import net.minecraftforge.event.entity.living.LivingExperienceDropEvent; import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import slimeknights.tconstruct.library.traits.AbstractTrait; @@ -22,19 +21,10 @@ public class TraitDiffuse extends AbstractTrait { } @SubscribeEvent - public void onXpDrop(LivingExperienceDropEvent event) { - EntityPlayer player = event.getAttackingPlayer(); - if (!event.getEntity().getEntityWorld().isRemote && player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) { - event.setDroppedExperience(0); - } - - } - - @SubscribeEvent public void onBlockBreak(BlockEvent.BreakEvent event) { EntityPlayer player = event.getPlayer(); if (!player.getEntityWorld().isRemote && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) { - event.setExpToDrop(this.getUpdateXP(event.getExpToDrop())); + event.setExpToDrop((int) this.getUpdateXP(event.getExpToDrop())); } } @@ -43,22 +33,22 @@ public class TraitDiffuse extends AbstractTrait { World w = event.getEntity().getEntityWorld(); if (!w.isRemote && event.getSource().getEntity() instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) event.getSource().getEntity(); - if (event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) { + if (event.getEntity() instanceof EntityCreature && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) { event.getDrops().clear(); } } } - private int getUpdateXP(int xp) { - float exp = random.nextFloat() * random.nextFloat() * random.nextFloat() * (xp + random.nextInt(10)); - if (random.nextBoolean()) - return Math.round(exp); + private float getUpdateXP(int xp) { + float exp = random.nextFloat() * random.nextFloat() * random.nextFloat() * (xp + random.nextFloat() * xp); + if (random.nextFloat() <= 0.25) + return exp; else return 0; } @Override public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) { - if (random.nextFloat() < 0.75) { + if (random.nextFloat() < 0.35) { event.getDrops().clear(); } } diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitDissolving.java b/src/main/java/com/sosnitzka/taiga/traits/TraitDissolving.java index e6c9c8e..18ddd61 100644 --- a/src/main/java/com/sosnitzka/taiga/traits/TraitDissolving.java +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitDissolving.java @@ -18,16 +18,18 @@ public class TraitDissolving extends AbstractTrait { } // high chance to remove XP, low chance to double,triple or quatruple dropped Experience + @SubscribeEvent public void onXpDrop(LivingExperienceDropEvent event) { if (!event.getEntity().getEntityWorld().isRemote) { EntityPlayer player = event.getAttackingPlayer(); float r = random.nextFloat(); - if (r <= 0.75 && player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) { - event.setDroppedExperience(0); - } - if (r > 0.95 && player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) { - event.setDroppedExperience(event.getDroppedExperience() * (random.nextInt(3) + 2)); + if (player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) { + if (r <= 0.80) { + event.setDroppedExperience(0); + } else { + event.setDroppedExperience(event.getDroppedExperience() * (random.nextInt(3) + 2)); + } } } } diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitFragile.java b/src/main/java/com/sosnitzka/taiga/traits/TraitFragile.java index cb536f9..440e776 100644 --- a/src/main/java/com/sosnitzka/taiga/traits/TraitFragile.java +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitFragile.java @@ -24,6 +24,7 @@ public class TraitFragile extends AbstractTrait { float b = 0.99F * calcBonus(tool); if (!world.isRemote && tool.canHarvestBlock(state) && f <= b) { if (random.nextBoolean()) ToolHelper.damageTool(tool, random.nextInt(3), player); + else ToolHelper.healTool(tool, random.nextInt(3), player); } } else { float f = random.nextFloat(); @@ -41,20 +42,18 @@ public class TraitFragile extends AbstractTrait { if (r == 2) z += d; BlockPos nextBlock = new BlockPos(x, y, z); if (world.getBlockState(nextBlock) == world.getBlockState(pos)) { - Block block = Blocks.STONE; - int ib = random.nextInt(3); + Block block = null; + int ib = random.nextInt(2); switch (ib) { case 0: block = Blocks.COBBLESTONE; break; case 1: - block = Blocks.MOSSY_COBBLESTONE; - break; - case 2: - block = Blocks.GRAVEL; - break; + if (random.nextFloat() <= 0.9) block = Blocks.GRAVEL; + else block = Blocks.MOSSY_COBBLESTONE; } f = random.nextFloat(); + assert block != null; if (f < 0.85) { world.setBlockState(nextBlock, block.getDefaultState()); } else if (f > 95) { diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitGarishly.java b/src/main/java/com/sosnitzka/taiga/traits/TraitGarishly.java index dd327ce..26ea54f 100644 --- a/src/main/java/com/sosnitzka/taiga/traits/TraitGarishly.java +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitGarishly.java @@ -18,8 +18,6 @@ import slimeknights.tconstruct.library.utils.TagUtil; import slimeknights.tconstruct.library.utils.TinkerUtil; import slimeknights.tconstruct.library.utils.ToolHelper; -import static com.sosnitzka.taiga.Items.*; - public class TraitGarishly extends AbstractTrait { public TraitGarishly() { @@ -34,7 +32,7 @@ public class TraitGarishly extends AbstractTrait { EntityPlayer player = (EntityPlayer) event.getSource().getEntity(); if (event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) { - int r = random.nextInt(6); + int r = random.nextInt(2); ItemStack i = null; switch (r) { case 0: @@ -44,17 +42,8 @@ public class TraitGarishly extends AbstractTrait { i = new ItemStack(Items.BLAZE_ROD, random.nextInt(3)); break; case 2: - i = new ItemStack(glimmerstone_dust, random.nextInt(3)); - break; - case 3: - i = new ItemStack(luminar_dust, random.nextInt(3)); - break; - case 4: i = new ItemStack(Items.COAL, random.nextInt(3)); break; - case 5: - i = new ItemStack(lignite, random.nextInt(3)); - break; } assert i != null; event.getDrops().add(0, new EntityItem(w, event.getEntity().posX, event.getEntity().posY, event.getEntity().posZ, i)); @@ -65,8 +54,8 @@ public class TraitGarishly extends AbstractTrait { @Override public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) { float r = random.nextFloat(); - if (r > 0.5f) event.getDrops().clear(); - else if (r < 0.1 && event.getWorld().getBlockState(event.getPos()).getMaterial() == Material.ROCK) { + if (random.nextBoolean()) event.getDrops().clear(); + else if (r < 0.25 && event.getWorld().getBlockState(event.getPos()).getMaterial() == Material.ROCK) { @SuppressWarnings("ConstantConditions") ItemStack stack = new ItemStack(Item.getItemFromBlock(event.getWorld().getBlockState(event.getPos()).getBlock()), random.nextInt(3)); event.getDrops().add(0, stack); ToolHelper.damageTool(tool, random.nextInt(6) + 1, event.getHarvester()); diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitGlimmer.java b/src/main/java/com/sosnitzka/taiga/traits/TraitGlimmer.java index 2c10852..90f1e3b 100644 --- a/src/main/java/com/sosnitzka/taiga/traits/TraitGlimmer.java +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitGlimmer.java @@ -34,14 +34,14 @@ public class TraitGlimmer extends AbstractTrait { @Override public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) { - if (random.nextFloat() <= 0.08) { + if (random.nextFloat() <= 0.05) { player.addPotionEffect(new PotionEffect(MobEffects.NIGHT_VISION, random.nextInt(600) + 300)); } } @Override public void afterHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean wasCritical, boolean wasHit) { - if (random.nextFloat() <= 0.08) { + if (random.nextFloat() <= 0.05) { player.addPotionEffect(new PotionEffect(MobEffects.NIGHT_VISION, random.nextInt(600) + 300)); } } diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitHaunted.java b/src/main/java/com/sosnitzka/taiga/traits/TraitHaunted.java deleted file mode 100644 index c43b054..0000000 --- a/src/main/java/com/sosnitzka/taiga/traits/TraitHaunted.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.sosnitzka.taiga.traits; - -import com.sosnitzka.taiga.util.EntityAIPermanentPanic; -import net.minecraft.entity.EntityCreature; -import net.minecraft.entity.EntityLiving; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.monster.*; -import net.minecraft.entity.passive.*; -import net.minecraft.item.ItemStack; -import net.minecraft.util.text.TextFormatting; -import net.minecraftforge.common.MinecraftForge; -import slimeknights.tconstruct.library.traits.AbstractTrait; - -import static com.sosnitzka.taiga.util.Utils.isNight; - -public class TraitHaunted extends AbstractTrait { - - public TraitHaunted() { - super("haunted", TextFormatting.DARK_GRAY); - MinecraftForge.EVENT_BUS.register(this); - } - - // Just several tested Vanilla-Mobs, e.g. no ghasts, bats or skeletons - @Override - public void onHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean isCritical) { - int time = (int) player.getEntityWorld().getWorldTime(); - if (random.nextFloat() <= 0.1 || (random.nextFloat() <= 0.3 && isNight(time))) - if (target instanceof EntityCow || target instanceof EntityZombie || target instanceof EntityWolf || target instanceof EntityPig || target instanceof EntitySpider || - target instanceof EntityVillager || target instanceof EntitySheep || target instanceof EntityEnderman || target instanceof EntityEndermite || - target instanceof EntityBlaze || target instanceof EntityWitch || target instanceof EntityHorse) { - ((EntityLiving) target).tasks.taskEntries.clear(); - ((EntityLiving) target).targetTasks.taskEntries.clear(); - ((EntityLiving) target).tasks.addTask(0, new EntityAIPermanentPanic((EntityCreature) target, target.getAIMoveSpeed() + 3.5D)); - - } - } -} diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitHeroic.java b/src/main/java/com/sosnitzka/taiga/traits/TraitHeroic.java index 7654255..f72f7e9 100644 --- a/src/main/java/com/sosnitzka/taiga/traits/TraitHeroic.java +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitHeroic.java @@ -19,6 +19,6 @@ public class TraitHeroic extends AbstractTrait { float calc = newDamage + (newDamage / 2) / (durability * durabilitymax / (durabilitymax - durability - 1)); if ((float) durability < (float) (0.10 * durabilitymax) || player.getHealth() < player.getMaxHealth() / 8 || (target.getHealth() == target.getMaxHealth() && random.nextFloat() > 0.8)) { return super.damage(tool, player, target, damage, calc, isCritical); - } else return super.damage(tool, player, target, damage, newDamage, isCritical); + } else return super.damage(tool, player, target, damage, newDamage * 0.9f, isCritical); } } diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitHollow.java b/src/main/java/com/sosnitzka/taiga/traits/TraitHollow.java index 9da8d22..1b43176 100644 --- a/src/main/java/com/sosnitzka/taiga/traits/TraitHollow.java +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitHollow.java @@ -28,10 +28,10 @@ public class TraitHollow extends AbstractTrait { @Override public void onHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean isCritical) { int time = (int) player.getEntityWorld().getWorldTime(); - if (random.nextFloat() <= 0.2 || (random.nextFloat() <= 0.2 && isNight(time))) { + if (random.nextFloat() <= 0.01 || (random.nextFloat() <= 0.03 && isNight(time))) { ((EntityLiving) target).setNoAI(true); target.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F); - if (target.getMaxHealth() < 200) { + if (target.getMaxHealth() < 250) { target.setHealth(target.getMaxHealth() * (1.8f - random.nextFloat() * 0.4f)); } } diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitInstable.java b/src/main/java/com/sosnitzka/taiga/traits/TraitInstable.java index ad25bcd..f95f891 100644 --- a/src/main/java/com/sosnitzka/taiga/traits/TraitInstable.java +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitInstable.java @@ -36,7 +36,7 @@ public class TraitInstable extends AbstractTrait { explode(world, player, pos.getX(), pos.getY(), pos.getZ()); } else explode(world, null, pos.getX(), pos.getY(), pos.getZ()); } - ToolHelper.damageTool(tool, 11 + random.nextInt(10), player); + ToolHelper.damageTool(tool, random.nextInt(10) + 2, player); } } @@ -49,17 +49,17 @@ public class TraitInstable extends AbstractTrait { explode(player.getEntityWorld(), player, pos.getX(), pos.getY(), pos.getZ()); } else explode(player.getEntityWorld(), target, pos.getX(), pos.getY(), pos.getZ()); } - ToolHelper.damageTool(tool, 3 + random.nextInt(18), player); + ToolHelper.damageTool(tool, 2 + random.nextInt(10), player); } } @SubscribeEvent public void onMobDrops(LivingDropsEvent event) { World w = event.getEntity().getEntityWorld(); - if (!w.isRemote && event.getSource().getEntity() instanceof EntityPlayer) { + if (random.nextFloat() < 0.05 && !w.isRemote && event.getSource().getEntity() instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) event.getSource().getEntity(); if (event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) { - ItemStack i = new ItemStack(Items.GUNPOWDER, random.nextInt(4)); + ItemStack i = new ItemStack(Items.GUNPOWDER, random.nextInt(2)); event.getDrops().add(0, new EntityItem(w, event.getEntity().posX, event.getEntity().posY, event.getEntity().posZ, i)); } } diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitMelting.java b/src/main/java/com/sosnitzka/taiga/traits/TraitMelting.java index 13d1081..354d77f 100644 --- a/src/main/java/com/sosnitzka/taiga/traits/TraitMelting.java +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitMelting.java @@ -2,24 +2,31 @@ package com.sosnitzka.taiga.traits; import net.minecraft.block.Block; import net.minecraft.init.Blocks; -import net.minecraft.item.ItemStack; import net.minecraft.util.text.TextFormatting; +import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.world.BlockEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import slimeknights.tconstruct.library.traits.AbstractTrait; +import slimeknights.tconstruct.library.utils.TagUtil; +import slimeknights.tconstruct.library.utils.TinkerUtil; public class TraitMelting extends AbstractTrait { public TraitMelting() { super("melting", TextFormatting.YELLOW); + MinecraftForge.EVENT_BUS.register(this); } - @Override - public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) { - float r = random.nextFloat(); - Block b = event.getWorld().getBlockState(event.getPos()).getBlock(); - if (r <= 0.01 && (b == Blocks.STONE || b == Blocks.COBBLESTONE || b == Blocks.NETHERRACK)) { - event.getWorld().setBlockState(event.getPos(), Blocks.LAVA.getDefaultState()); + + @SubscribeEvent + public void blockbreak(BlockEvent.BreakEvent e) { + Block b = e.getWorld().getBlockState(e.getPos()).getBlock(); + if (TinkerUtil.hasTrait(TagUtil.getTagSafe(e.getPlayer().getHeldItemMainhand()), identifier)) { + if (!e.getWorld().isRemote && random.nextFloat() <= 0.025 && (b == Blocks.STONE || b == Blocks.COBBLESTONE || b == Blocks.NETHERRACK || b == Blocks.OBSIDIAN)) { + e.setCanceled(true); + e.getWorld().setBlockState(e.getPos(), Blocks.LAVA.getDefaultState()); + } } } } diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitNatureBound.java b/src/main/java/com/sosnitzka/taiga/traits/TraitNatureBound.java index b18d361..53f4d86 100644 --- a/src/main/java/com/sosnitzka/taiga/traits/TraitNatureBound.java +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitNatureBound.java @@ -1,19 +1,13 @@ package com.sosnitzka.taiga.traits; -import net.minecraft.block.Block; +import net.minecraft.block.material.Material; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; -import net.minecraft.init.Blocks; -import net.minecraft.init.SoundEvents; import net.minecraft.item.ItemStack; import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.world.BlockEvent; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import slimeknights.tconstruct.library.traits.AbstractTrait; -import slimeknights.tconstruct.library.utils.TagUtil; -import slimeknights.tconstruct.library.utils.TinkerUtil; import slimeknights.tconstruct.library.utils.ToolHelper; @@ -26,26 +20,19 @@ public class TraitNatureBound extends AbstractTrait { @Override public int onToolHeal(ItemStack tool, int amount, int newAmount, EntityLivingBase entity) { - // 5% less durability repaired! - return newAmount - amount * 5 / 100; + // 10% less durability repaired! + return newAmount - amount * 10 / 100; } @Override public void onUpdate(ItemStack tool, World world, Entity entity, int itemSlot, boolean isSelected) { - // *20 because 20 ticks in a second - int chance = 20; - if (!world.isRemote && entity instanceof EntityLivingBase && random.nextInt(30 * chance) == 0) { - ToolHelper.healTool(tool, random.nextInt(9) + 1, (EntityLivingBase) entity); - } - - } - - @SubscribeEvent - public void onBlockBreak(BlockEvent.BreakEvent e) { - Block b = e.getWorld().getBlockState(e.getPos()).getBlock(); - if (!e.getWorld().isRemote && TinkerUtil.hasTrait(TagUtil.getTagSafe(e.getPlayer().getHeldItemMainhand()), identifier) && random.nextFloat() <= .07 && (b == Blocks.DIRT || b == Blocks.GRASS || b == Blocks.LOG || b == Blocks.LOG2 || b == Blocks.STONE)) { - e.setCanceled(true); - e.getPlayer().playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F); + // * 20 because 20 ticks in a second + int chance = 20 * 20; + Material m = world.getBlockState(entity.getPosition().down()).getMaterial(); + if (!world.isRemote && entity instanceof EntityLivingBase && random.nextInt(chance) == 0) { + if (m.equals(Material.GRASS) || m.equals(Material.LEAVES)) { + ToolHelper.healTool(tool, random.nextInt(2) + 1, (EntityLivingBase) entity); + } else ToolHelper.damageTool(tool, 1, (EntityLivingBase) entity); } } } diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitOrganizing.java b/src/main/java/com/sosnitzka/taiga/traits/TraitOrganizing.java deleted file mode 100644 index f3a279b..0000000 --- a/src/main/java/com/sosnitzka/taiga/traits/TraitOrganizing.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.sosnitzka.taiga.traits; - -import net.minecraft.block.material.Material; -import net.minecraft.block.state.IBlockState; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.init.Blocks; -import net.minecraft.item.ItemStack; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.text.TextFormatting; -import net.minecraft.world.World; -import slimeknights.tconstruct.library.traits.AbstractTrait; -import slimeknights.tconstruct.library.utils.ToolHelper; - -public class TraitOrganizing extends AbstractTrait { - - private static final float chance = 0.02f; - - public TraitOrganizing() { - super("organizing", TextFormatting.GREEN); - } - - @Override - public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) { - if (!world.isRemote && (state.getMaterial() == Material.ROCK) && random.nextFloat() < chance) { - world.setBlockState(pos, Blocks.LOG.getDefaultState()); - ToolHelper.healTool(tool, random.nextInt(5), player); - } - } -}
\ No newline at end of file diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitPorted.java b/src/main/java/com/sosnitzka/taiga/traits/TraitPorted.java new file mode 100644 index 0000000..6760383 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitPorted.java @@ -0,0 +1,67 @@ +package com.sosnitzka.taiga.traits; + +import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.init.Blocks; +import net.minecraft.init.SoundEvents; +import net.minecraft.item.ItemStack; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.TextFormatting; +import net.minecraft.world.World; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.entity.player.PlayerInteractEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import slimeknights.tconstruct.library.traits.AbstractTrait; +import slimeknights.tconstruct.library.utils.TagUtil; +import slimeknights.tconstruct.library.utils.TinkerUtil; +import slimeknights.tconstruct.library.utils.ToolHelper; + + +public class TraitPorted extends AbstractTrait { + public static int distance = 10; + + public TraitPorted() { + super("ported", TextFormatting.DARK_PURPLE); + MinecraftForge.EVENT_BUS.register(this); + } + + @SubscribeEvent + public void onItemRightClick(PlayerInteractEvent.RightClickItem e) { + ItemStack tool = e.getEntityPlayer().getHeldItemMainhand(); + if (TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier)) + teleport(e.getEntityPlayer(), e.getWorld()); + } + + @Override + public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) { + if (random.nextFloat() <= 0.005) { + player.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F); + teleport(player, world); + } + } + + + @Override + public void afterHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean wasCritical, boolean wasHit) { + if (random.nextFloat() <= 0.005) { + target.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F); + teleport(player, player.getEntityWorld()); + } + } + + private void teleport(EntityLivingBase e, World w) { + BlockPos tPos = new BlockPos(e.getPosition().up(distance)); + if (e.getPosition().getY() >= 128) { + return; + } + + while (!w.getBlockState(tPos).equals(Blocks.AIR.getDefaultState()) && tPos.getY() <= 128) { + tPos = tPos.up(); + } + if (!w.getBlockState(tPos).equals(Blocks.AIR.getDefaultState())) { + return; + } + e.setPosition(tPos.getX(), tPos.getY(), tPos.getZ()); + ToolHelper.damageTool(e.getHeldItemMainhand(), ToolHelper.getCurrentDurability(e.getHeldItemMainhand()) / 2 + 1, e); + } +} diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitProgressiveStats.java b/src/main/java/com/sosnitzka/taiga/traits/TraitProgressiveStats.java new file mode 100644 index 0000000..d9af33d --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitProgressiveStats.java @@ -0,0 +1,115 @@ +package com.sosnitzka.taiga.traits; + +import net.minecraft.entity.Entity; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.text.TextFormatting; +import slimeknights.tconstruct.library.modifiers.ModifierNBT; +import slimeknights.tconstruct.library.tools.ToolNBT; +import slimeknights.tconstruct.library.traits.AbstractTrait; +import slimeknights.tconstruct.library.utils.TagUtil; + +/** + * Base class for tools that progressively gain/award stats. + * The modifier persists 2 different stat-data on the tool: + * - A 'pool' of stats to award + * - A 'bonus' of already awarded stats + * <p> + * The modifier reapplies the 'bonus' stats on application. + * The pool is not touched inheritly but only provided for the logic of the deriving trait. + */ +public abstract class TraitProgressiveStats extends AbstractTrait { + + protected final String pool_key; // Key to the tag that contains the free unassigned + protected final String applied_key; // Key to the tag that contains the already applied bonus stats + + public TraitProgressiveStats(String identifier, TextFormatting color) { + super(identifier, color); + + pool_key = identifier + "StatPool"; + applied_key = identifier + "StatBonus"; + } + + public TraitProgressiveStats(String identifier, int color) { + super(identifier, color); + + pool_key = identifier + "StatPool"; + applied_key = identifier + "StatBonus"; + } + + /* Modifier management */ + + protected static StatNBT getStats(NBTTagCompound root, String key) { + return ModifierNBT.readTag(TagUtil.getTagSafe(TagUtil.getExtraTag(root), key), StatNBT.class); + } + + protected static void setStats(NBTTagCompound root, StatNBT data, String key) { + NBTTagCompound extra = TagUtil.getExtraTag(root); + NBTTagCompound tag = new NBTTagCompound(); + data.write(tag); + extra.setTag(key, tag); + TagUtil.setExtraTag(root, extra); + } + + @Override + public void applyEffect(NBTTagCompound rootCompound, NBTTagCompound modifierTag) { + super.applyEffect(rootCompound, modifierTag); + // called on tool loading only + // we just apply the saved bonus stats + ToolNBT data = TagUtil.getToolStats(rootCompound); + StatNBT bonus = getBonus(rootCompound); + + data.durability += bonus.durability; + data.speed += bonus.speed; + data.attack += bonus.attack; + + TagUtil.setToolTag(rootCompound, data.get()); + } + + protected boolean hasPool(NBTTagCompound root) { + return TagUtil.getExtraTag(root).hasKey(pool_key); + } + + protected StatNBT getPool(NBTTagCompound root) { + return getStats(root, pool_key); + } + + protected void setPool(NBTTagCompound root, StatNBT data) { + setStats(root, data, pool_key); + } + + protected StatNBT getBonus(NBTTagCompound root) { + return getStats(root, applied_key); + } + + protected void setBonus(NBTTagCompound root, StatNBT data) { + setStats(root, data, applied_key); + } + + protected boolean playerIsBreakingBlock(Entity entity) { + return false; + } + + public static class StatNBT extends ModifierNBT { + + // statpool + public int durability; + public float attack; + public float speed; + + @Override + public void read(NBTTagCompound tag) { + super.read(tag); + durability = tag.getInteger("durability"); + attack = tag.getFloat("attack"); + speed = tag.getFloat("speed"); + } + + @Override + public void write(NBTTagCompound tag) { + super.write(tag); + tag.setInteger("durability", durability); + tag.setFloat("attack", attack); + tag.setFloat("speed", speed); + } + } +}
\ No newline at end of file diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitPulverizing.java b/src/main/java/com/sosnitzka/taiga/traits/TraitPulverizing.java index ea81437..466c715 100644 --- a/src/main/java/com/sosnitzka/taiga/traits/TraitPulverizing.java +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitPulverizing.java @@ -16,16 +16,15 @@ public class TraitPulverizing extends AbstractTrait { @Override public void miningSpeed(ItemStack tool, PlayerEvent.BreakSpeed event) { if (ToolHelper.isToolEffective2(tool, event.getState())) { - event.setNewSpeed((float) (event.getNewSpeed() + calcBonus(tool))); + event.setNewSpeed((float) (event.getNewSpeed() * calcBonus(tool))); } } private double calcBonus(ItemStack tool) { int durability = ToolHelper.getCurrentDurability(tool); int maxDurability = ToolHelper.getMaxDurability(tool); - float speed = ToolHelper.getMiningSpeedStat(tool); - tool.setItemDamage(tool.getItemDamage() + 1); - return speed * (maxDurability - maxDurability / 10) / (durability); + return (1 + .9f * (maxDurability - durability) / maxDurability); + // Min 1.0; Max 1.9 } @Override diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitRandomize.java b/src/main/java/com/sosnitzka/taiga/traits/TraitRandomize.java deleted file mode 100644 index 423e6ef..0000000 --- a/src/main/java/com/sosnitzka/taiga/traits/TraitRandomize.java +++ /dev/null @@ -1,177 +0,0 @@ -package com.sosnitzka.taiga.traits; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLiving; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.item.EntityTNTPrimed; -import net.minecraft.entity.monster.*; -import net.minecraft.entity.passive.*; -import net.minecraft.init.Blocks; -import net.minecraft.init.SoundEvents; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.text.TextFormatting; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.player.PlayerEvent; -import net.minecraftforge.event.world.BlockEvent; -import slimeknights.tconstruct.library.traits.AbstractTrait; -import slimeknights.tconstruct.library.utils.ToolHelper; -import slimeknights.tconstruct.world.entity.EntityBlueSlime; - -import static com.sosnitzka.taiga.Blocks.*; -import static slimeknights.tconstruct.shared.TinkerCommons.oreArdite; -import static slimeknights.tconstruct.shared.TinkerCommons.oreCobalt; - -public class TraitRandomize extends AbstractTrait { - - public TraitRandomize() { - super("randomize", TextFormatting.DARK_RED); - } - - @Override - public void miningSpeed(ItemStack tool, PlayerEvent.BreakSpeed event) { - if (ToolHelper.isToolEffective2(tool, event.getState())) { - event.setNewSpeed(event.getNewSpeed() + random.nextFloat() * 2); - } - } - - @Override - public void onHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean isCritical) { - if (random.nextFloat() <= .15 && target instanceof EntityLiving) { - World w = player.getEntityWorld(); - Entity e = new EntityCow(w); - target.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F); - if (!w.isRemote) { - int i = random.nextInt(22); - switch (i) { - case 0: - e = new EntityCow(w); - break; - case 1: - e = new EntityPig(w); - break; - case 2: - e = new EntityHorse(w); - break; - case 3: - e = new EntityChicken(w); - break; - case 4: - e = new EntityVillager(w); - break; - case 5: - e = new EntityEnderman(w); - break; - case 6: - e = new EntityPolarBear(w); - break; - case 7: - e = new EntityIronGolem(w); - break; - case 8: - e = new EntitySilverfish(w); - break; - case 9: - e = new EntityCaveSpider(w); - break; - case 10: - e = new EntityWolf(w); - break; - case 11: - e = new EntityWitch(w); - break; - case 12: - e = new EntityTNTPrimed(w); - break; - case 13: - e = new EntityGhast(w); - break; - case 14: - e = new EntitySpider(w); - break; - case 15: - e = new EntitySkeleton(w); - break; - case 16: - e = new EntityMagmaCube(w); - break; - case 17: - e = new EntitySlime(w); - break; - case 18: - e = new EntityBlueSlime(w); - break; - case 19: - e = new EntityBat(w); - break; - case 20: - e = new EntityPigZombie(w); - break; - case 21: - e = new EntityBlaze(w); - break; - } - e.setPosition(target.getPosition().getX(), target.getPosition().getY() + 0.1f, target.getPosition().getZ()); - e.setCustomNameTag("Missingno"); - if (e instanceof EntityLiving) - ((EntityLiving) e).setHealth(((EntityLiving) e).getHealth() * (random.nextInt(5) + 1)); - w.spawnEntityInWorld(e); - target.setDead(); - } - } - } - - @SuppressWarnings("ConstantConditions") - @Override - public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) { - float r = random.nextFloat(); - if (r > 0.95f) event.getDrops().clear(); - if (event.getDrops() != null) { - if (r < 0.4f && (event.getDrops().get(0).getItem() == Item.getItemFromBlock(Blocks.IRON_ORE) || event.getDrops().get(0).getItem() == Item.getItemFromBlock(Blocks.GOLD_ORE))) { - ItemStack change = new ItemStack(Item.getItemFromBlock(Blocks.IRON_ORE)); - int i = random.nextInt(12); - switch (i) { - case 0: - change = new ItemStack(Item.getItemFromBlock(Blocks.GOLD_ORE)); - break; - case 1: - change = new ItemStack(Item.getItemFromBlock(Blocks.REDSTONE_ORE)); - break; - case 2: - change = new ItemStack(Item.getItemFromBlock(Blocks.LAPIS_ORE)); - break; - case 3: - change = new ItemStack(Item.getItemFromBlock(Blocks.DIAMOND_ORE)); - break; - case 4: - change = new ItemStack(Item.getItemFromBlock(Blocks.QUARTZ_ORE)); - break; - case 5: - change = new ItemStack(oreCobalt.getItem()); - break; - case 6: - change = new ItemStack(oreArdite.getItem()); - break; - case 7: - change = new ItemStack(titaniteOre); - break; - case 8: - change = new ItemStack(bismuthOre); - break; - case 9: - change = new ItemStack(tiberiumOre); - break; - case 10: - change = new ItemStack(eterniteOre); - break; - case 11: - change = new ItemStack(Item.getItemFromBlock(Blocks.IRON_ORE)); - break; - } - event.getDrops().set(0, change); - - - } - } - } -} diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitResonance.java b/src/main/java/com/sosnitzka/taiga/traits/TraitResonance.java index 52e0712..6e87d26 100644 --- a/src/main/java/com/sosnitzka/taiga/traits/TraitResonance.java +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitResonance.java @@ -8,14 +8,16 @@ import slimeknights.tconstruct.library.traits.AbstractTrait; public class TraitResonance extends AbstractTrait { + public static float chance = 0.33f; + public TraitResonance() { super("resonance", TextFormatting.AQUA); } @Override public void afterHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean wasCritical, boolean wasHit) { - if (random.nextFloat() <= .33) { - target.knockBack(target, random.nextFloat() * random.nextFloat() * 12, player.posX - target.posX, player.posZ - target.posZ); + if (random.nextFloat() <= chance) { + target.knockBack(target, random.nextFloat() * random.nextFloat() * 10, player.posX - target.posX, player.posZ - target.posZ); } } } diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitReviving.java b/src/main/java/com/sosnitzka/taiga/traits/TraitReviving.java index 55a6578..de47dee 100644 --- a/src/main/java/com/sosnitzka/taiga/traits/TraitReviving.java +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitReviving.java @@ -1,13 +1,11 @@ package com.sosnitzka.taiga.traits; -import net.minecraft.block.state.IBlockState; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityCreature; import net.minecraft.entity.EntityList; -import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.monster.EntitySkeleton; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; +import net.minecraft.init.SoundEvents; import net.minecraft.util.math.BlockPos; import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; @@ -17,13 +15,13 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import slimeknights.tconstruct.library.traits.AbstractTrait; import slimeknights.tconstruct.library.utils.TagUtil; import slimeknights.tconstruct.library.utils.TinkerUtil; -import slimeknights.tconstruct.library.utils.ToolHelper; - -import static com.sosnitzka.taiga.util.Utils.isNight; public class TraitReviving extends AbstractTrait { + + public final float chance = 0.15f; + public TraitReviving() { super("reviving", TextFormatting.DARK_PURPLE); MinecraftForge.EVENT_BUS.register(this); @@ -35,36 +33,19 @@ public class TraitReviving extends AbstractTrait { World w = e.getEntity().getEntityWorld(); if (!w.isRemote && e.getSource().getEntity() != null) { if (e.getSource().getEntity() instanceof EntityPlayer && e.getEntity() instanceof EntityCreature) { - if (isNight((int) w.getWorldTime()) && random.nextFloat() > 0.85 && TinkerUtil.hasTrait(TagUtil.getTagSafe(((EntityPlayer) e.getSource().getEntity()).getHeldItemMainhand()), identifier)) { + if (random.nextFloat() <= chance && TinkerUtil.hasTrait(TagUtil.getTagSafe(((EntityPlayer) e.getSource().getEntity()).getHeldItemMainhand()), identifier)) { String name = EntityList.getEntityString(e.getEntity()); - Entity ent = EntityList.createEntityByName(name, w); if (ent != null) { if (ent instanceof EntitySkeleton && e.getEntity() instanceof EntitySkeleton) { ((EntitySkeleton) ent).setSkeletonType(((EntitySkeleton) e.getEntity()).getSkeletonType()); } - ent.setPosition(pos.getX(), pos.getY(), pos.getZ()); w.spawnEntityInWorld(ent); + e.getSource().getEntity().playSound(SoundEvents.AMBIENT_CAVE, 1.0F, 1.0F); } } } } } - - @Override - public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) { - int time = (int) world.getWorldTime(); - if (random.nextFloat() <= 0.1 && isNight(time)) { - ToolHelper.healTool(tool, random.nextInt(15) + 1, null); - } - } - - @Override - public void afterHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean wasCritical, boolean wasHit) { - int time = (int) player.getEntityWorld().getWorldTime(); - if (random.nextFloat() <= 0.1 && isNight(time)) { - ToolHelper.healTool(tool, random.nextInt(15) + 1, null); - } - } } diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitSofty.java b/src/main/java/com/sosnitzka/taiga/traits/TraitSofty.java index d4db53a..e78410c 100644 --- a/src/main/java/com/sosnitzka/taiga/traits/TraitSofty.java +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitSofty.java @@ -1,28 +1,49 @@ package com.sosnitzka.taiga.traits; -import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; -import net.minecraft.entity.EntityLivingBase; import net.minecraft.item.ItemStack; -import net.minecraft.util.math.BlockPos; import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.entity.player.PlayerEvent; +import net.minecraftforge.event.world.BlockEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import slimeknights.tconstruct.library.traits.AbstractTrait; +import slimeknights.tconstruct.library.utils.TagUtil; +import slimeknights.tconstruct.library.utils.TinkerUtil; import slimeknights.tconstruct.library.utils.ToolHelper; public class TraitSofty extends AbstractTrait { - private static final float chance = 0.2f; + + private static final float chance = 0.1f; + private static final float speedmulti = 1.3f; public TraitSofty() { - super("softy", TextFormatting.AQUA); + super("softy", TextFormatting.GRAY); MinecraftForge.EVENT_BUS.register(this); } + @SubscribeEvent + public void blockbreak(BlockEvent.BreakEvent e) { + float r = random.nextFloat(); + float hardness = e.getWorld().getBlockState(e.getPos()).getBlockHardness(e.getWorld(), e.getPos()); + if (TinkerUtil.hasTrait(TagUtil.getTagSafe(e.getPlayer().getHeldItemMainhand()), identifier)) { + if (!e.getWorld().isRemote && r <= chance && hardness >= 1.0f) { + e.setCanceled(true); + ToolHelper.damageTool(e.getPlayer().getHeldItemMainhand(), random.nextInt(3) + 1, e.getPlayer()); + } + } + } + @Override - public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) { - if (!world.isRemote && state.getMaterial().equals(Material.GROUND) && random.nextFloat() < chance) { - ToolHelper.healTool(tool, random.nextInt(10), player); + public void miningSpeed(ItemStack tool, PlayerEvent.BreakSpeed event) { + World w = event.getEntity().getEntityWorld(); + IBlockState state = w.getBlockState(event.getPos()); + float speed = event.getOriginalSpeed(); + if (!w.isRemote) { + if (state.getBlockHardness(w, event.getPos()) <= 1.0f) { + event.setNewSpeed(speed * speedmulti); + } } } } diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitSoulEater.java b/src/main/java/com/sosnitzka/taiga/traits/TraitSoulEater.java new file mode 100644 index 0000000..57653a7 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitSoulEater.java @@ -0,0 +1,70 @@ +package com.sosnitzka.taiga.traits; + +import com.sosnitzka.taiga.util.Utils; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.text.TextFormatting; +import net.minecraft.world.World; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.entity.living.LivingDeathEvent; +import net.minecraftforge.event.entity.player.ItemTooltipEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import slimeknights.tconstruct.library.traits.AbstractTrait; +import slimeknights.tconstruct.library.utils.TagUtil; +import slimeknights.tconstruct.library.utils.TinkerUtil; + + +public class TraitSoulEater extends AbstractTrait { + + private static float divisor = 20000f; + + public TraitSoulEater() { + super(TraitSoulEater.class.getSimpleName().toLowerCase().substring(5), TextFormatting.RED); + MinecraftForge.EVENT_BUS.register(this); + } + + @SubscribeEvent + public void onTargetKilled(LivingDeathEvent event) { + if (event.getSource().getEntity() instanceof EntityPlayer && event.getEntity() instanceof EntityLiving) { + World w = event.getSource().getEntity().worldObj; + ItemStack tool = ((EntityPlayer) event.getSource().getEntity()).getHeldItemMainhand(); + if (!w.isRemote && TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier)) { + NBTTagCompound tag = TagUtil.getExtraTag(tool); + Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag); + float health = ((EntityLiving) event.getEntity()).getMaxHealth(); + data.killcount += 1; + data.health = health; + float bonus = Math.round(random.nextFloat() * health * 100) / divisor; + data.bonus += bonus; + data.bonus = (float) Math.round(data.bonus * 100f) / 100f; + data.write(tag); + TagUtil.setExtraTag(tool, tag); + } + } + } + + @Override + public float damage(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, float newDamage, boolean isCritical) { + NBTTagCompound tag = TagUtil.getExtraTag(tool); + Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag); + float bonus = data.bonus; + return newDamage + bonus; + } + + @SubscribeEvent + public void onItemTooltip(ItemTooltipEvent e) { + ItemStack tool = e.getItemStack(); + if (TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier)) { + NBTTagCompound tag = TagUtil.getExtraTag(tool); + Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag); + if (data.killcount != 0) { + e.getToolTip().add(TextFormatting.WHITE + "Killed: " + TextFormatting.WHITE + data.killcount); + e.getToolTip().add(TextFormatting.WHITE + "Bonus: " + TextFormatting.WHITE + data.bonus); + } + } + } + +} diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitTantrum.java b/src/main/java/com/sosnitzka/taiga/traits/TraitTantrum.java new file mode 100644 index 0000000..a0bb62f --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitTantrum.java @@ -0,0 +1,105 @@ +package com.sosnitzka.taiga.traits; + +import com.sosnitzka.taiga.util.Utils; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.text.TextFormatting; +import net.minecraft.world.World; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.entity.player.ItemTooltipEvent; +import net.minecraftforge.event.entity.player.PlayerInteractEvent; +import net.minecraftforge.event.world.BlockEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import slimeknights.tconstruct.common.Sounds; +import slimeknights.tconstruct.library.traits.AbstractTrait; +import slimeknights.tconstruct.library.utils.TagUtil; +import slimeknights.tconstruct.library.utils.TinkerUtil; + +import static com.sosnitzka.taiga.Blocks.tiberiumOre; + +public class TraitTantrum extends AbstractTrait { + + /* + * Collects tiberium, to release it for an explosion + */ + + public static float max_charges = 12f; + public static float max_power = 5; + + public TraitTantrum() { + super("tantrum", TextFormatting.RED); + MinecraftForge.EVENT_BUS.register(this); + } + + @Override + public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) { + World w = event.getWorld(); + if (!w.isRemote) { + if (event.getState().getBlock().equals(tiberiumOre)) { + event.getDrops().clear(); + NBTTagCompound tag = TagUtil.getExtraTag(tool); + Data data = Data.read(tag); + if (data.amount >= max_charges) { + return; + } + data.amount += (0.25f + Utils.round2(random.nextDouble() / 4)); + if (data.amount >= max_charges) { + TagUtil.setEnchantEffect(tool, true); + if (event.getHarvester() instanceof EntityPlayerMP) { + Sounds.PlaySoundForPlayer(event.getHarvester(), Sounds.shocking_discharge, 1f, 0.8f + .2f * random.nextFloat()); + } + } + data.write(tag); + TagUtil.setExtraTag(tool, tag); + } + } + } + + @SubscribeEvent + public void RightClickItem(PlayerInteractEvent.RightClickItem event) { + World w = event.getWorld(); + BlockPos pos = event.getPos(); + ItemStack tool = event.getEntityPlayer().getHeldItemMainhand(); + if (!w.isRemote && TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier)) { + NBTTagCompound tag = TagUtil.getExtraTag(tool); + Data data = Data.read(tag); + if (data.amount > 1f) { + double d = Math.min(Utils.round2(random.nextDouble() * data.amount), max_power); + w.newExplosion(event.getEntityPlayer(), pos.getX(), pos.getY(), pos.getZ(), (float) Math.pow((double) 1.2f, d), false, true); + data.amount -= d; + data.write(tag); + TagUtil.setExtraTag(tool, tag); + TagUtil.setEnchantEffect(tool, false); + } + } + } + + @SubscribeEvent + public void onItemTooltip(ItemTooltipEvent e) { + ItemStack tool = e.getItemStack(); + if (TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier)) { + NBTTagCompound tag = TagUtil.getExtraTag(tool); + Data data = Data.read(tag); + e.getToolTip().add(TextFormatting.RED + "Charge: " + data.amount); + } + } + + public static class Data { + + float amount; + + public static Data read(NBTTagCompound tag) { + Data data = new Data(); + data.amount = tag.getFloat("amount"); + return data; + } + + public void write(NBTTagCompound tag) { + tag.setFloat("amount", amount); + } + } + + +} diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitTemplate.java b/src/main/java/com/sosnitzka/taiga/traits/TraitTemplate.java new file mode 100644 index 0000000..281c4f2 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitTemplate.java @@ -0,0 +1,17 @@ +package com.sosnitzka.taiga.traits; + +import net.minecraft.util.text.TextFormatting; +import net.minecraftforge.common.MinecraftForge; +import slimeknights.tconstruct.library.traits.AbstractTrait; + + +public class TraitTemplate extends AbstractTrait { + + + public TraitTemplate() { + super(TraitTemplate.class.getSimpleName().toLowerCase().substring(5), TextFormatting.RED); + MinecraftForge.EVENT_BUS.register(this); + } + + +} diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitTraditional.java b/src/main/java/com/sosnitzka/taiga/traits/TraitTraditional.java index e8626e5..c422524 100644 --- a/src/main/java/com/sosnitzka/taiga/traits/TraitTraditional.java +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitTraditional.java @@ -1,14 +1,49 @@ package com.sosnitzka.taiga.traits; -import net.minecraft.util.text.TextFormatting; +import net.minecraft.entity.EntityCreature; +import net.minecraft.entity.EntityList; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.entity.living.LivingDeathEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import slimeknights.tconstruct.library.traits.AbstractTrait; +import slimeknights.tconstruct.library.utils.TagUtil; +import slimeknights.tconstruct.library.utils.TinkerUtil; public class TraitTraditional extends AbstractTrait { + public TraitTraditional() { - super("traditional", TextFormatting.GREEN); + super("traditional", 0xff33ff); MinecraftForge.EVENT_BUS.register(this); } + + @SubscribeEvent + public void onEntityKill(LivingDeathEvent e) { + World w = e.getEntity().getEntityWorld(); + if (!w.isRemote && e.getSource().getEntity() instanceof EntityPlayer && e.getEntity() instanceof EntityCreature) { + if (TinkerUtil.hasTrait(TagUtil.getTagSafe(((EntityPlayer) e.getSource().getEntity()).getHeldItemMainhand()), identifier)) { + String name = EntityList.getEntityString(e.getEntity()); + } + } + } + + public static class Data { + + String mobname; + + public static Data read(NBTTagCompound tag) { + Data data = new Data(); + data.mobname = tag.getString("mob"); + return data; + } + + public void write(NBTTagCompound tag) { + tag.setString("amount", mobname); + } + } + } diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitUncertain.java b/src/main/java/com/sosnitzka/taiga/traits/TraitUncertain.java index f91031f..f7ca5ab 100644 --- a/src/main/java/com/sosnitzka/taiga/traits/TraitUncertain.java +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitUncertain.java @@ -1,79 +1,15 @@ package com.sosnitzka.taiga.traits; -import net.minecraft.block.state.IBlockState; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.monster.EntityMob; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Items; -import net.minecraft.item.ItemStack; -import net.minecraft.util.math.BlockPos; import net.minecraft.util.text.TextFormatting; -import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.living.LivingDropsEvent; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import slimeknights.tconstruct.library.traits.AbstractTrait; -import slimeknights.tconstruct.library.utils.TagUtil; -import slimeknights.tconstruct.library.utils.TinkerUtil; -import slimeknights.tconstruct.library.utils.ToolHelper; - -import static com.sosnitzka.taiga.Items.glimmerstone_dust; -import static com.sosnitzka.taiga.Items.tiberiumShardInstable; -import static com.sosnitzka.taiga.Items.tiberium_nugget; public class TraitUncertain extends AbstractTrait { public TraitUncertain() { - super("uncertain", TextFormatting.RED); + super(TraitUncertain.class.getName().toLowerCase().substring(4), TextFormatting.RED); MinecraftForge.EVENT_BUS.register(this); } - - @Override - public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) { - if (random.nextFloat() <= 0.05) { - if (!world.isRemote) { - if (random.nextFloat() > 0.1f) { - explode(world, player, pos.getX(), pos.getY(), pos.getZ()); - } else explode(world, null, pos.getX(), pos.getY(), pos.getZ()); - } - ToolHelper.damageTool(tool, random.nextInt(5) + 1, null); - } - } - - @SubscribeEvent - public void onMobDrops(LivingDropsEvent event) { - World w = event.getEntity().getEntityWorld(); - if (!w.isRemote && event.getSource().getEntity() instanceof EntityPlayer) { - EntityPlayer player = (EntityPlayer) event.getSource().getEntity(); - if (event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) { - ItemStack i = new ItemStack(Items.COAL, random.nextInt(4)); - if (random.nextBoolean()) { - int r = random.nextInt(4); - switch (r) { - case 0: - i = new ItemStack(Items.GUNPOWDER, random.nextInt(4)); - break; - case 1: - i = new ItemStack(tiberiumShardInstable, random.nextInt(4)); - break; - case 2: - i = new ItemStack(tiberium_nugget, random.nextInt(12)); - break; - case 3: - i = new ItemStack(glimmerstone_dust, random.nextInt(4)); - break; - } - } - event.getDrops().add(0, new EntityItem(w, event.getEntity().posX, event.getEntity().posY, event.getEntity().posZ, i)); - } - } - } - - private void explode(World w, Entity e, double x, double y, double z) { - w.newExplosion(e, x, y, z, 1.2f + random.nextFloat() * 4, random.nextBoolean(), true); - } } diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitVortex.java b/src/main/java/com/sosnitzka/taiga/traits/TraitVortex.java new file mode 100644 index 0000000..54880ff --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitVortex.java @@ -0,0 +1,17 @@ +package com.sosnitzka.taiga.traits; + +import net.minecraft.util.text.TextFormatting; +import net.minecraftforge.common.MinecraftForge; +import slimeknights.tconstruct.library.traits.AbstractTrait; + + +public class TraitVortex extends AbstractTrait { + + + public TraitVortex() { + super(TraitVortex.class.getSimpleName().toLowerCase().substring(5), TextFormatting.DARK_PURPLE); + MinecraftForge.EVENT_BUS.register(this); + } + + +} diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitWhirl.java b/src/main/java/com/sosnitzka/taiga/traits/TraitWhirl.java new file mode 100644 index 0000000..829c73f --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitWhirl.java @@ -0,0 +1,98 @@ +package com.sosnitzka.taiga.traits; + +import com.sosnitzka.taiga.util.Utils; +import net.minecraft.entity.Entity; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; +import net.minecraft.util.text.TextFormatting; +import net.minecraft.world.World; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.common.util.FakePlayer; +import net.minecraftforge.event.entity.player.ItemTooltipEvent; +import net.minecraftforge.event.entity.player.PlayerInteractEvent; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import slimeknights.tconstruct.library.traits.AbstractTrait; +import slimeknights.tconstruct.library.utils.TagUtil; +import slimeknights.tconstruct.library.utils.TinkerUtil; +import slimeknights.tconstruct.library.utils.ToolHelper; + + +public class TraitWhirl extends AbstractTrait { + + protected static int TICK_PER_STAT = 36; + + public TraitWhirl() { + super(TraitWhirl.class.getSimpleName().toLowerCase().substring(5), TextFormatting.DARK_BLUE); + MinecraftForge.EVENT_BUS.register(this); + } + + @Override + public void onUpdate(ItemStack tool, World world, Entity entity, int itemSlot, boolean isSelected) { + + if (entity instanceof FakePlayer || entity.worldObj.isRemote) { + return; + } + + if (entity.ticksExisted % TICK_PER_STAT > 0) { + return; + } + + NBTTagCompound tag = TagUtil.getExtraTag(tool); + Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag); + data.radius += random.nextFloat() * 0.5f; + if (data.radius >= 1) { + TagUtil.setEnchantEffect(tool, true); + } + data.write(tag); + TagUtil.setExtraTag(tool, tag); + } + + @SubscribeEvent + public void onRightClickItem(PlayerInteractEvent.RightClickItem event) { + World w = event.getWorld(); + ItemStack tool = event.getEntityPlayer().getHeldItemMainhand(); + if (!w.isRemote && TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier)) { + NBTTagCompound tag = TagUtil.getExtraTag(tool); + Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag); + if ((int) data.radius >= 1) { + int r = Math.min((int) data.radius, 8); + for (int x = -r; x <= r; x++) { + for (int y = -r; y <= r; y++) { + for (int z = -r; z <= r; z++) { + if (MathHelper.sqrt_double(x * x + y * y + z * z) > r) { + continue; + } + BlockPos nPos = new BlockPos(event.getPos().getX() + x, event.getPos().getY() + y, event.getPos().getZ() + z); + if (!(event.getWorld().getBlockState(nPos).equals(Blocks.WATER.getDefaultState()) || event.getWorld().getBlockState(nPos).equals(Blocks.FLOWING_WATER.getDefaultState()))) + continue; + event.getWorld().destroyBlock(nPos, false); + } + } + } + data.radius -= r; + data.write(tag); + TagUtil.setExtraTag(tool, tag); + TagUtil.setEnchantEffect(tool, false); + ToolHelper.damageTool(tool, 2 * r, event.getEntityPlayer()); + } + + } + } + + + @SubscribeEvent + public void onItemTooltip(ItemTooltipEvent e) { + ItemStack tool = e.getItemStack(); + if (TinkerUtil.hasTrait(TagUtil.getTagSafe(tool), identifier)) { + NBTTagCompound tag = TagUtil.getExtraTag(tool); + Utils.GeneralNBTData data = Utils.GeneralNBTData.read(tag); + if (data.radius > 0) { + e.getToolTip().add(TextFormatting.BLUE + "Actual Radius: " + TextFormatting.WHITE + Math.round(data.radius * 100) / 100); + } + } + } + +} diff --git a/src/main/java/com/sosnitzka/taiga/util/FuelHandler.java b/src/main/java/com/sosnitzka/taiga/util/FuelHandler.java deleted file mode 100644 index 1db610f..0000000 --- a/src/main/java/com/sosnitzka/taiga/util/FuelHandler.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.sosnitzka.taiga.util; - -import net.minecraft.item.ItemStack; -import net.minecraftforge.fml.common.IFuelHandler; - -import static com.sosnitzka.taiga.Items.*; -import static slimeknights.tconstruct.TConstruct.random; - -public class FuelHandler implements IFuelHandler { - - @Override - public int getBurnTime(ItemStack fuel) { - if (fuel.getItem().equals(lignite)) { - return 200 * 6; - } - if (fuel.getItem().equals(fuel_brick)) { - return 200 * 50; - } - if (fuel.getItem().equals(glimmercoal)) { - return (random.nextInt(20) + 40) * 200; - } - return 0; - } -} diff --git a/src/main/java/com/sosnitzka/taiga/util/Generator.java b/src/main/java/com/sosnitzka/taiga/util/Generator.java index e7aed53..3e6a694 100644 --- a/src/main/java/com/sosnitzka/taiga/util/Generator.java +++ b/src/main/java/com/sosnitzka/taiga/util/Generator.java @@ -1,41 +1,214 @@ package com.sosnitzka.taiga.util; -import com.sosnitzka.taiga.world.ZWorldGenMinable; +import com.google.common.collect.Lists; +import com.sosnitzka.taiga.world.MeteorWorldSaveData; +import com.sosnitzka.taiga.world.WorldGenMinable; import net.minecraft.block.properties.IProperty; import net.minecraft.block.state.IBlockState; import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; +import net.minecraft.world.biome.Biome; +import net.minecraftforge.oredict.OreDictionary; +import java.util.HashSet; +import java.util.List; import java.util.Random; +import java.util.Set; + +import static com.sosnitzka.taiga.util.Utils.nextInt; public class Generator { - public static void generateOre(IBlockState state, Random random, int x, int z, World world, int chance, int minY, int maxY, int minSize, int maxSize) { - generateOre(state, Blocks.STONE.getDefaultState(), null, null, random, x, z, world, chance, minY, maxY, minSize, maxSize); + public static void generateOre(boolean center, IBlockState state, IBlockState replace, Random random, int x, int z, World world, int chance, int minY, int maxY, int minSize, int maxSize) { + if (center) { + generateOreDense(state, replace, random, x, z, world, chance, minY, maxY, minSize, maxSize, null); + } else { + generateOre(state, replace, null, null, random, x, z, world, chance, minY, maxY, minSize, maxSize, null); + } } - public static void generateNetherOre(IBlockState state, Random random, int x, int z, World world, int chance, int minY, int maxY, int minSize, int maxSize) { - generateOre(state, Blocks.NETHERRACK.getDefaultState(), null, null, random, x, z, world, chance, minY, maxY, minSize, maxSize); - } - public static void generateEndOre(IBlockState state, Random random, int x, int z, World world, int chance, int minY, int maxY, int minSize, int maxSize) { - generateOre(state, Blocks.END_STONE.getDefaultState(), null, null, random, x, z, world, chance, minY, maxY, minSize, maxSize); + public static void generateOre(IBlockState state, IBlockState replace, IProperty property, Comparable comparable, Random random, int chunkX, int chunkZ, World world, int chance, int minY, int maxY, int minSize, int maxSize, List<Biome> biome) { + int size = minSize + random.nextInt(maxSize - minSize); + int height = maxY - minY; + for (int i = 0; i < chance; i++) { + int posX = chunkX + random.nextInt(16); + int posY = random.nextInt(height) + minY; + int posZ = chunkZ + random.nextInt(16); + BlockPos cPos = new BlockPos(posX, posY, posZ); + if (biome == null || biome.contains(world.getBiome(cPos))) { + new WorldGenMinable(state, size, StateMatcher.forState(replace, property, comparable)).generate(world, random, new BlockPos(posX, posY, posZ)); + } + } } - public static void generateOre(IBlockState state, IBlockState replace, Random random, int chunkX, int chunkZ, World world, int chance, int minY, int maxY, int minSize, int maxSize) { - generateOre(state, replace, null, null, random, chunkX, chunkZ, world, chance, minY, maxY, minSize, maxSize); + public static void generateOreDescending(List<IBlockState> replaceBlockList, IBlockState replacementBlock, Random random, int chunkX, int chunkZ, World world, int count, int minY, int maxY, int chance) { + if (random.nextFloat() < (float) (0.01 * chance)) + generateOreDescending(replaceBlockList, replacementBlock, random, chunkX, chunkZ, world, count, minY, maxY); } - public static void generateOre(IBlockState state, IBlockState replace, IProperty property, Comparable comparable, Random random, int chunkX, int chunkZ, World world, int chance, int minY, int maxY, int minSize, int maxSize) { - int size = minSize + random.nextInt(maxSize - minSize); - int height = maxY - minY; + public static void generateOreDescending(List<IBlockState> replaceBlockList, IBlockState replacementBlock, Random random, int chunkX, int chunkZ, World world, int count, int minY, int maxY) { + for (int i = 0; i < count; i++) { + int posX = chunkX + random.nextInt(16); + int posZ = chunkZ + random.nextInt(16); + BlockPos cPos = new BlockPos(posX, maxY, posZ); + if (replaceBlockList.contains(world.getBlockState(cPos)) && replaceBlockList.contains(world.getBlockState(cPos.up()))) { + continue; + } + if (replaceBlockList.contains(world.getBlockState(cPos)) && !replaceBlockList.contains(world.getBlockState(cPos.up()))) + world.setBlockState(cPos, replacementBlock); + while (!replaceBlockList.contains(world.getBlockState(cPos.down())) && cPos.getY() > minY) { + cPos = cPos.down(); + } + if (replaceBlockList.contains(world.getBlockState(cPos.down()))) + world.setBlockState(cPos.down(), replacementBlock); + } + } + + public static void generateOreBottom(IBlockState replacedBlock, IBlockState replacementBlock, Random random, int chunkX, int chunkZ, World world, int chance, int spread, int maxY) { for (int i = 0; i < chance; i++) { int posX = chunkX + random.nextInt(16); - int posY = random.nextInt(height) + minY; + int posY = 0; int posZ = chunkZ + random.nextInt(16); - new ZWorldGenMinable(state, size, StateMatcher.forState(replace, property, comparable)).generate(world, random, new BlockPos(posX, posY, posZ)); + BlockPos cPos = new BlockPos(posX, posY, posZ); + if (Blocks.AIR.getDefaultState().equals(world.getBlockState(cPos))) { + while (world.getBlockState(cPos).equals(Blocks.AIR.getDefaultState()) && cPos.getY() < maxY) { + cPos = cPos.up(); + } + if (world.getBlockState(cPos).equals(replacedBlock)) { + world.setBlockState(cPos.up(random.nextInt(spread)), replacementBlock); + } + } + } + } + + public static void generateCube(boolean fly, IBlockState centerBlock, IBlockState hullBlock, Random random, int chunkX, int chunkZ, World world, int count, int chance, int minY, int maxY, int maxS) { + for (int i = 0; i < count; i++) { + if (random.nextFloat() < 0.01 * chance) { + int outer = nextInt(random, 1, maxS); + int inner = random.nextInt(2); + int posX = chunkX + random.nextInt(16); + int posY = nextInt(random, minY, maxY); + int posZ = chunkZ + random.nextInt(16); + BlockPos cPos = new BlockPos(posX, posY, posZ); + if (!fly) { + if (world.getBlockState(cPos).equals(Blocks.AIR.getDefaultState()) && world.getBlockState(cPos.down()).equals(Blocks.AIR.getDefaultState())) { + // we are in mid air, go down + while (world.getBlockState(cPos.down()).equals(Blocks.AIR.getDefaultState())) { + cPos = cPos.down(); + } + } + } + cPos.down((random.nextInt(4) + 2) * outer); + for (int x = -inner; x <= inner; x++) { + for (int y = -inner; y <= inner; y++) { + for (int z = -inner; z <= inner; z++) { + if (!world.getBlockState(cPos).equals(Blocks.AIR.getDefaultState())) + continue; + world.setBlockState(new BlockPos(cPos.getX() + x, cPos.getY() + y, cPos.getZ() + z), centerBlock); + } + } + } + for (int x = -outer; x <= outer; x++) { + for (int y = -outer; y <= outer; y++) { + for (int z = -outer; z <= outer; z++) { + BlockPos nPos = new BlockPos(cPos.getX() + x, cPos.getY() + y, cPos.getZ() + z); + if (world.getBlockState(nPos).equals(centerBlock) || !world.getBlockState(nPos).equals(Blocks.AIR.getDefaultState())) + continue; + world.setBlockState(nPos, hullBlock); + } + } + } + + } + } + } + + + public static void generateMeteor(IBlockState centerBlock, IBlockState hullBlock, Random random, int chunkX, int chunkZ, World world, int count, int chance, int minY, int maxY) { + Set<Item> validSurface = new HashSet<Item>(); + List<String> oredictentries = Lists.newArrayList("dirt", "grass", "stone", "sand", "gravel", "cobblestone", "sandstone"); + for (String e : oredictentries) { + for (ItemStack stack : OreDictionary.getOres(e)) { + validSurface.add(stack.getItem()); + } + } + + for (int i = 0; i < count; i++) { + if (random.nextFloat() < 0.01 * chance) { + int r = nextInt(random, 1, 5); + int posX = chunkX + random.nextInt(16); + int posY = nextInt(random, minY, maxY); + int posZ = chunkZ + random.nextInt(16); + BlockPos cPos = new BlockPos(posX, posY, posZ); + if (world.getBlockState(cPos).equals(Blocks.AIR.getDefaultState()) && world.getBlockState(cPos.down()).equals(Blocks.AIR.getDefaultState())) { + // we are in mid air, go down + while (world.getBlockState(cPos.down()).equals(Blocks.AIR.getDefaultState())) { + cPos = cPos.down(); + } + } + if (!validSurface.contains(Item.getItemFromBlock(world.getBlockState(cPos.down()).getBlock()))) + continue; + cPos.down((random.nextInt(3) + 1) * r); + + MeteorWorldSaveData saveData = MeteorWorldSaveData.getForWorld(world); + saveData.addPos(cPos); + saveData.markDirty(); + + int t = 1; + if (r > 3) t = random.nextInt(r - 1); + for (int x = -t; x <= t; x++) { + for (int y = -t; y <= t; y++) { + for (int z = -t; z <= t; z++) { + if (MathHelper.sqrt_double(x * x + y * y + z * z) > t) { + continue; + } + world.setBlockState(new BlockPos(cPos.getX() + x, cPos.getY() + y, cPos.getZ() + z), centerBlock); + } + } + } + for (int x = -r; x <= r; x++) { + for (int y = -r; y <= r; y++) { + for (int z = -r; z <= r; z++) { + if (MathHelper.sqrt_double(x * x + y * y + z * z) > r) { + continue; + } + BlockPos nPos = new BlockPos(cPos.getX() + x, cPos.getY() + y, cPos.getZ() + z); + if (world.getBlockState(nPos).equals(centerBlock)) + continue; + world.setBlockState(nPos, hullBlock); + } + } + } + } + } + } + + + public static void generateOreDense(IBlockState state, IBlockState replace, Random random, int chunkX, int chunkZ, World world, int chance, int minY, int maxY, int minSize, int maxSize, List<Biome> biome) { + int size = minSize + random.nextInt(maxSize - minSize); + int height = maxY - minY; + BlockPos cPos; + for (int i = 0; i < chance; i += 5) { + for (int j = 0; j <= 2; j++) { + cPos = new BlockPos(chunkX + random.nextInt(16), minY + height * j / 5 + random.nextInt(height * 3 / 5), chunkZ + random.nextInt(16)); + if (biome == null || biome.contains(world.getBiome(cPos))) { + new WorldGenMinable(state, size, StateMatcher.forState(replace, null, null)).generate(world, random, cPos); + } + } + for (int j = 0; j <= 1; j++) { + int x = chunkX + random.nextInt(16); + int y = chunkZ + random.nextInt(16); + cPos = new BlockPos(x, minY + height * 4 / 9 + random.nextInt(height / 9), y); + if (biome == null || biome.contains(world.getBiome(cPos))) { + new WorldGenMinable(state, size, StateMatcher.forState(replace, null, null)).generate(world, random, cPos); + } + } } } } diff --git a/src/main/java/com/sosnitzka/taiga/util/StateMatcher.java b/src/main/java/com/sosnitzka/taiga/util/StateMatcher.java index b473be5..87a4949 100644 --- a/src/main/java/com/sosnitzka/taiga/util/StateMatcher.java +++ b/src/main/java/com/sosnitzka/taiga/util/StateMatcher.java @@ -64,8 +64,6 @@ public class StateMatcher implements Predicate<IBlockState> { IBlockState bState = world.getBlockState(blockPos); if (bState.getBlock() == this.state.getBlock() && bState.getValue(property) == value) { - // Check if a replacable block is near origin block - show pos in console - // System.out.println(String.format("Found block with desired state! (%s), Block: %s, try #%s, y=%s", i, Y)); return true; } } diff --git a/src/main/java/com/sosnitzka/taiga/util/Utils.java b/src/main/java/com/sosnitzka/taiga/util/Utils.java index 57c74cf..a2872e4 100644 --- a/src/main/java/com/sosnitzka/taiga/util/Utils.java +++ b/src/main/java/com/sosnitzka/taiga/util/Utils.java @@ -1,20 +1,33 @@ package com.sosnitzka.taiga.util; +import com.sosnitzka.taiga.Items; +import com.sosnitzka.taiga.TAIGA; +import com.sun.istack.internal.Nullable; import net.minecraft.block.Block; +import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidRegistry; -import net.minecraftforge.fml.common.event.FMLInterModComms; +import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fml.common.registry.GameRegistry; +import org.apache.commons.lang3.StringUtils; +import slimeknights.tconstruct.library.MaterialIntegration; +import slimeknights.tconstruct.library.TinkerRegistry; +import slimeknights.tconstruct.library.materials.*; + +import java.lang.reflect.Field; +import java.util.Random; + +import static com.sosnitzka.taiga.TAIGA.proxy; public class Utils { public static String PREFIX_INGOT = "ingot"; public static String PREFIX_NUGGET = "nugget"; public static String PREFIX_ORE = "ore"; public static String PREFIX_BLOCK = "block"; + public static String PREFIX_DUST = "dust"; /** * Registers the block and its corresponding item (block as item in inventory) @@ -28,6 +41,7 @@ public class Utils { /** * Registers the fluid and its bucket item + * * @param fluid the fluid */ public static void registerFluid(Fluid fluid) { @@ -35,51 +49,101 @@ public class Utils { FluidRegistry.addBucketForFluid(fluid); } - public static void registerTinkerAlloys(Fluid alloy, int out, Fluid first, int inOne, Fluid second, int inTwo) { - NBTTagList tagList = new NBTTagList(); - NBTTagCompound fluid = new NBTTagCompound(); - fluid.setString("FluidName", alloy.getName()); - fluid.setInteger("Amount", out); - tagList.appendTag(fluid); - fluid = new NBTTagCompound(); - fluid.setString("FluidName", first.getName()); - fluid.setInteger("Amount", inOne); - tagList.appendTag(fluid); - fluid = new NBTTagCompound(); - fluid.setString("FluidName", second.getName()); - fluid.setInteger("Amount", inTwo); - tagList.appendTag(fluid); - - NBTTagCompound message = new NBTTagCompound(); - message.setTag("alloy", tagList); - FMLInterModComms.sendMessage("tconstruct", "alloy", message); - } - public static void registerTinkerAlloys(Fluid alloy, int out, Fluid first, int inOne, Fluid second, int inTwo, Fluid third, int inThree) { - NBTTagList tagList = new NBTTagList(); - NBTTagCompound fluid = new NBTTagCompound(); - fluid.setString("FluidName", alloy.getName()); - fluid.setInteger("Amount", out); - tagList.appendTag(fluid); - fluid = new NBTTagCompound(); - fluid.setString("FluidName", first.getName()); - fluid.setInteger("Amount", inOne); - tagList.appendTag(fluid); - fluid = new NBTTagCompound(); - fluid.setString("FluidName", second.getName()); - fluid.setInteger("Amount", inTwo); - tagList.appendTag(fluid); - fluid = new NBTTagCompound(); - fluid.setString("FluidName", third.getName()); - fluid.setInteger("Amount", inThree); - tagList.appendTag(fluid); - - NBTTagCompound message = new NBTTagCompound(); - message.setTag("alloy", tagList); - FMLInterModComms.sendMessage("tconstruct", "alloy", message); + public static void registerTinkerAlloy(FluidStack output, FluidStack... inputs) { + if (inputs.length >= 2 && output != null) { + TinkerRegistry.registerAlloy(output, inputs); + } } public static boolean isNight(int time) { return time > 12500; } + + public static double round2(double d) { + return (Math.round(d * 100.0) / 100.0); + } + + public static void integrateMaterial(String oreSuffix, @Nullable Material material, Fluid fluid, int headDura, float headSpeed, float headAttack, float handleMod, int handleDura, int extra, int headLevel, float draw, float range, int bdamage) { + integrateMaterial(oreSuffix, material, fluid, headDura, headSpeed, headAttack, handleMod, handleDura, extra, headLevel, new BowMaterialStats(draw, range, bdamage), false, true); + } + + public static void integrateMaterial(String oreSuffix, @Nullable Material material, Fluid fluid, int headDura, float headSpeed, float headAttack, float handleMod, int handleDura, int extra, int headLevel, BowMaterialStats bowstats) { + integrateMaterial(oreSuffix, material, fluid, headDura, headSpeed, headAttack, handleMod, handleDura, extra, headLevel, bowstats, false, true); + } + + public static void integrateMaterial(String oreSuffix, @Nullable Material material, Fluid fluid, int headDura, float headSpeed, float headAttack, float handleMod, int handleDura, int extra, int headLevel, BowMaterialStats bowstats, boolean craft, boolean cast) { + if (material != null) { + if (TinkerRegistry.getMaterial(material.identifier) != Material.UNKNOWN) + return; + + TinkerRegistry.addMaterialStats(material, new HeadMaterialStats(headDura, headSpeed, headAttack, headLevel)); + TinkerRegistry.addMaterialStats(material, new HandleMaterialStats(handleMod, handleDura)); + TinkerRegistry.addMaterialStats(material, new ExtraMaterialStats(extra)); + TinkerRegistry.addMaterialStats(material, bowstats); + + Item item = null; + Field[] items = Items.class.getDeclaredFields(); + for (Field i : items) { + if (i.getName().equals(StringUtils.uncapitalize(oreSuffix) + "Ingot")) { + Item r = null; + try { + r = (Item) i.get(i.getType()); + } catch (Exception e) { + e.printStackTrace(); + } + item = r; + } + } + + material.setFluid(fluid).setCraftable(craft).setCastable(cast).addItem(item, 1, Material.VALUE_Ingot); + material.setRepresentativeItem(item); + proxy.setRenderInfo(material); + } + + MaterialIntegration integration = new MaterialIntegration(material, fluid, oreSuffix); + integration.integrate(); + TAIGA.integrateList.add(integration); + } + + public static void integrateOre(String oreSuffix, Fluid fluid) { + integrateMaterial(oreSuffix, null, fluid, -1, -1, -1, -1, -1, -1, -1, new BowMaterialStats(0.1f, 0.1f, -1f), true, true); + } + + public static int nextInt(Random random, int min, int max) { + return random.nextInt((max - min) + 1) + min; + } + + public static class GeneralNBTData { + + public int killcount; + public float health; + public int brokenblocks; + public float bonus; + public int curse; + public String name; + public float radius; + + public static GeneralNBTData read(NBTTagCompound tag) { + GeneralNBTData data = new GeneralNBTData(); + data.killcount = tag.getInteger("killcount"); + data.brokenblocks = tag.getInteger("brokenblocks"); + data.health = tag.getFloat("health"); + data.bonus = tag.getFloat("bonus"); + data.curse = tag.getInteger("curse"); + data.name = tag.getString("name"); + data.radius = tag.getFloat("radius"); + return data; + } + + public void write(NBTTagCompound tag) { + tag.setInteger("killcount", killcount); + tag.setInteger("brokenblocks", brokenblocks); + tag.setFloat("health", health); + tag.setFloat("bonus", bonus); + tag.setInteger("curse", curse); + tag.setString("name", name); + tag.setFloat("radius", radius); + } + } } diff --git a/src/main/java/com/sosnitzka/taiga/world/MeteorWorldSaveData.java b/src/main/java/com/sosnitzka/taiga/world/MeteorWorldSaveData.java new file mode 100644 index 0000000..6cfdb84 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/world/MeteorWorldSaveData.java @@ -0,0 +1,64 @@ +package com.sosnitzka.taiga.world; + +import com.google.gson.Gson; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraft.world.WorldSavedData; +import net.minecraft.world.storage.MapStorage; + +import java.util.ArrayList; +import java.util.List; + +import static com.sosnitzka.taiga.TAIGA.MODID; + +public class MeteorWorldSaveData extends WorldSavedData { + private static final String DATA_NAME = MODID + "_meteors"; + private List<BlockPos> posList; + + public MeteorWorldSaveData() { + super(DATA_NAME); + } + + public static MeteorWorldSaveData getForWorld(World world) { + MapStorage storage = world.getPerWorldStorage(); + MeteorWorldSaveData instance = (MeteorWorldSaveData) storage.getOrLoadData(MeteorWorldSaveData.class, DATA_NAME); + + if (instance == null) { + instance = new MeteorWorldSaveData(); + storage.setData(DATA_NAME, instance); + } + return instance; + } + + public List<BlockPos> getPosList() { + return posList; + } + + public void addPos(BlockPos pos) { + if (posList == null) + posList = new ArrayList<BlockPos>(); + + posList.add(pos); + } + + public boolean removePos(BlockPos pos) { + return posList != null && posList.remove(pos); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + if (nbt.hasKey("posData")) { + posList = new Gson().fromJson(nbt.getString("posData"), posList.getClass()); + } + } + + @Override + public NBTTagCompound writeToNBT(NBTTagCompound compound) { + if (posList == null) + return null; + + compound.setString("posData", new Gson().toJson(posList)); + return compound; + } +} diff --git a/src/main/java/com/sosnitzka/taiga/world/WorldGen.java b/src/main/java/com/sosnitzka/taiga/world/WorldGen.java new file mode 100644 index 0000000..8e022fb --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/world/WorldGen.java @@ -0,0 +1,71 @@ +package com.sosnitzka.taiga.world; + + +import com.sosnitzka.taiga.util.Generator; +import net.minecraft.block.BlockStone; +import net.minecraft.init.Biomes; +import net.minecraft.init.Blocks; +import net.minecraft.world.World; +import net.minecraft.world.chunk.IChunkGenerator; +import net.minecraft.world.chunk.IChunkProvider; +import net.minecraftforge.fml.common.IWorldGenerator; + +import java.util.Random; + +import static com.google.common.collect.Lists.newArrayList; +import static com.sosnitzka.taiga.Blocks.*; +import static com.sosnitzka.taiga.TAIGAConfiguration.ironGen; + +@SuppressWarnings("unchecked") +public class WorldGen implements IWorldGenerator { + private void nether(Random random, int x, int z, World world) { + + Generator.generateOre(false, Blocks.NETHERRACK.getDefaultState(), tiberiumOre.getDefaultState(), random, x, z, world, 15, 0, 128, 10, 35); + Generator.generateOre(true, Blocks.NETHERRACK.getDefaultState(), prometheumOre.getDefaultState(), random, x, z, world, 25, 0, 128, 2, 4); + Generator.generateOre(true, Blocks.NETHERRACK.getDefaultState(), valyriumOre.getDefaultState(), random, x, z, world, 10, 0, 32, 2, 4); + Generator.generateOreDescending(newArrayList(Blocks.LAVA.getDefaultState(), Blocks.FLOWING_LAVA.getDefaultState()), osramOre.getDefaultState(), random, x, z, world, 1, 0, 64, 5); + + } + + private void world(Random random, int x, int z, World world) { + // Optional + if (!ironGen) { + Generator.generateOre(false, Blocks.STONE.getDefaultState(), Blocks.IRON_ORE.getDefaultState(), random, x, z, world, 20, 0, 128, 1, 8); + } + Generator.generateMeteor(duraniteOre.getDefaultState(), blockMeteorite.getDefaultState(), random, x, z, world, 1, 4, 16, 112); + Generator.generateOreDescending(newArrayList(Blocks.LAVA.getDefaultState(), Blocks.FLOWING_LAVA.getDefaultState()), basaltBlock.getDefaultState(), random, x, z, world, 10, 0, 64); + Generator.generateOreDescending(newArrayList(Blocks.BEDROCK.getDefaultState()), eezoOre.getDefaultState(), random, x, z, world, 3, 0, 10); + Generator.generateOre(karmesineOre.getDefaultState(), Blocks.STONE.getDefaultState(), BlockStone.VARIANT, BlockStone.EnumType.DIORITE, random, x, z, world, 15, 0, 96, 3, 4, null); + Generator.generateOre(karmesineOre.getDefaultState(), Blocks.STONE.getDefaultState(), BlockStone.VARIANT, BlockStone.EnumType.ANDESITE, random, x, z, world, 15, 0, 96, 3, 4, null); + Generator.generateOre(karmesineOre.getDefaultState(), Blocks.STONE.getDefaultState(), BlockStone.VARIANT, BlockStone.EnumType.GRANITE, random, x, z, world, 15, 0, 96, 3, 4, null); + Generator.generateOreDense(vibraniumOre.getDefaultState(), Blocks.STONE.getDefaultState(), random, x, z, world, 10, 0, 64, 2, 12, newArrayList(Biomes.DESERT_HILLS, Biomes.EXTREME_HILLS, Biomes.EXTREME_HILLS_EDGE, Biomes.EXTREME_HILLS_WITH_TREES, Biomes.DESERT)); + } + + private void end(Random random, int x, int z, World world) { + Generator.generateCube(true, uruOre.getDefaultState(), blockObsidiorite.getDefaultState(), random, x, z, world, 1, 2, 0, 96, 3); + Generator.generateOre(Blocks.END_STONE.getDefaultState(), Blocks.AIR.getDefaultState(), null, null, random, x, z, world, 1, 3, 64, 3, 8, null); + Generator.generateOre(false, Blocks.END_STONE.getDefaultState(), auroriumOre.getDefaultState(), random, x, z, world, 10, 32, 48, 2, 4); + Generator.generateOre(true, Blocks.END_STONE.getDefaultState(), palladiumOre.getDefaultState(), random, x, z, world, 10, 48, 64, 2, 4); + Generator.generateOreBottom(Blocks.END_STONE.getDefaultState(), abyssumOre.getDefaultState(), random, x, z, world, 12, 4, 64); + } + + @Override + public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator, IChunkProvider chunkProvider) { + int x = chunkX * 16; + int z = chunkZ * 16; + switch (world.provider.getDimension()) { + case -1: + nether(random, x, z, world); + break; + case 0: + world(random, x, z, world); + break; + case 1: + end(random, x, z, world); + break; + default: + world(random, x, z, world); + break; + } + } +} diff --git a/src/main/java/com/sosnitzka/taiga/world/ZWorldGenMinable.java b/src/main/java/com/sosnitzka/taiga/world/WorldGenMinable.java index dd293bd..06f5a7f 100644 --- a/src/main/java/com/sosnitzka/taiga/world/ZWorldGenMinable.java +++ b/src/main/java/com/sosnitzka/taiga/world/WorldGenMinable.java @@ -8,12 +8,11 @@ import net.minecraft.init.Blocks; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenMinable; import javax.annotation.ParametersAreNonnullByDefault; import java.util.Random; -public class ZWorldGenMinable extends WorldGenMinable { +public class WorldGenMinable extends net.minecraft.world.gen.feature.WorldGenMinable { private final IBlockState oreBlock; /** * The number of com.sosnitzka.taiga.blocks to generate. @@ -21,11 +20,11 @@ public class ZWorldGenMinable extends WorldGenMinable { private final int numberOfBlocks; private final Predicate<IBlockState> predicate; - public ZWorldGenMinable(IBlockState state, int blockCount) { + public WorldGenMinable(IBlockState state, int blockCount) { this(state, blockCount, BlockMatcher.forBlock(Blocks.STONE)); } - public ZWorldGenMinable(IBlockState state, int blockCount, Predicate<IBlockState> predicate) { + public WorldGenMinable(IBlockState state, int blockCount, Predicate<IBlockState> predicate) { super(state, blockCount, predicate); this.oreBlock = state; this.numberOfBlocks = blockCount; diff --git a/src/main/java/com/sosnitzka/taiga/world/ZWorldGen.java b/src/main/java/com/sosnitzka/taiga/world/ZWorldGen.java deleted file mode 100644 index 3902d4c..0000000 --- a/src/main/java/com/sosnitzka/taiga/world/ZWorldGen.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.sosnitzka.taiga.world; - -import com.sosnitzka.taiga.util.Generator; -import net.minecraft.block.BlockStone; -import net.minecraft.init.Blocks; -import net.minecraft.world.World; -import net.minecraft.world.chunk.IChunkGenerator; -import net.minecraft.world.chunk.IChunkProvider; -import net.minecraftforge.fml.common.IWorldGenerator; - -import java.util.Random; - -import static com.sosnitzka.taiga.Blocks.*; -import static com.sosnitzka.taiga.TAIGAConfiguration.*; - -public class ZWorldGen implements IWorldGenerator { - private void nether(Random random, int x, int z, World world) { - - Generator.generateNetherOre(titaniteOre.getDefaultState(), random, x, z, world, (int) (35 * titaniteFactor * oreFactorGeneral), 1, 64, 2, 12); - Generator.generateNetherOre(tiberiumOre.getDefaultState(), random, x, z, world, (int) (30 * tiberiumFactor * oreFactorGeneral), 0, 128, 2, 15); - Generator.generateNetherOre(palladiumOre.getDefaultState(), random, x, z, world, (int) (35 * palladiumFactor * oreFactorGeneral), 32, 64, 2, 6); - Generator.generateNetherOre(prometheumOre.getDefaultState(), random, x, z, world, (int) (35 * prometheumFactor * oreFactorGeneral), 64, 128, 2, 6); - } - - private void world(Random random, int x, int z, World world) { - - // Optional - if (slagIronGen) { - Generator.generateOre(slagironOre.getDefaultState(), random, x, z, world, (int) (45 * slagironFactor * oreFactorGeneral), 0, 128, 2, 12); - } - if (slagGoldGen) { - Generator.generateOre(slaggoldOre.getDefaultState(), random, x, z, world, (int) (20 * slaggoldFactor * oreFactorGeneral), 0, 32, 2, 12); - } - if (ironGen) { - Generator.generateOre(Blocks.IRON_ORE.getDefaultState(), random, x, z, world, (int) (30 * ironFactor * oreFactorGeneral), 0, 128, 1, 9); - } - - // to be integrated mod specific - Generator.generateOre(basalt.getDefaultState(), Blocks.LAVA.getDefaultState(), random, x, z, world, (int) (125 * basaltFactor * oreFactorGeneral), 0, 28, 2, 4); - Generator.generateOre(rottenGround.getDefaultState(), Blocks.DIRT.getDefaultState(), random, x, z, world, (int) (25 * rottengroundFactor * oreFactorGeneral), 50, 70, 2, 15); - - Generator.generateOre(ligniteOre.getDefaultState(), random, x, z, world, (int) (30 * ligniteFactor * oreFactorGeneral), 8, 96, 2, 12); - Generator.generateOre(vibraniumOre.getDefaultState(), random, x, z, world, (int) (30 * vibraniumFactor * oreFactorGeneral), 48, 64, 2, 8); - Generator.generateOre(karmesineOre.getDefaultState(), random, x, z, world, (int) (35 * karmesineFactor * oreFactorGeneral), 16, 48, 2, 8); - Generator.generateOre(bismuthOre.getDefaultState(), random, x, z, world, (int) (40 * bismuthFactor * oreFactorGeneral), 50, 130, 2, 4); - Generator.generateOre(mythrilOre.getDefaultState(), random, x, z, world, (int) (34 * mythrilFactor * oreFactorGeneral), 16, 32, 2, 8); - Generator.generateOre(meteoriteOre.getDefaultState(), random, x, z, world, (int) (10 * meteoriteFactor * oreFactorGeneral), 0, 32, 2, 25); - Generator.generateOre(mindoriteOre.getDefaultState(), Blocks.STONE.getDefaultState(), BlockStone.VARIANT, BlockStone.EnumType.DIORITE, random, x, z, world, (int) (120 * mindoriteFactor * oreFactorGeneral), 16, 96, 2, 8); - Generator.generateOre(arcaniteOre.getDefaultState(), Blocks.STONE.getDefaultState(), BlockStone.VARIANT, BlockStone.EnumType.GRANITE, random, x, z, world, (int) (120 * arcaniteFactor * oreFactorGeneral), 16, 96, 2, 8); - Generator.generateOre(eterniteOre.getDefaultState(), Blocks.STONE.getDefaultState(), BlockStone.VARIANT, BlockStone.EnumType.ANDESITE, random, x, z, world, (int) (120 * eterniteFactor * oreFactorGeneral), 16, 96, 2, 8); - } - - private void end(Random random, int x, int z, World world) { - Generator.generateEndOre(adamantiteOre.getDefaultState(), random, x, z, world, (int) (15 * adamantiteFactor * oreFactorGeneral), 10, 35, 2, 8); - Generator.generateEndOre(rubiumOre.getDefaultState(), random, x, z, world, (int) (15 * rubiumFactor * oreFactorGeneral), 10, 65, 2, 8); - Generator.generateEndOre(ignititeOre.getDefaultState(), random, x, z, world, (int) (15 * ignititeFactor * oreFactorGeneral), 10, 45, 2, 8); - Generator.generateEndOre(violiumOre.getDefaultState(), random, x, z, world, (int) (15 * violiumFactor * oreFactorGeneral), 10, 55, 2, 8); - - } - - @Override - public void generate(Random random, int chunkX, int chunkZ, World world, IChunkGenerator chunkGenerator, IChunkProvider chunkProvider) { - int x = chunkX * 16; - int z = chunkZ * 16; - switch (world.provider.getDimension()) { - case -1: - nether(random, x, z, world); - break; - case 0: - world(random, x, z, world); - break; - case 1: - end(random, x, z, world); - break; - default: - world(random, x, z, world); - break; - } - } -} |
