[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
This commit is contained in:
Giovanni Harting
2016-12-05 20:34:02 +01:00
committed by GitHub
parent 9554b56931
commit 826ab1cf3a
625 changed files with 3540 additions and 3279 deletions

View File

@@ -1,4 +1,3 @@
// For those who want the bleeding edge
buildscript {
repositories {
jcenter()
@@ -61,9 +60,9 @@ task buildInfo {
version = project.buildInfo.revision
minecraft {
version = "1.10.2-12.18.2.2107"
version = "1.10.2-12.18.2.2147"
runDir = "run"
mappings = "snapshot_20161015"
mappings = "snapshot_20161101"
replace '@VERSION@', project.version
}
@@ -75,11 +74,12 @@ dependencies {
//deobfCompile "codechicken:CodeChickenLib:1.9.4-2.0.2.39:deobf"
//deobfCompile "codechicken:CodeChickenCore:1.9.4-2.0.3.65:deobf"
//deobfCompile "codechicken:NotEnoughItems:1.9-${nei_version}:dev"
deobfCompile "slimeknights.mantle:Mantle:1.10.2-1.0.0.jenkins170:deobf"
deobfCompile "slimeknights.mantle:Mantle:1.10.2-1.1.+:deobf"
//Old: deobfCompile "slimeknights.mantle:Mantle:1.9-0.10.0.jenkins132:deobf"
deobfCompile "mezz.jei:jei_1.10.2:3.9.3.252"
deobfCompile "slimeknights:TConstruct:1.10.2-2.5.5.jenkins393:deobf"
deobfCompile "mezz.jei:jei_1.10.2:3.+"
deobfCompile "slimeknights:TConstruct:1.10.2-2.6.+:deobf"
//compile files('libs/TConstruct-1.9-2.3.1.DEV.1d4c1de-deobf.jar')
//compile group: 'com.google.guava', name: 'guava', version: '20.0'
}
sourceSets {
@@ -111,6 +111,7 @@ processResources {
}
task deobfJar(type: Jar) {
//noinspection GroovyAssignabilityCheck
from sourceSets.main.output
classifier = 'deobf'
}

View File

@@ -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);
}
}

View File

@@ -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);
// 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);
// 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);
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);
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());
/**
* Registers all materials' ingots and nuggets <br>

View File

@@ -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;
}
};
}

View File

@@ -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);
}
}

View File

@@ -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");
public static Item ironNugget = new BasicItem("iron_nugget", PREFIX_NUGGET);
//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 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 imperomiteIngot = new BasicItem("imperomite_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 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 nucleumDust = new BasicItem("nucleum_dust", PREFIX_DUST);
public static Item nucleumNugget = new BasicItem("nucleum_nugget", PREFIX_NUGGET);
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 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 solariumIngot = new BasicItem("solarium_ingot", PREFIX_INGOT);
public static Item dyoniteIngot = new BasicItem("dyonite_ingot", PREFIX_INGOT);
public static Item ultraniteIngot = new BasicItem("ultranite_ingot", PREFIX_INGOT);
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 astriumDust = new BasicItem("astrium_dust", PREFIX_DUST);
public static Item astriumNugget = new BasicItem("astrium_nugget", PREFIX_NUGGET);
public static Item tiberiumShardInstable = new BasicItem("tiberium_shard_instable");
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;
}

View File

@@ -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);
}

View File

@@ -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);
}
}

View File

@@ -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);

View File

@@ -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);
}
}
}
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}
}

View File

@@ -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);
}
}
}
}

View File

@@ -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;
}
}
}

View File

@@ -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);
}
}
}

View File

@@ -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;
}

View File

@@ -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) {

View File

@@ -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) {
}
}

View File

@@ -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)));
}
}

View File

@@ -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));
}
}

View File

@@ -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();
}
}

View File

@@ -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);
}
}
}
}
}

View File

@@ -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

View File

@@ -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));
}
}
}

View File

@@ -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;

View File

@@ -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);
}
}
}

View File

@@ -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);
}
}
}
}

View File

@@ -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);
}
}
}
}

View File

@@ -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) {
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;
}
if (random.nextFloat() <= 0.01 && world.provider.getDimension() != -1) {
teleport(player, world);
player.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F);
}
}
}
}
@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());

View File

@@ -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);
}
}

View File

@@ -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));
}
}

View File

@@ -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;
@@ -21,20 +20,11 @@ public class TraitDiffuse extends AbstractTrait {
MinecraftForge.EVENT_BUS.register(this);
}
@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();
}
}

View File

@@ -18,17 +18,19 @@ 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)) {
if (player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) {
if (r <= 0.80) {
event.setDroppedExperience(0);
}
if (r > 0.95 && player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) {
} else {
event.setDroppedExperience(event.getDroppedExperience() * (random.nextInt(3) + 2));
}
}
}
}
}

View File

@@ -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) {

View File

@@ -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());

View File

@@ -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));
}
}

View File

@@ -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));
}
}
}

View File

@@ -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);
}
}

View File

@@ -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));
}
}

View File

@@ -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));
}
}

View File

@@ -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());
}
}
}
}

View File

@@ -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);
}
}
}

View File

@@ -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);
}
}
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}
}

View File

@@ -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

View File

@@ -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);
}
}
}
}

View File

@@ -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);
}
}
}

View File

@@ -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);
}
}
}

View File

@@ -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);
}
}
}
}

View File

@@ -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);
}
}
}
}

View File

@@ -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);
}
}
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}
}
}

View File

@@ -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;
}
}

View File

@@ -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, 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 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) {
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);
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 (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 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 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 = 0;
int posZ = chunkZ + random.nextInt(16);
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);
}
}
}
}
}

View File

@@ -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;
}
}

View File

@@ -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 registerTinkerAlloy(FluidStack output, FluidStack... inputs) {
if (inputs.length >= 2 && output != null) {
TinkerRegistry.registerAlloy(output, inputs);
}
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 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);
}
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}
}

View File

@@ -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;

View File

@@ -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;
}
}
}

View File

@@ -0,0 +1,18 @@
{
"forge_marker": 1,
"defaults": {
"model": "minecraft:cube_all",
"textures": {
"all": "taiga:blocks/block/abyssum"
},
"transform": "forge:default-block"
},
"variants": {
"normal": [
{}
],
"inventory": [
{}
]
}
}

View File

@@ -0,0 +1,18 @@
{
"forge_marker": 1,
"defaults": {
"model": "minecraft:cube_all",
"textures": {
"all": "taiga:blocks/ore/abyssum"
},
"transform": "forge:default-block"
},
"variants": {
"normal": [
{}
],
"inventory": [
{}
]
}
}

View File

@@ -0,0 +1,18 @@
{
"forge_marker": 1,
"defaults": {
"model": "minecraft:cube_all",
"textures": {
"all": "taiga:blocks/block/adamant"
},
"transform": "forge:default-block"
},
"variants": {
"normal": [
{}
],
"inventory": [
{}
]
}
}

View File

@@ -1,7 +0,0 @@
{
"variants": {
"normal": {
"model": "taiga:adamantite_block"
}
}
}

View File

@@ -1,7 +0,0 @@
{
"variants": {
"normal": {
"model": "taiga:adamantite_ore"
}
}
}

View File

@@ -1,7 +0,0 @@
{
"variants": {
"normal": {
"model": "taiga:aegisalt_block"
}
}
}

View File

@@ -1,7 +0,0 @@
{
"variants": {
"normal": {
"model": "taiga:arcanite_block"
}
}
}

View File

@@ -1,7 +0,0 @@
{
"variants": {
"normal": {
"model": "taiga:arcanite_ore"
}
}
}

View File

@@ -1,7 +1,18 @@
{
"forge_marker": 1,
"defaults": {
"model": "minecraft:cube_all",
"textures": {
"all": "taiga:blocks/block/astrium"
},
"transform": "forge:default-block"
},
"variants": {
"normal": {
"model": "taiga:astrium_block"
}
"normal": [
{}
],
"inventory": [
{}
]
}
}

View File

@@ -0,0 +1,18 @@
{
"forge_marker": 1,
"defaults": {
"model": "minecraft:cube_all",
"textures": {
"all": "taiga:blocks/block/aurorium"
},
"transform": "forge:default-block"
},
"variants": {
"normal": [
{}
],
"inventory": [
{}
]
}
}

View File

@@ -0,0 +1,18 @@
{
"forge_marker": 1,
"defaults": {
"model": "minecraft:cube_all",
"textures": {
"all": "taiga:blocks/ore/aurorium"
},
"transform": "forge:default-block"
},
"variants": {
"normal": [
{}
],
"inventory": [
{}
]
}
}

View File

@@ -1,7 +0,0 @@
{
"variants": {
"normal": {
"model": "taiga:basalt"
}
}
}

View File

@@ -0,0 +1,18 @@
{
"forge_marker": 1,
"defaults": {
"model": "minecraft:cube_all",
"textures": {
"all": "taiga:blocks/block/basalt"
},
"transform": "forge:default-block"
},
"variants": {
"normal": [
{}
],
"inventory": [
{}
]
}
}

View File

@@ -1,7 +0,0 @@
{
"variants": {
"normal": {
"model": "taiga:bismuth_block"
}
}
}

View File

@@ -1,7 +0,0 @@
{
"variants": {
"normal": {
"model": "taiga:bismuth_ore"
}
}
}

View File

@@ -1,7 +0,0 @@
{
"variants": {
"normal": {
"model": "taiga:bysmuid_block"
}
}
}

View File

@@ -1,7 +0,0 @@
{
"variants": {
"normal": {
"model": "taiga:cryptogen_block"
}
}
}

View File

@@ -0,0 +1,18 @@
{
"forge_marker": 1,
"defaults": {
"model": "minecraft:cube_all",
"textures": {
"all": "taiga:blocks/block/duranite"
},
"transform": "forge:default-block"
},
"variants": {
"normal": [
{}
],
"inventory": [
{}
]
}
}

View File

@@ -0,0 +1,18 @@
{
"forge_marker": 1,
"defaults": {
"model": "minecraft:cube_all",
"textures": {
"all": "taiga:blocks/ore/duranite"
},
"transform": "forge:default-block"
},
"variants": {
"normal": [
{}
],
"inventory": [
{}
]
}
}

View File

@@ -1,7 +1,18 @@
{
"forge_marker": 1,
"defaults": {
"model": "minecraft:cube_all",
"textures": {
"all": "taiga:blocks/block/dyonite"
},
"transform": "forge:default-block"
},
"variants": {
"normal": {
"model": "taiga:dyonite_block"
}
"normal": [
{}
],
"inventory": [
{}
]
}
}

View File

@@ -0,0 +1,18 @@
{
"forge_marker": 1,
"defaults": {
"model": "minecraft:cube_all",
"textures": {
"all": "taiga:blocks/block/eezo"
},
"transform": "forge:default-block"
},
"variants": {
"normal": [
{}
],
"inventory": [
{}
]
}
}

View File

@@ -0,0 +1,18 @@
{
"forge_marker": 1,
"defaults": {
"model": "minecraft:cube_all",
"textures": {
"all": "taiga:blocks/ore/eezo"
},
"transform": "forge:default-block"
},
"variants": {
"normal": [
{}
],
"inventory": [
{}
]
}
}

View File

@@ -1,7 +0,0 @@
{
"variants": {
"normal": {
"model": "taiga:eternite_block"
}
}
}

View File

@@ -1,7 +0,0 @@
{
"variants": {
"normal": {
"model": "taiga:eternite_ore"
}
}
}

View File

@@ -4,276 +4,241 @@
"model": "forge:fluid"
},
"variants": {
"arcanite": [
"triberium_fluid": [
{
"custom": {
"fluid": "arcanite"
"fluid": "triberium_fluid"
}
}
],
"tiberium": [
"meteorite_fluid": [
{
"custom": {
"fluid": "tiberium"
"fluid": "meteorite_fluid"
}
}
],
"prometheum": [
"basalt_fluid": [
{
"custom": {
"fluid": "prometheum"
"fluid": "basalt_fluid"
}
}
],
"rubium": [
"tiberium_fluid": [
{
"custom": {
"fluid": "rubium"
"fluid": "tiberium_fluid"
}
}
],
"violium": [
"aurorium_fluid": [
{
"custom": {
"fluid": "violium"
"fluid": "aurorium_fluid"
}
}
],
"bismuth": [
"prometheum_fluid": [
{
"custom": {
"fluid": "bismuth"
"fluid": "prometheum_fluid"
}
}
],
"karmesine": [
"duranite_fluid": [
{
"custom": {
"fluid": "karmesine"
"fluid": "duranite_fluid"
}
}
],
"mindorite": [
"valyrium_fluid": [
{
"custom": {
"fluid": "mindorite"
"fluid": "valyrium_fluid"
}
}
],
"titanite": [
"vibranium_fluid": [
{
"custom": {
"fluid": "titanite"
"fluid": "vibranium_fluid"
}
}
],
"meteorite": [
"karmesine_fluid": [
{
"custom": {
"fluid": "meteorite"
"fluid": "karmesine_fluid"
}
}
],
"adamantite": [
"palladium_fluid": [
{
"custom": {
"fluid": "adamantite"
"fluid": "palladium_fluid"
}
}
],
"vibranium": [
"uru_fluid": [
{
"custom": {
"fluid": "vibranium"
"fluid": "uru_fluid"
}
}
],
"ignitite": [
"osram_fluid": [
{
"custom": {
"fluid": "ignitite"
"fluid": "osram_fluid"
}
}
],
"palladium": [
"abyssum_fluid": [
{
"custom": {
"fluid": "palladium"
"fluid": "abyssum_fluid"
}
}
],
"eternite": [
"eezo_fluid": [
{
"custom": {
"fluid": "eternite"
"fluid": "eezo_fluid"
}
}
],
"mythril": [
"tiberiumX_fluid": [
{
"custom": {
"fluid": "mythril"
"fluid": "tiberiumX_fluid"
}
}
],
"astrium": [
"fractum_fluid": [
{
"custom": {
"fluid": "astrium"
"fluid": "fractum_fluid"
}
}
],
"nitronite": [
"violium_fluid": [
{
"custom": {
"fluid": "nitronite"
"fluid": "violium_fluid"
}
}
],
"proxideum": [
"proxii_fluid": [
{
"custom": {
"fluid": "proxideum"
"fluid": "proxii_fluid"
}
}
],
"noctunyx": [
"tritonite_fluid": [
{
"custom": {
"fluid": "noctunyx"
"fluid": "tritonite_fluid"
}
}
],
"imperomite": [
"ignitz_fluid": [
{
"custom": {
"fluid": "imperomite"
"fluid": "ignitz_fluid"
}
}
],
"cryptogen": [
"imperomite_fluid": [
{
"custom": {
"fluid": "cryptogen"
"fluid": "imperomite_fluid"
}
}
],
"fractoryte": [
"solarium_fluid": [
{
"custom": {
"fluid": "fractoryte"
"fluid": "solarium_fluid"
}
}
],
"seismodium": [
"nihilite_fluid": [
{
"custom": {
"fluid": "seismodium"
"fluid": "nihilite_fluid"
}
}
],
"terramite": [
"adamant_fluid": [
{
"custom": {
"fluid": "terramite"
"fluid": "adamant_fluid"
}
}
],
"lumixyl": [
"dyonite_fluid": [
{
"custom": {
"fluid": "lumixyl"
"fluid": "dyonite_fluid"
}
}
],
"solarium": [
"nucleum_fluid": [
{
"custom": {
"fluid": "solarium"
"fluid": "nucleum_fluid"
}
}
],
"dyonite": [
"lumix_fluid": [
{
"custom": {
"fluid": "dyonite"
"fluid": "lumix_fluid"
}
}
],
"ultranite": [
"seismum_fluid": [
{
"custom": {
"fluid": "ultranite"
"fluid": "seismum_fluid"
}
}
],
"nucleum": [
"astrium_fluid": [
{
"custom": {
"fluid": "nucleum"
"fluid": "astrium_fluid"
}
}
],
"aegisalt": [
"niob_fluid": [
{
"custom": {
"fluid": "aegisalt"
"fluid": "niob_fluid"
}
}
],
"bysmuid": [
"yrdeen_fluid": [
{
"custom": {
"fluid": "bysmuid"
"fluid": "yrdeen_fluid"
}
}
],
"radiant_enderium": [
"iox_fluid": [
{
"custom": {
"fluid": "radiant_enderium"
"fluid": "iox_fluid"
}
}
],
"glimming_enderium": [
"obsidiorite_fluid": [
{
"custom": {
"fluid": "glimming_enderium"
}
}
],
"energy_enderium": [
{
"custom": {
"fluid": "energy_enderium"
}
}
],
"glimmercoal_fluid": [
{
"custom": {
"fluid": "glimmercoal_fluid"
}
}
],
"nitro_fluid": [
{
"custom": {
"fluid": "nitro_fluid"
}
}
],
"anthracite_fluid": [
{
"custom": {
"fluid": "anthracite_fluid"
}
}
],
"spectrum_fluid": [
{
"custom": {
"fluid": "spectrum_fluid"
"fluid": "obsidiorite_fluid"
}
}
]

View File

@@ -1,7 +0,0 @@
{
"variants": {
"normal": {
"model": "taiga:fractoryte_block"
}
}
}

View File

@@ -0,0 +1,18 @@
{
"forge_marker": 1,
"defaults": {
"model": "minecraft:cube_all",
"textures": {
"all": "taiga:blocks/block/fractum"
},
"transform": "forge:default-block"
},
"variants": {
"normal": [
{}
],
"inventory": [
{}
]
}
}

View File

@@ -1,7 +0,0 @@
{
"variants": {
"normal": {
"model": "taiga:ignitite_block"
}
}
}

View File

@@ -1,7 +0,0 @@
{
"variants": {
"normal": {
"model": "taiga:ignitite_ore"
}
}
}

View File

@@ -0,0 +1,18 @@
{
"forge_marker": 1,
"defaults": {
"model": "minecraft:cube_all",
"textures": {
"all": "taiga:blocks/block/ignitz"
},
"transform": "forge:default-block"
},
"variants": {
"normal": [
{}
],
"inventory": [
{}
]
}
}

View File

@@ -1,7 +1,18 @@
{
"forge_marker": 1,
"defaults": {
"model": "minecraft:cube_all",
"textures": {
"all": "taiga:blocks/block/imperomite"
},
"transform": "forge:default-block"
},
"variants": {
"normal": {
"model": "taiga:imperomite_block"
}
"normal": [
{}
],
"inventory": [
{}
]
}
}

View File

@@ -0,0 +1,18 @@
{
"forge_marker": 1,
"defaults": {
"model": "minecraft:cube_all",
"textures": {
"all": "taiga:blocks/block/iox"
},
"transform": "forge:default-block"
},
"variants": {
"normal": [
{}
],
"inventory": [
{}
]
}
}

View File

@@ -1,7 +1,18 @@
{
"forge_marker": 1,
"defaults": {
"model": "minecraft:cube_all",
"textures": {
"all": "taiga:blocks/block/karmesine"
},
"transform": "forge:default-block"
},
"variants": {
"normal": {
"model": "taiga:karmesine_block"
}
"normal": [
{}
],
"inventory": [
{}
]
}
}

View File

@@ -1,7 +1,18 @@
{
"forge_marker": 1,
"defaults": {
"model": "minecraft:cube_all",
"textures": {
"all": "taiga:blocks/ore/karmesine"
},
"transform": "forge:default-block"
},
"variants": {
"normal": {
"model": "taiga:karmesine_ore"
}
"normal": [
{}
],
"inventory": [
{}
]
}
}

View File

@@ -0,0 +1,18 @@
{
"forge_marker": 1,
"defaults": {
"model": "minecraft:cube_all",
"textures": {
"all": "taiga:blocks/ore/karmesineandensite"
},
"transform": "forge:default-block"
},
"variants": {
"normal": [
{}
],
"inventory": [
{}
]
}
}

Some files were not shown because too many files have changed in this diff Show More