From 7515737cb4c6bd9a98d0ebeecd5715c808f87e3f Mon Sep 17 00:00:00 2001 From: Robert Sosnitzka Date: Mon, 18 Jul 2016 16:04:36 +0200 Subject: Project renamed to "TAIGA: Tinkers alloying addon" --- src/main/java/com/sosnitzka/taiga/Alloys.java | 32 ++++ src/main/java/com/sosnitzka/taiga/Blocks.java | 124 +++++++++++++++ src/main/java/com/sosnitzka/taiga/Fluids.java | 96 +++++++++++ src/main/java/com/sosnitzka/taiga/Items.java | 105 +++++++++++++ .../java/com/sosnitzka/taiga/MaterialTraits.java | 84 ++++++++++ src/main/java/com/sosnitzka/taiga/TAIGA.java | 123 +++++++++++++++ .../com/sosnitzka/taiga/blocks/BlockLignite.java | 40 +++++ .../com/sosnitzka/taiga/blocks/BlockTiberium.java | 63 ++++++++ .../com/sosnitzka/taiga/generic/BasicBlock.java | 40 +++++ .../sosnitzka/taiga/generic/BasicBlockGround.java | 18 +++ .../com/sosnitzka/taiga/generic/BasicItem.java | 25 +++ .../sosnitzka/taiga/generic/BasicTinkerFluid.java | 24 +++ .../com/sosnitzka/taiga/items/ItemIronNugget.java | 10 ++ .../com/sosnitzka/taiga/items/ItemLignite.java | 11 ++ .../sosnitzka/taiga/items/ItemSlaggoldIngot.java | 10 ++ .../sosnitzka/taiga/items/ItemSlagironIngot.java | 10 ++ .../com/sosnitzka/taiga/proxy/ClientProxy.java | 138 ++++++++++++++++ .../com/sosnitzka/taiga/proxy/ServerProxy.java | 18 +++ .../java/com/sosnitzka/taiga/recipes/Crafting.java | 37 +++++ .../java/com/sosnitzka/taiga/recipes/Smelting.java | 37 +++++ .../com/sosnitzka/taiga/traits/TraitAnalysing.java | 66 ++++++++ .../com/sosnitzka/taiga/traits/TraitArcane.java | 42 +++++ .../com/sosnitzka/taiga/traits/TraitBlind.java | 44 ++++++ .../com/sosnitzka/taiga/traits/TraitBright.java | 50 ++++++ .../com/sosnitzka/taiga/traits/TraitCascade.java | 57 +++++++ .../com/sosnitzka/taiga/traits/TraitCurvature.java | 79 ++++++++++ .../java/com/sosnitzka/taiga/traits/TraitDark.java | 32 ++++ .../com/sosnitzka/taiga/traits/TraitDiffuse.java | 67 ++++++++ .../sosnitzka/taiga/traits/TraitDissolving.java | 32 ++++ .../com/sosnitzka/taiga/traits/TraitFracture.java | 66 ++++++++ .../com/sosnitzka/taiga/traits/TraitFragile.java | 87 ++++++++++ .../com/sosnitzka/taiga/traits/TraitGarishly.java | 80 ++++++++++ .../com/sosnitzka/taiga/traits/TraitGlimmer.java | 48 ++++++ .../com/sosnitzka/taiga/traits/TraitHaunted.java | 44 ++++++ .../com/sosnitzka/taiga/traits/TraitHeroic.java | 24 +++ .../com/sosnitzka/taiga/traits/TraitHollow.java | 56 +++++++ .../com/sosnitzka/taiga/traits/TraitInstable.java | 70 +++++++++ .../com/sosnitzka/taiga/traits/TraitMelting.java | 32 ++++ .../sosnitzka/taiga/traits/TraitNatureBound.java | 56 +++++++ .../sosnitzka/taiga/traits/TraitOrganizing.java | 29 ++++ .../sosnitzka/taiga/traits/TraitPulverizing.java | 39 +++++ .../com/sosnitzka/taiga/traits/TraitRandomize.java | 175 +++++++++++++++++++++ .../com/sosnitzka/taiga/traits/TraitResonance.java | 26 +++ .../com/sosnitzka/taiga/traits/TraitReviving.java | 72 +++++++++ .../sosnitzka/taiga/traits/TraitSlaughtering.java | 39 +++++ .../com/sosnitzka/taiga/traits/TraitSofty.java | 33 ++++ .../com/sosnitzka/taiga/traits/TraitUncertain.java | 78 +++++++++ .../taiga/util/EntityAIPermanentPanic.java | 99 ++++++++++++ .../java/com/sosnitzka/taiga/util/FuelHandler.java | 27 ++++ .../java/com/sosnitzka/taiga/util/Generator.java | 41 +++++ .../com/sosnitzka/taiga/util/StateMatcher.java | 84 ++++++++++ src/main/java/com/sosnitzka/taiga/util/Utils.java | 73 +++++++++ .../java/com/sosnitzka/taiga/world/ZWorldGen.java | 67 ++++++++ .../sosnitzka/taiga/world/ZWorldGenMinable.java | 87 ++++++++++ src/main/java/com/sosnitzka/ztic_addon/Alloys.java | 32 ---- src/main/java/com/sosnitzka/ztic_addon/Blocks.java | 124 --------------- src/main/java/com/sosnitzka/ztic_addon/Fluids.java | 96 ----------- src/main/java/com/sosnitzka/ztic_addon/Items.java | 105 ------------- .../com/sosnitzka/ztic_addon/MaterialTraits.java | 84 ---------- src/main/java/com/sosnitzka/ztic_addon/ZTiC.java | 121 -------------- .../sosnitzka/ztic_addon/blocks/BlockLignite.java | 40 ----- .../sosnitzka/ztic_addon/blocks/BlockTiberium.java | 63 -------- .../sosnitzka/ztic_addon/generic/BasicBlock.java | 40 ----- .../ztic_addon/generic/BasicBlockGround.java | 18 --- .../sosnitzka/ztic_addon/generic/BasicItem.java | 25 --- .../ztic_addon/generic/BasicTinkerFluid.java | 24 --- .../sosnitzka/ztic_addon/items/ItemIronNugget.java | 10 -- .../sosnitzka/ztic_addon/items/ItemLignite.java | 11 -- .../ztic_addon/items/ItemSlaggoldIngot.java | 10 -- .../ztic_addon/items/ItemSlagironIngot.java | 10 -- .../sosnitzka/ztic_addon/proxy/ClientProxy.java | 138 ---------------- .../sosnitzka/ztic_addon/proxy/ServerProxy.java | 18 --- .../com/sosnitzka/ztic_addon/recipes/Crafting.java | 37 ----- .../com/sosnitzka/ztic_addon/recipes/Smelting.java | 37 ----- .../ztic_addon/traits/TraitAnalysing.java | 66 -------- .../sosnitzka/ztic_addon/traits/TraitArcane.java | 42 ----- .../sosnitzka/ztic_addon/traits/TraitBlind.java | 44 ------ .../sosnitzka/ztic_addon/traits/TraitBright.java | 50 ------ .../sosnitzka/ztic_addon/traits/TraitCascade.java | 57 ------- .../ztic_addon/traits/TraitCurvature.java | 79 ---------- .../com/sosnitzka/ztic_addon/traits/TraitDark.java | 32 ---- .../sosnitzka/ztic_addon/traits/TraitDiffuse.java | 67 -------- .../ztic_addon/traits/TraitDissolving.java | 32 ---- .../sosnitzka/ztic_addon/traits/TraitFracture.java | 66 -------- .../sosnitzka/ztic_addon/traits/TraitFragile.java | 87 ---------- .../sosnitzka/ztic_addon/traits/TraitGarishly.java | 80 ---------- .../sosnitzka/ztic_addon/traits/TraitGlimmer.java | 48 ------ .../sosnitzka/ztic_addon/traits/TraitHaunted.java | 44 ------ .../sosnitzka/ztic_addon/traits/TraitHeroic.java | 24 --- .../sosnitzka/ztic_addon/traits/TraitHollow.java | 56 ------- .../sosnitzka/ztic_addon/traits/TraitInstable.java | 70 --------- .../sosnitzka/ztic_addon/traits/TraitMelting.java | 32 ---- .../ztic_addon/traits/TraitNatureBound.java | 56 ------- .../ztic_addon/traits/TraitOrganizing.java | 29 ---- .../ztic_addon/traits/TraitPulverizing.java | 39 ----- .../ztic_addon/traits/TraitRandomize.java | 175 --------------------- .../ztic_addon/traits/TraitResonance.java | 26 --- .../sosnitzka/ztic_addon/traits/TraitReviving.java | 72 --------- .../ztic_addon/traits/TraitSlaughtering.java | 39 ----- .../sosnitzka/ztic_addon/traits/TraitSofty.java | 33 ---- .../ztic_addon/traits/TraitUncertain.java | 78 --------- .../ztic_addon/util/EntityAIPermanentPanic.java | 99 ------------ .../com/sosnitzka/ztic_addon/util/FuelHandler.java | 27 ---- .../com/sosnitzka/ztic_addon/util/Generator.java | 41 ----- .../sosnitzka/ztic_addon/util/StateMatcher.java | 84 ---------- .../java/com/sosnitzka/ztic_addon/util/Utils.java | 73 --------- .../com/sosnitzka/ztic_addon/world/ZWorldGen.java | 67 -------- .../ztic_addon/world/ZWorldGenMinable.java | 87 ---------- 108 files changed, 3046 insertions(+), 3044 deletions(-) create mode 100644 src/main/java/com/sosnitzka/taiga/Alloys.java create mode 100644 src/main/java/com/sosnitzka/taiga/Blocks.java create mode 100644 src/main/java/com/sosnitzka/taiga/Fluids.java create mode 100644 src/main/java/com/sosnitzka/taiga/Items.java create mode 100644 src/main/java/com/sosnitzka/taiga/MaterialTraits.java create mode 100644 src/main/java/com/sosnitzka/taiga/TAIGA.java create mode 100644 src/main/java/com/sosnitzka/taiga/blocks/BlockLignite.java create mode 100644 src/main/java/com/sosnitzka/taiga/blocks/BlockTiberium.java create mode 100644 src/main/java/com/sosnitzka/taiga/generic/BasicBlock.java create mode 100644 src/main/java/com/sosnitzka/taiga/generic/BasicBlockGround.java create mode 100644 src/main/java/com/sosnitzka/taiga/generic/BasicItem.java create mode 100644 src/main/java/com/sosnitzka/taiga/generic/BasicTinkerFluid.java create mode 100644 src/main/java/com/sosnitzka/taiga/items/ItemIronNugget.java create mode 100644 src/main/java/com/sosnitzka/taiga/items/ItemLignite.java create mode 100644 src/main/java/com/sosnitzka/taiga/items/ItemSlaggoldIngot.java create mode 100644 src/main/java/com/sosnitzka/taiga/items/ItemSlagironIngot.java create mode 100644 src/main/java/com/sosnitzka/taiga/proxy/ClientProxy.java create mode 100644 src/main/java/com/sosnitzka/taiga/proxy/ServerProxy.java create mode 100644 src/main/java/com/sosnitzka/taiga/recipes/Crafting.java create mode 100644 src/main/java/com/sosnitzka/taiga/recipes/Smelting.java create mode 100644 src/main/java/com/sosnitzka/taiga/traits/TraitAnalysing.java create mode 100644 src/main/java/com/sosnitzka/taiga/traits/TraitArcane.java create mode 100644 src/main/java/com/sosnitzka/taiga/traits/TraitBlind.java create mode 100644 src/main/java/com/sosnitzka/taiga/traits/TraitBright.java create mode 100644 src/main/java/com/sosnitzka/taiga/traits/TraitCascade.java create mode 100644 src/main/java/com/sosnitzka/taiga/traits/TraitCurvature.java create mode 100644 src/main/java/com/sosnitzka/taiga/traits/TraitDark.java create mode 100644 src/main/java/com/sosnitzka/taiga/traits/TraitDiffuse.java create mode 100644 src/main/java/com/sosnitzka/taiga/traits/TraitDissolving.java create mode 100644 src/main/java/com/sosnitzka/taiga/traits/TraitFracture.java create mode 100644 src/main/java/com/sosnitzka/taiga/traits/TraitFragile.java create mode 100644 src/main/java/com/sosnitzka/taiga/traits/TraitGarishly.java create mode 100644 src/main/java/com/sosnitzka/taiga/traits/TraitGlimmer.java create mode 100644 src/main/java/com/sosnitzka/taiga/traits/TraitHaunted.java create mode 100644 src/main/java/com/sosnitzka/taiga/traits/TraitHeroic.java create mode 100644 src/main/java/com/sosnitzka/taiga/traits/TraitHollow.java create mode 100644 src/main/java/com/sosnitzka/taiga/traits/TraitInstable.java create mode 100644 src/main/java/com/sosnitzka/taiga/traits/TraitMelting.java create mode 100644 src/main/java/com/sosnitzka/taiga/traits/TraitNatureBound.java create mode 100644 src/main/java/com/sosnitzka/taiga/traits/TraitOrganizing.java create mode 100644 src/main/java/com/sosnitzka/taiga/traits/TraitPulverizing.java create mode 100644 src/main/java/com/sosnitzka/taiga/traits/TraitRandomize.java create mode 100644 src/main/java/com/sosnitzka/taiga/traits/TraitResonance.java create mode 100644 src/main/java/com/sosnitzka/taiga/traits/TraitReviving.java create mode 100644 src/main/java/com/sosnitzka/taiga/traits/TraitSlaughtering.java create mode 100644 src/main/java/com/sosnitzka/taiga/traits/TraitSofty.java create mode 100644 src/main/java/com/sosnitzka/taiga/traits/TraitUncertain.java create mode 100644 src/main/java/com/sosnitzka/taiga/util/EntityAIPermanentPanic.java create mode 100644 src/main/java/com/sosnitzka/taiga/util/FuelHandler.java create mode 100644 src/main/java/com/sosnitzka/taiga/util/Generator.java create mode 100644 src/main/java/com/sosnitzka/taiga/util/StateMatcher.java create mode 100644 src/main/java/com/sosnitzka/taiga/util/Utils.java create mode 100644 src/main/java/com/sosnitzka/taiga/world/ZWorldGen.java create mode 100644 src/main/java/com/sosnitzka/taiga/world/ZWorldGenMinable.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/Alloys.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/Blocks.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/Fluids.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/Items.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/MaterialTraits.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/ZTiC.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/blocks/BlockLignite.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/blocks/BlockTiberium.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/generic/BasicBlock.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/generic/BasicBlockGround.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/generic/BasicItem.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/generic/BasicTinkerFluid.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/items/ItemIronNugget.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/items/ItemLignite.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/items/ItemSlaggoldIngot.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/items/ItemSlagironIngot.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/proxy/ClientProxy.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/proxy/ServerProxy.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/recipes/Crafting.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/recipes/Smelting.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/traits/TraitAnalysing.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/traits/TraitArcane.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/traits/TraitBlind.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/traits/TraitBright.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/traits/TraitCascade.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/traits/TraitCurvature.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/traits/TraitDark.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/traits/TraitDiffuse.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/traits/TraitDissolving.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/traits/TraitFracture.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/traits/TraitFragile.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/traits/TraitGarishly.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/traits/TraitGlimmer.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/traits/TraitHaunted.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/traits/TraitHeroic.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/traits/TraitHollow.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/traits/TraitInstable.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/traits/TraitMelting.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/traits/TraitNatureBound.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/traits/TraitOrganizing.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/traits/TraitPulverizing.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/traits/TraitRandomize.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/traits/TraitResonance.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/traits/TraitReviving.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/traits/TraitSlaughtering.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/traits/TraitSofty.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/traits/TraitUncertain.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/util/EntityAIPermanentPanic.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/util/FuelHandler.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/util/Generator.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/util/StateMatcher.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/util/Utils.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/world/ZWorldGen.java delete mode 100644 src/main/java/com/sosnitzka/ztic_addon/world/ZWorldGenMinable.java (limited to 'src/main/java/com/sosnitzka') diff --git a/src/main/java/com/sosnitzka/taiga/Alloys.java b/src/main/java/com/sosnitzka/taiga/Alloys.java new file mode 100644 index 0000000..0528f3a --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/Alloys.java @@ -0,0 +1,32 @@ +package com.sosnitzka.taiga; + + +import net.minecraftforge.fluids.FluidRegistry; + +import static com.sosnitzka.taiga.Fluids.*; +import static com.sosnitzka.taiga.util.Utils.registerTinkerAlloys; + +public class Alloys { + + 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); + + registerTinkerAlloys(imperomiteFluid, 2, titaniteFluid, 3, palladiumFluid, 3, FluidRegistry.LAVA, 3); + registerTinkerAlloys(dyoniteFluid, 1, meteoriteFluid, 3, tiberiumFluid, 2, spectrumFluid, 3); + registerTinkerAlloys(solariumFluid, 2, vibraniumFluid, 4, ignititeFluid, 4, nitroFluid, 3); + registerTinkerAlloys(fractoryteFluid, 2, adamantiteFluid, 4, rubiumFluid, 2, FluidRegistry.LAVA, 3); + + registerTinkerAlloys(aegisaltFluid, 1, eterniteFluid, 3, mindoriteFluid, 3, glimmercoalFluid, 3); + registerTinkerAlloys(noctunyxFluid, 1, mythrilFluid, 4, titaniteFluid, 2, spectrumFluid, 3); + registerTinkerAlloys(nucleumFluid, 1, palladiumFluid, 3, violiumFluid, 3, radiant_enderium, 3); + registerTinkerAlloys(seismodiumFluid, 2, ignititeFluid, 5, meteoriteFluid, 3, glimming_enderium, 3); + + registerTinkerAlloys(lumixylFluid, 1, bismuthFluid, 3, prometheumFluid, 2, glimming_enderium, 6); + registerTinkerAlloys(terramiteFluid, 2, violiumFluid, 4, eterniteFluid, 2, energy_enderium, 3); + registerTinkerAlloys(cryptogenFluid, 1, mindoriteFluid, 4, arcaniteFluid, 2, anthraciteFluid, 3); + registerTinkerAlloys(proxideumFluid, 1, karmesineFluid, 3, mythrilFluid, 2, glimmercoalFluid, 3); + } +} diff --git a/src/main/java/com/sosnitzka/taiga/Blocks.java b/src/main/java/com/sosnitzka/taiga/Blocks.java new file mode 100644 index 0000000..014b9bf --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/Blocks.java @@ -0,0 +1,124 @@ +package com.sosnitzka.taiga; + +import com.google.common.base.Joiner; +import com.sosnitzka.taiga.blocks.BlockLignite; +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; +import net.minecraftforge.oredict.OreDictionary; +import org.apache.commons.lang3.StringUtils; + +import java.lang.reflect.Field; +import java.util.Arrays; + +import static com.sosnitzka.taiga.MaterialTraits.*; +import static com.sosnitzka.taiga.util.Utils.*; +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(); + public static Block slagironOre = new BasicBlock("slagiron_ore", Material.ROCK, 3.0f, 5.0f, IRON, PREFIX_NUGGET); + public static Block slaggoldOre = new BasicBlock("slaggold_ore", Material.ROCK, 3.0f, 5.0f, IRON, PREFIX_NUGGET); + + // Ores + // Group: Solide + public static Block titaniteOre = new BasicBlock("titanite_ore", Material.ROCK, 55.0f, 400.0f, TITANITE, PREFIX_ORE); + public static Block meteoriteOre = new BasicBlock("meteorite_ore", Material.ROCK, 60.0f, 500.0f, METEORITE, PREFIX_ORE); + public static Block vibraniumOre = new BasicBlock("vibranium_ore", Material.ROCK, 70.0f, 800.0f, VIBRANIUM, PREFIX_ORE); + public static Block adamantiteOre = new BasicBlock("adamantite_ore", Material.ROCK, 80.0f, 1000.0f, ADAMANTITE, PREFIX_ORE); + // Group: Arcane + public static Block prometheumOre = new BasicBlock("prometheum_ore", Material.ROCK, 35.0f, 35.0f, COBALT, 0.25f, PREFIX_ORE); + public static Block rubiumOre = new BasicBlock("rubium_ore", Material.ROCK, 13.0f, 15.0f, TITANITE, PREFIX_ORE); + public static Block tiberiumOre = new BlockTiberium(); + public static Block arcaniteOre = new BasicBlock("arcanite_ore", Material.ROCK, 23.0f, 25.0f, METEORITE, PREFIX_ORE); + // Group: Etheri + public static Block eterniteOre = new BasicBlock("eternite_ore", Material.ROCK, 24.0f, 25.0f, COBALT, PREFIX_ORE); + public static Block mythrilOre = new BasicBlock("mythril_ore", Material.ROCK, 25.0f, 25.0f, TITANITE, PREFIX_ORE); + public static Block palladiumOre = new BasicBlock("palladium_ore", Material.ROCK, 25.0f, 25.0f, METEORITE, PREFIX_ORE); + public static Block ignititeOre = new BasicBlock("ignitite_ore", Material.ROCK, 23.0f, 25.0f, VIBRANIUM, PREFIX_ORE); + // Group: Ratio + public static Block violiumOre = new BasicBlock("violium_ore", Material.ROCK, 13.0f, 13.0f, COBALT, PREFIX_ORE); + public static Block bismuthOre = new BasicBlock("bismuth_ore", Material.ROCK, 8.0f, 8.0f, OBSIDIAN, PREFIX_ORE); + public static Block mindoriteOre = new BasicBlock("mindorite_ore", Material.ROCK, 12.0f, 12.0f, TITANITE, PREFIX_ORE); + public static Block karmesineOre = new BasicBlock("karmesine_ore", Material.ROCK, 13.0f, 15.0f, METEORITE, PREFIX_ORE); + + // Blocks + // Group: Solide + public static Block titaniteBlock = new BasicBlock("titanite_block", Material.ROCK, 55.0f, 400.0f, 5, PREFIX_BLOCK); + public static Block meteoriteBlock = new BasicBlock("meteorite_block", Material.ROCK, 60.0f, 500.0f, 6, PREFIX_BLOCK); + public static Block vibraniumBlock = new BasicBlock("vibranium_block", Material.ROCK, 70.0f, 800.0f, 7, PREFIX_BLOCK); + public static Block adamantiteBlock = new BasicBlock("adamantite_block", Material.ROCK, 80.0f, 1000.0f, 8, PREFIX_BLOCK); + // Group: Arcane + public static Block prometheumBlock = new BasicBlock("prometheum_block", Material.ROCK, 35.0f, 35.0f, 4, 0.25f, PREFIX_BLOCK); + public static Block rubiumBlock = new BasicBlock("rubium_block", Material.ROCK, 13.0f, 15.0f, 5, PREFIX_BLOCK); + public static Block tiberiumBlock = new BasicBlock("tiberium_block", Material.ROCK, 30.0f, 30.0f, 6, 1f, PREFIX_BLOCK); + public static Block arcaniteBlock = new BasicBlock("arcanite_block", Material.ROCK, 23.0f, 25.0f, 7, PREFIX_BLOCK); + // Group: Etheri + public static Block eterniteBlock = new BasicBlock("eternite_block", Material.ROCK, 24.0f, 25.0f, 4, PREFIX_BLOCK); + public static Block mythrilBlock = new BasicBlock("mythril_block", Material.ROCK, 25.0f, 25.0f, 5, PREFIX_BLOCK); + public static Block palladiumBlock = new BasicBlock("palladium_block", Material.ROCK, 25.0f, 25.0f, 6, PREFIX_BLOCK); + public static Block ignititeBlock = new BasicBlock("ignitite_block", Material.ROCK, 23.0f, 25.0f, 7, PREFIX_BLOCK); + // Group: Ratio + public static Block violiumBlock = new BasicBlock("violium_block", Material.ROCK, 13.0f, 13.0f, 4, PREFIX_BLOCK); + public static Block bismuthBlock = new BasicBlock("bismuth_block", Material.ROCK, 8.0f, 8.0f, 5, PREFIX_BLOCK); + public static Block mindoriteBlock = new BasicBlock("mindorite_block", Material.ROCK, 12.0f, 12.0f, 2, PREFIX_BLOCK); + public static Block karmesineBlock = new BasicBlock("karmesine_block", Material.ROCK, 13.0f, 15.0f, 3, PREFIX_BLOCK); + + + public static Block imperomiteBlock = new BasicBlock("imperomite_block", Material.ROCK, 24.0f, 25.0f, 5, PREFIX_BLOCK); + public static Block fractoryteBlock = new BasicBlock("fractoryte_block", Material.ROCK, 8.0f, 8.0f, 8, PREFIX_BLOCK); + public static Block noctunyxBlock = new BasicBlock("noctunyx_block", Material.ROCK, 60.0f, 500.0f, 6, PREFIX_BLOCK); + public static Block nitroniteBlock = new BasicBlock("nitronite_block", Material.ROCK, 13.0f, 15.0f, 7, PREFIX_BLOCK); + public static Block cryptogenBlock = new BasicBlock("cryptogen_block", Material.ROCK, 23.0f, 25.0f, 6, PREFIX_BLOCK); + public static Block seismodiumBlock = new BasicBlock("seismodium_block", Material.ROCK, 30.0f, 30.0f, 7, 1f, PREFIX_BLOCK); + public static Block aegisaltBlock = new BasicBlock("aegisalt_block", Material.ROCK, 13.0f, 13.0f, 5, PREFIX_BLOCK); + public static Block ultraniteBlock = new BasicBlock("ultranite_block", Material.ROCK, 13.0f, 15.0f, 8, PREFIX_BLOCK); + public static Block bysmuidBlock = new BasicBlock("bysmuid_block", Material.ROCK, 35.0f, 35.0f, 5, 0.25f, PREFIX_BLOCK); + public static Block nucleumBlock = new BasicBlock("nucleum_block", Material.ROCK, 25.0f, 25.0f, 4, PREFIX_BLOCK); + public static Block terramiteBlock = new BasicBlock("terramite_block", Material.ROCK, 70.0f, 800.0f, 4, PREFIX_BLOCK); + public static Block solariumBlock = new BasicBlock("solarium_block", Material.ROCK, 80.0f, 1000.0f, 5, PREFIX_BLOCK); + public static Block lumixylBlock = new BasicBlock("lumixyl_block", Material.ROCK, 12.0f, 12.0f, 5, PREFIX_BLOCK); + public static Block dyoniteBlock = new BasicBlock("dyonite_block", Material.ROCK, 23.0f, 25.0f, 4, PREFIX_BLOCK); + public static Block proxideumBlock = new BasicBlock("proxideum_block", Material.ROCK, 25.0f, 25.0f, 4, PREFIX_BLOCK); + public static Block astriumBlock = new BasicBlock("astrium_block", Material.ROCK, 55.0f, 400.0f, 7, PREFIX_BLOCK); + + //public static Block fluidBlock = new BlockMolten(Fluids.astriumFluid); + + + public static void register() { + Field[] declaredFields = Blocks.class.getDeclaredFields(); + for (Field field : declaredFields) { + if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) { + Class targetType = field.getType(); + try { + Block block = (Block) field.get(targetType); + Utils.registerBlockWithItem(block); + + if (block instanceof BasicBlock) { + if (((BasicBlock) block).isOreDict()) { + String oreDictName; + String[] nameParts = block.getUnlocalizedName().replace("tile.", "").split("_"); + + if (nameParts.length > 2) { + oreDictName = Joiner.on("_").join(Arrays.copyOfRange(nameParts, 0, nameParts.length - 1)); + } else { + oreDictName = nameParts[0]; + } + OreDictionary.registerOre(((BasicBlock) block).getOreDictPrefix() + StringUtils.capitalize(oreDictName), block); + } + } + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + } + } +} diff --git a/src/main/java/com/sosnitzka/taiga/Fluids.java b/src/main/java/com/sosnitzka/taiga/Fluids.java new file mode 100644 index 0000000..2d08473 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/Fluids.java @@ -0,0 +1,96 @@ +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.smeltery.block.BlockMolten; + +import java.lang.reflect.Field; + +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", 0xFFff6642, 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); + + + static void register() { + Field[] declaredFields = Fluids.class.getDeclaredFields(); + for (Field field : declaredFields) { + if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) { + Class targetType = field.getType(); + try { + BasicTinkerFluid fluid = (BasicTinkerFluid) field.get(targetType); + registerFluid(fluid); + + BlockMolten block = new BlockMolten(fluid); + block.setUnlocalizedName("molten_" + fluid.getName()); + block.setRegistryName(TAIGA.MODID, "molten_" + fluid.getName()); + Utils.registerBlockWithItem(block); + + TAIGA.proxy.registerFluidModels(fluid); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + } + } + + 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); + } +} diff --git a/src/main/java/com/sosnitzka/taiga/Items.java b/src/main/java/com/sosnitzka/taiga/Items.java new file mode 100644 index 0000000..37e36e4 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/Items.java @@ -0,0 +1,105 @@ +package com.sosnitzka.taiga; + + +import com.google.common.base.Joiner; +import com.sosnitzka.taiga.generic.BasicItem; +import com.sosnitzka.taiga.items.ItemIronNugget; +import com.sosnitzka.taiga.items.ItemLignite; +import com.sosnitzka.taiga.items.ItemSlaggoldIngot; +import com.sosnitzka.taiga.items.ItemSlagironIngot; +import net.minecraft.item.Item; +import net.minecraftforge.fml.common.registry.GameRegistry; +import net.minecraftforge.oredict.OreDictionary; +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; + +public class Items { + public static ItemSlagironIngot slagironIngot = new ItemSlagironIngot(); + public static ItemLignite lignite = new ItemLignite(); + public static ItemIronNugget iron_nugget = new ItemIronNugget(); + public static ItemSlaggoldIngot slaggoldIngot = new ItemSlaggoldIngot(); + public static Item fuel_brick = new BasicItem("fuel_brick"); + + 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 vibraniumIngot = new BasicItem("vibranium_ingot", PREFIX_INGOT); + public static Item rubiumIngot = new BasicItem("rubium_ingot", PREFIX_INGOT); + + 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 tiberiumShardInstable = new BasicItem("tiberium_shard_instable"); + public static Item tiberiumShardStable = new BasicItem("tiberium_nugget", PREFIX_NUGGET); + + public static void register() { + Field[] declaredFields = Items.class.getDeclaredFields(); + for (Field field : declaredFields) { + if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) { + Class targetType = field.getType(); + try { + Item item = (Item) field.get(targetType); + GameRegistry.register(item); + + if (item instanceof BasicItem) { + if (((BasicItem) item).isOreDict()) { + String oreDictName; + String[] nameParts = item.getUnlocalizedName().replace("item.", "").split("_"); + + if (nameParts.length > 2) { + oreDictName = Joiner.on("_").join(Arrays.copyOfRange(nameParts, 0, nameParts.length - 1)); + } else { + oreDictName = nameParts[0]; + } + + OreDictionary.registerOre(((BasicItem) item).getOreDictPrefix() + StringUtils.capitalize(oreDictName), item); + } + } + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + } + } +} diff --git a/src/main/java/com/sosnitzka/taiga/MaterialTraits.java b/src/main/java/com/sosnitzka/taiga/MaterialTraits.java new file mode 100644 index 0000000..f0e8b4b --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/MaterialTraits.java @@ -0,0 +1,84 @@ +package com.sosnitzka.taiga; + + +import com.sosnitzka.taiga.traits.*; +import net.minecraft.util.text.TextFormatting; +import slimeknights.tconstruct.library.materials.HandleMaterialStats; +import slimeknights.tconstruct.library.materials.HeadMaterialStats; +import slimeknights.tconstruct.library.materials.Material; +import slimeknights.tconstruct.library.traits.AbstractTrait; + +import static slimeknights.tconstruct.tools.TinkerMaterials.*; + +public class MaterialTraits { + + // new hardness levels + public static final int TITANITE = 5; + public static final int METEORITE = 6; + public static final int VIBRANIUM = 7; + public static final int ADAMANTITE = 8; + + // Init of new traits + public static final AbstractTrait instable = new TraitInstable(); + public static final AbstractTrait naturebound = new TraitNatureBound(); + public static final AbstractTrait uncertain = new TraitUncertain(); + public static final AbstractTrait softy = new TraitSofty(); + public static final AbstractTrait curvature = new TraitCurvature(); + public static final AbstractTrait resonance = new TraitResonance(); + public static final AbstractTrait fracture = new TraitFracture(); + public static final AbstractTrait glimmer = new TraitGlimmer(); + public static final AbstractTrait garishly = new TraitGarishly(); + public static final AbstractTrait pulverizing = new TraitPulverizing(); + public static final AbstractTrait analysing = new TraitAnalysing(); + public static final AbstractTrait cascade = new TraitCascade(); + public static final AbstractTrait blind = new TraitBlind(); + 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 Material arcanite = new Material("arcanite", TextFormatting.LIGHT_PURPLE).addTrait(arcane, HeadMaterialStats.TYPE).addTrait(blind, HandleMaterialStats.TYPE); + public static Material tiberium = new Material("tiberium", TextFormatting.GREEN).addTrait(instable); + public static Material prometheum = new Material("prometheum", TextFormatting.DARK_PURPLE).addTrait(haunted, HeadMaterialStats.TYPE).addTrait(blind); + public static Material rubium = new Material("rubium", TextFormatting.RED).addTrait(enderference, HeadMaterialStats.TYPE).addTrait(blind); + public static Material violium = new Material("violium", TextFormatting.DARK_GREEN).addTrait(stonebound, HandleMaterialStats.TYPE).addTrait(poisonous, HeadMaterialStats.TYPE); + public static Material bismuth = new Material("bismuth", TextFormatting.GREEN).addTrait(splintering, HeadMaterialStats.TYPE).addTrait(splinters, HandleMaterialStats.TYPE); + public static Material karmesine = new Material("karmesine", TextFormatting.DARK_RED).addTrait(aridiculous, HandleMaterialStats.TYPE).addTrait(superheat, HeadMaterialStats.TYPE); + public static Material mindorite = new Material("mindorite", TextFormatting.AQUA).addTrait(cheap); + public static Material titanite = new Material("titanite", TextFormatting.GRAY).addTrait(shocking, HandleMaterialStats.TYPE).addTrait(sharp, HeadMaterialStats.TYPE); + public static Material meteorite = new Material("meteorite", TextFormatting.GRAY).addTrait(established, HandleMaterialStats.TYPE).addTrait(momentum, HeadMaterialStats.TYPE); + public static Material adamantite = new Material("adamantite", TextFormatting.GRAY).addTrait(coldblooded, HeadMaterialStats.TYPE).addTrait(magnetic, HandleMaterialStats.TYPE); + public static Material vibranium = new Material("vibranium", TextFormatting.GRAY).addTrait(resonance); + public static Material ignitite = new Material("ignitite", TextFormatting.RED).addTrait(melting, HandleMaterialStats.TYPE).addTrait(flammable, HeadMaterialStats.TYPE); + public static Material palladium = new Material("palladium", TextFormatting.DARK_GRAY).addTrait(dark); + public static Material eternite = new Material("eternite", TextFormatting.AQUA).addTrait(writable2); + public static Material mythril = new Material("mythril", TextFormatting.GRAY).addTrait(holy, HeadMaterialStats.TYPE).addTrait(hellish, HandleMaterialStats.TYPE); + + public static Material imperomite = new Material("imperomite", TextFormatting.DARK_RED).addTrait(cascade, HeadMaterialStats.TYPE).addTrait(fragile); + public static Material fractoryte = new Material("fractoryte", TextFormatting.DARK_RED).addTrait(fracture, HeadMaterialStats.TYPE).addTrait(fragile); + public static Material noctunyx = new Material("noctunyx", TextFormatting.LIGHT_PURPLE).addTrait(hollow, HeadMaterialStats.TYPE).addTrait(reviving, HandleMaterialStats.TYPE); + 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); + 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, HandleMaterialStats.TYPE).addTrait(melting, HeadMaterialStats.TYPE); + public static Material nucleum = new Material("nucleum", TextFormatting.AQUA).addTrait(diffuse).addTrait(bright, HeadMaterialStats.TYPE); + public static Material lumixyl = new Material("lumixyl", TextFormatting.YELLOW).addTrait(glimmer); + public static Material dyonite = new Material("dyonite", TextFormatting.GRAY).addTrait(slaughtering, HeadMaterialStats.TYPE).addTrait(dissolving, HandleMaterialStats.TYPE); + 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, HandleMaterialStats.TYPE).addTrait(lightweight); +} diff --git a/src/main/java/com/sosnitzka/taiga/TAIGA.java b/src/main/java/com/sosnitzka/taiga/TAIGA.java new file mode 100644 index 0000000..4f773aa --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/TAIGA.java @@ -0,0 +1,123 @@ +package com.sosnitzka.taiga; + +import com.google.common.collect.Lists; +import com.sosnitzka.taiga.proxy.ServerProxy; +import com.sosnitzka.taiga.recipes.Crafting; +import com.sosnitzka.taiga.recipes.Smelting; +import com.sosnitzka.taiga.util.FuelHandler; +import com.sosnitzka.taiga.world.ZWorldGen; +import net.minecraftforge.fluids.Fluid; +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.registry.GameRegistry; +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.tools.TinkerMaterials; + +import java.util.List; + +import static com.sosnitzka.taiga.Fluids.*; +import static com.sosnitzka.taiga.MaterialTraits.*; +import static slimeknights.tconstruct.library.utils.HarvestLevels.*; + +@Mod(modid = TAIGA.MODID, version = TAIGA.VERSION) + + +public class TAIGA { + + public static final String MODID = "taiga"; + public static final String VERSION = "@VERSION@"; + + @SidedProxy(clientSide = "com.sosnitzka.taiga.proxy.ClientProxy", serverSide = "com.sosnitzka.taiga.proxy.ServerProxy") + public static ServerProxy proxy; + private List integrateList = Lists.newArrayList(); + + @EventHandler + public void preInit(FMLPreInitializationEvent e) { + Items.register(); + Fluids.register(); + Blocks.register(); + Fluids.registerfromItem(); + Alloys.register(); + + // ARCANE ORES + registerTinkerMaterial("Tiberium", tiberium, tiberiumFluid, 223, 6.2f, 8.35f, 0.63f, 50, 50, OBSIDIAN, false, true); + registerTinkerMaterial("Rubium", rubium, rubiumFluid, 351, 5.15f, 7.00f, 1.05f, -100, 250, COBALT, false, true); + registerTinkerMaterial("Prometheum", prometheum, prometheumFluid, 539, 3.6f, 6.60f, 0.90f, 0, 150, TITANITE, false, true); + registerTinkerMaterial("Arcanite", arcanite, arcaniteFluid, 698, 4.3f, 7.88f, 0.85f, -50, 150, METEORITE, false, true); + // SOLIDE ORES + registerTinkerMaterial("Titanite", titanite, titaniteFluid, 811, 4.8f, 6.40f, 1.00f, -50, 150, TITANITE, false, true); + registerTinkerMaterial("Meteorite", meteorite, meteoriteFluid, 823, 6.1f, 6.83f, 1.20f, -50, 200, METEORITE, false, true); + registerTinkerMaterial("Vibranium", vibranium, vibraniumFluid, 917, 7.45f, 7.17f, 1.15f, 50, 150, VIBRANIUM, false, true); + registerTinkerMaterial("Adamantite", adamantite, adamantiteFluid, 981, 8.9f, 9.11f, 1.20f, -200, 300, ADAMANTITE, false, true); + // ETHERE ORES + registerTinkerMaterial("Eternite", eternite, eterniteFluid, 592, 7.35f, 1.95f, 1.10f, 150, 150, COBALT, false, true); + registerTinkerMaterial("Mythril", mythril, mythrilFluid, 552, 8.75f, 2.87f, 0.98f, -100, 200, TITANITE, false, true); + registerTinkerMaterial("Palladium", palladium, palladiumFluid, 578, 10.4f, 3.13f, 1.09f, 0, 100, METEORITE, false, true); + registerTinkerMaterial("Ignitite", ignitite, ignititeFluid, 673, 12.1f, 4.10f, 1.15f, -50, 150, VIBRANIUM, false, true); + // RATIO ORES + registerTinkerMaterial("Bismuth", bismuth, bismuthFluid, 235, 5.33f, 3.80f, 1.15f, 17, 117, OBSIDIAN, false, true); + registerTinkerMaterial("Violium", violium, violiumFluid, 427, 4.2f, 3.30f, 1.00f, 133, 150, COBALT, false, true); + registerTinkerMaterial("Mindorite", mindorite, mindoriteFluid, 458, 6.41f, 4.40f, 0.90f, 83, 100, TITANITE, false, true); + registerTinkerMaterial("Karmesine", karmesine, karmesineFluid, 627, 6.75f, 5.10f, 0.99f, 0, 200, METEORITE, false, true); + // Material from alloys + registerTinkerMaterial("Nitronite", nitronite, nitroniteFluid, 745, 6.74f, 8.74f, 0.85f, 75, 93, TITANITE, false, true); + registerTinkerMaterial("Bysmuid", bysmuid, bysmuidFluid, 305, 5.22f, 6.47f, 1.09f, -80, 197, COBALT, false, true); + registerTinkerMaterial("Ultranite", ultranite, ultraniteFluid, 1016, 5.72f, 6.76f, 1.02f, -120, 210, VIBRANIUM, false, true); + registerTinkerMaterial("Astrium", astrium, astriumFluid, 670, 5.28f, 9.14f, 0.91f, -45, 170, VIBRANIUM, false, true); + registerTinkerMaterial("Imperomite", imperomite, imperomiteFluid, 770, 11.60f, 3.57f, 1.05f, -38, 125, METEORITE, false, true); + registerTinkerMaterial("Dyonite", dyonite, dyoniteFluid, 733, 6.14f, 7.69f, 0.97f, -15, 140, TITANITE, false, true); + registerTinkerMaterial("Solarium", solarium, solariumFluid, 1020, 13.78f, 4.64f, 1.15f, 0, 150, ADAMANTITE, false, true); + registerTinkerMaterial("Fractoryte", fractoryte, fractoryteFluid, 1071, 7.65f, 7.75f, 1.15f, -250, 283, METEORITE, false, true); + registerTinkerMaterial("Aegisalt", aegisalt, aegisaltFluid, 355, 8.88f, 3.18f, 1.00f, 175, 125, TITANITE, false, true); + registerTinkerMaterial("Noctunyx", noctunyx, noctunyxFluid, 713, 10.43f, 3.25f, 0.99f, -125, 183, METEORITE, false, true); + registerTinkerMaterial("Nucleum", nucleum, nucleumFluid, 503, 11.30f, 3.22f, 1.05f, 100, 125, TITANITE, false, true); + registerTinkerMaterial("Seismodium", seismodium, seismodiumFluid, 879, 13.85f, 4.19f, 1.17f, -75, 169, VIBRANIUM, false, true); + registerTinkerMaterial("Lumixyl", lumixyl, lumixylFluid, 357, 4.64f, 5.92f, 1.05f, 15, 130, COBALT, false, true); + registerTinkerMaterial("Terramite", terramite, terramiteFluid, 482, 7.25f, 2.85f, 1.03f, 208, 150, TITANITE, false, true); + registerTinkerMaterial("Cryptogen", cryptogen, cryptogenFluid, 538, 5.71f, 6.93f, 0.88f, 58, 117, METEORITE, false, true); + registerTinkerMaterial("Proxideum", proxideum, proxideumFluid, 597, 10.55f, 4.21f, 0.99f, -60, 200, METEORITE, false, true); + } + + @EventHandler + public void init(FMLInitializationEvent e) { + proxy.registerStuff(); + GameRegistry.registerWorldGenerator(new ZWorldGen(), 100); + GameRegistry.registerFuelHandler(new FuelHandler()); + Smelting.register(); + Crafting.register(); + + harvestLevelNames.put(METEORITE, TinkerMaterials.bone.getTextColor() + "Meteorite"); + 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(); + } + } + + @EventHandler + public void postInit(FMLPostInitializationEvent e) { + + } + + private void registerTinkerMaterial(String oreSuffix, slimeknights.tconstruct.library.materials.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)); + material.setFluid(fluid).setCraftable(craft).setCastable(cast); + + proxy.setRenderInfo(material); + MaterialIntegration integration = new MaterialIntegration(material, fluid, oreSuffix); + integration.integrate(); + integrateList.add(integration); + } +} \ No newline at end of file diff --git a/src/main/java/com/sosnitzka/taiga/blocks/BlockLignite.java b/src/main/java/com/sosnitzka/taiga/blocks/BlockLignite.java new file mode 100644 index 0000000..a524024 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/blocks/BlockLignite.java @@ -0,0 +1,40 @@ +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; +import net.minecraft.world.World; + +import java.util.Random; + +import static com.sosnitzka.taiga.Items.lignite; + +public class BlockLignite extends BasicBlock { + + public BlockLignite() { + super("lignite_ore", Material.ROCK, 4.0f, 5.0f, 1); + } + + @Override + public int getExpDrop(IBlockState state, IBlockAccess world, BlockPos pos, int fortune) { + Random rand = world instanceof World ? ((World) world).rand : new Random(); + int r = RANDOM.nextInt(11); + if (r > 7) { + return MathHelper.getRandomIntegerInRange(rand, 0, 10) + fortune; + } else return 0; + } + + @Override + public int quantityDropped(IBlockState state, int fortune, Random random) { + return MathHelper.getRandomIntegerInRange(random, 1, 3 + fortune); + } + + @Override + public Item getItemDropped(IBlockState state, Random rand, int fortune) { + return lignite; + } +} diff --git a/src/main/java/com/sosnitzka/taiga/blocks/BlockTiberium.java b/src/main/java/com/sosnitzka/taiga/blocks/BlockTiberium.java new file mode 100644 index 0000000..bd7d504 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/blocks/BlockTiberium.java @@ -0,0 +1,63 @@ +package com.sosnitzka.taiga.blocks; + +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.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; + +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; + +public class BlockTiberium extends BasicBlock { + + public BlockTiberium() { + super("tiberium_ore", Material.ROCK, 15.0f, 2.0f, OBSIDIAN, 1.0F, PREFIX_ORE); + } + + @Override + public int getExpDrop(IBlockState state, IBlockAccess world, BlockPos pos, int fortune) { + Random rand = world instanceof World ? ((World) world).rand : new Random(); + int r = RANDOM.nextInt(11); + if (r > 7) { + return MathHelper.getRandomIntegerInRange(rand, 0, 10) + fortune; + } else return 0; + } + + @Override + public int quantityDropped(IBlockState state, int fortune, Random random) { + return MathHelper.getRandomIntegerInRange(random, 1, MathHelper.getRandomIntegerInRange(random, 1, 5 + fortune)); + } + + @Override + public Item getItemDropped(IBlockState state, Random rand, int fortune) { + return Items.tiberiumShardInstable; + } + + @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); + } + } + } + + @Override + public void onBlockDestroyedByPlayer(World worldIn, BlockPos pos, IBlockState state) { + if (MathHelper.getRandomIntegerInRange(random, 1, 30) < 3) { + if (!worldIn.isRemote) { + worldIn.newExplosion(null, pos.getX(), pos.getY() + 1 / 16f, pos.getZ(), 1.1f, true, true); + } + } + } + +} diff --git a/src/main/java/com/sosnitzka/taiga/generic/BasicBlock.java b/src/main/java/com/sosnitzka/taiga/generic/BasicBlock.java new file mode 100644 index 0000000..7b03903 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/generic/BasicBlock.java @@ -0,0 +1,40 @@ +package com.sosnitzka.taiga.generic; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; + +public class BasicBlock extends Block { + private String oreDictPrefix; + + public BasicBlock(String name, Material material, float hardness, float resistance, int harvest, float lightLevel, String oreDictPrefix) { + super(material); + setUnlocalizedName(name); + setRegistryName(name); + setHardness(hardness); + setResistance(resistance); + setHarvestLevel("pickaxe", harvest); + setLightLevel(lightLevel); + this.oreDictPrefix = oreDictPrefix; + } + + public BasicBlock(String name, Material material, float hardness, float resistance, int harvest) { + this(name, material, hardness, resistance, harvest, 0.0F, null); + } + + public BasicBlock(String name, Material material, float hardness, float resistance, int harvest, float lightLevel) { + this(name, material, hardness, resistance, harvest, lightLevel, null); + } + + public BasicBlock(String name, Material material, float hardness, float resistance, int harvest, String oreDictPrefix) { + this(name, material, hardness, resistance, harvest, 0.0F, oreDictPrefix); + } + + public boolean isOreDict() { + return this.oreDictPrefix != null; + } + + public String getOreDictPrefix() { + return this.oreDictPrefix; + } + +} diff --git a/src/main/java/com/sosnitzka/taiga/generic/BasicBlockGround.java b/src/main/java/com/sosnitzka/taiga/generic/BasicBlockGround.java new file mode 100644 index 0000000..17cf8fc --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/generic/BasicBlockGround.java @@ -0,0 +1,18 @@ +package com.sosnitzka.taiga.generic; + +import net.minecraft.block.Block; +import net.minecraft.block.SoundType; +import net.minecraft.block.material.Material; + +public class BasicBlockGround extends Block { + + public BasicBlockGround(String name, Material material, float hardness, float resistance, int harvest) { + super(material); + setUnlocalizedName(name); + setRegistryName(name); + setHardness(hardness); + setResistance(resistance); + setHarvestLevel("shovel", harvest); + setSoundType(SoundType.GROUND); + } +} diff --git a/src/main/java/com/sosnitzka/taiga/generic/BasicItem.java b/src/main/java/com/sosnitzka/taiga/generic/BasicItem.java new file mode 100644 index 0000000..4197e45 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/generic/BasicItem.java @@ -0,0 +1,25 @@ +package com.sosnitzka.taiga.generic; + +import net.minecraft.item.Item; + +public class BasicItem extends Item { + private String oreDictPrefix; + + public BasicItem(String name, String oreDictPrefix) { + setUnlocalizedName(name); + setRegistryName(name); + this.oreDictPrefix = oreDictPrefix; + } + + public BasicItem(String name) { + this(name, null); + } + + public boolean isOreDict() { + return this.oreDictPrefix != null; + } + + public String getOreDictPrefix() { + return oreDictPrefix; + } +} diff --git a/src/main/java/com/sosnitzka/taiga/generic/BasicTinkerFluid.java b/src/main/java/com/sosnitzka/taiga/generic/BasicTinkerFluid.java new file mode 100644 index 0000000..475fc7a --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/generic/BasicTinkerFluid.java @@ -0,0 +1,24 @@ +package com.sosnitzka.taiga.generic; + +import net.minecraft.util.ResourceLocation; +import slimeknights.tconstruct.library.Util; +import slimeknights.tconstruct.library.fluid.FluidMolten; + +public class BasicTinkerFluid extends FluidMolten { + + private boolean toolForge; + + public BasicTinkerFluid(String fluidName, int color, boolean toolForge, int temp, int lumen, int visk) { + super(fluidName, color, new ResourceLocation("tconstruct:blocks/fluids/molten_metal"), new ResourceLocation("tconstruct:blocks/fluids/molten_metal_flow")); + this.setUnlocalizedName(Util.prefix(fluidName)); + this.setTemperature(temp); + this.setLuminosity(lumen); + this.setViscosity(visk); + this.setDensity(2000); + this.toolForge = toolForge; + } + + public boolean isToolForge() { + return toolForge; + } +} diff --git a/src/main/java/com/sosnitzka/taiga/items/ItemIronNugget.java b/src/main/java/com/sosnitzka/taiga/items/ItemIronNugget.java new file mode 100644 index 0000000..d9e2463 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/items/ItemIronNugget.java @@ -0,0 +1,10 @@ +package com.sosnitzka.taiga.items; + +import com.sosnitzka.taiga.generic.BasicItem; + +public class ItemIronNugget extends BasicItem { + + public ItemIronNugget() { + super("iron_nugget"); + } +} diff --git a/src/main/java/com/sosnitzka/taiga/items/ItemLignite.java b/src/main/java/com/sosnitzka/taiga/items/ItemLignite.java new file mode 100644 index 0000000..5de29fb --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/items/ItemLignite.java @@ -0,0 +1,11 @@ +package com.sosnitzka.taiga.items; + +import com.sosnitzka.taiga.generic.BasicItem; + +public class ItemLignite extends BasicItem { + + public ItemLignite() { + super("lignite"); + } + +} diff --git a/src/main/java/com/sosnitzka/taiga/items/ItemSlaggoldIngot.java b/src/main/java/com/sosnitzka/taiga/items/ItemSlaggoldIngot.java new file mode 100644 index 0000000..ee3c685 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/items/ItemSlaggoldIngot.java @@ -0,0 +1,10 @@ +package com.sosnitzka.taiga.items; + +import com.sosnitzka.taiga.generic.BasicItem; + +public class ItemSlaggoldIngot extends BasicItem { + + public ItemSlaggoldIngot() { + super("slaggold_ingot"); + } +} diff --git a/src/main/java/com/sosnitzka/taiga/items/ItemSlagironIngot.java b/src/main/java/com/sosnitzka/taiga/items/ItemSlagironIngot.java new file mode 100644 index 0000000..b3d08a9 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/items/ItemSlagironIngot.java @@ -0,0 +1,10 @@ +package com.sosnitzka.taiga.items; + +import com.sosnitzka.taiga.generic.BasicItem; + +public class ItemSlagironIngot extends BasicItem { + + public ItemSlagironIngot() { + super("slagiron_ingot"); + } +} diff --git a/src/main/java/com/sosnitzka/taiga/proxy/ClientProxy.java b/src/main/java/com/sosnitzka/taiga/proxy/ClientProxy.java new file mode 100644 index 0000000..5ca41a9 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/proxy/ClientProxy.java @@ -0,0 +1,138 @@ +package com.sosnitzka.taiga.proxy; + +import com.sosnitzka.taiga.Blocks; +import com.sosnitzka.taiga.Items; +import com.sosnitzka.taiga.TAIGA; +import net.minecraft.block.Block; +import net.minecraft.block.state.IBlockState; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.ItemMeshDefinition; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; +import net.minecraft.client.renderer.block.statemap.StateMapperBase; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.model.ModelLoader; +import net.minecraftforge.fluids.Fluid; +import slimeknights.tconstruct.library.client.MaterialRenderInfo; +import slimeknights.tconstruct.library.client.texture.MetalTextureTexture; +import slimeknights.tconstruct.library.materials.Material; + +import javax.annotation.Nonnull; +import java.lang.reflect.Field; + +import static com.sosnitzka.taiga.MaterialTraits.*; + +public class ClientProxy extends ServerProxy { + + private static void registerBlockModel(Block block) { + registerItemModel(Item.getItemFromBlock(block)); + } + + private static void registerItemModel(Item item) { + Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(item.getRegistryName(), "inventory")); + } + + @Override + public void registerStuff() { + Field[] itemFields = Items.class.getDeclaredFields(); + for (Field field : itemFields) { + if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) { + Class targetType = field.getType(); + try { + Item item = (Item) field.get(targetType); + + registerItemModel(item); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + } + + Field[] blockFields = Blocks.class.getDeclaredFields(); + for (Field field : blockFields) { + if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) { + Class targetType = field.getType(); + try { + Block block = (Block) field.get(targetType); + + registerBlockModel(block); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + } + } + + public void setRenderInfo(final Material material) { + /* if (material != bismuth) { + material.setRenderInfo(new MaterialRenderInfo.Metal(fluid.getColor(), 0.4f, 0.2f, 0f)); + } else bismuth.setRenderInfo(new MaterialRenderInfo.BlockTexture("taiga:blocks/bismuth_block")); */ + + if (material == adamantite) renderTo(material, 0xd55cdf, 0.5f, 0.8f, 0.2f); + else if (material == solarium) renderTo(material, 0xffff00, 0.6f, 1.8f, 0.0f); + else if (material == proxideum) renderTo(material, 0x2d8f8b, 0.4f, 0.3f, 0.1f); + else if (material == tiberium) renderTo(material, 0x33ff33, 0.5f, 0.2f, 0.1f); + else if (material == bismuth) renderTo(material, 0xffffff, 0.4f, 0.2f, 0.0f); + else if (material == dyonite) renderTo(material, 0xffe240, 0.6f, 0.8f, 0.2f); + else { + material.setRenderInfo(new MaterialRenderInfo.BlockTexture("taiga:blocks/" + material.getFluid().getName() + "_block")); + } + } + + private void renderTo(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/adamantite", baseTexture, location, f, shine, brightness, hueshift); + } + }); + } + + @Override + public void registerFluidModels(Fluid fluid) { + if (fluid == null) { + return; + } + + Block block = fluid.getBlock(); + if (block != null) { + Item item = Item.getItemFromBlock(block); + FluidStateMapper mapper = new FluidStateMapper(fluid); + + // item-model + if (item != null) { + ModelLoader.registerItemVariants(item); + ModelLoader.setCustomMeshDefinition(item, mapper); + } + // block-model + ModelLoader.setCustomStateMapper(block, mapper); + } + } + + public static class FluidStateMapper extends StateMapperBase implements ItemMeshDefinition { + + public final Fluid fluid; + public final ModelResourceLocation location; + + public FluidStateMapper(Fluid fluid) { + this.fluid = fluid; + + // have each block hold its fluid per nbt? hm + this.location = new ModelResourceLocation(new ResourceLocation(TAIGA.MODID, "fluid_block"), fluid.getName()); + } + + @Nonnull + @Override + protected ModelResourceLocation getModelResourceLocation(@Nonnull IBlockState state) { + return location; + } + + @Nonnull + @Override + public ModelResourceLocation getModelLocation(@Nonnull ItemStack stack) { + return location; + } + } +} diff --git a/src/main/java/com/sosnitzka/taiga/proxy/ServerProxy.java b/src/main/java/com/sosnitzka/taiga/proxy/ServerProxy.java new file mode 100644 index 0000000..460c920 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/proxy/ServerProxy.java @@ -0,0 +1,18 @@ +package com.sosnitzka.taiga.proxy; + +import net.minecraftforge.fluids.Fluid; +import slimeknights.tconstruct.library.materials.Material; + +public class ServerProxy { + + public void registerStuff() { + + } + + public void setRenderInfo(Material material) { + + } + + public void registerFluidModels(Fluid fluid) { + } +} diff --git a/src/main/java/com/sosnitzka/taiga/recipes/Crafting.java b/src/main/java/com/sosnitzka/taiga/recipes/Crafting.java new file mode 100644 index 0000000..b0fdbe4 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/recipes/Crafting.java @@ -0,0 +1,37 @@ +package com.sosnitzka.taiga.recipes; + + +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fml.common.registry.GameRegistry; + +import static com.sosnitzka.taiga.Items.*; +import static slimeknights.tconstruct.shared.TinkerCommons.matNecroticBone; + +public class Crafting { + public static void register() { + GameRegistry.addShapelessRecipe(new ItemStack(fuel_brick), Items.COAL, Items.COAL, Items.COAL, lignite, lignite, lignite); + GameRegistry.addShapedRecipe(new ItemStack((tiberiumShardStable), 3), "STS", "TST", "STS", 'T', new ItemStack(tiberiumShardInstable), 'S', new ItemStack(Item.getItemFromBlock(Blocks.SAND))); + GameRegistry.addShapedRecipe(new ItemStack((tiberiumShardStable), 2), "GTG", "TGT", "GTG", 'T', new ItemStack(tiberiumShardInstable), 'G', new ItemStack(Item.getItemFromBlock(Blocks.GRAVEL))); + + 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); + + + + } +} diff --git a/src/main/java/com/sosnitzka/taiga/recipes/Smelting.java b/src/main/java/com/sosnitzka/taiga/recipes/Smelting.java new file mode 100644 index 0000000..880583c --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/recipes/Smelting.java @@ -0,0 +1,37 @@ +package com.sosnitzka.taiga.recipes; + + +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; +import net.minecraftforge.fml.common.registry.GameRegistry; +import org.apache.commons.lang3.RandomUtils; + +import static com.sosnitzka.taiga.Blocks.*; +import static com.sosnitzka.taiga.Items.*; + +public class Smelting { + public static void register() { + GameRegistry.addSmelting(slagironOre, new ItemStack(slagironIngot), 1.0F); + GameRegistry.addSmelting(new ItemStack(slagironIngot), new ItemStack(iron_nugget), 0); + GameRegistry.addSmelting(new ItemStack(slaggoldIngot), new ItemStack(Items.GOLD_NUGGET), 0); + GameRegistry.addSmelting(new ItemStack(tiberiumShardInstable), new ItemStack(tiberiumShardStable), 0.2F); + + GameRegistry.addSmelting(titaniteOre, new ItemStack(titaniteIngot), RandomUtils.nextFloat(0F, 2F)); + GameRegistry.addSmelting(arcaniteOre, new ItemStack(arcaniteIngot), RandomUtils.nextFloat(0F, 2F)); + GameRegistry.addSmelting(adamantiteOre, new ItemStack(adamantiteIngot), RandomUtils.nextFloat(0F, 2F)); + GameRegistry.addSmelting(violiumOre, new ItemStack(violiumIngot), RandomUtils.nextFloat(0F, 2F)); + GameRegistry.addSmelting(bismuthOre, new ItemStack(bismuthIngot), RandomUtils.nextFloat(0F, 2F)); + GameRegistry.addSmelting(eterniteOre, new ItemStack(eterniteIngot), RandomUtils.nextFloat(0F, 2F)); + GameRegistry.addSmelting(ignititeOre, new ItemStack(ignititeIngot), RandomUtils.nextFloat(0F, 2F)); + GameRegistry.addSmelting(karmesineOre, new ItemStack(karmesineIngot), RandomUtils.nextFloat(0F, 2F)); + GameRegistry.addSmelting(meteoriteOre, new ItemStack(meteoriteIngot), RandomUtils.nextFloat(0F, 2F)); + GameRegistry.addSmelting(mindoriteOre, new ItemStack(mindoriteIngot), RandomUtils.nextFloat(0F, 2F)); + GameRegistry.addSmelting(mythrilOre, new ItemStack(mythrilIngot), RandomUtils.nextFloat(0F, 2F)); + GameRegistry.addSmelting(palladiumOre, new ItemStack(palladiumIngot), RandomUtils.nextFloat(0F, 2F)); + GameRegistry.addSmelting(prometheumOre, new ItemStack(prometheumIngot), RandomUtils.nextFloat(0F, 2F)); + GameRegistry.addSmelting(tiberiumOre, new ItemStack(tiberiumShardStable, 2), RandomUtils.nextFloat(0F, 2F)); + GameRegistry.addSmelting(vibraniumOre, new ItemStack(vibraniumIngot), RandomUtils.nextFloat(0F, 2F)); + GameRegistry.addSmelting(rubiumOre, new ItemStack(rubiumIngot), RandomUtils.nextFloat(0F, 2F)); + + } +} diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitAnalysing.java b/src/main/java/com/sosnitzka/taiga/traits/TraitAnalysing.java new file mode 100644 index 0000000..9ff620a --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitAnalysing.java @@ -0,0 +1,66 @@ +package com.sosnitzka.taiga.traits; + +import net.minecraft.entity.monster.EntityMob; +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; +import slimeknights.tconstruct.library.utils.TagUtil; +import slimeknights.tconstruct.library.utils.TinkerUtil; + + +public class TraitAnalysing extends AbstractTrait { + + public TraitAnalysing() { + super("analysing", TextFormatting.GREEN); + MinecraftForge.EVENT_BUS.register(this); + } + + @SubscribeEvent + public void onXpDrop(LivingExperienceDropEvent event) { + EntityPlayer player = event.getAttackingPlayer(); + if (player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) { + event.setDroppedExperience(this.getUpdateXP(event.getDroppedExperience())); + } + + } + + @SubscribeEvent + public void onBlockBreak(BlockEvent.BreakEvent event) { + EntityPlayer player = event.getPlayer(); + if (player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) { + event.setExpToDrop(this.getUpdateXP(event.getExpToDrop())); + } + + } + + @SubscribeEvent + public void onMobDrops(LivingDropsEvent event) { + World w = event.getEntity().getEntityWorld(); + if (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(); + } + } + } + + private int getUpdateXP(int xp) { + float exp = (float) random.nextFloat() * random.nextFloat() * random.nextFloat() * (xp + 18) * 50; + return Math.round(exp); + } + + @Override + public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) { + if (random.nextFloat() < 0.85) { + event.getDrops().clear(); + } + } + +} diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitArcane.java b/src/main/java/com/sosnitzka/taiga/traits/TraitArcane.java new file mode 100644 index 0000000..7d67f8d --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitArcane.java @@ -0,0 +1,42 @@ +package com.sosnitzka.taiga.traits; + +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 slimeknights.tconstruct.library.traits.AbstractTrait; +import slimeknights.tconstruct.library.utils.ToolHelper; + +public class TraitArcane extends AbstractTrait { + + public TraitArcane() { + super("arcane", TextFormatting.DARK_PURPLE); + } + + @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); + } + } + + + public boolean isNight(int time) { + if (time > 12500) { + return true; + } else { + return false; + } + } +} diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitBlind.java b/src/main/java/com/sosnitzka/taiga/traits/TraitBlind.java new file mode 100644 index 0000000..392f48f --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitBlind.java @@ -0,0 +1,44 @@ +package com.sosnitzka.taiga.traits; + +import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.EntityLivingBase; +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; + +public class TraitBlind extends AbstractTrait { + + public TraitBlind() { + super("blind", TextFormatting.DARK_GRAY); + } + + @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))) { + player.addPotionEffect(new PotionEffect(MobEffects.BLINDNESS, random.nextInt(400) + 200)); + player.addPotionEffect(new PotionEffect(MobEffects.WEAKNESS, random.nextInt(400) + 200)); + } + } + + @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))) { + player.addPotionEffect(new PotionEffect(MobEffects.BLINDNESS, random.nextInt(400) + 200)); + player.addPotionEffect(new PotionEffect(MobEffects.WEAKNESS, random.nextInt(400) + 200)); + } + } + + public boolean isNight(int time) { + if (time > 12500) { + return true; + } else { + return false; + } + } +} diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitBright.java b/src/main/java/com/sosnitzka/taiga/traits/TraitBright.java new file mode 100644 index 0000000..bd1514d --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitBright.java @@ -0,0 +1,50 @@ +package com.sosnitzka.taiga.traits; + +import net.minecraft.entity.Entity; +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.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; + + +public class TraitBright extends AbstractTrait { + + public TraitBright() { + super("bright", TextFormatting.DARK_GRAY); + } + + @Override + public float damage(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, float newDamage, boolean isCritical) { + int time = (int) target.getEntityWorld().getWorldTime(); + if (isDay(time)) { + newDamage += damage / 2f; + } + 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 boolean isDay(int time) { + if (time < 12500) { + return true; + } else { + return false; + } + } +} diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitCascade.java b/src/main/java/com/sosnitzka/taiga/traits/TraitCascade.java new file mode 100644 index 0000000..c49de62 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitCascade.java @@ -0,0 +1,57 @@ +package com.sosnitzka.taiga.traits; + +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 slimeknights.tconstruct.library.traits.AbstractTrait; +import slimeknights.tconstruct.library.utils.ToolHelper; + +public class TraitCascade extends AbstractTrait { + + public TraitCascade() { + super("cascade", TextFormatting.DARK_GRAY); + } + + @Override + public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) { + float f = random.nextFloat(); + float b = 0.99F * calcBonus(tool); + if (!world.isRemote && tool.canHarvestBlock(state) && f <= b) { + double x, y, z, sx, sy, sz; + sx = x = pos.getX(); + sy = y = pos.getY(); + sz = z = pos.getZ(); + for (int i = random.nextInt(ToolHelper.getCurrentDurability(tool)); i > 0; i--) { + int r = random.nextInt(3); + int d = random.nextBoolean() ? 1 : -1; + if (r == 0) x += d; + if (r == 1) y += d; + if (r == 2) z += d; + BlockPos nextBlock = new BlockPos(x, y, z); + if (world.getBlockState(nextBlock) == world.getBlockState(pos)) { + world.destroyBlock(nextBlock, true); + sx = x = nextBlock.getX(); + sy = y = nextBlock.getY(); + sz = z = nextBlock.getZ(); + ToolHelper.damageTool(tool, random.nextInt(2), player); + } else { + x = sx; + y = sy; + z = sz; + } + + } + + } + + } + + private float calcBonus(ItemStack tool) { + int durability = ToolHelper.getCurrentDurability(tool); + int maxDurability = ToolHelper.getMaxDurability(tool); + return (0.4f) / (maxDurability - 50) * (durability) + 0.55f; + } +} diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitCurvature.java b/src/main/java/com/sosnitzka/taiga/traits/TraitCurvature.java new file mode 100644 index 0000000..c8aa8c5 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitCurvature.java @@ -0,0 +1,79 @@ +package com.sosnitzka.taiga.traits; + +import net.minecraft.block.state.IBlockState; +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.Blocks; +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.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; + + +public class TraitCurvature extends AbstractTrait { + + + public TraitCurvature() { + super("curvature", TextFormatting.BLACK); + 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 && world.provider.getDimension() != -1) { + teleport(player, world); + player.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F); + } + } + + @Override + public void afterHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean wasCritical, boolean wasHit) { + World w = player.getEntityWorld(); + if (random.nextFloat() <= 0.1 && w.provider.getDimension() != -1) { + if (random.nextBoolean()) { + teleport(player, w); + target.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F); + } else { + target.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F); + teleport(target, w); + } + } + } + + @SubscribeEvent + public void onMobDrops(LivingDropsEvent event) { + World w = event.getEntity().getEntityWorld(); + if (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)) { + ItemStack i = new ItemStack(Items.ENDER_PEARL, random.nextInt(3)); + 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; + while (w.getBlockState(new BlockPos(x, y, z)).getBlock() != Blocks.AIR) { + y++; + } + while (w.getBlockState(new BlockPos(x, y - 1, z)).getBlock() == Blocks.AIR) { + y--; + } + + e.setPosition(x, y, z); + } + +} diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitDark.java b/src/main/java/com/sosnitzka/taiga/traits/TraitDark.java new file mode 100644 index 0000000..567e1d6 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitDark.java @@ -0,0 +1,32 @@ +package com.sosnitzka.taiga.traits; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; +import net.minecraft.util.text.TextFormatting; +import slimeknights.tconstruct.library.traits.AbstractTrait; + + +public class TraitDark extends AbstractTrait { + + public TraitDark() { + super("dark", TextFormatting.DARK_GRAY); + } + + @Override + 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; + } + return super.damage(tool, player, target, damage, newDamage, isCritical); + + } + + public boolean isNight(int time) { + if (time > 12500) { + return true; + } else { + return false; + } + } +} diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitDiffuse.java b/src/main/java/com/sosnitzka/taiga/traits/TraitDiffuse.java new file mode 100644 index 0000000..5f76087 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitDiffuse.java @@ -0,0 +1,67 @@ +package com.sosnitzka.taiga.traits; + +import net.minecraft.entity.monster.EntityMob; +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; +import slimeknights.tconstruct.library.utils.TagUtil; +import slimeknights.tconstruct.library.utils.TinkerUtil; + +public class TraitDiffuse extends AbstractTrait { + + public TraitDiffuse() { + super("diffuse", TextFormatting.DARK_GRAY); + MinecraftForge.EVENT_BUS.register(this); + } + + @SubscribeEvent + public void onXpDrop(LivingExperienceDropEvent event) { + EntityPlayer player = event.getAttackingPlayer(); + if (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 != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) { + event.setExpToDrop(this.getUpdateXP(event.getExpToDrop())); + } + + } + + @SubscribeEvent + public void onMobDrops(LivingDropsEvent event) { + World w = event.getEntity().getEntityWorld(); + if (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(); + } + } + } + + private int getUpdateXP(int xp) { + float exp = (float) random.nextFloat() * random.nextFloat() * random.nextFloat() * (xp + random.nextInt(10)); + if (random.nextBoolean()) + return Math.round(exp); + else return 0; + } + + @Override + public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) { + if (random.nextFloat() < 0.75) { + event.getDrops().clear(); + } + } + +} diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitDissolving.java b/src/main/java/com/sosnitzka/taiga/traits/TraitDissolving.java new file mode 100644 index 0000000..41f684c --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitDissolving.java @@ -0,0 +1,32 @@ +package com.sosnitzka.taiga.traits; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.text.TextFormatting; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.entity.living.LivingExperienceDropEvent; +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 TraitDissolving extends AbstractTrait { + + public TraitDissolving() { + super("dissolving", TextFormatting.DARK_AQUA); + MinecraftForge.EVENT_BUS.register(this); + } + + // high chance to remove XP, low chance to double,triple or quatruple dropped Experience + @SubscribeEvent + public void onXpDrop(LivingExperienceDropEvent event) { + 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)); + } + } +} diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitFracture.java b/src/main/java/com/sosnitzka/taiga/traits/TraitFracture.java new file mode 100644 index 0000000..9f377ba --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitFracture.java @@ -0,0 +1,66 @@ +package com.sosnitzka.taiga.traits; + +import net.minecraft.block.state.IBlockState; +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.math.RayTraceResult; +import net.minecraft.util.text.TextFormatting; +import net.minecraft.world.World; +import slimeknights.tconstruct.library.tools.ToolCore; +import slimeknights.tconstruct.library.traits.AbstractTrait; +import slimeknights.tconstruct.library.utils.ToolHelper; + +public class TraitFracture extends AbstractTrait { + + public TraitFracture() { + super("fracture", TextFormatting.DARK_GRAY); + } + + @Override + public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) { + float f = random.nextFloat(); + float b = 0.99F * calcBonus(tool); + if (!world.isRemote && tool.canHarvestBlock(state) && f <= b) { + RayTraceResult mop = ((ToolCore) tool.getItem()).rayTrace(world, (EntityPlayer) player, false); + if (mop == null) return; + for (int i = random.nextInt(9) + 1; i >= 0; i--) { + switch (mop.sideHit) { + case UP: + BlockPos next1 = new BlockPos(pos.getX(), pos.getY() - i, pos.getZ()); + if (tool.canHarvestBlock(world.getBlockState(next1))) world.destroyBlock(next1, true); + break; + case DOWN: + BlockPos next2 = new BlockPos(pos.getX(), pos.getY() + i, pos.getZ()); + if (tool.canHarvestBlock(world.getBlockState(next2))) world.destroyBlock(next2, true); + break; + case WEST: + BlockPos next3 = new BlockPos(pos.getX() + i, pos.getY(), pos.getZ()); + if (tool.canHarvestBlock(world.getBlockState(next3))) world.destroyBlock(next3, true); + break; + case EAST: + BlockPos next4 = new BlockPos(pos.getX() - i, pos.getY(), pos.getZ()); + if (tool.canHarvestBlock(world.getBlockState(next4))) world.destroyBlock(next4, true); + break; + case SOUTH: + BlockPos next5 = new BlockPos(pos.getX(), pos.getY(), pos.getZ() - i); + if (tool.canHarvestBlock(world.getBlockState(next5))) world.destroyBlock(next5, true); + break; + case NORTH: + BlockPos next6 = new BlockPos(pos.getX(), pos.getY() - i, pos.getZ() + i); + if (tool.canHarvestBlock(world.getBlockState(next6))) world.destroyBlock(next6, true); + break; + } + } + if (random.nextBoolean()) ToolHelper.damageTool(tool, random.nextInt(5), player); + } + + } + + private float calcBonus(ItemStack tool) { + int durability = ToolHelper.getCurrentDurability(tool); + int maxDurability = ToolHelper.getMaxDurability(tool); + return (0.4f) / (maxDurability - 50) * (durability) + 0.55f; + } +} diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitFragile.java b/src/main/java/com/sosnitzka/taiga/traits/TraitFragile.java new file mode 100644 index 0000000..ed594b5 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitFragile.java @@ -0,0 +1,87 @@ +package com.sosnitzka.taiga.traits; + +import net.minecraft.block.Block; +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 TraitFragile extends AbstractTrait { + + public TraitFragile() { + super("fragile", TextFormatting.DARK_GRAY); + } + + @Override + public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) { + if (random.nextBoolean()) { + float f = random.nextFloat(); + 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 { + float f = random.nextFloat(); + float b = 0.99F * calcBonus(tool); + if (!world.isRemote && state.getBlock() == Blocks.STONE && f <= b) { + double x, y, z, sx, sy, sz; + sx = x = pos.getX(); + sy = y = pos.getY(); + sz = z = pos.getZ(); + for (int i = random.nextInt(50) + 50; i > 0; i--) { + int r = random.nextInt(3); + int d = random.nextBoolean() ? 1 : -1; + if (r == 0) x += d; + if (r == 1) y += d; + if (r == 2) z += d; + BlockPos nextBlock = new BlockPos(x, y, z); + int tn = (int) world.getWorldTime() + 5; + if (world.getBlockState(nextBlock) == world.getBlockState(pos)) { + Block block = Blocks.STONE; + int ib = random.nextInt(3); + switch (ib) { + case 0: + block = Blocks.COBBLESTONE; + break; + case 1: + block = Blocks.MOSSY_COBBLESTONE; + break; + case 2: + block = Blocks.GRAVEL; + break; + } + f = random.nextFloat(); + if (f < 0.85) { + world.setBlockState(nextBlock, block.getDefaultState()); + } else if (f > 95) { + world.destroyBlock(nextBlock, true); + } + sx = x = nextBlock.getX(); + sy = y = nextBlock.getY(); + sz = z = nextBlock.getZ(); + if (random.nextBoolean()) ToolHelper.damageTool(tool, 1, player); + } else { + x = sx; + y = sy; + z = sz; + } + + } + + } + + } + } + + + private float calcBonus(ItemStack tool) { + int durability = ToolHelper.getCurrentDurability(tool); + int maxDurability = ToolHelper.getMaxDurability(tool); + return (0.4f) / (maxDurability - 50) * (durability) + 0.55f; + } +} diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitGarishly.java b/src/main/java/com/sosnitzka/taiga/traits/TraitGarishly.java new file mode 100644 index 0000000..45beff7 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitGarishly.java @@ -0,0 +1,80 @@ +package com.sosnitzka.taiga.traits; + +import net.minecraft.block.material.Material; +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.Item; +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.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; + +import static com.sosnitzka.taiga.Items.*; + +public class TraitGarishly extends AbstractTrait { + + public TraitGarishly() { + super("garishly", TextFormatting.YELLOW); + MinecraftForge.EVENT_BUS.register(this); + } + + @SubscribeEvent + public void onMobDrops(LivingDropsEvent event) { + World w = event.getEntity().getEntityWorld(); + if (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)) { + + int r = random.nextInt(5); + ItemStack i = null; + switch (r) { + case 0: + i = new ItemStack(Items.BLAZE_POWDER, random.nextInt(3)); + break; + case 1: + 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; + } + + event.getDrops().add(0, new EntityItem(w, event.getEntity().posX, event.getEntity().posY, event.getEntity().posZ, i)); + } + } + } + + @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) { + ItemStack stack = new ItemStack(Item.getItemFromBlock(event.getWorld().getBlockState(event.getPos()).getBlock()), random.nextInt(5)); + event.getDrops().add(0, stack); + ToolHelper.damageTool(tool, random.nextInt(6) + 1, event.getHarvester()); + } + } + + +} + + + diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitGlimmer.java b/src/main/java/com/sosnitzka/taiga/traits/TraitGlimmer.java new file mode 100644 index 0000000..2c10852 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitGlimmer.java @@ -0,0 +1,48 @@ +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.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; + +public class TraitGlimmer extends AbstractTrait { + + + public TraitGlimmer() { + super("glimmer", TextFormatting.DARK_GRAY); + } + + @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)); + } + } + + } + + @Override + public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) { + if (random.nextFloat() <= 0.08) { + 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) { + player.addPotionEffect(new PotionEffect(MobEffects.NIGHT_VISION, random.nextInt(600) + 300)); + } + } +} diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitHaunted.java b/src/main/java/com/sosnitzka/taiga/traits/TraitHaunted.java new file mode 100644 index 0000000..4058bc7 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitHaunted.java @@ -0,0 +1,44 @@ +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; + +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)); + + } + } + + public boolean isNight(int time) { + if (time > 12500) { + return true; + } else { + return false; + } + } +} diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitHeroic.java b/src/main/java/com/sosnitzka/taiga/traits/TraitHeroic.java new file mode 100644 index 0000000..c54b9a9 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitHeroic.java @@ -0,0 +1,24 @@ +package com.sosnitzka.taiga.traits; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; +import net.minecraft.util.text.TextFormatting; +import slimeknights.tconstruct.library.traits.AbstractTrait; +import slimeknights.tconstruct.library.utils.ToolHelper; + +public class TraitHeroic extends AbstractTrait { + + public TraitHeroic() { + super("heroic", TextFormatting.DARK_GRAY); + } + + @Override + public float damage(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, float newDamage, boolean isCritical) { + int durability = ToolHelper.getCurrentDurability(tool); + int durabilitymax = ToolHelper.getMaxDurability(tool); + float calc = (float) (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); + } +} diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitHollow.java b/src/main/java/com/sosnitzka/taiga/traits/TraitHollow.java new file mode 100644 index 0000000..960afa0 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitHollow.java @@ -0,0 +1,56 @@ +package com.sosnitzka.taiga.traits; + +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.monster.EntityMob; +import net.minecraft.entity.player.EntityPlayer; +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.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; + +public class TraitHollow extends AbstractTrait { + + public TraitHollow() { + super("hollow", TextFormatting.DARK_GRAY); + MinecraftForge.EVENT_BUS.register(this); + } + + + @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))) { + ((EntityLiving) target).setNoAI(true); + target.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F); + if (target.getMaxHealth() < 200) { + target.setHealth(target.getMaxHealth() * (1.8f - random.nextFloat() * 0.4f)); + } + } + } + + @SubscribeEvent + public void onMobDrops(LivingDropsEvent event) { + World w = event.getEntity().getEntityWorld(); + if (event.getSource().getEntity() instanceof EntityPlayer) { + EntityPlayer player = (EntityPlayer) event.getSource().getEntity(); + if (!w.isRemote && random.nextFloat() <= 0.9 && event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) { + event.getDrops().clear(); + } + } + } + + public boolean isNight(int time) { + if (time > 12500) { + return true; + } else { + return false; + } + } +} diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitInstable.java b/src/main/java/com/sosnitzka/taiga/traits/TraitInstable.java new file mode 100644 index 0000000..d188c86 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitInstable.java @@ -0,0 +1,70 @@ +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; + + +public class TraitInstable extends AbstractTrait { + + + public TraitInstable() { + super("instable", TextFormatting.DARK_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.03) { + if (!world.isRemote) { + if (random.nextBoolean()) { + 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), null); + } + } + + @Override + public void afterHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean wasCritical, boolean wasHit) { + BlockPos pos = target.getPosition(); + if (random.nextFloat() <= 0.04) { + if (!player.getEntityWorld().isRemote) { + if (random.nextBoolean()) { + 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), null); + } + } + + @SubscribeEvent + public void onMobDrops(LivingDropsEvent event) { + World w = event.getEntity().getEntityWorld(); + if (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)) { + ItemStack i = new ItemStack(Items.GUNPOWDER, random.nextInt(4)); + 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() * 35, random.nextBoolean(), true); + } +} diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitMelting.java b/src/main/java/com/sosnitzka/taiga/traits/TraitMelting.java new file mode 100644 index 0000000..783f815 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitMelting.java @@ -0,0 +1,32 @@ +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.event.world.BlockEvent; +import slimeknights.tconstruct.library.traits.AbstractTrait; + +/** + * Created by Robert on 03.06.2016. + */ +public class TraitMelting extends AbstractTrait { + + public TraitMelting() { + super("melting", TextFormatting.YELLOW); + } + + @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()); + } + } + + +} + + + diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitNatureBound.java b/src/main/java/com/sosnitzka/taiga/traits/TraitNatureBound.java new file mode 100644 index 0000000..8f406f3 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitNatureBound.java @@ -0,0 +1,56 @@ +package com.sosnitzka.taiga.traits; + +import net.minecraft.block.Block; +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.DamageSource; +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.ToolHelper; + + +public class TraitNatureBound extends AbstractTrait { + public static DamageSource splinter = new DamageSource("splinter").setDamageBypassesArmor(); + private static int chance = 10; + + public TraitNatureBound() { + super("naturebound", TextFormatting.GREEN); + MinecraftForge.EVENT_BUS.register(this); + } + + @Override + public int onToolHeal(ItemStack tool, int amount, int newAmount, EntityLivingBase entity) { + // 5% less durability repaired! + return newAmount - amount * 5 / 100; + } + + @Override + public void onUpdate(ItemStack tool, World world, Entity entity, int itemSlot, boolean isSelected) { + // *20 because 20 ticks in a second + if (!world.isRemote && entity instanceof EntityLivingBase && random.nextInt(20 * chance) == 0) { + ToolHelper.healTool(tool, 1, (EntityLivingBase) entity); + } + + } + + @SubscribeEvent + public void onBlockBreak(BlockEvent.BreakEvent e) { + Block b = e.getWorld().getBlockState(e.getPos()).getBlock(); + if (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); + } + } + + + + + +} diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitOrganizing.java b/src/main/java/com/sosnitzka/taiga/traits/TraitOrganizing.java new file mode 100644 index 0000000..f03d4c6 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitOrganizing.java @@ -0,0 +1,29 @@ +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.1f; + + public TraitOrganizing() { + super("organizing", TextFormatting.GREEN); + } + + @Override + public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) { + if (!world.isRemote && (state.getMaterial() == Material.ROCK) && random.nextFloat() < chance) { + world.setBlockState(pos, Blocks.LOG.getDefaultState()); + ToolHelper.healTool(tool, random.nextInt(5), player); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitPulverizing.java b/src/main/java/com/sosnitzka/taiga/traits/TraitPulverizing.java new file mode 100644 index 0000000..174883a --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitPulverizing.java @@ -0,0 +1,39 @@ +package com.sosnitzka.taiga.traits; + +import net.minecraft.item.ItemStack; +import net.minecraft.util.text.TextFormatting; +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; + +public class TraitPulverizing extends AbstractTrait { + + public TraitPulverizing() { + super("pulverizing", TextFormatting.DARK_GRAY); + } + + @Override + public void miningSpeed(ItemStack tool, PlayerEvent.BreakSpeed event) { + if (ToolHelper.isToolEffective2(tool, event.getState())) { + 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); + } + + + @Override + public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) { + if (random.nextFloat() < 0.9) { + event.getDrops().clear(); + } + } + +} diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitRandomize.java b/src/main/java/com/sosnitzka/taiga/traits/TraitRandomize.java new file mode 100644 index 0000000..4991709 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitRandomize.java @@ -0,0 +1,175 @@ +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((float) (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"); + ((EntityLiving) e).setHealth(((EntityLiving) e).getHealth() * (random.nextInt(5) + 1)); + w.spawnEntityInWorld(e); + target.setDead(); + } + } + } + + @Override + public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) { + float r = random.nextFloat(); + if (r > 0.95f) event.getDrops().clear(); + if (event.getDrops() != null) { + if (r < 0.4f && (event.getDrops().get(0).getItem() == Item.getItemFromBlock(Blocks.IRON_ORE) || event.getDrops().get(0).getItem() == Item.getItemFromBlock(Blocks.GOLD_ORE))) { + ItemStack change = new ItemStack(Item.getItemFromBlock(Blocks.IRON_ORE)); + int i = random.nextInt(12); + switch (i) { + case 0: + change = new ItemStack(Item.getItemFromBlock(Blocks.GOLD_ORE)); + break; + case 1: + change = new ItemStack(Item.getItemFromBlock(Blocks.REDSTONE_ORE)); + break; + case 2: + change = new ItemStack(Item.getItemFromBlock(Blocks.LAPIS_ORE)); + break; + case 3: + change = new ItemStack(Item.getItemFromBlock(Blocks.DIAMOND_ORE)); + break; + case 4: + change = new ItemStack(Item.getItemFromBlock(Blocks.QUARTZ_ORE)); + break; + case 5: + change = new ItemStack(oreCobalt.getItem()); + break; + case 6: + change = new ItemStack(oreArdite.getItem()); + break; + case 7: + change = new ItemStack(titaniteOre); + break; + case 8: + change = new ItemStack(bismuthOre); + break; + case 9: + change = new ItemStack(tiberiumOre); + break; + case 10: + change = new ItemStack(eterniteOre); + break; + case 11: + change = new ItemStack(Item.getItemFromBlock(Blocks.IRON_ORE)); + break; + } + event.getDrops().set(0, change); + + + } + } + } +} diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitResonance.java b/src/main/java/com/sosnitzka/taiga/traits/TraitResonance.java new file mode 100644 index 0000000..5a3450d --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitResonance.java @@ -0,0 +1,26 @@ +package com.sosnitzka.taiga.traits; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; +import net.minecraft.util.text.TextFormatting; +import slimeknights.tconstruct.library.traits.AbstractTrait; + +public class TraitResonance extends AbstractTrait { + + + 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); + } + } + + +} + + + diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitReviving.java b/src/main/java/com/sosnitzka/taiga/traits/TraitReviving.java new file mode 100644 index 0000000..92ac23b --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitReviving.java @@ -0,0 +1,72 @@ +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.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; + + +/** + * Created by Robert on 03.06.2016. + */ +public class TraitReviving extends AbstractTrait { + + public TraitReviving() { + super("reviving", TextFormatting.DARK_PURPLE); + MinecraftForge.EVENT_BUS.register(this); + } + + @SubscribeEvent + public void onEntityKill(LivingDeathEvent e) { + BlockPos pos = e.getEntity().getPosition(); + 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)) { + String name = EntityList.getEntityString(e.getEntity()); + Entity ent = EntityList.createEntityByName(name, w); + ent.setPosition(pos.getX(), pos.getY(), pos.getZ()); + w.spawnEntityInWorld(ent); + } + } + } + } + + @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); + } + } + + + public boolean isNight(int time) { + if (time > 12500) { + return true; + } else { + return false; + } + } +} diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitSlaughtering.java b/src/main/java/com/sosnitzka/taiga/traits/TraitSlaughtering.java new file mode 100644 index 0000000..99f15e0 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitSlaughtering.java @@ -0,0 +1,39 @@ +package com.sosnitzka.taiga.traits; + +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +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.fml.common.eventhandler.SubscribeEvent; +import slimeknights.tconstruct.library.traits.AbstractTrait; +import slimeknights.tconstruct.library.utils.TagUtil; +import slimeknights.tconstruct.library.utils.TinkerUtil; + +public class TraitSlaughtering extends AbstractTrait { + + public TraitSlaughtering() { + super("slaughtering", TextFormatting.DARK_RED); + MinecraftForge.EVENT_BUS.register(this); + } + + + @SubscribeEvent + public void onMobDrops(LivingDropsEvent event) { + World w = event.getEntity().getEntityWorld(); + if (event.getSource().getEntity() instanceof EntityPlayer) { + EntityPlayer player = (EntityPlayer) event.getSource().getEntity(); + if (!w.isRemote && event.getEntity() instanceof EntityLiving && !(event.getEntity() instanceof EntityPlayer) && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) { + Item i = event.getDrops().get(random.nextInt(event.getDrops().size())).getEntityItem().getItem(); + if (i != null) { + event.getDrops().add(new EntityItem(event.getEntity().getEntityWorld(), event.getEntity().posX, event.getEntity().posY, event.getEntity().posZ, new ItemStack(i, random.nextInt(4) + 1))); + } + } + } + } + +} diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitSofty.java b/src/main/java/com/sosnitzka/taiga/traits/TraitSofty.java new file mode 100644 index 0000000..4771e72 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitSofty.java @@ -0,0 +1,33 @@ +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 slimeknights.tconstruct.library.traits.AbstractTrait; +import slimeknights.tconstruct.library.utils.ToolHelper; + +public class TraitSofty extends AbstractTrait { + private static final float chance = 0.2f; + + public TraitSofty() { + super("softy", TextFormatting.AQUA); + MinecraftForge.EVENT_BUS.register(this); + } + + @Override + public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) { + if (!world.isRemote && state.getMaterial() != Material.ROCK && state.getMaterial() != Material.GROUND && random.nextFloat() < chance) { + ToolHelper.healTool(tool, random.nextInt(10), player); + } + } + + +} + + + diff --git a/src/main/java/com/sosnitzka/taiga/traits/TraitUncertain.java b/src/main/java/com/sosnitzka/taiga/traits/TraitUncertain.java new file mode 100644 index 0000000..8bd8f7b --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/traits/TraitUncertain.java @@ -0,0 +1,78 @@ +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.tiberiumShardStable; + + +public class TraitUncertain extends AbstractTrait { + + + public TraitUncertain() { + super("uncertain", 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 (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)) { + 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(tiberiumShardStable, random.nextInt(4)); + break; + case 2: + i = new ItemStack(tiberiumShardStable, random.nextInt(4)); + 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() * 5, random.nextBoolean(), true); + } +} diff --git a/src/main/java/com/sosnitzka/taiga/util/EntityAIPermanentPanic.java b/src/main/java/com/sosnitzka/taiga/util/EntityAIPermanentPanic.java new file mode 100644 index 0000000..4b4e96b --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/util/EntityAIPermanentPanic.java @@ -0,0 +1,99 @@ +package com.sosnitzka.taiga.util; + +import net.minecraft.block.Block; +import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityCreature; +import net.minecraft.entity.ai.EntityAIBase; +import net.minecraft.entity.ai.RandomPositionGenerator; +import net.minecraft.init.Blocks; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.World; + +public class EntityAIPermanentPanic extends EntityAIBase { + private EntityCreature theEntityCreature; + protected double speed; + private double randPosX; + private double randPosY; + private double randPosZ; + + public EntityAIPermanentPanic(EntityCreature creature, double speedIn) { + this.theEntityCreature = creature; + this.speed = speedIn; + } + + /** + * Returns whether the EntityAIBase should begin execution. + */ + public boolean shouldExecute() { + + Vec3d vec3d = RandomPositionGenerator.findRandomTarget(this.theEntityCreature, 5, 4); + + if (vec3d == null) { + return false; + } else { + this.randPosX = vec3d.xCoord; + this.randPosY = vec3d.yCoord; + this.randPosZ = vec3d.zCoord; + + if (this.theEntityCreature.isBurning()) { + BlockPos blockpos = this.getRandPos(this.theEntityCreature.worldObj, this.theEntityCreature, 5, 4); + + if (blockpos != null) { + this.randPosX = (double) blockpos.getX(); + this.randPosY = (double) blockpos.getY(); + this.randPosZ = (double) blockpos.getZ(); + } + } + + return true; + } + + } + + /** + * Execute a one shot task or start executing a continuous task + */ + public void startExecuting() { + this.theEntityCreature.getNavigator().tryMoveToXYZ(this.randPosX, this.randPosY, this.randPosZ, this.speed); + } + + /** + * Returns whether an in-progress EntityAIBase should continue executing + */ + public boolean continueExecuting() { + return !this.theEntityCreature.getNavigator().noPath(); + } + + private BlockPos getRandPos(World worldIn, Entity entityIn, int horizontalRange, int verticalRange) { + BlockPos blockpos = new BlockPos(entityIn); + BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos(); + int i = blockpos.getX(); + int j = blockpos.getY(); + int k = blockpos.getZ(); + float f = (float) (horizontalRange * horizontalRange * verticalRange * 2); + BlockPos blockpos1 = null; + + for (int l = i - horizontalRange; l <= i + horizontalRange; ++l) { + for (int i1 = j - verticalRange; i1 <= j + verticalRange; ++i1) { + for (int j1 = k - horizontalRange; j1 <= k + horizontalRange; ++j1) { + blockpos$mutableblockpos.setPos(l, i1, j1); + IBlockState iblockstate = worldIn.getBlockState(blockpos$mutableblockpos); + Block block = iblockstate.getBlock(); + + if (block == Blocks.WATER || block == Blocks.FLOWING_WATER) { + float f1 = (float) ((l - i) * (l - i) + (i1 - j) * (i1 - j) + (j1 - k) * (j1 - k)); + + if (f1 < f) { + f = f1; + blockpos1 = new BlockPos(blockpos$mutableblockpos); + } + } + } + } + } + + return blockpos1; + } +} \ No newline at end of file diff --git a/src/main/java/com/sosnitzka/taiga/util/FuelHandler.java b/src/main/java/com/sosnitzka/taiga/util/FuelHandler.java new file mode 100644 index 0000000..ee655e5 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/util/FuelHandler.java @@ -0,0 +1,27 @@ +package com.sosnitzka.taiga.util; + +import net.minecraft.item.ItemStack; +import net.minecraftforge.fml.common.IFuelHandler; +import org.apache.commons.lang3.RandomUtils; + +import static com.sosnitzka.taiga.Items.fuel_brick; +import static com.sosnitzka.taiga.Items.glimmercoal; +import static com.sosnitzka.taiga.Items.lignite; + +public class FuelHandler implements IFuelHandler { + + @Override + public int getBurnTime(ItemStack fuel) { + if (fuel.getItem().equals(lignite)) { + return 200 * 2; + } + if (fuel.getItem().equals(fuel_brick)) { + return RandomUtils.nextInt(1, RandomUtils.nextInt(1, RandomUtils.nextInt(1, 32))) * 100; + } + if (fuel.getItem().equals(glimmercoal)) { + return RandomUtils.nextInt(1, RandomUtils.nextInt(1, RandomUtils.nextInt(16, 64))) * 200; + } + return 0; + } + +} diff --git a/src/main/java/com/sosnitzka/taiga/util/Generator.java b/src/main/java/com/sosnitzka/taiga/util/Generator.java new file mode 100644 index 0000000..e7aed53 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/util/Generator.java @@ -0,0 +1,41 @@ +package com.sosnitzka.taiga.util; + +import com.sosnitzka.taiga.world.ZWorldGenMinable; +import net.minecraft.block.properties.IProperty; +import net.minecraft.block.state.IBlockState; +import net.minecraft.init.Blocks; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +import java.util.Random; + +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 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) { + 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)); + } + } +} diff --git a/src/main/java/com/sosnitzka/taiga/util/StateMatcher.java b/src/main/java/com/sosnitzka/taiga/util/StateMatcher.java new file mode 100644 index 0000000..a5e9c17 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/util/StateMatcher.java @@ -0,0 +1,84 @@ +package com.sosnitzka.taiga.util; + +import com.google.common.base.Predicate; +import net.minecraft.block.properties.IProperty; +import net.minecraft.block.state.IBlockState; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + + +public class StateMatcher implements Predicate { + private final IBlockState state; + private final IProperty property; + private final Comparable value; + + private StateMatcher(IBlockState state, IProperty property, Comparable value) { + this.state = state; + this.property = property; + this.value = value; + } + + public static StateMatcher forState(IBlockState state, IProperty property, Comparable value) { + return new StateMatcher(state, property, value); + } + + public boolean apply(IBlockState state, BlockPos pos, World world) { + if (state != null) { + if (property != null && value != null) { + if (state.getBlock() == this.state.getBlock()) + if (checkLayerForBlocks(3, 3, -1, world, pos) || + checkLayerForBlocks(3, 3, 0, world, pos) || + checkLayerForBlocks(3, 3, 1, world, pos)) + return true; + + } else + return state.getBlock() == this.state.getBlock(); + } + return false; + } + + @Override + public boolean apply(IBlockState input) { + if (state != null) { + if (property != null && value != null) { + return state.getBlock() == this.state.getBlock() && state.getValue(property) == value; + } else + return state.getBlock() == this.state.getBlock(); + } + return false; + } + + private boolean checkLayerForBlocks(int X, int Z, int Y, World world, BlockPos origin) { + int x = 0, z = 0, dx = 0, dz = -1; + int t = Math.max(X, Z); + int maxI = t * t; + + for (int i = 0; i < maxI; i++) { + if ((-X / 2 <= x) && (x <= X / 2) && (-Z / 2 <= z) && (z <= Z / 2)) { + BlockPos blockPos = new BlockPos(origin.getX() + x, origin.getY() + Y, origin.getZ() + z); + if (blockPos == origin) + continue; + + if (i % 2 == 0) + continue; + + 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; + } + } + + if ((x == z) || ((x < 0) && (x == -z)) || ((x > 0) && (x == 1 - z))) { + t = dx; + dx = -dz; + dz = t; + } + x += dx; + z += dz; + } + + return false; + } +} diff --git a/src/main/java/com/sosnitzka/taiga/util/Utils.java b/src/main/java/com/sosnitzka/taiga/util/Utils.java new file mode 100644 index 0000000..184b935 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/util/Utils.java @@ -0,0 +1,73 @@ +package com.sosnitzka.taiga.util; + + +import net.minecraft.block.Block; +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.fml.common.registry.GameRegistry; + +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 void registerBlockWithItem(Block block) { + GameRegistry.register(block); + GameRegistry.register(new ItemBlock(block).setRegistryName(block.getRegistryName())); + } + + public static void registerFluid(Fluid fluid) { + FluidRegistry.registerFluid(fluid); + 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); + } +} diff --git a/src/main/java/com/sosnitzka/taiga/world/ZWorldGen.java b/src/main/java/com/sosnitzka/taiga/world/ZWorldGen.java new file mode 100644 index 0000000..87d1b77 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/world/ZWorldGen.java @@ -0,0 +1,67 @@ +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.*; + +public class ZWorldGen implements IWorldGenerator { + private void nether(Random random, int x, int z, World world) { + Generator.generateNetherOre(adamantiteOre.getDefaultState(), random, x, z, world, 25, 1, 32, 2, 5); + Generator.generateNetherOre(tiberiumOre.getDefaultState(), random, x, z, world, 60, 1, 128, 2, 7); + Generator.generateNetherOre(palladiumOre.getDefaultState(), random, x, z, world, 21, 32, 64, 2, 5); + Generator.generateOre(prometheumOre.getDefaultState(), random, x, z, world, 21, 48, 64, 2, 4); + } + + private void world(Random random, int x, int z, World world) { + Generator.generateOre(slagironOre.getDefaultState(), random, x, z, world, 40, 8, 96, 5, 16); + Generator.generateOre(slaggoldOre.getDefaultState(), random, x, z, world, 20, 8, 48, 5, 9); + Generator.generateOre(ligniteOre.getDefaultState(), random, x, z, world, 40, 8, 96, 5, 15); + Generator.generateOre(Blocks.IRON_ORE.getDefaultState(), random, x, z, world, 40, 8, 96, 2, 14); + Generator.generateOre(basalt.getDefaultState(), Blocks.LAVA.getDefaultState(), random, x, z, world, 100, 8, 24, 2, 5); + Generator.generateOre(rottenGround.getDefaultState(), Blocks.DIRT.getDefaultState(), random, x, z, world, 25, 50, 70, 2, 15); + + Generator.generateOre(vibraniumOre.getDefaultState(), random, x, z, world, 18, 48, 64, 2, 4); + Generator.generateOre(karmesineOre.getDefaultState(), random, x, z, world, 30, 16, 48, 2, 5); + Generator.generateOre(bismuthOre.getDefaultState(), random, x, z, world, 50, 50, 130, 2, 4); + Generator.generateOre(mythrilOre.getDefaultState(), random, x, z, world, 18, 16, 32, 2, 4); + Generator.generateOre(meteoriteOre.getDefaultState(), random, x, z, world, 12, 0, 32, 2, 10); + Generator.generateOre(mindoriteOre.getDefaultState(), Blocks.STONE.getDefaultState(), BlockStone.VARIANT, BlockStone.EnumType.DIORITE, random, x, z, world, 200, 16, 96, 2, 4); + Generator.generateOre(arcaniteOre.getDefaultState(), Blocks.STONE.getDefaultState(), BlockStone.VARIANT, BlockStone.EnumType.GRANITE, random, x, z, world, 200, 16, 96, 2, 4); + Generator.generateOre(eterniteOre.getDefaultState(), Blocks.STONE.getDefaultState(), BlockStone.VARIANT, BlockStone.EnumType.ANDESITE, random, x, z, world, 200, 16, 96, 2, 4); + } + + private void end(Random random, int x, int z, World world) { + + Generator.generateEndOre(rubiumOre.getDefaultState(), random, x, z, world, 16, 10, 35, 2, 6); + Generator.generateEndOre(ignititeOre.getDefaultState(), random, x, z, world, 16, 20, 45, 2, 6); + Generator.generateEndOre(violiumOre.getDefaultState(), random, x, z, world, 16, 30, 55, 2, 6); + Generator.generateEndOre(titaniteOre.getDefaultState(), random, x, z, world, 16, 40, 65, 2, 6); + } + + + @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; + } + } +} diff --git a/src/main/java/com/sosnitzka/taiga/world/ZWorldGenMinable.java b/src/main/java/com/sosnitzka/taiga/world/ZWorldGenMinable.java new file mode 100644 index 0000000..ef85f17 --- /dev/null +++ b/src/main/java/com/sosnitzka/taiga/world/ZWorldGenMinable.java @@ -0,0 +1,87 @@ +package com.sosnitzka.taiga.world; + +import com.google.common.base.Predicate; +import com.sosnitzka.taiga.util.StateMatcher; +import net.minecraft.block.state.IBlockState; +import net.minecraft.block.state.pattern.BlockMatcher; +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 java.util.Random; + +public class ZWorldGenMinable extends WorldGenMinable { + private final IBlockState oreBlock; + /** + * The number of com.sosnitzka.taiga.blocks to generate. + */ + private final int numberOfBlocks; + private final Predicate predicate; + + public ZWorldGenMinable(IBlockState state, int blockCount) { + this(state, blockCount, BlockMatcher.forBlock(Blocks.STONE)); + } + + public ZWorldGenMinable(IBlockState state, int blockCount, Predicate predicate) { + super(state, blockCount, predicate); + this.oreBlock = state; + this.numberOfBlocks = blockCount; + this.predicate = predicate; + } + + @Override + public boolean generate(World worldIn, Random rand, BlockPos position) { + float f = rand.nextFloat() * (float) Math.PI; + double d0 = (double) ((float) (position.getX() + 8) + MathHelper.sin(f) * (float) this.numberOfBlocks / 8.0F); + double d1 = (double) ((float) (position.getX() + 8) - MathHelper.sin(f) * (float) this.numberOfBlocks / 8.0F); + double d2 = (double) ((float) (position.getZ() + 8) + MathHelper.cos(f) * (float) this.numberOfBlocks / 8.0F); + double d3 = (double) ((float) (position.getZ() + 8) - MathHelper.cos(f) * (float) this.numberOfBlocks / 8.0F); + double d4 = (double) (position.getY() + rand.nextInt(3) - 2); + double d5 = (double) (position.getY() + rand.nextInt(3) - 2); + + for (int i = 0; i < this.numberOfBlocks; ++i) { + float f1 = (float) i / (float) this.numberOfBlocks; + double d6 = d0 + (d1 - d0) * (double) f1; + double d7 = d4 + (d5 - d4) * (double) f1; + double d8 = d2 + (d3 - d2) * (double) f1; + double d9 = rand.nextDouble() * (double) this.numberOfBlocks / 16.0D; + double d10 = (double) (MathHelper.sin((float) Math.PI * f1) + 1.0F) * d9 + 1.0D; + double d11 = (double) (MathHelper.sin((float) Math.PI * f1) + 1.0F) * d9 + 1.0D; + int j = MathHelper.floor_double(d6 - d10 / 2.0D); + int k = MathHelper.floor_double(d7 - d11 / 2.0D); + int l = MathHelper.floor_double(d8 - d10 / 2.0D); + int i1 = MathHelper.floor_double(d6 + d10 / 2.0D); + int j1 = MathHelper.floor_double(d7 + d11 / 2.0D); + int k1 = MathHelper.floor_double(d8 + d10 / 2.0D); + + for (int l1 = j; l1 <= i1; ++l1) { + double d12 = ((double) l1 + 0.5D - d6) / (d10 / 2.0D); + + if (d12 * d12 < 1.0D) { + for (int i2 = k; i2 <= j1; ++i2) { + double d13 = ((double) i2 + 0.5D - d7) / (d11 / 2.0D); + + if (d12 * d12 + d13 * d13 < 1.0D) { + for (int j2 = l; j2 <= k1; ++j2) { + double d14 = ((double) j2 + 0.5D - d8) / (d10 / 2.0D); + + if (d12 * d12 + d13 * d13 + d14 * d14 < 1.0D) { + BlockPos blockpos = new BlockPos(l1, i2, j2); + + IBlockState state = worldIn.getBlockState(blockpos); + if (((StateMatcher) this.predicate).apply(state, blockpos, worldIn)) { + worldIn.setBlockState(blockpos, this.oreBlock, 2); + } + } + } + } + } + } + } + } + + return true; + } +} \ No newline at end of file diff --git a/src/main/java/com/sosnitzka/ztic_addon/Alloys.java b/src/main/java/com/sosnitzka/ztic_addon/Alloys.java deleted file mode 100644 index c876f2f..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/Alloys.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.sosnitzka.ztic_addon; - - -import net.minecraftforge.fluids.FluidRegistry; - -import static com.sosnitzka.ztic_addon.Fluids.*; -import static com.sosnitzka.ztic_addon.util.Utils.registerTinkerAlloys; - -public class Alloys { - - 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); - - registerTinkerAlloys(imperomiteFluid, 2, titaniteFluid, 3, palladiumFluid, 3, FluidRegistry.LAVA, 3); - registerTinkerAlloys(dyoniteFluid, 1, meteoriteFluid, 3, tiberiumFluid, 2, spectrumFluid, 3); - registerTinkerAlloys(solariumFluid, 2, vibraniumFluid, 4, ignititeFluid, 4, nitroFluid, 3); - registerTinkerAlloys(fractoryteFluid, 2, adamantiteFluid, 4, rubiumFluid, 2, FluidRegistry.LAVA, 3); - - registerTinkerAlloys(aegisaltFluid, 1, eterniteFluid, 3, mindoriteFluid, 3, glimmercoalFluid, 3); - registerTinkerAlloys(noctunyxFluid, 1, mythrilFluid, 4, titaniteFluid, 2, spectrumFluid, 3); - registerTinkerAlloys(nucleumFluid, 1, palladiumFluid, 3, violiumFluid, 3, radiant_enderium, 3); - registerTinkerAlloys(seismodiumFluid, 2, ignititeFluid, 5, meteoriteFluid, 3, glimming_enderium, 3); - - registerTinkerAlloys(lumixylFluid, 1, bismuthFluid, 3, prometheumFluid, 2, glimming_enderium, 6); - registerTinkerAlloys(terramiteFluid, 2, violiumFluid, 4, eterniteFluid, 2, energy_enderium, 3); - registerTinkerAlloys(cryptogenFluid, 1, mindoriteFluid, 4, arcaniteFluid, 2, anthraciteFluid, 3); - registerTinkerAlloys(proxideumFluid, 1, karmesineFluid, 3, mythrilFluid, 2, glimmercoalFluid, 3); - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/Blocks.java b/src/main/java/com/sosnitzka/ztic_addon/Blocks.java deleted file mode 100644 index e11703d..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/Blocks.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.sosnitzka.ztic_addon; - -import com.google.common.base.Joiner; -import com.sosnitzka.ztic_addon.blocks.BlockLignite; -import com.sosnitzka.ztic_addon.blocks.BlockTiberium; -import com.sosnitzka.ztic_addon.generic.BasicBlock; -import com.sosnitzka.ztic_addon.generic.BasicBlockGround; -import com.sosnitzka.ztic_addon.util.Utils; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraftforge.oredict.OreDictionary; -import org.apache.commons.lang3.StringUtils; - -import java.lang.reflect.Field; -import java.util.Arrays; - -import static com.sosnitzka.ztic_addon.MaterialTraits.*; -import static com.sosnitzka.ztic_addon.util.Utils.*; -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(); - public static Block slagironOre = new BasicBlock("slagiron_ore", Material.ROCK, 3.0f, 5.0f, IRON, PREFIX_NUGGET); - public static Block slaggoldOre = new BasicBlock("slaggold_ore", Material.ROCK, 3.0f, 5.0f, IRON, PREFIX_NUGGET); - - // Ores - // Group: Solide - public static Block titaniteOre = new BasicBlock("titanite_ore", Material.ROCK, 55.0f, 400.0f, TITANITE, PREFIX_ORE); - public static Block meteoriteOre = new BasicBlock("meteorite_ore", Material.ROCK, 60.0f, 500.0f, METEORITE, PREFIX_ORE); - public static Block vibraniumOre = new BasicBlock("vibranium_ore", Material.ROCK, 70.0f, 800.0f, VIBRANIUM, PREFIX_ORE); - public static Block adamantiteOre = new BasicBlock("adamantite_ore", Material.ROCK, 80.0f, 1000.0f, ADAMANTITE, PREFIX_ORE); - // Group: Arcane - public static Block prometheumOre = new BasicBlock("prometheum_ore", Material.ROCK, 35.0f, 35.0f, COBALT, 0.25f, PREFIX_ORE); - public static Block rubiumOre = new BasicBlock("rubium_ore", Material.ROCK, 13.0f, 15.0f, TITANITE, PREFIX_ORE); - public static Block tiberiumOre = new BlockTiberium(); - public static Block arcaniteOre = new BasicBlock("arcanite_ore", Material.ROCK, 23.0f, 25.0f, METEORITE, PREFIX_ORE); - // Group: Etheri - public static Block eterniteOre = new BasicBlock("eternite_ore", Material.ROCK, 24.0f, 25.0f, COBALT, PREFIX_ORE); - public static Block mythrilOre = new BasicBlock("mythril_ore", Material.ROCK, 25.0f, 25.0f, TITANITE, PREFIX_ORE); - public static Block palladiumOre = new BasicBlock("palladium_ore", Material.ROCK, 25.0f, 25.0f, METEORITE, PREFIX_ORE); - public static Block ignititeOre = new BasicBlock("ignitite_ore", Material.ROCK, 23.0f, 25.0f, VIBRANIUM, PREFIX_ORE); - // Group: Ratio - public static Block violiumOre = new BasicBlock("violium_ore", Material.ROCK, 13.0f, 13.0f, COBALT, PREFIX_ORE); - public static Block bismuthOre = new BasicBlock("bismuth_ore", Material.ROCK, 8.0f, 8.0f, OBSIDIAN, PREFIX_ORE); - public static Block mindoriteOre = new BasicBlock("mindorite_ore", Material.ROCK, 12.0f, 12.0f, TITANITE, PREFIX_ORE); - public static Block karmesineOre = new BasicBlock("karmesine_ore", Material.ROCK, 13.0f, 15.0f, METEORITE, PREFIX_ORE); - - // Blocks - // Group: Solide - public static Block titaniteBlock = new BasicBlock("titanite_block", Material.ROCK, 55.0f, 400.0f, 5, PREFIX_BLOCK); - public static Block meteoriteBlock = new BasicBlock("meteorite_block", Material.ROCK, 60.0f, 500.0f, 6, PREFIX_BLOCK); - public static Block vibraniumBlock = new BasicBlock("vibranium_block", Material.ROCK, 70.0f, 800.0f, 7, PREFIX_BLOCK); - public static Block adamantiteBlock = new BasicBlock("adamantite_block", Material.ROCK, 80.0f, 1000.0f, 8, PREFIX_BLOCK); - // Group: Arcane - public static Block prometheumBlock = new BasicBlock("prometheum_block", Material.ROCK, 35.0f, 35.0f, 4, 0.25f, PREFIX_BLOCK); - public static Block rubiumBlock = new BasicBlock("rubium_block", Material.ROCK, 13.0f, 15.0f, 5, PREFIX_BLOCK); - public static Block tiberiumBlock = new BasicBlock("tiberium_block", Material.ROCK, 30.0f, 30.0f, 6, 1f, PREFIX_BLOCK); - public static Block arcaniteBlock = new BasicBlock("arcanite_block", Material.ROCK, 23.0f, 25.0f, 7, PREFIX_BLOCK); - // Group: Etheri - public static Block eterniteBlock = new BasicBlock("eternite_block", Material.ROCK, 24.0f, 25.0f, 4, PREFIX_BLOCK); - public static Block mythrilBlock = new BasicBlock("mythril_block", Material.ROCK, 25.0f, 25.0f, 5, PREFIX_BLOCK); - public static Block palladiumBlock = new BasicBlock("palladium_block", Material.ROCK, 25.0f, 25.0f, 6, PREFIX_BLOCK); - public static Block ignititeBlock = new BasicBlock("ignitite_block", Material.ROCK, 23.0f, 25.0f, 7, PREFIX_BLOCK); - // Group: Ratio - public static Block violiumBlock = new BasicBlock("violium_block", Material.ROCK, 13.0f, 13.0f, 4, PREFIX_BLOCK); - public static Block bismuthBlock = new BasicBlock("bismuth_block", Material.ROCK, 8.0f, 8.0f, 5, PREFIX_BLOCK); - public static Block mindoriteBlock = new BasicBlock("mindorite_block", Material.ROCK, 12.0f, 12.0f, 2, PREFIX_BLOCK); - public static Block karmesineBlock = new BasicBlock("karmesine_block", Material.ROCK, 13.0f, 15.0f, 3, PREFIX_BLOCK); - - - public static Block imperomiteBlock = new BasicBlock("imperomite_block", Material.ROCK, 24.0f, 25.0f, 5, PREFIX_BLOCK); - public static Block fractoryteBlock = new BasicBlock("fractoryte_block", Material.ROCK, 8.0f, 8.0f, 8, PREFIX_BLOCK); - public static Block noctunyxBlock = new BasicBlock("noctunyx_block", Material.ROCK, 60.0f, 500.0f, 6, PREFIX_BLOCK); - public static Block nitroniteBlock = new BasicBlock("nitronite_block", Material.ROCK, 13.0f, 15.0f, 7, PREFIX_BLOCK); - public static Block cryptogenBlock = new BasicBlock("cryptogen_block", Material.ROCK, 23.0f, 25.0f, 6, PREFIX_BLOCK); - public static Block seismodiumBlock = new BasicBlock("seismodium_block", Material.ROCK, 30.0f, 30.0f, 7, 1f, PREFIX_BLOCK); - public static Block aegisaltBlock = new BasicBlock("aegisalt_block", Material.ROCK, 13.0f, 13.0f, 5, PREFIX_BLOCK); - public static Block ultraniteBlock = new BasicBlock("ultranite_block", Material.ROCK, 13.0f, 15.0f, 8, PREFIX_BLOCK); - public static Block bysmuidBlock = new BasicBlock("bysmuid_block", Material.ROCK, 35.0f, 35.0f, 5, 0.25f, PREFIX_BLOCK); - public static Block nucleumBlock = new BasicBlock("nucleum_block", Material.ROCK, 25.0f, 25.0f, 4, PREFIX_BLOCK); - public static Block terramiteBlock = new BasicBlock("terramite_block", Material.ROCK, 70.0f, 800.0f, 4, PREFIX_BLOCK); - public static Block solariumBlock = new BasicBlock("solarium_block", Material.ROCK, 80.0f, 1000.0f, 5, PREFIX_BLOCK); - public static Block lumixylBlock = new BasicBlock("lumixyl_block", Material.ROCK, 12.0f, 12.0f, 5, PREFIX_BLOCK); - public static Block dyoniteBlock = new BasicBlock("dyonite_block", Material.ROCK, 23.0f, 25.0f, 4, PREFIX_BLOCK); - public static Block proxideumBlock = new BasicBlock("proxideum_block", Material.ROCK, 25.0f, 25.0f, 4, PREFIX_BLOCK); - public static Block astriumBlock = new BasicBlock("astrium_block", Material.ROCK, 55.0f, 400.0f, 7, PREFIX_BLOCK); - - //public static Block fluidBlock = new BlockMolten(Fluids.astriumFluid); - - - public static void register() { - Field[] declaredFields = Blocks.class.getDeclaredFields(); - for (Field field : declaredFields) { - if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) { - Class targetType = field.getType(); - try { - Block block = (Block) field.get(targetType); - Utils.registerBlockWithItem(block); - - if (block instanceof BasicBlock) { - if (((BasicBlock) block).isOreDict()) { - String oreDictName; - String[] nameParts = block.getUnlocalizedName().replace("tile.", "").split("_"); - - if (nameParts.length > 2) { - oreDictName = Joiner.on("_").join(Arrays.copyOfRange(nameParts, 0, nameParts.length - 1)); - } else { - oreDictName = nameParts[0]; - } - OreDictionary.registerOre(((BasicBlock) block).getOreDictPrefix() + StringUtils.capitalize(oreDictName), block); - } - } - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - } - } - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/Fluids.java b/src/main/java/com/sosnitzka/ztic_addon/Fluids.java deleted file mode 100644 index 7cbb2b3..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/Fluids.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.sosnitzka.ztic_addon; - - -import com.sosnitzka.ztic_addon.generic.BasicTinkerFluid; -import com.sosnitzka.ztic_addon.util.Utils; -import net.minecraft.init.Blocks; -import net.minecraftforge.fluids.FluidRegistry; -import slimeknights.tconstruct.smeltery.block.BlockMolten; - -import java.lang.reflect.Field; - -import static com.sosnitzka.ztic_addon.Items.*; -import static com.sosnitzka.ztic_addon.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", 0xFF6bbbf, 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", 0xFFff6642, 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); - - - static void register() { - Field[] declaredFields = Fluids.class.getDeclaredFields(); - for (Field field : declaredFields) { - if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) { - Class targetType = field.getType(); - try { - BasicTinkerFluid fluid = (BasicTinkerFluid) field.get(targetType); - registerFluid(fluid); - - BlockMolten block = new BlockMolten(fluid); - block.setUnlocalizedName("molten_" + fluid.getName()); - block.setRegistryName(ZTiC.MODID, "molten_" + fluid.getName()); - Utils.registerBlockWithItem(block); - - ZTiC.proxy.registerFluidModels(fluid); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - } - } - } - - 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); - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/Items.java b/src/main/java/com/sosnitzka/ztic_addon/Items.java deleted file mode 100644 index 9187542..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/Items.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.sosnitzka.ztic_addon; - - -import com.google.common.base.Joiner; -import com.sosnitzka.ztic_addon.generic.BasicItem; -import com.sosnitzka.ztic_addon.items.ItemIronNugget; -import com.sosnitzka.ztic_addon.items.ItemLignite; -import com.sosnitzka.ztic_addon.items.ItemSlaggoldIngot; -import com.sosnitzka.ztic_addon.items.ItemSlagironIngot; -import net.minecraft.item.Item; -import net.minecraftforge.fml.common.registry.GameRegistry; -import net.minecraftforge.oredict.OreDictionary; -import org.apache.commons.lang3.StringUtils; - -import java.lang.reflect.Field; -import java.util.Arrays; - -import static com.sosnitzka.ztic_addon.util.Utils.PREFIX_INGOT; -import static com.sosnitzka.ztic_addon.util.Utils.PREFIX_NUGGET; - -public class Items { - public static ItemSlagironIngot slagironIngot = new ItemSlagironIngot(); - public static ItemLignite lignite = new ItemLignite(); - public static ItemIronNugget iron_nugget = new ItemIronNugget(); - public static ItemSlaggoldIngot slaggoldIngot = new ItemSlaggoldIngot(); - public static Item fuel_brick = new BasicItem("fuel_brick"); - - 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 vibraniumIngot = new BasicItem("vibranium_ingot", PREFIX_INGOT); - public static Item rubiumIngot = new BasicItem("rubium_ingot", PREFIX_INGOT); - - 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 tiberiumShardInstable = new BasicItem("tiberium_shard_instable"); - public static Item tiberiumShardStable = new BasicItem("tiberium_nugget", PREFIX_NUGGET); - - public static void register() { - Field[] declaredFields = Items.class.getDeclaredFields(); - for (Field field : declaredFields) { - if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) { - Class targetType = field.getType(); - try { - Item item = (Item) field.get(targetType); - GameRegistry.register(item); - - if (item instanceof BasicItem) { - if (((BasicItem) item).isOreDict()) { - String oreDictName; - String[] nameParts = item.getUnlocalizedName().replace("item.", "").split("_"); - - if (nameParts.length > 2) { - oreDictName = Joiner.on("_").join(Arrays.copyOfRange(nameParts, 0, nameParts.length - 1)); - } else { - oreDictName = nameParts[0]; - } - - OreDictionary.registerOre(((BasicItem) item).getOreDictPrefix() + StringUtils.capitalize(oreDictName), item); - } - } - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - } - } - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/MaterialTraits.java b/src/main/java/com/sosnitzka/ztic_addon/MaterialTraits.java deleted file mode 100644 index 1f8c3ae..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/MaterialTraits.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.sosnitzka.ztic_addon; - - -import com.sosnitzka.ztic_addon.traits.*; -import net.minecraft.util.text.TextFormatting; -import slimeknights.tconstruct.library.materials.HandleMaterialStats; -import slimeknights.tconstruct.library.materials.HeadMaterialStats; -import slimeknights.tconstruct.library.materials.Material; -import slimeknights.tconstruct.library.traits.AbstractTrait; - -import static slimeknights.tconstruct.tools.TinkerMaterials.*; - -public class MaterialTraits { - - // new hardness levels - public static final int TITANITE = 5; - public static final int METEORITE = 6; - public static final int VIBRANIUM = 7; - public static final int ADAMANTITE = 8; - - // Init of new traits - public static final AbstractTrait instable = new TraitInstable(); - public static final AbstractTrait naturebound = new TraitNatureBound(); - public static final AbstractTrait uncertain = new TraitUncertain(); - public static final AbstractTrait softy = new TraitSofty(); - public static final AbstractTrait curvature = new TraitCurvature(); - public static final AbstractTrait resonance = new TraitResonance(); - public static final AbstractTrait fracture = new TraitFracture(); - public static final AbstractTrait glimmer = new TraitGlimmer(); - public static final AbstractTrait garishly = new TraitGarishly(); - public static final AbstractTrait pulverizing = new TraitPulverizing(); - public static final AbstractTrait analysing = new TraitAnalysing(); - public static final AbstractTrait cascade = new TraitCascade(); - public static final AbstractTrait blind = new TraitBlind(); - 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 Material arcanite = new Material("arcanite", TextFormatting.LIGHT_PURPLE).addTrait(arcane, HeadMaterialStats.TYPE).addTrait(blind, HandleMaterialStats.TYPE); - public static Material tiberium = new Material("tiberium", TextFormatting.GREEN).addTrait(instable); - public static Material prometheum = new Material("prometheum", TextFormatting.DARK_PURPLE).addTrait(haunted, HeadMaterialStats.TYPE).addTrait(blind); - public static Material rubium = new Material("rubium", TextFormatting.RED).addTrait(enderference, HeadMaterialStats.TYPE).addTrait(blind); - public static Material violium = new Material("violium", TextFormatting.DARK_GREEN).addTrait(stonebound, HandleMaterialStats.TYPE).addTrait(poisonous, HeadMaterialStats.TYPE); - public static Material bismuth = new Material("bismuth", TextFormatting.GREEN).addTrait(splintering, HeadMaterialStats.TYPE).addTrait(splinters, HandleMaterialStats.TYPE); - public static Material karmesine = new Material("karmesine", TextFormatting.DARK_RED).addTrait(aridiculous, HandleMaterialStats.TYPE).addTrait(superheat, HeadMaterialStats.TYPE); - public static Material mindorite = new Material("mindorite", TextFormatting.AQUA).addTrait(cheap); - public static Material titanite = new Material("titanite", TextFormatting.GRAY).addTrait(shocking, HandleMaterialStats.TYPE).addTrait(sharp, HeadMaterialStats.TYPE); - public static Material meteorite = new Material("meteorite", TextFormatting.GRAY).addTrait(established, HandleMaterialStats.TYPE).addTrait(momentum, HeadMaterialStats.TYPE); - public static Material adamantite = new Material("adamantite", TextFormatting.GRAY).addTrait(coldblooded, HeadMaterialStats.TYPE).addTrait(magnetic, HandleMaterialStats.TYPE); - public static Material vibranium = new Material("vibranium", TextFormatting.GRAY).addTrait(resonance); - public static Material ignitite = new Material("ignitite", TextFormatting.RED).addTrait(melting, HandleMaterialStats.TYPE).addTrait(flammable, HeadMaterialStats.TYPE); - public static Material palladium = new Material("palladium", TextFormatting.DARK_GRAY).addTrait(dark); - public static Material eternite = new Material("eternite", TextFormatting.AQUA).addTrait(writable2); - public static Material mythril = new Material("mythril", TextFormatting.GRAY).addTrait(holy, HeadMaterialStats.TYPE).addTrait(hellish, HandleMaterialStats.TYPE); - - public static Material imperomite = new Material("imperomite", TextFormatting.DARK_RED).addTrait(cascade, HeadMaterialStats.TYPE).addTrait(fragile); - public static Material fractoryte = new Material("fractoryte", TextFormatting.DARK_RED).addTrait(fracture, HeadMaterialStats.TYPE).addTrait(fragile); - public static Material noctunyx = new Material("noctunyx", TextFormatting.LIGHT_PURPLE).addTrait(hollow, HeadMaterialStats.TYPE).addTrait(reviving, HandleMaterialStats.TYPE); - 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); - 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, HandleMaterialStats.TYPE).addTrait(melting, HeadMaterialStats.TYPE); - public static Material nucleum = new Material("nucleum", TextFormatting.AQUA).addTrait(diffuse).addTrait(bright, HeadMaterialStats.TYPE); - public static Material lumixyl = new Material("lumixyl", TextFormatting.YELLOW).addTrait(glimmer); - public static Material dyonite = new Material("dyonite", TextFormatting.GRAY).addTrait(slaughtering, HeadMaterialStats.TYPE).addTrait(dissolving, HandleMaterialStats.TYPE); - 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, HandleMaterialStats.TYPE).addTrait(lightweight); -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/ZTiC.java b/src/main/java/com/sosnitzka/ztic_addon/ZTiC.java deleted file mode 100644 index 1e0f11f..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/ZTiC.java +++ /dev/null @@ -1,121 +0,0 @@ -package com.sosnitzka.ztic_addon; - -import com.google.common.collect.Lists; -import com.sosnitzka.ztic_addon.proxy.ServerProxy; -import com.sosnitzka.ztic_addon.recipes.Crafting; -import com.sosnitzka.ztic_addon.recipes.Smelting; -import com.sosnitzka.ztic_addon.util.FuelHandler; -import com.sosnitzka.ztic_addon.world.ZWorldGen; -import net.minecraftforge.fluids.Fluid; -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.registry.GameRegistry; -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.tools.TinkerMaterials; - -import java.util.List; - -import static com.sosnitzka.ztic_addon.Fluids.*; -import static com.sosnitzka.ztic_addon.MaterialTraits.*; -import static slimeknights.tconstruct.library.utils.HarvestLevels.*; - -@Mod(modid = ZTiC.MODID, version = ZTiC.VERSION) -public class ZTiC { - - public static final String MODID = "ztic_addon"; - public static final String VERSION = "@VERSION@"; - - @SidedProxy(clientSide = "com.sosnitzka.ztic_addon.proxy.ClientProxy", serverSide = "com.sosnitzka.ztic_addon.proxy.ServerProxy") - public static ServerProxy proxy; - private List integrateList = Lists.newArrayList(); - - @EventHandler - public void preInit(FMLPreInitializationEvent e) { - Items.register(); - Fluids.register(); - Blocks.register(); - Fluids.registerfromItem(); - Alloys.register(); - - // ARCANE ORES - registerTinkerMaterial("Tiberium", tiberium, tiberiumFluid, 223, 6.2f, 8.35f, 0.63f, 50, 50, OBSIDIAN, false, true); - registerTinkerMaterial("Rubium", rubium, rubiumFluid, 351, 5.15f, 7.00f, 1.05f, -100, 250, COBALT, false, true); - registerTinkerMaterial("Prometheum", prometheum, prometheumFluid, 539, 3.6f, 6.60f, 0.90f, 0, 150, TITANITE, false, true); - registerTinkerMaterial("Arcanite", arcanite, arcaniteFluid, 698, 4.3f, 7.88f, 0.85f, -50, 150, METEORITE, false, true); - // SOLIDE ORES - registerTinkerMaterial("Titanite", titanite, titaniteFluid, 811, 4.8f, 6.40f, 1.00f, -50, 150, TITANITE, false, true); - registerTinkerMaterial("Meteorite", meteorite, meteoriteFluid, 823, 6.1f, 6.83f, 1.20f, -50, 200, METEORITE, false, true); - registerTinkerMaterial("Vibranium", vibranium, vibraniumFluid, 917, 7.45f, 7.17f, 1.15f, 50, 150, VIBRANIUM, false, true); - registerTinkerMaterial("Adamantite", adamantite, adamantiteFluid, 981, 8.9f, 9.11f, 1.20f, -200, 300, ADAMANTITE, false, true); - // ETHERE ORES - registerTinkerMaterial("Eternite", eternite, eterniteFluid, 592, 7.35f, 1.95f, 1.10f, 150, 150, COBALT, false, true); - registerTinkerMaterial("Mythril", mythril, mythrilFluid, 552, 8.75f, 2.87f, 0.98f, -100, 200, TITANITE, false, true); - registerTinkerMaterial("Palladium", palladium, palladiumFluid, 578, 10.4f, 3.13f, 1.09f, 0, 100, METEORITE, false, true); - registerTinkerMaterial("Ignitite", ignitite, ignititeFluid, 673, 12.1f, 4.10f, 1.15f, -50, 150, VIBRANIUM, false, true); - // RATIO ORES - registerTinkerMaterial("Bismuth", bismuth, bismuthFluid, 235, 5.33f, 3.80f, 1.15f, 17, 117, OBSIDIAN, false, true); - registerTinkerMaterial("Violium", violium, violiumFluid, 427, 4.2f, 3.30f, 1.00f, 133, 150, COBALT, false, true); - registerTinkerMaterial("Mindorite", mindorite, mindoriteFluid, 458, 6.41f, 4.40f, 0.90f, 83, 100, TITANITE, false, true); - registerTinkerMaterial("Karmesine", karmesine, karmesineFluid, 627, 6.75f, 5.10f, 0.99f, 0, 200, METEORITE, false, true); - // Material from alloys - registerTinkerMaterial("Nitronite", nitronite, nitroniteFluid, 745, 6.74f, 8.74f, 0.85f, 75, 93, TITANITE, false, true); - registerTinkerMaterial("Bysmuid", bysmuid, bysmuidFluid, 305, 5.22f, 6.47f, 1.09f, -80, 197, COBALT, false, true); - registerTinkerMaterial("Ultranite", ultranite, ultraniteFluid, 1016, 5.72f, 6.76f, 1.02f, -120, 210, VIBRANIUM, false, true); - registerTinkerMaterial("Astrium", astrium, astriumFluid, 670, 5.28f, 9.14f, 0.91f, -45, 170, VIBRANIUM, false, true); - registerTinkerMaterial("Imperomite", imperomite, imperomiteFluid, 770, 11.60f, 3.57f, 1.05f, -38, 125, METEORITE, false, true); - registerTinkerMaterial("Dyonite", dyonite, dyoniteFluid, 733, 6.14f, 7.69f, 0.97f, -15, 140, TITANITE, false, true); - registerTinkerMaterial("Solarium", solarium, solariumFluid, 1020, 13.78f, 4.64f, 1.15f, 0, 150, ADAMANTITE, false, true); - registerTinkerMaterial("Fractoryte", fractoryte, fractoryteFluid, 1071, 7.65f, 7.75f, 1.15f, -250, 283, METEORITE, false, true); - registerTinkerMaterial("Aegisalt", aegisalt, aegisaltFluid, 355, 8.88f, 3.18f, 1.00f, 175, 125, TITANITE, false, true); - registerTinkerMaterial("Noctunyx", noctunyx, noctunyxFluid, 713, 10.43f, 3.25f, 0.99f, -125, 183, METEORITE, false, true); - registerTinkerMaterial("Nucleum", nucleum, nucleumFluid, 503, 11.30f, 3.22f, 1.05f, 100, 125, TITANITE, false, true); - registerTinkerMaterial("Seismodium", seismodium, seismodiumFluid, 879, 13.85f, 4.19f, 1.17f, -75, 169, VIBRANIUM, false, true); - registerTinkerMaterial("Lumixyl", lumixyl, lumixylFluid, 357, 4.64f, 5.92f, 1.05f, 15, 130, COBALT, false, true); - registerTinkerMaterial("Terramite", terramite, terramiteFluid, 482, 7.25f, 2.85f, 1.03f, 208, 150, TITANITE, false, true); - registerTinkerMaterial("Cryptogen", cryptogen, cryptogenFluid, 538, 5.71f, 6.93f, 0.88f, 58, 117, METEORITE, false, true); - registerTinkerMaterial("Proxideum", proxideum, proxideumFluid, 597, 10.55f, 4.21f, 0.99f, -60, 200, METEORITE, false, true); - } - - @EventHandler - public void init(FMLInitializationEvent e) { - proxy.registerStuff(); - GameRegistry.registerWorldGenerator(new ZWorldGen(), 100); - GameRegistry.registerFuelHandler(new FuelHandler()); - Smelting.register(); - Crafting.register(); - - harvestLevelNames.put(METEORITE, TinkerMaterials.bone.getTextColor() + "Meteorite"); - 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(); - } - } - - @EventHandler - public void postInit(FMLPostInitializationEvent e) { - - } - - private void registerTinkerMaterial(String oreSuffix, slimeknights.tconstruct.library.materials.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)); - material.setFluid(fluid).setCraftable(craft).setCastable(cast); - - proxy.setRenderInfo(material); - MaterialIntegration integration = new MaterialIntegration(material, fluid, oreSuffix); - integration.integrate(); - integrateList.add(integration); - } -} \ No newline at end of file diff --git a/src/main/java/com/sosnitzka/ztic_addon/blocks/BlockLignite.java b/src/main/java/com/sosnitzka/ztic_addon/blocks/BlockLignite.java deleted file mode 100644 index cdcb9fc..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/blocks/BlockLignite.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.sosnitzka.ztic_addon.blocks; - -import com.sosnitzka.ztic_addon.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; -import net.minecraft.world.World; - -import java.util.Random; - -import static com.sosnitzka.ztic_addon.Items.lignite; - -public class BlockLignite extends BasicBlock { - - public BlockLignite() { - super("lignite_ore", Material.ROCK, 4.0f, 5.0f, 1); - } - - @Override - public int getExpDrop(IBlockState state, IBlockAccess world, BlockPos pos, int fortune) { - Random rand = world instanceof World ? ((World) world).rand : new Random(); - int r = RANDOM.nextInt(11); - if (r > 7) { - return MathHelper.getRandomIntegerInRange(rand, 0, 10) + fortune; - } else return 0; - } - - @Override - public int quantityDropped(IBlockState state, int fortune, Random random) { - return MathHelper.getRandomIntegerInRange(random, 1, 3 + fortune); - } - - @Override - public Item getItemDropped(IBlockState state, Random rand, int fortune) { - return lignite; - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/blocks/BlockTiberium.java b/src/main/java/com/sosnitzka/ztic_addon/blocks/BlockTiberium.java deleted file mode 100644 index c5dd17c..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/blocks/BlockTiberium.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.sosnitzka.ztic_addon.blocks; - -import com.sosnitzka.ztic_addon.Items; -import com.sosnitzka.ztic_addon.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.Explosion; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; - -import java.util.Random; - -import static com.sosnitzka.ztic_addon.util.Utils.PREFIX_ORE; -import static slimeknights.tconstruct.TConstruct.random; -import static slimeknights.tconstruct.library.utils.HarvestLevels.OBSIDIAN; - -public class BlockTiberium extends BasicBlock { - - public BlockTiberium() { - super("tiberium_ore", Material.ROCK, 15.0f, 2.0f, OBSIDIAN, 1.0F, PREFIX_ORE); - } - - @Override - public int getExpDrop(IBlockState state, IBlockAccess world, BlockPos pos, int fortune) { - Random rand = world instanceof World ? ((World) world).rand : new Random(); - int r = RANDOM.nextInt(11); - if (r > 7) { - return MathHelper.getRandomIntegerInRange(rand, 0, 10) + fortune; - } else return 0; - } - - @Override - public int quantityDropped(IBlockState state, int fortune, Random random) { - return MathHelper.getRandomIntegerInRange(random, 1, MathHelper.getRandomIntegerInRange(random, 1, 5 + fortune)); - } - - @Override - public Item getItemDropped(IBlockState state, Random rand, int fortune) { - return Items.tiberiumShardInstable; - } - - @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); - } - } - } - - @Override - public void onBlockDestroyedByPlayer(World worldIn, BlockPos pos, IBlockState state) { - if (MathHelper.getRandomIntegerInRange(random, 1, 30) < 3) { - if (!worldIn.isRemote) { - worldIn.newExplosion(null, pos.getX(), pos.getY() + 1 / 16f, pos.getZ(), 1.1f, true, true); - } - } - } - -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/generic/BasicBlock.java b/src/main/java/com/sosnitzka/ztic_addon/generic/BasicBlock.java deleted file mode 100644 index 425178f..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/generic/BasicBlock.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.sosnitzka.ztic_addon.generic; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; - -public class BasicBlock extends Block { - private String oreDictPrefix; - - public BasicBlock(String name, Material material, float hardness, float resistance, int harvest, float lightLevel, String oreDictPrefix) { - super(material); - setUnlocalizedName(name); - setRegistryName(name); - setHardness(hardness); - setResistance(resistance); - setHarvestLevel("pickaxe", harvest); - setLightLevel(lightLevel); - this.oreDictPrefix = oreDictPrefix; - } - - public BasicBlock(String name, Material material, float hardness, float resistance, int harvest) { - this(name, material, hardness, resistance, harvest, 0.0F, null); - } - - public BasicBlock(String name, Material material, float hardness, float resistance, int harvest, float lightLevel) { - this(name, material, hardness, resistance, harvest, lightLevel, null); - } - - public BasicBlock(String name, Material material, float hardness, float resistance, int harvest, String oreDictPrefix) { - this(name, material, hardness, resistance, harvest, 0.0F, oreDictPrefix); - } - - public boolean isOreDict() { - return this.oreDictPrefix != null; - } - - public String getOreDictPrefix() { - return this.oreDictPrefix; - } - -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/generic/BasicBlockGround.java b/src/main/java/com/sosnitzka/ztic_addon/generic/BasicBlockGround.java deleted file mode 100644 index dba47b9..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/generic/BasicBlockGround.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.sosnitzka.ztic_addon.generic; - -import net.minecraft.block.Block; -import net.minecraft.block.SoundType; -import net.minecraft.block.material.Material; - -public class BasicBlockGround extends Block { - - public BasicBlockGround(String name, Material material, float hardness, float resistance, int harvest) { - super(material); - setUnlocalizedName(name); - setRegistryName(name); - setHardness(hardness); - setResistance(resistance); - setHarvestLevel("shovel", harvest); - setSoundType(SoundType.GROUND); - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/generic/BasicItem.java b/src/main/java/com/sosnitzka/ztic_addon/generic/BasicItem.java deleted file mode 100644 index fd32899..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/generic/BasicItem.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.sosnitzka.ztic_addon.generic; - -import net.minecraft.item.Item; - -public class BasicItem extends Item { - private String oreDictPrefix; - - public BasicItem(String name, String oreDictPrefix) { - setUnlocalizedName(name); - setRegistryName(name); - this.oreDictPrefix = oreDictPrefix; - } - - public BasicItem(String name) { - this(name, null); - } - - public boolean isOreDict() { - return this.oreDictPrefix != null; - } - - public String getOreDictPrefix() { - return oreDictPrefix; - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/generic/BasicTinkerFluid.java b/src/main/java/com/sosnitzka/ztic_addon/generic/BasicTinkerFluid.java deleted file mode 100644 index fd47acc..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/generic/BasicTinkerFluid.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.sosnitzka.ztic_addon.generic; - -import net.minecraft.util.ResourceLocation; -import slimeknights.tconstruct.library.Util; -import slimeknights.tconstruct.library.fluid.FluidMolten; - -public class BasicTinkerFluid extends FluidMolten { - - private boolean toolForge; - - public BasicTinkerFluid(String fluidName, int color, boolean toolForge, int temp, int lumen, int visk) { - super(fluidName, color, new ResourceLocation("tconstruct:blocks/fluids/molten_metal"), new ResourceLocation("tconstruct:blocks/fluids/molten_metal_flow")); - this.setUnlocalizedName(Util.prefix(fluidName)); - this.setTemperature(temp); - this.setLuminosity(lumen); - this.setViscosity(visk); - this.setDensity(2000); - this.toolForge = toolForge; - } - - public boolean isToolForge() { - return toolForge; - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/items/ItemIronNugget.java b/src/main/java/com/sosnitzka/ztic_addon/items/ItemIronNugget.java deleted file mode 100644 index 8b396e4..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/items/ItemIronNugget.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.sosnitzka.ztic_addon.items; - -import com.sosnitzka.ztic_addon.generic.BasicItem; - -public class ItemIronNugget extends BasicItem { - - public ItemIronNugget() { - super("iron_nugget"); - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/items/ItemLignite.java b/src/main/java/com/sosnitzka/ztic_addon/items/ItemLignite.java deleted file mode 100644 index d734e29..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/items/ItemLignite.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.sosnitzka.ztic_addon.items; - -import com.sosnitzka.ztic_addon.generic.BasicItem; - -public class ItemLignite extends BasicItem { - - public ItemLignite() { - super("lignite"); - } - -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/items/ItemSlaggoldIngot.java b/src/main/java/com/sosnitzka/ztic_addon/items/ItemSlaggoldIngot.java deleted file mode 100644 index 996c32d..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/items/ItemSlaggoldIngot.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.sosnitzka.ztic_addon.items; - -import com.sosnitzka.ztic_addon.generic.BasicItem; - -public class ItemSlaggoldIngot extends BasicItem { - - public ItemSlaggoldIngot() { - super("slaggold_ingot"); - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/items/ItemSlagironIngot.java b/src/main/java/com/sosnitzka/ztic_addon/items/ItemSlagironIngot.java deleted file mode 100644 index e76e9aa..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/items/ItemSlagironIngot.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.sosnitzka.ztic_addon.items; - -import com.sosnitzka.ztic_addon.generic.BasicItem; - -public class ItemSlagironIngot extends BasicItem { - - public ItemSlagironIngot() { - super("slagiron_ingot"); - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/proxy/ClientProxy.java b/src/main/java/com/sosnitzka/ztic_addon/proxy/ClientProxy.java deleted file mode 100644 index 81e3982..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/proxy/ClientProxy.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.sosnitzka.ztic_addon.proxy; - -import com.sosnitzka.ztic_addon.Blocks; -import com.sosnitzka.ztic_addon.Items; -import com.sosnitzka.ztic_addon.ZTiC; -import net.minecraft.block.Block; -import net.minecraft.block.state.IBlockState; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.ItemMeshDefinition; -import net.minecraft.client.renderer.block.model.ModelResourceLocation; -import net.minecraft.client.renderer.block.statemap.StateMapperBase; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.model.ModelLoader; -import net.minecraftforge.fluids.Fluid; -import slimeknights.tconstruct.library.client.MaterialRenderInfo; -import slimeknights.tconstruct.library.client.texture.MetalTextureTexture; -import slimeknights.tconstruct.library.materials.Material; - -import javax.annotation.Nonnull; -import java.lang.reflect.Field; - -import static com.sosnitzka.ztic_addon.MaterialTraits.*; - -public class ClientProxy extends ServerProxy { - - private static void registerBlockModel(Block block) { - registerItemModel(Item.getItemFromBlock(block)); - } - - private static void registerItemModel(Item item) { - Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, 0, new ModelResourceLocation(item.getRegistryName(), "inventory")); - } - - @Override - public void registerStuff() { - Field[] itemFields = Items.class.getDeclaredFields(); - for (Field field : itemFields) { - if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) { - Class targetType = field.getType(); - try { - Item item = (Item) field.get(targetType); - - registerItemModel(item); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - } - } - - Field[] blockFields = Blocks.class.getDeclaredFields(); - for (Field field : blockFields) { - if (java.lang.reflect.Modifier.isStatic(field.getModifiers())) { - Class targetType = field.getType(); - try { - Block block = (Block) field.get(targetType); - - registerBlockModel(block); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } - } - } - } - - public void setRenderInfo(final Material material) { - /* if (material != bismuth) { - material.setRenderInfo(new MaterialRenderInfo.Metal(fluid.getColor(), 0.4f, 0.2f, 0f)); - } else bismuth.setRenderInfo(new MaterialRenderInfo.BlockTexture("ztic_addon:blocks/bismuth_block")); */ - - if (material == adamantite) renderTo(material, 0xd55cdf, 0.5f, 0.8f, 0.2f); - else if (material == solarium) renderTo(material, 0xffff00, 0.6f, 1.8f, 0.0f); - else if (material == proxideum) renderTo(material, 0x2d8f8b, 0.4f, 0.3f, 0.1f); - else if (material == tiberium) renderTo(material, 0x33ff33, 0.5f, 0.2f, 0.1f); - else if (material == bismuth) renderTo(material, 0xffffff, 0.4f, 0.2f, 0.0f); - else if (material == dyonite) renderTo(material, 0xffe240, 0.6f, 0.8f, 0.2f); - else { - material.setRenderInfo(new MaterialRenderInfo.BlockTexture("ztic_addon:blocks/" + material.getFluid().getName() + "_block")); - } - } - - private void renderTo(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("ztic_addon:blocks/materials/adamantite", baseTexture, location, f, shine, brightness, hueshift); - } - }); - } - - @Override - public void registerFluidModels(Fluid fluid) { - if (fluid == null) { - return; - } - - Block block = fluid.getBlock(); - if (block != null) { - Item item = Item.getItemFromBlock(block); - FluidStateMapper mapper = new FluidStateMapper(fluid); - - // item-model - if (item != null) { - ModelLoader.registerItemVariants(item); - ModelLoader.setCustomMeshDefinition(item, mapper); - } - // block-model - ModelLoader.setCustomStateMapper(block, mapper); - } - } - - public static class FluidStateMapper extends StateMapperBase implements ItemMeshDefinition { - - public final Fluid fluid; - public final ModelResourceLocation location; - - public FluidStateMapper(Fluid fluid) { - this.fluid = fluid; - - // have each block hold its fluid per nbt? hm - this.location = new ModelResourceLocation(new ResourceLocation(ZTiC.MODID, "fluid_block"), fluid.getName()); - } - - @Nonnull - @Override - protected ModelResourceLocation getModelResourceLocation(@Nonnull IBlockState state) { - return location; - } - - @Nonnull - @Override - public ModelResourceLocation getModelLocation(@Nonnull ItemStack stack) { - return location; - } - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/proxy/ServerProxy.java b/src/main/java/com/sosnitzka/ztic_addon/proxy/ServerProxy.java deleted file mode 100644 index e512442..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/proxy/ServerProxy.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.sosnitzka.ztic_addon.proxy; - -import net.minecraftforge.fluids.Fluid; -import slimeknights.tconstruct.library.materials.Material; - -public class ServerProxy { - - public void registerStuff() { - - } - - public void setRenderInfo(Material material) { - - } - - public void registerFluidModels(Fluid fluid) { - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/recipes/Crafting.java b/src/main/java/com/sosnitzka/ztic_addon/recipes/Crafting.java deleted file mode 100644 index acebee3..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/recipes/Crafting.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.sosnitzka.ztic_addon.recipes; - - -import net.minecraft.init.Blocks; -import net.minecraft.init.Items; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fml.common.registry.GameRegistry; - -import static com.sosnitzka.ztic_addon.Items.*; -import static slimeknights.tconstruct.shared.TinkerCommons.matNecroticBone; - -public class Crafting { - public static void register() { - GameRegistry.addShapelessRecipe(new ItemStack(fuel_brick), Items.COAL, Items.COAL, Items.COAL, lignite, lignite, lignite); - GameRegistry.addShapedRecipe(new ItemStack((tiberiumShardStable), 3), "STS", "TST", "STS", 'T', new ItemStack(tiberiumShardInstable), 'S', new ItemStack(Item.getItemFromBlock(Blocks.SAND))); - GameRegistry.addShapedRecipe(new ItemStack((tiberiumShardStable), 2), "GTG", "TGT", "GTG", 'T', new ItemStack(tiberiumShardInstable), 'G', new ItemStack(Item.getItemFromBlock(Blocks.GRAVEL))); - - 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); - - - - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/recipes/Smelting.java b/src/main/java/com/sosnitzka/ztic_addon/recipes/Smelting.java deleted file mode 100644 index 91b07b2..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/recipes/Smelting.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.sosnitzka.ztic_addon.recipes; - - -import net.minecraft.init.Items; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fml.common.registry.GameRegistry; -import org.apache.commons.lang3.RandomUtils; - -import static com.sosnitzka.ztic_addon.Blocks.*; -import static com.sosnitzka.ztic_addon.Items.*; - -public class Smelting { - public static void register() { - GameRegistry.addSmelting(slagironOre, new ItemStack(slagironIngot), 1.0F); - GameRegistry.addSmelting(new ItemStack(slagironIngot), new ItemStack(iron_nugget), 0); - GameRegistry.addSmelting(new ItemStack(slaggoldIngot), new ItemStack(Items.GOLD_NUGGET), 0); - GameRegistry.addSmelting(new ItemStack(tiberiumShardInstable), new ItemStack(tiberiumShardStable), 0.2F); - - GameRegistry.addSmelting(titaniteOre, new ItemStack(titaniteIngot), RandomUtils.nextFloat(0F, 2F)); - GameRegistry.addSmelting(arcaniteOre, new ItemStack(arcaniteIngot), RandomUtils.nextFloat(0F, 2F)); - GameRegistry.addSmelting(adamantiteOre, new ItemStack(adamantiteIngot), RandomUtils.nextFloat(0F, 2F)); - GameRegistry.addSmelting(violiumOre, new ItemStack(violiumIngot), RandomUtils.nextFloat(0F, 2F)); - GameRegistry.addSmelting(bismuthOre, new ItemStack(bismuthIngot), RandomUtils.nextFloat(0F, 2F)); - GameRegistry.addSmelting(eterniteOre, new ItemStack(eterniteIngot), RandomUtils.nextFloat(0F, 2F)); - GameRegistry.addSmelting(ignititeOre, new ItemStack(ignititeIngot), RandomUtils.nextFloat(0F, 2F)); - GameRegistry.addSmelting(karmesineOre, new ItemStack(karmesineIngot), RandomUtils.nextFloat(0F, 2F)); - GameRegistry.addSmelting(meteoriteOre, new ItemStack(meteoriteIngot), RandomUtils.nextFloat(0F, 2F)); - GameRegistry.addSmelting(mindoriteOre, new ItemStack(mindoriteIngot), RandomUtils.nextFloat(0F, 2F)); - GameRegistry.addSmelting(mythrilOre, new ItemStack(mythrilIngot), RandomUtils.nextFloat(0F, 2F)); - GameRegistry.addSmelting(palladiumOre, new ItemStack(palladiumIngot), RandomUtils.nextFloat(0F, 2F)); - GameRegistry.addSmelting(prometheumOre, new ItemStack(prometheumIngot), RandomUtils.nextFloat(0F, 2F)); - GameRegistry.addSmelting(tiberiumOre, new ItemStack(tiberiumShardStable, 2), RandomUtils.nextFloat(0F, 2F)); - GameRegistry.addSmelting(vibraniumOre, new ItemStack(vibraniumIngot), RandomUtils.nextFloat(0F, 2F)); - GameRegistry.addSmelting(rubiumOre, new ItemStack(rubiumIngot), RandomUtils.nextFloat(0F, 2F)); - - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitAnalysing.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitAnalysing.java deleted file mode 100644 index 5a02bc2..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitAnalysing.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.sosnitzka.ztic_addon.traits; - -import net.minecraft.entity.monster.EntityMob; -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; -import slimeknights.tconstruct.library.utils.TagUtil; -import slimeknights.tconstruct.library.utils.TinkerUtil; - - -public class TraitAnalysing extends AbstractTrait { - - public TraitAnalysing() { - super("analysing", TextFormatting.GREEN); - MinecraftForge.EVENT_BUS.register(this); - } - - @SubscribeEvent - public void onXpDrop(LivingExperienceDropEvent event) { - EntityPlayer player = event.getAttackingPlayer(); - if (player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) { - event.setDroppedExperience(this.getUpdateXP(event.getDroppedExperience())); - } - - } - - @SubscribeEvent - public void onBlockBreak(BlockEvent.BreakEvent event) { - EntityPlayer player = event.getPlayer(); - if (player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) { - event.setExpToDrop(this.getUpdateXP(event.getExpToDrop())); - } - - } - - @SubscribeEvent - public void onMobDrops(LivingDropsEvent event) { - World w = event.getEntity().getEntityWorld(); - if (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(); - } - } - } - - private int getUpdateXP(int xp) { - float exp = (float) random.nextFloat() * random.nextFloat() * random.nextFloat() * (xp + 18) * 50; - return Math.round(exp); - } - - @Override - public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) { - if (random.nextFloat() < 0.85) { - event.getDrops().clear(); - } - } - -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitArcane.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitArcane.java deleted file mode 100644 index 639ad1a..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitArcane.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.sosnitzka.ztic_addon.traits; - -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 slimeknights.tconstruct.library.traits.AbstractTrait; -import slimeknights.tconstruct.library.utils.ToolHelper; - -public class TraitArcane extends AbstractTrait { - - public TraitArcane() { - super("arcane", TextFormatting.DARK_PURPLE); - } - - @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); - } - } - - - public boolean isNight(int time) { - if (time > 12500) { - return true; - } else { - return false; - } - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitBlind.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitBlind.java deleted file mode 100644 index f755445..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitBlind.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.sosnitzka.ztic_addon.traits; - -import net.minecraft.block.state.IBlockState; -import net.minecraft.entity.EntityLivingBase; -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; - -public class TraitBlind extends AbstractTrait { - - public TraitBlind() { - super("blind", TextFormatting.DARK_GRAY); - } - - @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))) { - player.addPotionEffect(new PotionEffect(MobEffects.BLINDNESS, random.nextInt(400) + 200)); - player.addPotionEffect(new PotionEffect(MobEffects.WEAKNESS, random.nextInt(400) + 200)); - } - } - - @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))) { - player.addPotionEffect(new PotionEffect(MobEffects.BLINDNESS, random.nextInt(400) + 200)); - player.addPotionEffect(new PotionEffect(MobEffects.WEAKNESS, random.nextInt(400) + 200)); - } - } - - public boolean isNight(int time) { - if (time > 12500) { - return true; - } else { - return false; - } - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitBright.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitBright.java deleted file mode 100644 index 9725686..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitBright.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.sosnitzka.ztic_addon.traits; - -import net.minecraft.entity.Entity; -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.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; - - -public class TraitBright extends AbstractTrait { - - public TraitBright() { - super("bright", TextFormatting.DARK_GRAY); - } - - @Override - public float damage(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, float newDamage, boolean isCritical) { - int time = (int) target.getEntityWorld().getWorldTime(); - if (isDay(time)) { - newDamage += damage / 2f; - } - 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 boolean isDay(int time) { - if (time < 12500) { - return true; - } else { - return false; - } - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitCascade.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitCascade.java deleted file mode 100644 index 45afdd2..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitCascade.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.sosnitzka.ztic_addon.traits; - -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 slimeknights.tconstruct.library.traits.AbstractTrait; -import slimeknights.tconstruct.library.utils.ToolHelper; - -public class TraitCascade extends AbstractTrait { - - public TraitCascade() { - super("cascade", TextFormatting.DARK_GRAY); - } - - @Override - public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) { - float f = random.nextFloat(); - float b = 0.99F * calcBonus(tool); - if (!world.isRemote && tool.canHarvestBlock(state) && f <= b) { - double x, y, z, sx, sy, sz; - sx = x = pos.getX(); - sy = y = pos.getY(); - sz = z = pos.getZ(); - for (int i = random.nextInt(ToolHelper.getCurrentDurability(tool)); i > 0; i--) { - int r = random.nextInt(3); - int d = random.nextBoolean() ? 1 : -1; - if (r == 0) x += d; - if (r == 1) y += d; - if (r == 2) z += d; - BlockPos nextBlock = new BlockPos(x, y, z); - if (world.getBlockState(nextBlock) == world.getBlockState(pos)) { - world.destroyBlock(nextBlock, true); - sx = x = nextBlock.getX(); - sy = y = nextBlock.getY(); - sz = z = nextBlock.getZ(); - ToolHelper.damageTool(tool, random.nextInt(2), player); - } else { - x = sx; - y = sy; - z = sz; - } - - } - - } - - } - - private float calcBonus(ItemStack tool) { - int durability = ToolHelper.getCurrentDurability(tool); - int maxDurability = ToolHelper.getMaxDurability(tool); - return (0.4f) / (maxDurability - 50) * (durability) + 0.55f; - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitCurvature.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitCurvature.java deleted file mode 100644 index 3d8164b..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitCurvature.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.sosnitzka.ztic_addon.traits; - -import net.minecraft.block.state.IBlockState; -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.Blocks; -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.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; - - -public class TraitCurvature extends AbstractTrait { - - - public TraitCurvature() { - super("curvature", TextFormatting.BLACK); - 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 && world.provider.getDimension() != -1) { - teleport(player, world); - player.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F); - } - } - - @Override - public void afterHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean wasCritical, boolean wasHit) { - World w = player.getEntityWorld(); - if (random.nextFloat() <= 0.1 && w.provider.getDimension() != -1) { - if (random.nextBoolean()) { - teleport(player, w); - target.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F); - } else { - target.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F); - teleport(target, w); - } - } - } - - @SubscribeEvent - public void onMobDrops(LivingDropsEvent event) { - World w = event.getEntity().getEntityWorld(); - if (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)) { - ItemStack i = new ItemStack(Items.ENDER_PEARL, random.nextInt(3)); - 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; - while (w.getBlockState(new BlockPos(x, y, z)).getBlock() != Blocks.AIR) { - y++; - } - while (w.getBlockState(new BlockPos(x, y - 1, z)).getBlock() == Blocks.AIR) { - y--; - } - - e.setPosition(x, y, z); - } - -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitDark.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitDark.java deleted file mode 100644 index 1875806..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitDark.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.sosnitzka.ztic_addon.traits; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.item.ItemStack; -import net.minecraft.util.text.TextFormatting; -import slimeknights.tconstruct.library.traits.AbstractTrait; - - -public class TraitDark extends AbstractTrait { - - public TraitDark() { - super("dark", TextFormatting.DARK_GRAY); - } - - @Override - 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; - } - return super.damage(tool, player, target, damage, newDamage, isCritical); - - } - - public boolean isNight(int time) { - if (time > 12500) { - return true; - } else { - return false; - } - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitDiffuse.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitDiffuse.java deleted file mode 100644 index 9ad265d..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitDiffuse.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.sosnitzka.ztic_addon.traits; - -import net.minecraft.entity.monster.EntityMob; -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; -import slimeknights.tconstruct.library.utils.TagUtil; -import slimeknights.tconstruct.library.utils.TinkerUtil; - -public class TraitDiffuse extends AbstractTrait { - - public TraitDiffuse() { - super("diffuse", TextFormatting.DARK_GRAY); - MinecraftForge.EVENT_BUS.register(this); - } - - @SubscribeEvent - public void onXpDrop(LivingExperienceDropEvent event) { - EntityPlayer player = event.getAttackingPlayer(); - if (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 != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) { - event.setExpToDrop(this.getUpdateXP(event.getExpToDrop())); - } - - } - - @SubscribeEvent - public void onMobDrops(LivingDropsEvent event) { - World w = event.getEntity().getEntityWorld(); - if (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(); - } - } - } - - private int getUpdateXP(int xp) { - float exp = (float) random.nextFloat() * random.nextFloat() * random.nextFloat() * (xp + random.nextInt(10)); - if (random.nextBoolean()) - return Math.round(exp); - else return 0; - } - - @Override - public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) { - if (random.nextFloat() < 0.75) { - event.getDrops().clear(); - } - } - -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitDissolving.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitDissolving.java deleted file mode 100644 index 003b31f..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitDissolving.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.sosnitzka.ztic_addon.traits; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.util.text.TextFormatting; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.living.LivingExperienceDropEvent; -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 TraitDissolving extends AbstractTrait { - - public TraitDissolving() { - super("dissolving", TextFormatting.DARK_AQUA); - MinecraftForge.EVENT_BUS.register(this); - } - - // high chance to remove XP, low chance to double,triple or quatruple dropped Experience - @SubscribeEvent - public void onXpDrop(LivingExperienceDropEvent event) { - 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)); - } - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitFracture.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitFracture.java deleted file mode 100644 index 4851c34..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitFracture.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.sosnitzka.ztic_addon.traits; - -import net.minecraft.block.state.IBlockState; -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.math.RayTraceResult; -import net.minecraft.util.text.TextFormatting; -import net.minecraft.world.World; -import slimeknights.tconstruct.library.tools.ToolCore; -import slimeknights.tconstruct.library.traits.AbstractTrait; -import slimeknights.tconstruct.library.utils.ToolHelper; - -public class TraitFracture extends AbstractTrait { - - public TraitFracture() { - super("fracture", TextFormatting.DARK_GRAY); - } - - @Override - public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) { - float f = random.nextFloat(); - float b = 0.99F * calcBonus(tool); - if (!world.isRemote && tool.canHarvestBlock(state) && f <= b) { - RayTraceResult mop = ((ToolCore) tool.getItem()).rayTrace(world, (EntityPlayer) player, false); - if (mop == null) return; - for (int i = random.nextInt(9) + 1; i >= 0; i--) { - switch (mop.sideHit) { - case UP: - BlockPos next1 = new BlockPos(pos.getX(), pos.getY() - i, pos.getZ()); - if (tool.canHarvestBlock(world.getBlockState(next1))) world.destroyBlock(next1, true); - break; - case DOWN: - BlockPos next2 = new BlockPos(pos.getX(), pos.getY() + i, pos.getZ()); - if (tool.canHarvestBlock(world.getBlockState(next2))) world.destroyBlock(next2, true); - break; - case WEST: - BlockPos next3 = new BlockPos(pos.getX() + i, pos.getY(), pos.getZ()); - if (tool.canHarvestBlock(world.getBlockState(next3))) world.destroyBlock(next3, true); - break; - case EAST: - BlockPos next4 = new BlockPos(pos.getX() - i, pos.getY(), pos.getZ()); - if (tool.canHarvestBlock(world.getBlockState(next4))) world.destroyBlock(next4, true); - break; - case SOUTH: - BlockPos next5 = new BlockPos(pos.getX(), pos.getY(), pos.getZ() - i); - if (tool.canHarvestBlock(world.getBlockState(next5))) world.destroyBlock(next5, true); - break; - case NORTH: - BlockPos next6 = new BlockPos(pos.getX(), pos.getY() - i, pos.getZ() + i); - if (tool.canHarvestBlock(world.getBlockState(next6))) world.destroyBlock(next6, true); - break; - } - } - if (random.nextBoolean()) ToolHelper.damageTool(tool, random.nextInt(5), player); - } - - } - - private float calcBonus(ItemStack tool) { - int durability = ToolHelper.getCurrentDurability(tool); - int maxDurability = ToolHelper.getMaxDurability(tool); - return (0.4f) / (maxDurability - 50) * (durability) + 0.55f; - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitFragile.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitFragile.java deleted file mode 100644 index 63474c7..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitFragile.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.sosnitzka.ztic_addon.traits; - -import net.minecraft.block.Block; -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 TraitFragile extends AbstractTrait { - - public TraitFragile() { - super("fragile", TextFormatting.DARK_GRAY); - } - - @Override - public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) { - if (random.nextBoolean()) { - float f = random.nextFloat(); - 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 { - float f = random.nextFloat(); - float b = 0.99F * calcBonus(tool); - if (!world.isRemote && state.getBlock() == Blocks.STONE && f <= b) { - double x, y, z, sx, sy, sz; - sx = x = pos.getX(); - sy = y = pos.getY(); - sz = z = pos.getZ(); - for (int i = random.nextInt(50) + 50; i > 0; i--) { - int r = random.nextInt(3); - int d = random.nextBoolean() ? 1 : -1; - if (r == 0) x += d; - if (r == 1) y += d; - if (r == 2) z += d; - BlockPos nextBlock = new BlockPos(x, y, z); - int tn = (int) world.getWorldTime() + 5; - if (world.getBlockState(nextBlock) == world.getBlockState(pos)) { - Block block = Blocks.STONE; - int ib = random.nextInt(3); - switch (ib) { - case 0: - block = Blocks.COBBLESTONE; - break; - case 1: - block = Blocks.MOSSY_COBBLESTONE; - break; - case 2: - block = Blocks.GRAVEL; - break; - } - f = random.nextFloat(); - if (f < 0.85) { - world.setBlockState(nextBlock, block.getDefaultState()); - } else if (f > 95) { - world.destroyBlock(nextBlock, true); - } - sx = x = nextBlock.getX(); - sy = y = nextBlock.getY(); - sz = z = nextBlock.getZ(); - if (random.nextBoolean()) ToolHelper.damageTool(tool, 1, player); - } else { - x = sx; - y = sy; - z = sz; - } - - } - - } - - } - } - - - private float calcBonus(ItemStack tool) { - int durability = ToolHelper.getCurrentDurability(tool); - int maxDurability = ToolHelper.getMaxDurability(tool); - return (0.4f) / (maxDurability - 50) * (durability) + 0.55f; - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitGarishly.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitGarishly.java deleted file mode 100644 index 006fb84..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitGarishly.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.sosnitzka.ztic_addon.traits; - -import net.minecraft.block.material.Material; -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.Item; -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.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; - -import static com.sosnitzka.ztic_addon.Items.*; - -public class TraitGarishly extends AbstractTrait { - - public TraitGarishly() { - super("garishly", TextFormatting.YELLOW); - MinecraftForge.EVENT_BUS.register(this); - } - - @SubscribeEvent - public void onMobDrops(LivingDropsEvent event) { - World w = event.getEntity().getEntityWorld(); - if (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)) { - - int r = random.nextInt(5); - ItemStack i = null; - switch (r) { - case 0: - i = new ItemStack(Items.BLAZE_POWDER, random.nextInt(3)); - break; - case 1: - 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; - } - - event.getDrops().add(0, new EntityItem(w, event.getEntity().posX, event.getEntity().posY, event.getEntity().posZ, i)); - } - } - } - - @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) { - ItemStack stack = new ItemStack(Item.getItemFromBlock(event.getWorld().getBlockState(event.getPos()).getBlock()), random.nextInt(5)); - event.getDrops().add(0, stack); - ToolHelper.damageTool(tool, random.nextInt(6) + 1, event.getHarvester()); - } - } - - -} - - - diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitGlimmer.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitGlimmer.java deleted file mode 100644 index aaa0dca..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitGlimmer.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.sosnitzka.ztic_addon.traits; - -import net.minecraft.block.state.IBlockState; -import net.minecraft.entity.Entity; -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; - -public class TraitGlimmer extends AbstractTrait { - - - public TraitGlimmer() { - super("glimmer", TextFormatting.DARK_GRAY); - } - - @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)); - } - } - - } - - @Override - public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) { - if (random.nextFloat() <= 0.08) { - 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) { - player.addPotionEffect(new PotionEffect(MobEffects.NIGHT_VISION, random.nextInt(600) + 300)); - } - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitHaunted.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitHaunted.java deleted file mode 100644 index 50ae188..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitHaunted.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.sosnitzka.ztic_addon.traits; - -import com.sosnitzka.ztic_addon.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; - -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)); - - } - } - - public boolean isNight(int time) { - if (time > 12500) { - return true; - } else { - return false; - } - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitHeroic.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitHeroic.java deleted file mode 100644 index 5cb1fb9..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitHeroic.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.sosnitzka.ztic_addon.traits; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.item.ItemStack; -import net.minecraft.util.text.TextFormatting; -import slimeknights.tconstruct.library.traits.AbstractTrait; -import slimeknights.tconstruct.library.utils.ToolHelper; - -public class TraitHeroic extends AbstractTrait { - - public TraitHeroic() { - super("heroic", TextFormatting.DARK_GRAY); - } - - @Override - public float damage(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, float newDamage, boolean isCritical) { - int durability = ToolHelper.getCurrentDurability(tool); - int durabilitymax = ToolHelper.getMaxDurability(tool); - float calc = (float) (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); - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitHollow.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitHollow.java deleted file mode 100644 index 6dbed56..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitHollow.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.sosnitzka.ztic_addon.traits; - -import net.minecraft.entity.EntityLiving; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.monster.EntityMob; -import net.minecraft.entity.player.EntityPlayer; -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.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; - -public class TraitHollow extends AbstractTrait { - - public TraitHollow() { - super("hollow", TextFormatting.DARK_GRAY); - MinecraftForge.EVENT_BUS.register(this); - } - - - @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))) { - ((EntityLiving) target).setNoAI(true); - target.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F); - if (target.getMaxHealth() < 200) { - target.setHealth(target.getMaxHealth() * (1.8f - random.nextFloat() * 0.4f)); - } - } - } - - @SubscribeEvent - public void onMobDrops(LivingDropsEvent event) { - World w = event.getEntity().getEntityWorld(); - if (event.getSource().getEntity() instanceof EntityPlayer) { - EntityPlayer player = (EntityPlayer) event.getSource().getEntity(); - if (!w.isRemote && random.nextFloat() <= 0.9 && event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) { - event.getDrops().clear(); - } - } - } - - public boolean isNight(int time) { - if (time > 12500) { - return true; - } else { - return false; - } - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitInstable.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitInstable.java deleted file mode 100644 index e2fb995..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitInstable.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.sosnitzka.ztic_addon.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; - - -public class TraitInstable extends AbstractTrait { - - - public TraitInstable() { - super("instable", TextFormatting.DARK_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.03) { - if (!world.isRemote) { - if (random.nextBoolean()) { - 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), null); - } - } - - @Override - public void afterHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean wasCritical, boolean wasHit) { - BlockPos pos = target.getPosition(); - if (random.nextFloat() <= 0.04) { - if (!player.getEntityWorld().isRemote) { - if (random.nextBoolean()) { - 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), null); - } - } - - @SubscribeEvent - public void onMobDrops(LivingDropsEvent event) { - World w = event.getEntity().getEntityWorld(); - if (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)) { - ItemStack i = new ItemStack(Items.GUNPOWDER, random.nextInt(4)); - 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() * 35, random.nextBoolean(), true); - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitMelting.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitMelting.java deleted file mode 100644 index bd3853b..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitMelting.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.sosnitzka.ztic_addon.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.event.world.BlockEvent; -import slimeknights.tconstruct.library.traits.AbstractTrait; - -/** - * Created by Robert on 03.06.2016. - */ -public class TraitMelting extends AbstractTrait { - - public TraitMelting() { - super("melting", TextFormatting.YELLOW); - } - - @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()); - } - } - - -} - - - diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitNatureBound.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitNatureBound.java deleted file mode 100644 index 8cf6a11..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitNatureBound.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.sosnitzka.ztic_addon.traits; - -import net.minecraft.block.Block; -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.DamageSource; -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.ToolHelper; - - -public class TraitNatureBound extends AbstractTrait { - public static DamageSource splinter = new DamageSource("splinter").setDamageBypassesArmor(); - private static int chance = 10; - - public TraitNatureBound() { - super("naturebound", TextFormatting.GREEN); - MinecraftForge.EVENT_BUS.register(this); - } - - @Override - public int onToolHeal(ItemStack tool, int amount, int newAmount, EntityLivingBase entity) { - // 5% less durability repaired! - return newAmount - amount * 5 / 100; - } - - @Override - public void onUpdate(ItemStack tool, World world, Entity entity, int itemSlot, boolean isSelected) { - // *20 because 20 ticks in a second - if (!world.isRemote && entity instanceof EntityLivingBase && random.nextInt(20 * chance) == 0) { - ToolHelper.healTool(tool, 1, (EntityLivingBase) entity); - } - - } - - @SubscribeEvent - public void onBlockBreak(BlockEvent.BreakEvent e) { - Block b = e.getWorld().getBlockState(e.getPos()).getBlock(); - if (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); - } - } - - - - - -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitOrganizing.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitOrganizing.java deleted file mode 100644 index bdfb959..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitOrganizing.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.sosnitzka.ztic_addon.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.1f; - - public TraitOrganizing() { - super("organizing", TextFormatting.GREEN); - } - - @Override - public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) { - if (!world.isRemote && (state.getMaterial() == Material.ROCK) && random.nextFloat() < chance) { - world.setBlockState(pos, Blocks.LOG.getDefaultState()); - ToolHelper.healTool(tool, random.nextInt(5), player); - } - } -} \ No newline at end of file diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitPulverizing.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitPulverizing.java deleted file mode 100644 index 3b82b09..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitPulverizing.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.sosnitzka.ztic_addon.traits; - -import net.minecraft.item.ItemStack; -import net.minecraft.util.text.TextFormatting; -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; - -public class TraitPulverizing extends AbstractTrait { - - public TraitPulverizing() { - super("pulverizing", TextFormatting.DARK_GRAY); - } - - @Override - public void miningSpeed(ItemStack tool, PlayerEvent.BreakSpeed event) { - if (ToolHelper.isToolEffective2(tool, event.getState())) { - 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); - } - - - @Override - public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) { - if (random.nextFloat() < 0.9) { - event.getDrops().clear(); - } - } - -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitRandomize.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitRandomize.java deleted file mode 100644 index 230229a..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitRandomize.java +++ /dev/null @@ -1,175 +0,0 @@ -package com.sosnitzka.ztic_addon.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.ztic_addon.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((float) (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"); - ((EntityLiving) e).setHealth(((EntityLiving) e).getHealth() * (random.nextInt(5) + 1)); - w.spawnEntityInWorld(e); - target.setDead(); - } - } - } - - @Override - public void blockHarvestDrops(ItemStack tool, BlockEvent.HarvestDropsEvent event) { - float r = random.nextFloat(); - if (r > 0.95f) event.getDrops().clear(); - if (event.getDrops() != null) { - if (r < 0.4f && (event.getDrops().get(0).getItem() == Item.getItemFromBlock(Blocks.IRON_ORE) || event.getDrops().get(0).getItem() == Item.getItemFromBlock(Blocks.GOLD_ORE))) { - ItemStack change = new ItemStack(Item.getItemFromBlock(Blocks.IRON_ORE)); - int i = random.nextInt(12); - switch (i) { - case 0: - change = new ItemStack(Item.getItemFromBlock(Blocks.GOLD_ORE)); - break; - case 1: - change = new ItemStack(Item.getItemFromBlock(Blocks.REDSTONE_ORE)); - break; - case 2: - change = new ItemStack(Item.getItemFromBlock(Blocks.LAPIS_ORE)); - break; - case 3: - change = new ItemStack(Item.getItemFromBlock(Blocks.DIAMOND_ORE)); - break; - case 4: - change = new ItemStack(Item.getItemFromBlock(Blocks.QUARTZ_ORE)); - break; - case 5: - change = new ItemStack(oreCobalt.getItem()); - break; - case 6: - change = new ItemStack(oreArdite.getItem()); - break; - case 7: - change = new ItemStack(titaniteOre); - break; - case 8: - change = new ItemStack(bismuthOre); - break; - case 9: - change = new ItemStack(tiberiumOre); - break; - case 10: - change = new ItemStack(eterniteOre); - break; - case 11: - change = new ItemStack(Item.getItemFromBlock(Blocks.IRON_ORE)); - break; - } - event.getDrops().set(0, change); - - - } - } - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitResonance.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitResonance.java deleted file mode 100644 index 33a59de..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitResonance.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.sosnitzka.ztic_addon.traits; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.item.ItemStack; -import net.minecraft.util.text.TextFormatting; -import slimeknights.tconstruct.library.traits.AbstractTrait; - -public class TraitResonance extends AbstractTrait { - - - 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); - } - } - - -} - - - diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitReviving.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitReviving.java deleted file mode 100644 index 64be2c1..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitReviving.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.sosnitzka.ztic_addon.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.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; - - -/** - * Created by Robert on 03.06.2016. - */ -public class TraitReviving extends AbstractTrait { - - public TraitReviving() { - super("reviving", TextFormatting.DARK_PURPLE); - MinecraftForge.EVENT_BUS.register(this); - } - - @SubscribeEvent - public void onEntityKill(LivingDeathEvent e) { - BlockPos pos = e.getEntity().getPosition(); - 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)) { - String name = EntityList.getEntityString(e.getEntity()); - Entity ent = EntityList.createEntityByName(name, w); - ent.setPosition(pos.getX(), pos.getY(), pos.getZ()); - w.spawnEntityInWorld(ent); - } - } - } - } - - @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); - } - } - - - public boolean isNight(int time) { - if (time > 12500) { - return true; - } else { - return false; - } - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitSlaughtering.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitSlaughtering.java deleted file mode 100644 index a7cbd2a..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitSlaughtering.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.sosnitzka.ztic_addon.traits; - -import net.minecraft.entity.EntityLiving; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -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.fml.common.eventhandler.SubscribeEvent; -import slimeknights.tconstruct.library.traits.AbstractTrait; -import slimeknights.tconstruct.library.utils.TagUtil; -import slimeknights.tconstruct.library.utils.TinkerUtil; - -public class TraitSlaughtering extends AbstractTrait { - - public TraitSlaughtering() { - super("slaughtering", TextFormatting.DARK_RED); - MinecraftForge.EVENT_BUS.register(this); - } - - - @SubscribeEvent - public void onMobDrops(LivingDropsEvent event) { - World w = event.getEntity().getEntityWorld(); - if (event.getSource().getEntity() instanceof EntityPlayer) { - EntityPlayer player = (EntityPlayer) event.getSource().getEntity(); - if (!w.isRemote && event.getEntity() instanceof EntityLiving && !(event.getEntity() instanceof EntityPlayer) && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) { - Item i = event.getDrops().get(random.nextInt(event.getDrops().size())).getEntityItem().getItem(); - if (i != null) { - event.getDrops().add(new EntityItem(event.getEntity().getEntityWorld(), event.getEntity().posX, event.getEntity().posY, event.getEntity().posZ, new ItemStack(i, random.nextInt(4) + 1))); - } - } - } - } - -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitSofty.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitSofty.java deleted file mode 100644 index 0142b34..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitSofty.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.sosnitzka.ztic_addon.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 slimeknights.tconstruct.library.traits.AbstractTrait; -import slimeknights.tconstruct.library.utils.ToolHelper; - -public class TraitSofty extends AbstractTrait { - private static final float chance = 0.2f; - - public TraitSofty() { - super("softy", TextFormatting.AQUA); - MinecraftForge.EVENT_BUS.register(this); - } - - @Override - public void afterBlockBreak(ItemStack tool, World world, IBlockState state, BlockPos pos, EntityLivingBase player, boolean wasEffective) { - if (!world.isRemote && state.getMaterial() != Material.ROCK && state.getMaterial() != Material.GROUND && random.nextFloat() < chance) { - ToolHelper.healTool(tool, random.nextInt(10), player); - } - } - - -} - - - diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitUncertain.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitUncertain.java deleted file mode 100644 index 9a1324b..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitUncertain.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.sosnitzka.ztic_addon.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.ztic_addon.Items.glimmerstone_dust; -import static com.sosnitzka.ztic_addon.Items.tiberiumShardStable; - - -public class TraitUncertain extends AbstractTrait { - - - public TraitUncertain() { - super("uncertain", 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 (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)) { - 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(tiberiumShardStable, random.nextInt(4)); - break; - case 2: - i = new ItemStack(tiberiumShardStable, random.nextInt(4)); - 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() * 5, random.nextBoolean(), true); - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/util/EntityAIPermanentPanic.java b/src/main/java/com/sosnitzka/ztic_addon/util/EntityAIPermanentPanic.java deleted file mode 100644 index 86c04b9..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/util/EntityAIPermanentPanic.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.sosnitzka.ztic_addon.util; - -import net.minecraft.block.Block; -import net.minecraft.block.state.IBlockState; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityCreature; -import net.minecraft.entity.ai.EntityAIBase; -import net.minecraft.entity.ai.RandomPositionGenerator; -import net.minecraft.init.Blocks; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Vec3d; -import net.minecraft.world.World; - -public class EntityAIPermanentPanic extends EntityAIBase { - private EntityCreature theEntityCreature; - protected double speed; - private double randPosX; - private double randPosY; - private double randPosZ; - - public EntityAIPermanentPanic(EntityCreature creature, double speedIn) { - this.theEntityCreature = creature; - this.speed = speedIn; - } - - /** - * Returns whether the EntityAIBase should begin execution. - */ - public boolean shouldExecute() { - - Vec3d vec3d = RandomPositionGenerator.findRandomTarget(this.theEntityCreature, 5, 4); - - if (vec3d == null) { - return false; - } else { - this.randPosX = vec3d.xCoord; - this.randPosY = vec3d.yCoord; - this.randPosZ = vec3d.zCoord; - - if (this.theEntityCreature.isBurning()) { - BlockPos blockpos = this.getRandPos(this.theEntityCreature.worldObj, this.theEntityCreature, 5, 4); - - if (blockpos != null) { - this.randPosX = (double) blockpos.getX(); - this.randPosY = (double) blockpos.getY(); - this.randPosZ = (double) blockpos.getZ(); - } - } - - return true; - } - - } - - /** - * Execute a one shot task or start executing a continuous task - */ - public void startExecuting() { - this.theEntityCreature.getNavigator().tryMoveToXYZ(this.randPosX, this.randPosY, this.randPosZ, this.speed); - } - - /** - * Returns whether an in-progress EntityAIBase should continue executing - */ - public boolean continueExecuting() { - return !this.theEntityCreature.getNavigator().noPath(); - } - - private BlockPos getRandPos(World worldIn, Entity entityIn, int horizontalRange, int verticalRange) { - BlockPos blockpos = new BlockPos(entityIn); - BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos(); - int i = blockpos.getX(); - int j = blockpos.getY(); - int k = blockpos.getZ(); - float f = (float) (horizontalRange * horizontalRange * verticalRange * 2); - BlockPos blockpos1 = null; - - for (int l = i - horizontalRange; l <= i + horizontalRange; ++l) { - for (int i1 = j - verticalRange; i1 <= j + verticalRange; ++i1) { - for (int j1 = k - horizontalRange; j1 <= k + horizontalRange; ++j1) { - blockpos$mutableblockpos.setPos(l, i1, j1); - IBlockState iblockstate = worldIn.getBlockState(blockpos$mutableblockpos); - Block block = iblockstate.getBlock(); - - if (block == Blocks.WATER || block == Blocks.FLOWING_WATER) { - float f1 = (float) ((l - i) * (l - i) + (i1 - j) * (i1 - j) + (j1 - k) * (j1 - k)); - - if (f1 < f) { - f = f1; - blockpos1 = new BlockPos(blockpos$mutableblockpos); - } - } - } - } - } - - return blockpos1; - } -} \ No newline at end of file diff --git a/src/main/java/com/sosnitzka/ztic_addon/util/FuelHandler.java b/src/main/java/com/sosnitzka/ztic_addon/util/FuelHandler.java deleted file mode 100644 index 572692c..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/util/FuelHandler.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.sosnitzka.ztic_addon.util; - -import net.minecraft.item.ItemStack; -import net.minecraftforge.fml.common.IFuelHandler; -import org.apache.commons.lang3.RandomUtils; - -import static com.sosnitzka.ztic_addon.Items.fuel_brick; -import static com.sosnitzka.ztic_addon.Items.glimmercoal; -import static com.sosnitzka.ztic_addon.Items.lignite; - -public class FuelHandler implements IFuelHandler { - - @Override - public int getBurnTime(ItemStack fuel) { - if (fuel.getItem().equals(lignite)) { - return 200 * 2; - } - if (fuel.getItem().equals(fuel_brick)) { - return RandomUtils.nextInt(1, RandomUtils.nextInt(1, RandomUtils.nextInt(1, 32))) * 100; - } - if (fuel.getItem().equals(glimmercoal)) { - return RandomUtils.nextInt(1, RandomUtils.nextInt(1, RandomUtils.nextInt(16, 64))) * 200; - } - return 0; - } - -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/util/Generator.java b/src/main/java/com/sosnitzka/ztic_addon/util/Generator.java deleted file mode 100644 index 372f131..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/util/Generator.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.sosnitzka.ztic_addon.util; - -import com.sosnitzka.ztic_addon.world.ZWorldGenMinable; -import net.minecraft.block.properties.IProperty; -import net.minecraft.block.state.IBlockState; -import net.minecraft.init.Blocks; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -import java.util.Random; - -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 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) { - 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)); - } - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/util/StateMatcher.java b/src/main/java/com/sosnitzka/ztic_addon/util/StateMatcher.java deleted file mode 100644 index 25dfde8..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/util/StateMatcher.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.sosnitzka.ztic_addon.util; - -import com.google.common.base.Predicate; -import net.minecraft.block.properties.IProperty; -import net.minecraft.block.state.IBlockState; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - - -public class StateMatcher implements Predicate { - private final IBlockState state; - private final IProperty property; - private final Comparable value; - - private StateMatcher(IBlockState state, IProperty property, Comparable value) { - this.state = state; - this.property = property; - this.value = value; - } - - public static StateMatcher forState(IBlockState state, IProperty property, Comparable value) { - return new StateMatcher(state, property, value); - } - - public boolean apply(IBlockState state, BlockPos pos, World world) { - if (state != null) { - if (property != null && value != null) { - if (state.getBlock() == this.state.getBlock()) - if (checkLayerForBlocks(3, 3, -1, world, pos) || - checkLayerForBlocks(3, 3, 0, world, pos) || - checkLayerForBlocks(3, 3, 1, world, pos)) - return true; - - } else - return state.getBlock() == this.state.getBlock(); - } - return false; - } - - @Override - public boolean apply(IBlockState input) { - if (state != null) { - if (property != null && value != null) { - return state.getBlock() == this.state.getBlock() && state.getValue(property) == value; - } else - return state.getBlock() == this.state.getBlock(); - } - return false; - } - - private boolean checkLayerForBlocks(int X, int Z, int Y, World world, BlockPos origin) { - int x = 0, z = 0, dx = 0, dz = -1; - int t = Math.max(X, Z); - int maxI = t * t; - - for (int i = 0; i < maxI; i++) { - if ((-X / 2 <= x) && (x <= X / 2) && (-Z / 2 <= z) && (z <= Z / 2)) { - BlockPos blockPos = new BlockPos(origin.getX() + x, origin.getY() + Y, origin.getZ() + z); - if (blockPos == origin) - continue; - - if (i % 2 == 0) - continue; - - 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; - } - } - - if ((x == z) || ((x < 0) && (x == -z)) || ((x > 0) && (x == 1 - z))) { - t = dx; - dx = -dz; - dz = t; - } - x += dx; - z += dz; - } - - return false; - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/util/Utils.java b/src/main/java/com/sosnitzka/ztic_addon/util/Utils.java deleted file mode 100644 index 656d5ff..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/util/Utils.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.sosnitzka.ztic_addon.util; - - -import net.minecraft.block.Block; -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.fml.common.registry.GameRegistry; - -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 void registerBlockWithItem(Block block) { - GameRegistry.register(block); - GameRegistry.register(new ItemBlock(block).setRegistryName(block.getRegistryName())); - } - - public static void registerFluid(Fluid fluid) { - FluidRegistry.registerFluid(fluid); - 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); - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/world/ZWorldGen.java b/src/main/java/com/sosnitzka/ztic_addon/world/ZWorldGen.java deleted file mode 100644 index b2d94d0..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/world/ZWorldGen.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.sosnitzka.ztic_addon.world; - -import com.sosnitzka.ztic_addon.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.ztic_addon.Blocks.*; - -public class ZWorldGen implements IWorldGenerator { - private void nether(Random random, int x, int z, World world) { - Generator.generateNetherOre(adamantiteOre.getDefaultState(), random, x, z, world, 25, 1, 32, 2, 5); - Generator.generateNetherOre(tiberiumOre.getDefaultState(), random, x, z, world, 60, 1, 128, 2, 7); - Generator.generateNetherOre(palladiumOre.getDefaultState(), random, x, z, world, 21, 32, 64, 2, 5); - Generator.generateOre(prometheumOre.getDefaultState(), random, x, z, world, 21, 48, 64, 2, 4); - } - - private void world(Random random, int x, int z, World world) { - Generator.generateOre(slagironOre.getDefaultState(), random, x, z, world, 40, 8, 96, 5, 16); - Generator.generateOre(slaggoldOre.getDefaultState(), random, x, z, world, 20, 8, 48, 5, 9); - Generator.generateOre(ligniteOre.getDefaultState(), random, x, z, world, 40, 8, 96, 5, 15); - Generator.generateOre(Blocks.IRON_ORE.getDefaultState(), random, x, z, world, 40, 8, 96, 2, 14); - Generator.generateOre(basalt.getDefaultState(), Blocks.LAVA.getDefaultState(), random, x, z, world, 100, 8, 24, 2, 5); - Generator.generateOre(rottenGround.getDefaultState(), Blocks.DIRT.getDefaultState(), random, x, z, world, 25, 50, 70, 2, 15); - - Generator.generateOre(vibraniumOre.getDefaultState(), random, x, z, world, 18, 48, 64, 2, 4); - Generator.generateOre(karmesineOre.getDefaultState(), random, x, z, world, 30, 16, 48, 2, 5); - Generator.generateOre(bismuthOre.getDefaultState(), random, x, z, world, 50, 50, 130, 2, 4); - Generator.generateOre(mythrilOre.getDefaultState(), random, x, z, world, 18, 16, 32, 2, 4); - Generator.generateOre(meteoriteOre.getDefaultState(), random, x, z, world, 12, 0, 32, 2, 10); - Generator.generateOre(mindoriteOre.getDefaultState(), Blocks.STONE.getDefaultState(), BlockStone.VARIANT, BlockStone.EnumType.DIORITE, random, x, z, world, 200, 16, 96, 2, 4); - Generator.generateOre(arcaniteOre.getDefaultState(), Blocks.STONE.getDefaultState(), BlockStone.VARIANT, BlockStone.EnumType.GRANITE, random, x, z, world, 200, 16, 96, 2, 4); - Generator.generateOre(eterniteOre.getDefaultState(), Blocks.STONE.getDefaultState(), BlockStone.VARIANT, BlockStone.EnumType.ANDESITE, random, x, z, world, 200, 16, 96, 2, 4); - } - - private void end(Random random, int x, int z, World world) { - - Generator.generateEndOre(rubiumOre.getDefaultState(), random, x, z, world, 16, 10, 35, 2, 6); - Generator.generateEndOre(ignititeOre.getDefaultState(), random, x, z, world, 16, 20, 45, 2, 6); - Generator.generateEndOre(violiumOre.getDefaultState(), random, x, z, world, 16, 30, 55, 2, 6); - Generator.generateEndOre(titaniteOre.getDefaultState(), random, x, z, world, 16, 40, 65, 2, 6); - } - - - @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; - } - } -} diff --git a/src/main/java/com/sosnitzka/ztic_addon/world/ZWorldGenMinable.java b/src/main/java/com/sosnitzka/ztic_addon/world/ZWorldGenMinable.java deleted file mode 100644 index 85988ad..0000000 --- a/src/main/java/com/sosnitzka/ztic_addon/world/ZWorldGenMinable.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.sosnitzka.ztic_addon.world; - -import com.google.common.base.Predicate; -import com.sosnitzka.ztic_addon.util.StateMatcher; -import net.minecraft.block.state.IBlockState; -import net.minecraft.block.state.pattern.BlockMatcher; -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 java.util.Random; - -public class ZWorldGenMinable extends WorldGenMinable { - private final IBlockState oreBlock; - /** - * The number of com.sosnitzka.ztic_addon.blocks to generate. - */ - private final int numberOfBlocks; - private final Predicate predicate; - - public ZWorldGenMinable(IBlockState state, int blockCount) { - this(state, blockCount, BlockMatcher.forBlock(Blocks.STONE)); - } - - public ZWorldGenMinable(IBlockState state, int blockCount, Predicate predicate) { - super(state, blockCount, predicate); - this.oreBlock = state; - this.numberOfBlocks = blockCount; - this.predicate = predicate; - } - - @Override - public boolean generate(World worldIn, Random rand, BlockPos position) { - float f = rand.nextFloat() * (float) Math.PI; - double d0 = (double) ((float) (position.getX() + 8) + MathHelper.sin(f) * (float) this.numberOfBlocks / 8.0F); - double d1 = (double) ((float) (position.getX() + 8) - MathHelper.sin(f) * (float) this.numberOfBlocks / 8.0F); - double d2 = (double) ((float) (position.getZ() + 8) + MathHelper.cos(f) * (float) this.numberOfBlocks / 8.0F); - double d3 = (double) ((float) (position.getZ() + 8) - MathHelper.cos(f) * (float) this.numberOfBlocks / 8.0F); - double d4 = (double) (position.getY() + rand.nextInt(3) - 2); - double d5 = (double) (position.getY() + rand.nextInt(3) - 2); - - for (int i = 0; i < this.numberOfBlocks; ++i) { - float f1 = (float) i / (float) this.numberOfBlocks; - double d6 = d0 + (d1 - d0) * (double) f1; - double d7 = d4 + (d5 - d4) * (double) f1; - double d8 = d2 + (d3 - d2) * (double) f1; - double d9 = rand.nextDouble() * (double) this.numberOfBlocks / 16.0D; - double d10 = (double) (MathHelper.sin((float) Math.PI * f1) + 1.0F) * d9 + 1.0D; - double d11 = (double) (MathHelper.sin((float) Math.PI * f1) + 1.0F) * d9 + 1.0D; - int j = MathHelper.floor_double(d6 - d10 / 2.0D); - int k = MathHelper.floor_double(d7 - d11 / 2.0D); - int l = MathHelper.floor_double(d8 - d10 / 2.0D); - int i1 = MathHelper.floor_double(d6 + d10 / 2.0D); - int j1 = MathHelper.floor_double(d7 + d11 / 2.0D); - int k1 = MathHelper.floor_double(d8 + d10 / 2.0D); - - for (int l1 = j; l1 <= i1; ++l1) { - double d12 = ((double) l1 + 0.5D - d6) / (d10 / 2.0D); - - if (d12 * d12 < 1.0D) { - for (int i2 = k; i2 <= j1; ++i2) { - double d13 = ((double) i2 + 0.5D - d7) / (d11 / 2.0D); - - if (d12 * d12 + d13 * d13 < 1.0D) { - for (int j2 = l; j2 <= k1; ++j2) { - double d14 = ((double) j2 + 0.5D - d8) / (d10 / 2.0D); - - if (d12 * d12 + d13 * d13 + d14 * d14 < 1.0D) { - BlockPos blockpos = new BlockPos(l1, i2, j2); - - IBlockState state = worldIn.getBlockState(blockpos); - if (((StateMatcher) this.predicate).apply(state, blockpos, worldIn)) { - worldIn.setBlockState(blockpos, this.oreBlock, 2); - } - } - } - } - } - } - } - } - - return true; - } -} \ No newline at end of file -- cgit v1.2.3