forked from TAIGA/TAIGA
[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:
13
build.gradle
13
build.gradle
@@ -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'
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
@@ -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>
|
||||
|
@@ -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;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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);
|
||||
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
@@ -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);
|
||||
|
33
src/main/java/com/sosnitzka/taiga/blocks/BlockCobble.java
Normal file
33
src/main/java/com/sosnitzka/taiga/blocks/BlockCobble.java
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
70
src/main/java/com/sosnitzka/taiga/blocks/BlockMetal.java
Normal file
70
src/main/java/com/sosnitzka/taiga/blocks/BlockMetal.java
Normal 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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
68
src/main/java/com/sosnitzka/taiga/blocks/BlockOre.java
Normal file
68
src/main/java/com/sosnitzka/taiga/blocks/BlockOre.java
Normal 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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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;
|
||||
}
|
||||
|
@@ -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) {
|
||||
|
@@ -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) {
|
||||
}
|
||||
}
|
||||
|
@@ -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)));
|
||||
}
|
||||
}
|
||||
|
@@ -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));
|
||||
}
|
||||
}
|
||||
|
@@ -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();
|
||||
}
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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
|
||||
|
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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;
|
||||
|
113
src/main/java/com/sosnitzka/taiga/traits/TraitCatcher.java
Normal file
113
src/main/java/com/sosnitzka/taiga/traits/TraitCatcher.java
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
78
src/main/java/com/sosnitzka/taiga/traits/TraitCongenial.java
Normal file
78
src/main/java/com/sosnitzka/taiga/traits/TraitCongenial.java
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
58
src/main/java/com/sosnitzka/taiga/traits/TraitCursed.java
Normal file
58
src/main/java/com/sosnitzka/taiga/traits/TraitCursed.java
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
@@ -1,5 +1,7 @@
|
||||
package com.sosnitzka.taiga.traits;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.sosnitzka.taiga.util.Utils;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
@@ -10,76 +12,74 @@ import net.minecraft.init.Items;
|
||||
import net.minecraft.init.SoundEvents;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.text.TextComponentString;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.event.entity.living.LivingDropsEvent;
|
||||
import net.minecraftforge.event.world.BlockEvent;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import slimeknights.tconstruct.library.traits.AbstractTrait;
|
||||
import slimeknights.tconstruct.library.utils.TagUtil;
|
||||
import slimeknights.tconstruct.library.utils.TinkerUtil;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public class TraitCurvature extends AbstractTrait {
|
||||
public static int chance = 5;
|
||||
public static int distance = 10;
|
||||
|
||||
public TraitCurvature() {
|
||||
super("curvature", TextFormatting.BLACK);
|
||||
super("curvature", TextFormatting.DARK_PURPLE);
|
||||
MinecraftForge.EVENT_BUS.register(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) {
|
||||
if (player.worldObj.isRemote) {
|
||||
return;
|
||||
}
|
||||
if (random.nextFloat() <= 0.01 && world.provider.getDimension() != -1) {
|
||||
teleport(player, world);
|
||||
player.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F);
|
||||
public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) {
|
||||
if (!event.getWorld().isRemote && random.nextFloat() < 0.05) {
|
||||
List<IBlockState> blockstates = Lists.newArrayList(Blocks.STONE.getDefaultState(), Blocks.NETHERRACK.getDefaultState(), Blocks.END_STONE.getDefaultState(), Blocks.AIR.getDefaultState(), Blocks.DIRT.getDefaultState());
|
||||
IBlockState mainstate = event.getState();
|
||||
if (blockstates.contains(mainstate)) return;
|
||||
for (int i = 0; i < chance; i++) {
|
||||
int x = event.getPos().getX() + Utils.nextInt(random, -distance, distance);
|
||||
int y = event.getPos().getY() + Utils.nextInt(random, -distance, distance);
|
||||
int z = event.getPos().getZ() + Utils.nextInt(random, -distance, distance);
|
||||
BlockPos cPos = new BlockPos(x, y, z);
|
||||
IBlockState state = event.getWorld().getBlockState(cPos);
|
||||
if (blockstates.contains(state)) {
|
||||
event.getDrops().clear();
|
||||
event.getWorld().setBlockState(cPos, mainstate);
|
||||
event.getHarvester().playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F);
|
||||
event.getHarvester().addChatComponentMessage(new TextComponentString("Teleported to: " + x + " " + y + " " + z));
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void afterHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean wasCritical, boolean wasHit) {
|
||||
if (random.nextFloat() <= 0.3) {
|
||||
if (random.nextFloat() <= 0.15) {
|
||||
target.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F);
|
||||
changePos(player, target);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@SubscribeEvent
|
||||
public void onMobDrops(LivingDropsEvent event) {
|
||||
World w = event.getEntity().getEntityWorld();
|
||||
if (!w.isRemote && event.getSource().getEntity() instanceof EntityPlayer) {
|
||||
EntityPlayer player = (EntityPlayer) event.getSource().getEntity();
|
||||
if (event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) {
|
||||
ItemStack i = new ItemStack(Items.ENDER_PEARL, random.nextInt(3));
|
||||
ItemStack i = new ItemStack(Items.ENDER_PEARL, random.nextInt(2));
|
||||
event.getDrops().add(0, new EntityItem(w, event.getEntity().posX, event.getEntity().posY, event.getEntity().posZ, i));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void teleport(EntityLivingBase e, World w) {
|
||||
int x = e.getPosition().getX() + random.nextInt(250) - 125;
|
||||
int y = e.getPosition().getY();
|
||||
int z = e.getPosition().getZ() + random.nextInt(250) - 125;
|
||||
|
||||
// TODO: Make this a proper search for top block (if there is one)
|
||||
while (w.getBlockState(new BlockPos(x, y, z)).getBlock() != Blocks.AIR) {
|
||||
y++;
|
||||
}
|
||||
while (w.getBlockState(new BlockPos(x, y - 1, z)).getBlock() == Blocks.AIR) {
|
||||
if (y <= 0) {
|
||||
y = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
y--;
|
||||
}
|
||||
|
||||
e.setPosition(x, y, z);
|
||||
}
|
||||
|
||||
private void changePos(EntityLivingBase player, EntityLivingBase target) {
|
||||
BlockPos pp = new BlockPos(player.getPosition());
|
||||
BlockPos tp = new BlockPos(target.getPosition());
|
||||
|
@@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
|
115
src/main/java/com/sosnitzka/taiga/traits/TraitDecay.java
Normal file
115
src/main/java/com/sosnitzka/taiga/traits/TraitDecay.java
Normal 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));
|
||||
}
|
||||
}
|
@@ -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();
|
||||
}
|
||||
}
|
||||
|
@@ -18,16 +18,18 @@ public class TraitDissolving extends AbstractTrait {
|
||||
}
|
||||
|
||||
// high chance to remove XP, low chance to double,triple or quatruple dropped Experience
|
||||
|
||||
@SubscribeEvent
|
||||
public void onXpDrop(LivingExperienceDropEvent event) {
|
||||
if (!event.getEntity().getEntityWorld().isRemote) {
|
||||
EntityPlayer player = event.getAttackingPlayer();
|
||||
float r = random.nextFloat();
|
||||
if (r <= 0.75 && player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) {
|
||||
event.setDroppedExperience(0);
|
||||
}
|
||||
if (r > 0.95 && player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) {
|
||||
event.setDroppedExperience(event.getDroppedExperience() * (random.nextInt(3) + 2));
|
||||
if (player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) {
|
||||
if (r <= 0.80) {
|
||||
event.setDroppedExperience(0);
|
||||
} else {
|
||||
event.setDroppedExperience(event.getDroppedExperience() * (random.nextInt(3) + 2));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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) {
|
||||
|
@@ -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());
|
||||
|
@@ -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));
|
||||
}
|
||||
}
|
||||
|
@@ -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));
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
@@ -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));
|
||||
}
|
||||
}
|
||||
|
@@ -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));
|
||||
}
|
||||
}
|
||||
|
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
67
src/main/java/com/sosnitzka/taiga/traits/TraitPorted.java
Normal file
67
src/main/java/com/sosnitzka/taiga/traits/TraitPorted.java
Normal 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);
|
||||
}
|
||||
}
|
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
@@ -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
|
||||
|
@@ -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);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
70
src/main/java/com/sosnitzka/taiga/traits/TraitSoulEater.java
Normal file
70
src/main/java/com/sosnitzka/taiga/traits/TraitSoulEater.java
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
105
src/main/java/com/sosnitzka/taiga/traits/TraitTantrum.java
Normal file
105
src/main/java/com/sosnitzka/taiga/traits/TraitTantrum.java
Normal 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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
17
src/main/java/com/sosnitzka/taiga/traits/TraitTemplate.java
Normal file
17
src/main/java/com/sosnitzka/taiga/traits/TraitTemplate.java
Normal 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);
|
||||
}
|
||||
|
||||
|
||||
}
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
|
17
src/main/java/com/sosnitzka/taiga/traits/TraitVortex.java
Normal file
17
src/main/java/com/sosnitzka/taiga/traits/TraitVortex.java
Normal 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);
|
||||
}
|
||||
|
||||
|
||||
}
|
98
src/main/java/com/sosnitzka/taiga/traits/TraitWhirl.java
Normal file
98
src/main/java/com/sosnitzka/taiga/traits/TraitWhirl.java
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -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;
|
||||
}
|
||||
}
|
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
@@ -1,20 +1,33 @@
|
||||
package com.sosnitzka.taiga.util;
|
||||
|
||||
|
||||
import com.sosnitzka.taiga.Items;
|
||||
import com.sosnitzka.taiga.TAIGA;
|
||||
import com.sun.istack.internal.Nullable;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemBlock;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.nbt.NBTTagList;
|
||||
import net.minecraftforge.fluids.Fluid;
|
||||
import net.minecraftforge.fluids.FluidRegistry;
|
||||
import net.minecraftforge.fml.common.event.FMLInterModComms;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fml.common.registry.GameRegistry;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import slimeknights.tconstruct.library.MaterialIntegration;
|
||||
import slimeknights.tconstruct.library.TinkerRegistry;
|
||||
import slimeknights.tconstruct.library.materials.*;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Random;
|
||||
|
||||
import static com.sosnitzka.taiga.TAIGA.proxy;
|
||||
|
||||
public class Utils {
|
||||
public static String PREFIX_INGOT = "ingot";
|
||||
public static String PREFIX_NUGGET = "nugget";
|
||||
public static String PREFIX_ORE = "ore";
|
||||
public static String PREFIX_BLOCK = "block";
|
||||
public static String PREFIX_DUST = "dust";
|
||||
|
||||
/**
|
||||
* Registers the block and its corresponding item (block as item in inventory)
|
||||
@@ -28,6 +41,7 @@ public class Utils {
|
||||
|
||||
/**
|
||||
* Registers the fluid and its bucket item
|
||||
*
|
||||
* @param fluid the fluid
|
||||
*/
|
||||
public static void registerFluid(Fluid fluid) {
|
||||
@@ -35,51 +49,101 @@ public class Utils {
|
||||
FluidRegistry.addBucketForFluid(fluid);
|
||||
}
|
||||
|
||||
public static void registerTinkerAlloys(Fluid alloy, int out, Fluid first, int inOne, Fluid second, int inTwo) {
|
||||
NBTTagList tagList = new NBTTagList();
|
||||
NBTTagCompound fluid = new NBTTagCompound();
|
||||
fluid.setString("FluidName", alloy.getName());
|
||||
fluid.setInteger("Amount", out);
|
||||
tagList.appendTag(fluid);
|
||||
fluid = new NBTTagCompound();
|
||||
fluid.setString("FluidName", first.getName());
|
||||
fluid.setInteger("Amount", inOne);
|
||||
tagList.appendTag(fluid);
|
||||
fluid = new NBTTagCompound();
|
||||
fluid.setString("FluidName", second.getName());
|
||||
fluid.setInteger("Amount", inTwo);
|
||||
tagList.appendTag(fluid);
|
||||
|
||||
NBTTagCompound message = new NBTTagCompound();
|
||||
message.setTag("alloy", tagList);
|
||||
FMLInterModComms.sendMessage("tconstruct", "alloy", message);
|
||||
}
|
||||
|
||||
public static void registerTinkerAlloys(Fluid alloy, int out, Fluid first, int inOne, Fluid second, int inTwo, Fluid third, int inThree) {
|
||||
NBTTagList tagList = new NBTTagList();
|
||||
NBTTagCompound fluid = new NBTTagCompound();
|
||||
fluid.setString("FluidName", alloy.getName());
|
||||
fluid.setInteger("Amount", out);
|
||||
tagList.appendTag(fluid);
|
||||
fluid = new NBTTagCompound();
|
||||
fluid.setString("FluidName", first.getName());
|
||||
fluid.setInteger("Amount", inOne);
|
||||
tagList.appendTag(fluid);
|
||||
fluid = new NBTTagCompound();
|
||||
fluid.setString("FluidName", second.getName());
|
||||
fluid.setInteger("Amount", inTwo);
|
||||
tagList.appendTag(fluid);
|
||||
fluid = new NBTTagCompound();
|
||||
fluid.setString("FluidName", third.getName());
|
||||
fluid.setInteger("Amount", inThree);
|
||||
tagList.appendTag(fluid);
|
||||
|
||||
NBTTagCompound message = new NBTTagCompound();
|
||||
message.setTag("alloy", tagList);
|
||||
FMLInterModComms.sendMessage("tconstruct", "alloy", message);
|
||||
public static void registerTinkerAlloy(FluidStack output, FluidStack... inputs) {
|
||||
if (inputs.length >= 2 && output != null) {
|
||||
TinkerRegistry.registerAlloy(output, inputs);
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isNight(int time) {
|
||||
return time > 12500;
|
||||
}
|
||||
|
||||
public static double round2(double d) {
|
||||
return (Math.round(d * 100.0) / 100.0);
|
||||
}
|
||||
|
||||
public static void integrateMaterial(String oreSuffix, @Nullable Material material, Fluid fluid, int headDura, float headSpeed, float headAttack, float handleMod, int handleDura, int extra, int headLevel, float draw, float range, int bdamage) {
|
||||
integrateMaterial(oreSuffix, material, fluid, headDura, headSpeed, headAttack, handleMod, handleDura, extra, headLevel, new BowMaterialStats(draw, range, bdamage), false, true);
|
||||
}
|
||||
|
||||
public static void integrateMaterial(String oreSuffix, @Nullable Material material, Fluid fluid, int headDura, float headSpeed, float headAttack, float handleMod, int handleDura, int extra, int headLevel, BowMaterialStats bowstats) {
|
||||
integrateMaterial(oreSuffix, material, fluid, headDura, headSpeed, headAttack, handleMod, handleDura, extra, headLevel, bowstats, false, true);
|
||||
}
|
||||
|
||||
public static void integrateMaterial(String oreSuffix, @Nullable Material material, Fluid fluid, int headDura, float headSpeed, float headAttack, float handleMod, int handleDura, int extra, int headLevel, BowMaterialStats bowstats, boolean craft, boolean cast) {
|
||||
if (material != null) {
|
||||
if (TinkerRegistry.getMaterial(material.identifier) != Material.UNKNOWN)
|
||||
return;
|
||||
|
||||
TinkerRegistry.addMaterialStats(material, new HeadMaterialStats(headDura, headSpeed, headAttack, headLevel));
|
||||
TinkerRegistry.addMaterialStats(material, new HandleMaterialStats(handleMod, handleDura));
|
||||
TinkerRegistry.addMaterialStats(material, new ExtraMaterialStats(extra));
|
||||
TinkerRegistry.addMaterialStats(material, bowstats);
|
||||
|
||||
Item item = null;
|
||||
Field[] items = Items.class.getDeclaredFields();
|
||||
for (Field i : items) {
|
||||
if (i.getName().equals(StringUtils.uncapitalize(oreSuffix) + "Ingot")) {
|
||||
Item r = null;
|
||||
try {
|
||||
r = (Item) i.get(i.getType());
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
item = r;
|
||||
}
|
||||
}
|
||||
|
||||
material.setFluid(fluid).setCraftable(craft).setCastable(cast).addItem(item, 1, Material.VALUE_Ingot);
|
||||
material.setRepresentativeItem(item);
|
||||
proxy.setRenderInfo(material);
|
||||
}
|
||||
|
||||
MaterialIntegration integration = new MaterialIntegration(material, fluid, oreSuffix);
|
||||
integration.integrate();
|
||||
TAIGA.integrateList.add(integration);
|
||||
}
|
||||
|
||||
public static void integrateOre(String oreSuffix, Fluid fluid) {
|
||||
integrateMaterial(oreSuffix, null, fluid, -1, -1, -1, -1, -1, -1, -1, new BowMaterialStats(0.1f, 0.1f, -1f), true, true);
|
||||
}
|
||||
|
||||
public static int nextInt(Random random, int min, int max) {
|
||||
return random.nextInt((max - min) + 1) + min;
|
||||
}
|
||||
|
||||
public static class GeneralNBTData {
|
||||
|
||||
public int killcount;
|
||||
public float health;
|
||||
public int brokenblocks;
|
||||
public float bonus;
|
||||
public int curse;
|
||||
public String name;
|
||||
public float radius;
|
||||
|
||||
public static GeneralNBTData read(NBTTagCompound tag) {
|
||||
GeneralNBTData data = new GeneralNBTData();
|
||||
data.killcount = tag.getInteger("killcount");
|
||||
data.brokenblocks = tag.getInteger("brokenblocks");
|
||||
data.health = tag.getFloat("health");
|
||||
data.bonus = tag.getFloat("bonus");
|
||||
data.curse = tag.getInteger("curse");
|
||||
data.name = tag.getString("name");
|
||||
data.radius = tag.getFloat("radius");
|
||||
return data;
|
||||
}
|
||||
|
||||
public void write(NBTTagCompound tag) {
|
||||
tag.setInteger("killcount", killcount);
|
||||
tag.setInteger("brokenblocks", brokenblocks);
|
||||
tag.setFloat("health", health);
|
||||
tag.setFloat("bonus", bonus);
|
||||
tag.setInteger("curse", curse);
|
||||
tag.setString("name", name);
|
||||
tag.setFloat("radius", radius);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
71
src/main/java/com/sosnitzka/taiga/world/WorldGen.java
Normal file
71
src/main/java/com/sosnitzka/taiga/world/WorldGen.java
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
@@ -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;
|
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
@@ -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": [
|
||||
{}
|
||||
]
|
||||
}
|
||||
}
|
18
src/main/resources/assets/taiga/blockstates/abyssum_ore.json
Normal file
18
src/main/resources/assets/taiga/blockstates/abyssum_ore.json
Normal 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": [
|
||||
{}
|
||||
]
|
||||
}
|
||||
}
|
@@ -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": [
|
||||
{}
|
||||
]
|
||||
}
|
||||
}
|
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"variants": {
|
||||
"normal": {
|
||||
"model": "taiga:adamantite_block"
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"variants": {
|
||||
"normal": {
|
||||
"model": "taiga:adamantite_ore"
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"variants": {
|
||||
"normal": {
|
||||
"model": "taiga:aegisalt_block"
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"variants": {
|
||||
"normal": {
|
||||
"model": "taiga:arcanite_block"
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"variants": {
|
||||
"normal": {
|
||||
"model": "taiga:arcanite_ore"
|
||||
}
|
||||
}
|
||||
}
|
@@ -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": [
|
||||
{}
|
||||
]
|
||||
}
|
||||
}
|
@@ -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": [
|
||||
{}
|
||||
]
|
||||
}
|
||||
}
|
@@ -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": [
|
||||
{}
|
||||
]
|
||||
}
|
||||
}
|
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"variants": {
|
||||
"normal": {
|
||||
"model": "taiga:basalt"
|
||||
}
|
||||
}
|
||||
}
|
@@ -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": [
|
||||
{}
|
||||
]
|
||||
}
|
||||
}
|
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"variants": {
|
||||
"normal": {
|
||||
"model": "taiga:bismuth_block"
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"variants": {
|
||||
"normal": {
|
||||
"model": "taiga:bismuth_ore"
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"variants": {
|
||||
"normal": {
|
||||
"model": "taiga:bysmuid_block"
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"variants": {
|
||||
"normal": {
|
||||
"model": "taiga:cryptogen_block"
|
||||
}
|
||||
}
|
||||
}
|
@@ -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": [
|
||||
{}
|
||||
]
|
||||
}
|
||||
}
|
@@ -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": [
|
||||
{}
|
||||
]
|
||||
}
|
||||
}
|
@@ -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": [
|
||||
{}
|
||||
]
|
||||
}
|
||||
}
|
18
src/main/resources/assets/taiga/blockstates/eezo_block.json
Normal file
18
src/main/resources/assets/taiga/blockstates/eezo_block.json
Normal 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": [
|
||||
{}
|
||||
]
|
||||
}
|
||||
}
|
18
src/main/resources/assets/taiga/blockstates/eezo_ore.json
Normal file
18
src/main/resources/assets/taiga/blockstates/eezo_ore.json
Normal 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": [
|
||||
{}
|
||||
]
|
||||
}
|
||||
}
|
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"variants": {
|
||||
"normal": {
|
||||
"model": "taiga:eternite_block"
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"variants": {
|
||||
"normal": {
|
||||
"model": "taiga:eternite_ore"
|
||||
}
|
||||
}
|
||||
}
|
@@ -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"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"variants": {
|
||||
"normal": {
|
||||
"model": "taiga:fractoryte_block"
|
||||
}
|
||||
}
|
||||
}
|
@@ -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": [
|
||||
{}
|
||||
]
|
||||
}
|
||||
}
|
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"variants": {
|
||||
"normal": {
|
||||
"model": "taiga:ignitite_block"
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"variants": {
|
||||
"normal": {
|
||||
"model": "taiga:ignitite_ore"
|
||||
}
|
||||
}
|
||||
}
|
@@ -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": [
|
||||
{}
|
||||
]
|
||||
}
|
||||
}
|
@@ -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": [
|
||||
{}
|
||||
]
|
||||
}
|
||||
}
|
18
src/main/resources/assets/taiga/blockstates/iox_block.json
Normal file
18
src/main/resources/assets/taiga/blockstates/iox_block.json
Normal 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": [
|
||||
{}
|
||||
]
|
||||
}
|
||||
}
|
@@ -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": [
|
||||
{}
|
||||
]
|
||||
}
|
||||
}
|
@@ -1,7 +1,18 @@
|
||||
{
|
||||
"variants": {
|
||||
"normal": {
|
||||
"model": "taiga:karmesine_ore"
|
||||
}
|
||||
}
|
||||
"forge_marker": 1,
|
||||
"defaults": {
|
||||
"model": "minecraft:cube_all",
|
||||
"textures": {
|
||||
"all": "taiga:blocks/ore/karmesine"
|
||||
},
|
||||
"transform": "forge:default-block"
|
||||
},
|
||||
"variants": {
|
||||
"normal": [
|
||||
{}
|
||||
],
|
||||
"inventory": [
|
||||
{}
|
||||
]
|
||||
}
|
||||
}
|
@@ -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
Reference in New Issue
Block a user