summaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/sosnitzka/ztic_addon/Materials.java13
-rw-r--r--src/main/java/com/sosnitzka/ztic_addon/ZTiC.java4
-rw-r--r--src/main/java/com/sosnitzka/ztic_addon/traits/TraitArcane.java45
-rw-r--r--src/main/java/com/sosnitzka/ztic_addon/traits/TraitBentonite.java27
-rw-r--r--src/main/java/com/sosnitzka/ztic_addon/traits/TraitDark.java25
-rw-r--r--src/main/java/com/sosnitzka/ztic_addon/traits/TraitDissolving.java29
-rw-r--r--src/main/java/com/sosnitzka/ztic_addon/traits/TraitFragile.java36
-rw-r--r--src/main/java/com/sosnitzka/ztic_addon/traits/TraitHaunted.java17
-rw-r--r--src/main/java/com/sosnitzka/ztic_addon/traits/TraitResonance.java2
9 files changed, 178 insertions, 20 deletions
diff --git a/src/main/java/com/sosnitzka/ztic_addon/Materials.java b/src/main/java/com/sosnitzka/ztic_addon/Materials.java
index 77ce65e..64c1850 100644
--- a/src/main/java/com/sosnitzka/ztic_addon/Materials.java
+++ b/src/main/java/com/sosnitzka/ztic_addon/Materials.java
@@ -2,15 +2,16 @@ package com.sosnitzka.ztic_addon;
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 static com.sosnitzka.ztic_addon.ZTiC.*;
public class Materials {
- public static Material arcanite = new Material("arcanite", TextFormatting.LIGHT_PURPLE).addTrait(haunted);
+ public static Material arcanite = new Material("arcanite", TextFormatting.LIGHT_PURPLE).addTrait(arcane, HeadMaterialStats.TYPE).addTrait(dark, HandleMaterialStats.TYPE);
public static Material tiberium = new Material("tiberium", TextFormatting.LIGHT_PURPLE).addTrait(instable);
- public static Material prometheum = new Material("prometheum", TextFormatting.LIGHT_PURPLE).addTrait(dark);
+ public static Material prometheum = new Material("prometheum", TextFormatting.LIGHT_PURPLE).addTrait(haunted, HeadMaterialStats.TYPE).addTrait(dark, HandleMaterialStats.TYPE);
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 +24,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.GRAY).addTrait(pulverizing, HeadMaterialStats.TYPE);
+ public static Material mythril = new Material("mythril", TextFormatting.GRAY).addTrait(pulverizing, HeadMaterialStats.TYPE).addTrait(bentonite, HandleMaterialStats.TYPE);
public static Material astrium = new Material("astrium", TextFormatting.LIGHT_PURPLE);
public static Material nitronite = new Material("nitronite", TextFormatting.LIGHT_PURPLE);
@@ -31,12 +32,12 @@ public class Materials {
public static Material noctunyx = new Material("noctunyx", TextFormatting.LIGHT_PURPLE);
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).addTrait(cascade, HeadMaterialStats.TYPE);
+ public static Material fractoryte = new Material("fractoryte", TextFormatting.DARK_RED).addTrait(frature, HeadMaterialStats.TYPE).addTrait(fragile, HandleMaterialStats.TYPE);
+ public static Material seismodium = new Material("seismodium", TextFormatting.DARK_GREEN).addTrait(cascade, HeadMaterialStats.TYPE).addTrait(fragile, HandleMaterialStats.TYPE);
public static Material terramite = new Material("terramite", TextFormatting.GRAY);
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).addTrait(slaughtering, HeadMaterialStats.TYPE);
+ public static Material dyonite = new Material("dyonite", TextFormatting.GRAY).addTrait(slaughtering, HeadMaterialStats.TYPE).addTrait(dissolving, HandleMaterialStats.TYPE);
public static Material ultranite = new Material("ultranite", TextFormatting.AQUA);
public static Material nucleum = new Material("nucleum", TextFormatting.AQUA);
public static Material aegisalt = new Material("aegisalt", 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 f597f18..98c6b8c 100644
--- a/src/main/java/com/sosnitzka/ztic_addon/ZTiC.java
+++ b/src/main/java/com/sosnitzka/ztic_addon/ZTiC.java
@@ -47,6 +47,10 @@ public class ZTiC {
public static final AbstractTrait dark = new TraitDark();
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 bentonite = new TraitBentonite();
+ public static final AbstractTrait arcane = new TraitArcane();
static final String MODID = "ztic_addon";
static final String VERSION = "@VERSION@";
diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitArcane.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitArcane.java
new file mode 100644
index 0000000..afe4dca
--- /dev/null
+++ b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitArcane.java
@@ -0,0 +1,45 @@
+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 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(21) + 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(21) + 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/TraitBentonite.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitBentonite.java
new file mode 100644
index 0000000..821d31d
--- /dev/null
+++ b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitBentonite.java
@@ -0,0 +1,27 @@
+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 slimeknights.tconstruct.library.traits.AbstractTrait;
+import slimeknights.tconstruct.library.utils.ToolHelper;
+
+public class TraitBentonite extends AbstractTrait {
+
+ private static final float chance = 0.1f;
+
+ public TraitBentonite() {
+ super("bentonite", TextFormatting.RED);
+ }
+
+ @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) {
+ ToolHelper.healTool(tool, random.nextInt(15), player);
+ }
+ }
+} \ No newline at end of file
diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitDark.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitDark.java
index 6439df4..018d5c5 100644
--- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitDark.java
+++ b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitDark.java
@@ -9,7 +9,6 @@ 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.
@@ -22,20 +21,28 @@ public class TraitDark extends AbstractTrait {
@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);
+ int time = (int) world.getWorldTime();
+ if (random.nextFloat() <= 0.05 || (random.nextFloat() <= 0.3 && 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) {
- 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);
+ int time = (int) player.getEntityWorld().getWorldTime();
+ if (random.nextFloat() <= 0.05 || (random.nextFloat() <= 0.3 && 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/TraitDissolving.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitDissolving.java
new file mode 100644
index 0000000..b77dcd3
--- /dev/null
+++ b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitDissolving.java
@@ -0,0 +1,29 @@
+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;
+
+/**
+ * Created by Robert on 09.06.2016.
+ */
+public class TraitDissolving extends AbstractTrait {
+
+ public TraitDissolving() {
+ super("dissolving", TextFormatting.DARK_AQUA);
+ MinecraftForge.EVENT_BUS.register(this);
+ }
+
+ @SubscribeEvent
+ public void onXpDrop(LivingExperienceDropEvent event) {
+ EntityPlayer player = event.getAttackingPlayer();
+ if (random.nextFloat() < 0.3 && player != null && TinkerUtil.hasTrait(TagUtil.getTagSafe(player.getHeldItemMainhand()), this.identifier)) {
+ event.setDroppedExperience(0);
+ }
+ }
+}
diff --git a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitFragile.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitFragile.java
new file mode 100644
index 0000000..0e923a1
--- /dev/null
+++ b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitFragile.java
@@ -0,0 +1,36 @@
+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 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) {
+ 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(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/TraitHaunted.java b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitHaunted.java
index fb2ea4f..e309f6e 100644
--- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitHaunted.java
+++ b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitHaunted.java
@@ -18,18 +18,27 @@ public class TraitHaunted extends AbstractTrait {
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) {
- if (random.nextFloat() < 0.1)
+ 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 EntitySkeleton || target instanceof EntityWitch || target instanceof EntityHorse) {
- ((EntityLiving) target).tasks.taskEntries.clear();
+ target instanceof EntityBlaze || target instanceof EntityWitch || target instanceof EntityHorse) {
((EntityLiving) target).tasks.taskEntries.clear();
((EntityLiving) target).targetTasks.taskEntries.clear();
- ((EntityLiving) target).targetTasks.taskEntries.clear();
((EntityLiving) target).tasks.addTask(0, new EntityAIPermanentPanic((EntityCreature) target, target.getAIMoveSpeed() + 2.0D));
+ }
+ }
+
+ public boolean isNight(int time) {
+ if (time > 12500) {
+ return true;
+ } else {
+ return false;
}
}
}
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 79e81af..d6adc21 100644
--- a/src/main/java/com/sosnitzka/ztic_addon/traits/TraitResonance.java
+++ b/src/main/java/com/sosnitzka/ztic_addon/traits/TraitResonance.java
@@ -20,7 +20,7 @@ public class TraitResonance extends AbstractTrait {
@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() * 10, player.posX - target.posX, player.posZ - target.posZ);
+ target.knockBack(target, random.nextFloat() * random.nextFloat() * 12, player.posX - target.posX, player.posZ - target.posZ);
}
}