Files
TAIGA-OV/src/main/java/com/sosnitzka/ztic_addon/traits/TraitRandomize.java
2016-07-15 23:25:32 +02:00

176 lines
6.6 KiB
Java

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.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.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;
/**
* Created by Robert on 03.06.2016.
*/
public class TraitRandomize extends AbstractTrait {
public TraitRandomize() {
super("randomize", TextFormatting.DARK_RED);
MinecraftForge.EVENT_BUS.register(this);
}
@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);
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)) {
ItemStack change = new ItemStack(Item.getItemFromBlock(Blocks.IRON_ORE));
int i = random.nextInt(11);
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;
}
event.getDrops().set(0, change);
}
}
}
}