summaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorRobert Sosnitzka <robert.sosnitzka@gmail.com>2016-06-20 01:01:07 +0200
committerRobert Sosnitzka <robert.sosnitzka@gmail.com>2016-06-20 01:01:07 +0200
commit0506ec6dbf1817ee129c98d5525f1c83eb12547b (patch)
tree5913fc58691371be2675d6769ca1fa0a34ffbaff /src/main/java
parent30dba5a0c435060904cbdb62f319b56ae86557dc (diff)
New Traits + Balancing.
Cascade: Random breaking of blocks around initial block. Fracture: Random breaking of max. 9 blocks in direction. Dark: Heals tool, but gives weak- and darkness. Glimmer: Gives a chance of night vision effect. Analysing: ++More EXP, less drops!
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/sosnitzka/ztic_addon/Materials.java10
-rw-r--r--src/main/java/com/sosnitzka/ztic_addon/ZTiC.java2
-rw-r--r--src/main/java/com/sosnitzka/ztic_addon/traits/TraitCascade.java55
-rw-r--r--src/main/java/com/sosnitzka/ztic_addon/traits/TraitDark.java43
-rw-r--r--src/main/java/com/sosnitzka/ztic_addon/traits/TraitFracture.java2
-rw-r--r--src/main/java/com/sosnitzka/ztic_addon/traits/TraitGarishly.java8
-rw-r--r--src/main/java/com/sosnitzka/ztic_addon/traits/TraitGlimmer.java18
-rw-r--r--src/main/java/com/sosnitzka/ztic_addon/traits/TraitResonance.java4
8 files changed, 128 insertions, 14 deletions
diff --git a/src/main/java/com/sosnitzka/ztic_addon/Materials.java b/src/main/java/com/sosnitzka/ztic_addon/Materials.java
index 2aaca81..4a31175 100644
--- a/src/main/java/com/sosnitzka/ztic_addon/Materials.java
+++ b/src/main/java/com/sosnitzka/ztic_addon/Materials.java
@@ -10,7 +10,7 @@ import static com.sosnitzka.ztic_addon.ZTiC.*;
public class Materials {
public static Material arcanite = new Material("arcanite", TextFormatting.LIGHT_PURPLE);
public static Material tiberium = new Material("tiberium", TextFormatting.LIGHT_PURPLE).addTrait(instable);
- public static Material prometheum = new Material("prometheum", TextFormatting.LIGHT_PURPLE);
+ public static Material prometheum = new Material("prometheum", TextFormatting.LIGHT_PURPLE).addTrait(dark);
public static Material rubium = new Material("rubium", TextFormatting.LIGHT_PURPLE);
public static Material violium = new Material("violium", TextFormatting.DARK_GREEN).addTrait(analysing);
public static Material bismuth = new Material("bismuth", TextFormatting.DARK_GREEN);
@@ -23,7 +23,7 @@ public class Materials {
public static Material ignitite = new Material("ignitite", TextFormatting.AQUA);
public static Material palladium = new Material("palladium", TextFormatting.AQUA);
public static Material eternite = new Material("eternite", TextFormatting.AQUA);
- public static Material mythril = new Material("mythril", TextFormatting.AQUA).addTrait(pulverizing, HeadMaterialStats.TYPE);
+ public static Material mythril = new Material("mythril", TextFormatting.GRAY).addTrait(pulverizing, HeadMaterialStats.TYPE);
public static Material astrium = new Material("astrium", TextFormatting.LIGHT_PURPLE);
public static Material nitronite = new Material("nitronite", TextFormatting.LIGHT_PURPLE);
@@ -32,10 +32,10 @@ public class Materials {
public static Material imperomite = new Material("imperomite", TextFormatting.DARK_GREEN);
public static Material cryptogen = new Material("cryptogen", TextFormatting.DARK_GREEN);
public static Material fractoryte = new Material("fractoryte", TextFormatting.DARK_RED).addTrait(frature, HeadMaterialStats.TYPE);
- public static Material seismodium = new Material("seismodium", TextFormatting.DARK_GREEN);
+ public static Material seismodium = new Material("seismodium", TextFormatting.DARK_GREEN).addTrait(cascade, HeadMaterialStats.TYPE);
public static Material terramite = new Material("terramite", TextFormatting.GRAY);
- public static Material lumixyl = new Material("lumixyl", TextFormatting.GRAY).addTrait(glimmer);
- public static Material solarium = new Material("solarium", TextFormatting.GRAY).addTrait(garishly);
+ public static Material lumixyl = new Material("lumixyl", TextFormatting.YELLOW).addTrait(glimmer);
+ public static Material solarium = new Material("solarium", TextFormatting.RED).addTrait(garishly);
public static Material dyonite = new Material("dyonite", TextFormatting.GRAY);
public static Material ultranite = new Material("ultranite", TextFormatting.AQUA);
public static Material nucleum = new Material("nucleum", TextFormatting.AQUA);
diff --git a/src/main/java/com/sosnitzka/ztic_addon/ZTiC.java b/src/main/java/com/sosnitzka/ztic_addon/ZTiC.java
index 0ab074a..13ec347 100644
--- a/src/main/java/com/sosnitzka/ztic_addon/ZTiC.java
+++ b/src/main/java/com/sosnitzka/ztic_addon/ZTiC.java
@@ -43,6 +43,8 @@ public class ZTiC {
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 dark = new TraitDark();
static final String MODID = "ztic_addon";
static final String VERSION = "@VERSION@";
diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitCascade.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitCascade.java
new file mode 100644
index 0000000..0d0681e
--- /dev/null
+++ b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitCascade.java
@@ -0,0 +1,55 @@
+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;
+
+/**
+ * Created by Robert on 03.06.2016.
+ */
+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 = pos.getX();
+ double y = pos.getY();
+ double z = pos.getZ();
+ for (int i = random.nextInt(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);
+ if (world.getBlockState(nextBlock) == world.getBlockState(pos)) {
+ world.destroyBlock(nextBlock, true);
+ x = nextBlock.getX();
+ y = nextBlock.getY();
+ z = nextBlock.getZ();
+ ToolHelper.damageTool(tool, random.nextInt(2), 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/TraitDark.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitDark.java
new file mode 100644
index 0000000..394746c
--- /dev/null
+++ b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitDark.java
@@ -0,0 +1,43 @@
+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 net.minecraftforge.common.MinecraftForge;
+import slimeknights.tconstruct.library.traits.AbstractTrait;
+import slimeknights.tconstruct.library.utils.ToolHelper;
+
+/**
+ * Created by Robert on 03.06.2016.
+ */
+public class TraitDark extends AbstractTrait {
+
+ public TraitDark() {
+ super("dark", TextFormatting.DARK_GRAY);
+ 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.1) {
+ player.addPotionEffect(new PotionEffect(MobEffects.BLINDNESS, 300));
+ player.addPotionEffect(new PotionEffect(MobEffects.WEAKNESS, 300));
+ ToolHelper.healTool(tool, random.nextInt(51) + 10, null);
+ }
+ }
+
+
+ @Override
+ public void afterHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean wasCritical, boolean wasHit) {
+ if (random.nextFloat() <= 0.1) {
+ player.addPotionEffect(new PotionEffect(MobEffects.BLINDNESS, 300));
+ player.addPotionEffect(new PotionEffect(MobEffects.WEAKNESS, 300));
+ ToolHelper.healTool(tool, random.nextInt(51) + 10, null);
+ }
+ }
+}
diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitFracture.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitFracture.java
index 67954f9..49281c1 100644
--- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitFracture.java
+++ b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitFracture.java
@@ -28,7 +28,7 @@ public class TraitFracture extends AbstractTrait {
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(5) + 1; i >= 0; i--) {
+ 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());
diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitGarishly.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitGarishly.java
index 0897916..b53d32c 100644
--- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitGarishly.java
+++ b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitGarishly.java
@@ -41,10 +41,10 @@ public class TraitGarishly extends AbstractTrait {
ItemStack i = null;
switch (r) {
case 0:
- i = new ItemStack(Items.BLAZE_POWDER, random.nextInt(3) + 1);
+ i = new ItemStack(Items.BLAZE_POWDER, random.nextInt(3));
break;
case 1:
- i = new ItemStack(Items.BLAZE_ROD, random.nextInt(2) + 1);
+ i = new ItemStack(Items.BLAZE_ROD, random.nextInt(3));
break;
case 2:
i = new ItemStack(glimmerstone_dust, random.nextInt(3));
@@ -53,10 +53,10 @@ public class TraitGarishly extends AbstractTrait {
i = new ItemStack(luminar_dust, random.nextInt(3));
break;
case 4:
- i = new ItemStack(Items.COAL, random.nextInt(3) + 1);
+ i = new ItemStack(Items.COAL, random.nextInt(3));
break;
case 5:
- i = new ItemStack(lignite, random.nextInt(3) + 1);
+ i = new ItemStack(lignite, random.nextInt(3));
break;
}
diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitGlimmer.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitGlimmer.java
index b3d75e2..6068918 100644
--- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitGlimmer.java
+++ b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitGlimmer.java
@@ -1,10 +1,13 @@
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 net.minecraftforge.common.MinecraftForge;
@@ -29,9 +32,22 @@ public class TraitGlimmer extends AbstractTrait {
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.02) {
+ player.addPotionEffect(new PotionEffect(MobEffects.NIGHT_VISION, 300));
+ }
+ }
+
+ @Override
+ public void afterHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean wasCritical, boolean wasHit) {
+ if (random.nextFloat() <= 0.05) {
+ player.addPotionEffect(new PotionEffect(MobEffects.NIGHT_VISION, 300));
+ }
+ }
}
diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitResonance.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitResonance.java
index 38bc102..79e81af 100644
--- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitResonance.java
+++ b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitResonance.java
@@ -2,7 +2,6 @@ package com.sosnitzka.ztic_addon.traits;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
-import net.minecraft.util.text.TextComponentString;
import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.common.MinecraftForge;
import slimeknights.tconstruct.library.traits.AbstractTrait;
@@ -20,9 +19,8 @@ public class TraitResonance extends AbstractTrait {
@Override
public void afterHit(ItemStack tool, EntityLivingBase player, EntityLivingBase target, float damage, boolean wasCritical, boolean wasHit) {
- if (random.nextBoolean() && random.nextBoolean()) {
+ if (random.nextFloat() <= .33) {
target.knockBack(target, random.nextFloat() * random.nextFloat() * 10, player.posX - target.posX, player.posZ - target.posZ);
- if (random.nextBoolean()) player.addChatMessage(new TextComponentString("Boinggg!"));
}
}