mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
145 lines
3.9 KiB
Java
145 lines
3.9 KiB
Java
package com.hbm.items.special;
|
|
|
|
import java.util.List;
|
|
|
|
import com.hbm.entity.mob.EntityHunterChopper;
|
|
import com.hbm.entity.mob.EntityUFO;
|
|
import com.hbm.entity.mob.botprime.EntityBOTPrimeHead;
|
|
import com.hbm.items.ModItems;
|
|
|
|
import net.minecraft.block.Block;
|
|
import net.minecraft.block.BlockLiquid;
|
|
import net.minecraft.entity.Entity;
|
|
import net.minecraft.entity.EntityLiving;
|
|
import net.minecraft.entity.EntityLivingBase;
|
|
import net.minecraft.entity.IEntityLivingData;
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
import net.minecraft.item.Item;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.util.Facing;
|
|
import net.minecraft.util.MathHelper;
|
|
import net.minecraft.util.MovingObjectPosition;
|
|
import net.minecraft.world.World;
|
|
|
|
public class ItemChopper extends Item {
|
|
|
|
@Override
|
|
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) {
|
|
|
|
if(world.isRemote) {
|
|
return true;
|
|
} else {
|
|
|
|
Block block = world.getBlock(x, y, z);
|
|
|
|
x += Facing.offsetsXForSide[side];
|
|
y += Facing.offsetsYForSide[side];
|
|
z += Facing.offsetsZForSide[side];
|
|
double offset = 0.0D;
|
|
|
|
if(side == 1 && block.getRenderType() == 11)
|
|
offset = 0.5D;
|
|
|
|
Entity entity = spawnCreature(world, stack.getItemDamage(), x + 0.5D, y + offset, z + 0.5D);
|
|
|
|
if(entity != null) {
|
|
if(entity instanceof EntityLivingBase && stack.hasDisplayName()) {
|
|
((EntityLiving) entity).setCustomNameTag(stack.getDisplayName());
|
|
}
|
|
|
|
if(!player.capabilities.isCreativeMode) {
|
|
--stack.stackSize;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
|
|
|
|
if(world.isRemote) {
|
|
return stack;
|
|
|
|
} else {
|
|
MovingObjectPosition movingobjectposition = this.getMovingObjectPositionFromPlayer(world, player, true);
|
|
|
|
if(movingobjectposition == null) {
|
|
return stack;
|
|
} else {
|
|
if(movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) {
|
|
int i = movingobjectposition.blockX;
|
|
int j = movingobjectposition.blockY;
|
|
int k = movingobjectposition.blockZ;
|
|
|
|
if(!world.canMineBlock(player, i, j, k)) {
|
|
return stack;
|
|
}
|
|
|
|
if(!player.canPlayerEdit(i, j, k, movingobjectposition.sideHit, stack)) {
|
|
return stack;
|
|
}
|
|
|
|
if(world.getBlock(i, j, k) instanceof BlockLiquid) {
|
|
Entity entity = spawnCreature(world, stack.getItemDamage(), i, j, k);
|
|
|
|
if(entity != null) {
|
|
if(entity instanceof EntityLivingBase && stack.hasDisplayName()) {
|
|
((EntityLiving) entity).setCustomNameTag(stack.getDisplayName());
|
|
}
|
|
|
|
if(!player.capabilities.isCreativeMode) {
|
|
--stack.stackSize;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return stack;
|
|
}
|
|
}
|
|
}
|
|
|
|
public Entity spawnCreature(World world, int dmg, double x, double y, double z) {
|
|
Entity entity = null;
|
|
|
|
if(this == ModItems.spawn_chopper)
|
|
entity = new EntityHunterChopper(world);
|
|
|
|
if(this == ModItems.spawn_worm)
|
|
entity = new EntityBOTPrimeHead(world);
|
|
|
|
if(this == ModItems.spawn_ufo) {
|
|
entity = new EntityUFO(world);
|
|
((EntityUFO)entity).scanCooldown = 100;
|
|
y += 35;
|
|
}
|
|
|
|
if(entity != null) {
|
|
|
|
EntityLiving entityliving = (EntityLiving) entity;
|
|
entity.setLocationAndAngles(x, y, z, MathHelper.wrapAngleTo180_float(world.rand.nextFloat() * 360.0F), 0.0F);
|
|
entityliving.rotationYawHead = entityliving.rotationYaw;
|
|
entityliving.renderYawOffset = entityliving.rotationYaw;
|
|
entityliving.onSpawnWithEgg((IEntityLivingData) null);
|
|
world.spawnEntityInWorld(entity);
|
|
}
|
|
|
|
return entity;
|
|
}
|
|
|
|
@Override
|
|
public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) {
|
|
|
|
if(this == ModItems.spawn_worm) {
|
|
list.add("Without a player in survival mode");
|
|
list.add("to target, he struggles around a lot.");
|
|
list.add("");
|
|
list.add("He's doing his best so please show him");
|
|
list.add("some consideration.");
|
|
}
|
|
}
|
|
|
|
}
|