11 Commits
1.0.1 ... 1.0.2

32 changed files with 304 additions and 157 deletions

View File

@@ -46,7 +46,7 @@ Hardness of each new ore in case you gonna ask...
* Titanite (5): Titanite, Rubium, Mythril, Mindorite
* Meteorite (6): Meteorite, Arcanite, Palladium, Karmesine
* Vibranium (7): Vibranium, Ignitite
* Adamantiute (8): Adamantite
* Adamantite (8): Adamantite
* It is up to you to find out which alloy you need to get to highest tier.
Balancing, more traits, more alloys, more ores:

View File

@@ -6,12 +6,18 @@ buildscript {
name = "forge"
url = "http://files.minecraftforge.net/maven"
}
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath 'net.minecraftforge.gradle:ForgeGradle:2.2-SNAPSHOT'
classpath 'gradle.plugin.com.matthewprenger:CurseGradle:1.0.7'
}
}
apply plugin: 'net.minecraftforge.gradle.forge'
apply plugin: "com.matthewprenger.cursegradle"
repositories {
mavenLocal()
@@ -27,8 +33,7 @@ repositories {
}
}
version = "1.0.1"
group = "com.sosnitzka.taiga" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
group = "com.sosnitzka" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = "taiga"
minecraft {
@@ -43,7 +48,7 @@ minecraft {
mappings = "snapshot_20160701"
// makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable.
replace "@VERSION@", project.version
replace "${version}", project.version
}
dependencies {
@@ -57,6 +62,41 @@ dependencies {
//compile files('libs/TConstruct-1.9-2.3.1.DEV.1d4c1de-deobf.jar')
}
sourceSets {
main {
resources {
srcDir 'resources'
}
}
}
task buildInfo {
def cmd = "git name-rev --tags --name-only \$(git rev-parse HEAD)"
def proc = cmd.execute()
proc.waitFor()
if (proc.exitValue() == 0) {
project.ext.tag = proc.text.trim()
}
if (System.getenv().BUILD_NUMBER != null) {
ext.buildNum = System.getenv().BUILD_NUMBER
}
project.ext.mc_version = project.minecraft.version.split('-')[0]
def cmd_changes = "git log `git describe --tags \$(git rev-list --tags --max-count=2) | sed -n '2p'`..`git describe --tags --abbrev=0` --oneline"
def proc_changes = cmd_changes.execute()
proc_changes.waitFor()
if (proc_changes.exitValue() == 0) {
project.ext.changes = proc_changes.text.trim()
} else {
project.ext.changes = ""
}
}
version = tag ? "${mc_version}-${tag}" : "${mc_version}-snapshot"
//noinspection GroovyAssignabilityCheck
processResources {
// this will ensure that this task is redone when the versions change.
@@ -76,3 +116,27 @@ processResources {
exclude 'mcmod.info'
}
}
task deobfJar(type: Jar) {
from sourceSets.main.output
classifier = 'deobf'
}
artifacts {
archives deobfJar
}
curseforge {
apiKey = System.getenv().CURSE_API_KEY ? System.getenv().CURSE_API_KEY : "devBuild"
project {
id = '247661'
changelog = project.changes // A file can also be set using: changelog = file('changelog.txt')
releaseType = 'release'
mainArtifact(jar) {
displayName = "taiga-$project.tag"
}
}
}

Binary file not shown.

View File

@@ -1,6 +1,6 @@
#Mon Sep 14 12:28:28 PDT 2015
#Wed Jul 20 03:42:23 CEST 2016
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.7-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-2.13-bin.zip

52
gradlew vendored
View File

@@ -6,12 +6,30 @@
##
##############################################################################
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=""
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=""
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
@@ -30,6 +48,7 @@ die ( ) {
cygwin=false
msys=false
darwin=false
nonstop=false
case "`uname`" in
CYGWIN* )
cygwin=true
@@ -40,31 +59,11 @@ case "`uname`" in
MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
esac
# For Cygwin, ensure paths are in UNIX format before anything is touched.
if $cygwin ; then
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
fi
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >&-
APP_HOME="`pwd -P`"
cd "$SAVED" >&-
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
@@ -90,7 +89,7 @@ location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
@@ -114,6 +113,7 @@ fi
if $cygwin ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`

8
gradlew.bat vendored
View File

@@ -8,14 +8,14 @@
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
@@ -46,7 +46,7 @@ echo location of your Java installation.
goto fail
:init
@rem Get command-line arguments, handling Windowz variants
@rem Get command-line arguments, handling Windows variants
if not "%OS%" == "Windows_NT" goto win9xME_args
if "%@eval[2+2]" == "4" goto 4NT_args

View File

@@ -15,7 +15,8 @@ import java.lang.reflect.Field;
import java.util.Arrays;
import static com.sosnitzka.taiga.MaterialTraits.*;
import static com.sosnitzka.taiga.util.Utils.*;
import static com.sosnitzka.taiga.util.Utils.PREFIX_BLOCK;
import static com.sosnitzka.taiga.util.Utils.PREFIX_ORE;
import static slimeknights.tconstruct.library.utils.HarvestLevels.*;
public class Blocks {
@@ -90,8 +91,6 @@ public class Blocks {
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();

View File

@@ -102,10 +102,10 @@ public class Items {
}
}
}
OreDictionary.registerOre("nuggetIron", iron_nugget);
OreDictionary.registerOre("ingotIron", slagironIngot);
OreDictionary.registerOre("ingotGold", slaggoldIngot);
}
}

View File

@@ -46,6 +46,7 @@ public class MaterialTraits {
public static final AbstractTrait randomize = new TraitRandomize();
public static final AbstractTrait reviving = new TraitReviving();
public static final AbstractTrait melting = new TraitMelting();
public static final AbstractTrait traditional = new TraitTraditional();
public static Material arcanite = new Material("arcanite", TextFormatting.LIGHT_PURPLE).addTrait(arcane, HeadMaterialStats.TYPE).addTrait(blind, HandleMaterialStats.TYPE);
@@ -62,15 +63,16 @@ public class MaterialTraits {
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 eternite = new Material("eternite", TextFormatting.AQUA).addTrait(writable2); //.addTrait(traditional)
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 imperomite = new Material("imperomite", TextFormatting.DARK_RED).addTrait(cascade);
public static Material fractoryte = new Material("fractoryte", TextFormatting.DARK_RED).addTrait(fracture);
public static Material noctunyx = new Material("noctunyx", TextFormatting.LIGHT_PURPLE).addTrait(hollow, 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 seismodium = new Material("seismodium", TextFormatting.WHITE).addTrait(heroic).addTrait(fragile);
;
public static Material aegisalt = new Material("aegisalt", TextFormatting.AQUA).addTrait(analysing);
public static Material ultranite = new Material("ultranite", TextFormatting.AQUA).addTrait(pulverizing);
public static Material bysmuid = new Material("bysmuid", TextFormatting.AQUA).addTrait(organizing, HandleMaterialStats.TYPE).addTrait(melting, HeadMaterialStats.TYPE);

View File

@@ -31,7 +31,7 @@ import static slimeknights.tconstruct.library.utils.HarvestLevels.*;
public class TAIGA {
public static final String MODID = "taiga";
public static final String VERSION = "@VERSION@";
public static final String VERSION = "${version}";
@SidedProxy(clientSide = "com.sosnitzka.taiga.proxy.ClientProxy", serverSide = "com.sosnitzka.taiga.proxy.ServerProxy")
public static ServerProxy proxy;

View File

@@ -34,7 +34,7 @@ public class BlockTiberium extends BasicBlock {
@Override
public int quantityDropped(IBlockState state, int fortune, Random random) {
return MathHelper.getRandomIntegerInRange(random, 1, MathHelper.getRandomIntegerInRange(random, 1, 5 + fortune));
return MathHelper.getRandomIntegerInRange(random, 1, MathHelper.getRandomIntegerInRange(random, 2, 4 + fortune));
}
@Override

View File

@@ -12,11 +12,14 @@ 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(slaggoldOre, new ItemStack(slaggoldIngot), 1.0F);
GameRegistry.addSmelting(slagironIngot, new ItemStack(iron_nugget), 0);
GameRegistry.addSmelting(slaggoldIngot, new ItemStack(Items.GOLD_NUGGET), 0);
GameRegistry.addSmelting(tiberiumShardInstable, new ItemStack(tiberiumShardStable), 0.2F);
GameRegistry.addSmelting(tiberiumOre, new ItemStack(tiberiumShardStable, 3), RandomUtils.nextFloat(0F, 2F));
GameRegistry.addSmelting(titaniteOre, new ItemStack(titaniteIngot), RandomUtils.nextFloat(0F, 2F));
// Removed until TiC put its own ores back in.
/* 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));
@@ -29,9 +32,9 @@ public class Smelting {
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));
*/
}
}

View File

@@ -34,7 +34,7 @@ public class TraitAnalysing extends AbstractTrait {
@SubscribeEvent
public void onBlockBreak(BlockEvent.BreakEvent event) {
EntityPlayer player = event.getPlayer();
if (player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) {
if (!event.getWorld().isRemote && player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) {
event.setExpToDrop(this.getUpdateXP(event.getExpToDrop()));
}

View File

@@ -20,8 +20,10 @@ public class TraitBlind extends AbstractTrait {
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));
if (random.nextBoolean())
player.addPotionEffect(new PotionEffect(MobEffects.BLINDNESS, random.nextInt(200) + 100));
else
player.addPotionEffect(new PotionEffect(MobEffects.WEAKNESS, random.nextInt(200) + 100));
}
}
@@ -29,8 +31,10 @@ public class TraitBlind extends AbstractTrait {
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));
if (random.nextBoolean())
player.addPotionEffect(new PotionEffect(MobEffects.BLINDNESS, random.nextInt(400) + 200));
else
player.addPotionEffect(new PotionEffect(MobEffects.WEAKNESS, random.nextInt(400) + 200));
}
}

View File

@@ -18,13 +18,12 @@ public class TraitCascade extends AbstractTrait {
@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) {
if (!world.isRemote && tool.canHarvestBlock(state) && f <= 0.1) {
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--) {
for (int i = random.nextInt((int) Math.max(ToolHelper.getCurrentDurability(tool) * 1.5f, 100) + 10); i > 0; i--) {
int r = random.nextInt(3);
int d = random.nextBoolean() ? 1 : -1;
if (r == 0) x += d;
@@ -42,16 +41,7 @@ public class TraitCascade extends AbstractTrait {
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;
}
}

View File

@@ -23,6 +23,8 @@ import slimeknights.tconstruct.library.utils.TinkerUtil;
public class TraitCurvature extends AbstractTrait {
private static BlockPos pos = new BlockPos(0, 0, 0);
public TraitCurvature() {
super("curvature", TextFormatting.BLACK);
MinecraftForge.EVENT_BUS.register(this);
@@ -30,39 +32,39 @@ public class TraitCurvature extends AbstractTrait {
@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);
if (player.worldObj.isRemote) {
return;
}
if (random.nextFloat() <= 0.01 && world.provider.getDimension() != -1) {
teleport(player, world, 5);
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);
}
if (random.nextFloat() <= 0.3) {
target.playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F);
changepos(player, target);
}
}
@SubscribeEvent
public void onMobDrops(LivingDropsEvent event) {
World w = event.getEntity().getEntityWorld();
if (event.getSource().getEntity() instanceof EntityPlayer) {
if (!w.isRemote && 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)) {
if (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) {
private void teleport(EntityLivingBase e, World w, int max) {
int x = e.getPosition().getX() + random.nextInt(250) - 125;
int y = e.getPosition().getY();
int z = e.getPosition().getZ() + random.nextInt(250) - 125;
@@ -76,4 +78,11 @@ public class TraitCurvature extends AbstractTrait {
e.setPosition(x, y, z);
}
private void changepos(EntityLivingBase player, EntityLivingBase target) {
BlockPos pp = new BlockPos(player.getPosition());
BlockPos tp = new BlockPos(target.getPosition());
player.setPosition(tp.getX(), tp.getY(), tp.getZ());
target.setPosition(pp.getX(), pp.getY(), pp.getZ());
}
}

View File

@@ -24,7 +24,7 @@ public class TraitDiffuse extends AbstractTrait {
@SubscribeEvent
public void onXpDrop(LivingExperienceDropEvent event) {
EntityPlayer player = event.getAttackingPlayer();
if (player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) {
if (!event.getEntity().getEntityWorld().isRemote && player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) {
event.setDroppedExperience(0);
}
@@ -33,7 +33,7 @@ public class TraitDiffuse extends AbstractTrait {
@SubscribeEvent
public void onBlockBreak(BlockEvent.BreakEvent event) {
EntityPlayer player = event.getPlayer();
if (player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) {
if (!player.getEntityWorld().isRemote && player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) {
event.setExpToDrop(this.getUpdateXP(event.getExpToDrop()));
}
@@ -42,9 +42,9 @@ public class TraitDiffuse extends AbstractTrait {
@SubscribeEvent
public void onMobDrops(LivingDropsEvent event) {
World w = event.getEntity().getEntityWorld();
if (event.getSource().getEntity() instanceof EntityPlayer) {
if (!w.isRemote && 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)) {
if (event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) {
event.getDrops().clear();
}
}

View File

@@ -20,13 +20,15 @@ public class TraitDissolving extends AbstractTrait {
// high chance to remove XP, low chance to double,triple or quatruple dropped Experience
@SubscribeEvent
public void onXpDrop(LivingExperienceDropEvent event) {
EntityPlayer player = event.getAttackingPlayer();
float r = random.nextFloat();
if (r <= 0.75 && player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) {
event.setDroppedExperience(0);
}
if (r > 0.95 && player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) {
event.setDroppedExperience(event.getDroppedExperience() * (random.nextInt(3) + 2));
if (!event.getEntity().getEntityWorld().isRemote) {
EntityPlayer player = event.getAttackingPlayer();
float r = random.nextFloat();
if (r <= 0.75 && player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) {
event.setDroppedExperience(0);
}
if (r > 0.95 && player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) {
event.setDroppedExperience(event.getDroppedExperience() * (random.nextInt(3) + 2));
}
}
}
}

View File

@@ -33,7 +33,7 @@ public class TraitFragile extends AbstractTrait {
sx = x = pos.getX();
sy = y = pos.getY();
sz = z = pos.getZ();
for (int i = random.nextInt(50) + 50; i > 0; i--) {
for (int i = random.nextInt(10) + 9; i > 0; i--) {
int r = random.nextInt(3);
int d = random.nextBoolean() ? 1 : -1;
if (r == 0) x += d;

View File

@@ -30,9 +30,9 @@ public class TraitGarishly extends AbstractTrait {
@SubscribeEvent
public void onMobDrops(LivingDropsEvent event) {
World w = event.getEntity().getEntityWorld();
if (event.getSource().getEntity() instanceof EntityPlayer) {
if (!w.isRemote && 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)) {
if (event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) {
int r = random.nextInt(5);
ItemStack i = null;

View File

@@ -38,9 +38,9 @@ public class TraitHollow extends AbstractTrait {
@SubscribeEvent
public void onMobDrops(LivingDropsEvent event) {
World w = event.getEntity().getEntityWorld();
if (event.getSource().getEntity() instanceof EntityPlayer) {
if (!w.isRemote && 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)) {
if (random.nextFloat() <= 0.9 && event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) {
event.getDrops().clear();
}
}

View File

@@ -56,14 +56,15 @@ public class TraitInstable extends AbstractTrait {
@SubscribeEvent
public void onMobDrops(LivingDropsEvent event) {
World w = event.getEntity().getEntityWorld();
if (event.getSource().getEntity() instanceof EntityPlayer) {
if (!w.isRemote && 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)) {
if (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);
}

View File

@@ -13,12 +13,14 @@ import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.world.BlockEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import slimeknights.tconstruct.library.traits.AbstractTrait;
import slimeknights.tconstruct.library.utils.TagUtil;
import slimeknights.tconstruct.library.utils.TinkerUtil;
import slimeknights.tconstruct.library.utils.ToolHelper;
public class TraitNatureBound extends AbstractTrait {
public static DamageSource splinter = new DamageSource("splinter").setDamageBypassesArmor();
private static int chance = 10;
private static int chance = 20;
public TraitNatureBound() {
super("naturebound", TextFormatting.GREEN);
@@ -34,8 +36,8 @@ public class TraitNatureBound extends AbstractTrait {
@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);
if (!world.isRemote && entity instanceof EntityLivingBase && random.nextInt(30 * chance) == 0) {
ToolHelper.healTool(tool, random.nextInt(9) + 1, (EntityLivingBase) entity);
}
}
@@ -43,7 +45,7 @@ public class TraitNatureBound extends AbstractTrait {
@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)) {
if (!e.getWorld().isRemote && TinkerUtil.hasTrait(TagUtil.getTagSafe(e.getPlayer().getHeldItemMainhand()), identifier) && random.nextFloat() <= .07 && (b == Blocks.DIRT || b == Blocks.GRASS || b == Blocks.LOG || b == Blocks.LOG2 || b == Blocks.STONE)) {
e.setCanceled(true);
e.getPlayer().playSound(SoundEvents.ENTITY_ENDERMEN_TELEPORT, 1.0F, 1.0F);
}

View File

@@ -13,7 +13,7 @@ import slimeknights.tconstruct.library.utils.ToolHelper;
public class TraitOrganizing extends AbstractTrait {
private static final float chance = 0.1f;
private static final float chance = 0.02f;
public TraitOrganizing() {
super("organizing", TextFormatting.GREEN);

View File

@@ -21,7 +21,7 @@ public class TraitSofty extends AbstractTrait {
@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) {
if (!world.isRemote && state.getMaterial().equals(Material.GROUND) && random.nextFloat() < chance) {
ToolHelper.healTool(tool, random.nextInt(10), player);
}
}

View File

@@ -0,0 +1,16 @@
package com.sosnitzka.taiga.traits;
import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.common.MinecraftForge;
import slimeknights.tconstruct.library.traits.AbstractTrait;
public class TraitTraditional extends AbstractTrait {
public TraitTraditional() {
super("traditional", TextFormatting.GREEN);
MinecraftForge.EVENT_BUS.register(this);
}
}

View File

@@ -46,9 +46,9 @@ public class TraitUncertain extends AbstractTrait {
@SubscribeEvent
public void onMobDrops(LivingDropsEvent event) {
World w = event.getEntity().getEntityWorld();
if (event.getSource().getEntity() instanceof EntityPlayer) {
if (!w.isRemote && 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)) {
if (event.getEntity() instanceof EntityMob && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), identifier)) {
ItemStack i = new ItemStack(Items.COAL, random.nextInt(4));
if (random.nextBoolean()) {
int r = random.nextInt(4);

View File

@@ -11,13 +11,13 @@ public class FuelHandler implements IFuelHandler {
@Override
public int getBurnTime(ItemStack fuel) {
if (fuel.getItem().equals(lignite)) {
return 200 * 8;
}
if (fuel.getItem().equals(lignite2)) {
return 200 * 6;
}
if (fuel.getItem().equals(lignite2)) {
return 200 * 4;
}
if (fuel.getItem().equals(lignite3)) {
return 200 * 10;
return 200 * 8;
}
if (fuel.getItem().equals(fuel_brick)) {
return 200 * 16;

View File

@@ -14,36 +14,36 @@ 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);
Generator.generateNetherOre(adamantiteOre.getDefaultState(), random, x, z, world, 30, 1, 32, 2, 8);
Generator.generateNetherOre(tiberiumOre.getDefaultState(), random, x, z, world, 20, 1, 128, 7, 15);
Generator.generateNetherOre(palladiumOre.getDefaultState(), random, x, z, world, 30, 32, 64, 2, 7);
Generator.generateNetherOre(prometheumOre.getDefaultState(), random, x, z, world, 30, 32, 64, 2, 6);
}
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(slagironOre.getDefaultState(), random, x, z, world, 45, 8, 96, 5, 12);
Generator.generateOre(slaggoldOre.getDefaultState(), random, x, z, world, 30, 8, 48, 4, 8);
Generator.generateOre(ligniteOre.getDefaultState(), random, x, z, world, 30, 8, 96, 5, 12);
Generator.generateOre(Blocks.IRON_ORE.getDefaultState(), random, x, z, world, 40, 8, 96, 2, 8);
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);
Generator.generateOre(vibraniumOre.getDefaultState(), random, x, z, world, 30, 48, 64, 2, 8);
Generator.generateOre(karmesineOre.getDefaultState(), random, x, z, world, 35, 16, 48, 2, 7);
Generator.generateOre(bismuthOre.getDefaultState(), random, x, z, world, 60, 50, 130, 2, 4);
Generator.generateOre(mythrilOre.getDefaultState(), random, x, z, world, 33, 16, 32, 2, 8);
Generator.generateOre(meteoriteOre.getDefaultState(), random, x, z, world, 10, 0, 32, 2, 25);
Generator.generateOre(mindoriteOre.getDefaultState(), Blocks.STONE.getDefaultState(), BlockStone.VARIANT, BlockStone.EnumType.DIORITE, random, x, z, world, 150, 16, 96, 2, 8);
Generator.generateOre(arcaniteOre.getDefaultState(), Blocks.STONE.getDefaultState(), BlockStone.VARIANT, BlockStone.EnumType.GRANITE, random, x, z, world, 150, 16, 96, 2, 8);
Generator.generateOre(eterniteOre.getDefaultState(), Blocks.STONE.getDefaultState(), BlockStone.VARIANT, BlockStone.EnumType.ANDESITE, random, x, z, world, 150, 16, 96, 2, 8);
}
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);
Generator.generateEndOre(rubiumOre.getDefaultState(), random, x, z, world, 18, 10, 35, 2, 8);
Generator.generateEndOre(ignititeOre.getDefaultState(), random, x, z, world, 18, 20, 45, 2, 8);
Generator.generateEndOre(violiumOre.getDefaultState(), random, x, z, world, 18, 30, 55, 2, 8);
Generator.generateEndOre(titaniteOre.getDefaultState(), random, x, z, world, 18, 40, 65, 2, 8);
}

View File

@@ -167,33 +167,61 @@ fluid.tconstruct.nitro_fluid.name=Flüssiges Nitro
fluid.tconstruct.anthracite_fluid.name=Flüssiges Anthracit
fluid.tconstruct.spectrum_fluid.name=Spektrumfluid
modifier.analysing.name=Analysing
modifier.arcane.name=Arcane
modifier.organizing.name=Organisieren
modifier.analysing.name=Analysierend
modifier.analysing.desc=§oIch kenne dich!§r\ERFAHRRRUNG!
modifier.arcane.name=Arkan
modifier.arcane.desc=§oEs ist dunkel, zeit für den Bergbau!§r\Die Nacht repariert!
modifier.organizing.name=Organisch
modifier.organizing.desc=§oIch Mensch, du Baum!§r\Kann zu Holz werden.
modifier.blind.name=Blind
modifier.bright.name=Bright
modifier.cascade.name=Cascade
modifier.blind.desc=§oEs ist zu dunkel!§r\Es wird immer Dunkler.
modifier.bright.name=Hell
modifier.bright.desc=§oHell ist es draußen!§r\Kraftvoll sind wir!
modifier.cascade.name=Kaskade
modifier.cascade.desc=§oHier vibriert was!§r\Erdbeben!
modifier.curvature.name=Curvature
modifier.dark.name=Dark
modifier.diffuse.name=Diffuse
modifier.dissolving.name=Dissolving
modifier.fracture.name=Fracture
modifier.fragile.name=Fragile
modifier.garishly.name=Garishly
modifier.glimmer.name=Glimmer
modifier.haunted.name=Haunted
modifier.heroic.name=Heroic
modifier.hollow.name=Hollow
modifier.instable.name=Instable
modifier.naturebound.name=Naturebound
modifier.pulverizing.name=Pulverizing
modifier.randomize.name=Randomize
modifier.resonance.name=Resonance
modifier.slaughtering.name=Slaughtering
modifier.softy.name=Softy
modifier.uncertain.name=Uncertain
modifier.curvature.desc=§oEs zerrt an mir!§r\Teleport!
modifier.dark.name=Dunkel
modifier.dark.desc=§oDüsternis.§r\Die Nacht macht mich stark.
modifier.diffuse.name=Diffus
modifier.diffuse.desc=§oErfahrung!!!!?§r\Viel oder wenig Erfahrung!
modifier.dissolving.name=Auflösend
modifier.dissolving.desc=§oScheiss auf Erfahrung.§r\Erfahrung wechselt.
modifier.fracture.name=Fraktur
modifier.fracture.desc=§oImmer tiefer graben!§r\Hier wird gebohrt!
modifier.fragile.name=Fragil
modifier.fragile.desc=§oErdbeben, was gehtn!?§r\Schwächt Blöcke.
modifier.garishly.name=Feurig
modifier.garishly.desc=§oIt's so hot.§r\Feuer Feuer! Feueritems!
modifier.glimmer.name=Glühend
modifier.glimmer.desc=§oDunkelheit, ich lach dich aus!§r\Nachtsicht!
modifier.haunted.name=BSE
modifier.haunted.desc=§oKrank!'§r\RINDERWAHN!
modifier.heroic.name=Heldenhaft
modifier.heroic.desc=§oBis zum Tod.§r\Am Ende wirst du stark!
modifier.hollow.name=Hohl
modifier.hollow.desc=§oBraindead!§r\Gehirnmatsche
modifier.instable.name=Instabil
modifier.instable.desc=§oWTF?§r\Es ist so instabil und brennt auf der Haut.
modifier.naturebound.name=Naturverbunden
modifier.naturebound.desc=§oDu bist eins mit der Natur!§r\Repariert und so.
modifier.pulverizing.name=Pulverisierend
modifier.pulverizing.desc=§oHulk... Draufhauen!§r\Mach alles kurz und klein.
modifier.randomize.name=Zufall
modifier.randomize.desc=§oWer bist du??§r\Zufall bei Mobs und Metallen.
modifier.resonance.name=Resonanz
modifier.resonance.desc=§oVibranium!!! Baaaam!§r\Nimm das.
modifier.slaughtering.name=Schlachten
modifier.slaughtering.desc=§oOm nom nom!§r\Wer braucht schon Erfahrung wenn man Fleisch hat?
modifier.softy.name=Soft
modifier.softy.desc=§oIch hab ein Glas vol Dreck!§r\Dreck heilt.
modifier.uncertain.name=Unsicher
modifier.uncertain.desc=§oHier stimmt was nicht.§r\Immerhin ist es nicht instabil...oder?
modifier.reviving.name=Wiederbelebend
modifier.reviving.desc=§oTöte es doch endlich!§r\Zombies!?
modifier.melting.name=Schmelzend
modifier.melting.desc=§oUnendlich heiß!§r\Burrrrrrn!
item.glimmercoal.name=Glimmerkohle
item.glimmer_pearl.name=Glimmerperle

View File

@@ -168,32 +168,59 @@ item.proxideum_ingot.name=Proxideum Ingot
item.astrium_ingot.name=Astrium Ingot
modifier.analysing.name=Analysing
modifier.analysing.desc=§oI know what you are!§r\nKill them, get all their knowledge, ignore loot.
modifier.arcane.name=Arcane
modifier.arcane.desc=§oIt's dark outside, let's go mining!§r\Nighttime is good for tool health.
modifier.organizing.name=Organizing
modifier.organizing.desc=§oNow you are tree!§r\Possibly creates wood.
modifier.blind.name=Blind
modifier.blind.desc=§oIt's a dark night, I can't even see!§r\Darkness brings weakness or more darkness.
modifier.bright.name=Bright
modifier.bright.desc=§oIt's a bright day, I feel strong!§r\Daytime let you glow.
modifier.cascade.name=Cascade
modifier.cascade.desc=§oThis tool is vibrating!§r\Breaks blocks like an earthquake.
modifier.curvature.name=Curvature
modifier.curvature.desc=§oIt pulls me back and forth!§r\Sometimes it teleports you or your surroundings.
modifier.dark.name=Dark
modifier.dark.desc=§oIt's dark outside, let's fight!§r\Nighttime makes you stronger.
modifier.diffuse.name=Diffuse
modifier.diffuse.desc=§oSo much EXP... or nothing?§r\Regular blocks drop exp, but loot is probably gone.
modifier.dissolving.name=Dissolving
modifier.dissolving.desc=§oI dont care about missing Experience.§r\Switching amount of experience.
modifier.fracture.name=Fracture
modifier.fracture.desc=§oYou gonna dig deep!§r\Do you have a drill or something?
modifier.fragile.name=Fragile
modifier.fragile.desc=§oKind of earthquake.§r\Blocks are getting weak and your tool drops health.
modifier.garishly.name=Garishly
modifier.garishly.desc=§oIt's so hot.§r\Thei actually drop fiery stuff.
modifier.glimmer.name=Glimmer
modifier.glimmer.desc=§oDarkness? Not for me!§r\Sometimes you get night vision.
modifier.haunted.name=Haunted
modifier.haunted.desc=§oHit 'em to get 'em crazy!'§r\Fucking mad cow desease.
modifier.heroic.name=Heroic
modifier.heroic.desc=§oUntil you'll die.§r\At the end, you grow stronger.
modifier.hollow.name=Hollow
modifier.hollow.desc=§oBraindead!§r\Brain smash!
modifier.instable.name=Instable
modifier.instable.desc=§oWhat the fuck?§r\Seriously, this is instable!
modifier.naturebound.name=Naturebound
modifier.naturebound.desc=§oYou are one with your surrounding!§r\Repairs in name of the nature.
modifier.pulverizing.name=Pulverizing
modifier.pulverizing.desc=§oHulk... Smash!§r\Destroy the stuff you mine.
modifier.randomize.name=Randomize
modifier.randomize.desc=§oWho are you?§r\Randomizes entities and vanilla metal-ores.
modifier.resonance.name=Resonance
modifier.resonance.desc=§oVibranium!!! Baaaam!§r\Take that smash!
modifier.slaughtering.name=Slaughtering
modifier.slaughtering.desc=§oYum yum!§r\Who needs EXP if you can have meat?
modifier.softy.name=Softy
modifier.softy.desc=§oI love dirt!§r\Dirt heals!
modifier.uncertain.name=Uncertain
modifier.uncertain.desc=§oSome kind of risky to use.§r\At least it's not instable...or?
modifier.reviving.name=Reviving
modifier.reviving.desc=§oPlease kill it already!§r\Zombies!?
modifier.melting.name=Melting
modifier.melting.desc=§oSo fucking hot!§r\Burrrrrrn!
item.glimmercoal.name=Glimmercoal

View File

@@ -2,11 +2,11 @@
"modid": "taiga",
"name": "Tinkers Alloying Addon",
"description": "An addon for Tinkers' Construct! 32 New Materials including 16 various alloys.",
"version": "1.0.1",
"mcversion": "1.10.2",
"version": "${version}",
"mcversion": "${mcversion}",
"url": "https://github.com/Zkaface/TAIGA",
"updateUrl": "",
"authorList": ["Zkaface", "chefe4ever"],
"authorList": ["Zkaface", "Chefe"],
"credits": "Chefe. He's there, if you need him. Sometimes.",
"logoFile": "",
"screenshots": [],