Files
PrimalSorcery/build/tmp/recompileMc/sources/net/minecraft/item/ItemEndCrystal.java
Mohammad-Ali Minaie b86dedad2f base mod created
2018-10-08 09:07:47 -04:00

106 lines
4.2 KiB
Java

package net.minecraft.item;
import java.util.List;
import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityEnderCrystal;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraft.world.WorldProviderEnd;
import net.minecraft.world.end.DragonFightManager;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class ItemEndCrystal extends Item
{
public ItemEndCrystal()
{
this.setUnlocalizedName("end_crystal");
this.setCreativeTab(CreativeTabs.DECORATIONS);
}
/**
* Called when a Block is right-clicked with this Item
*/
public EnumActionResult onItemUse(EntityPlayer player, World worldIn, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
{
IBlockState iblockstate = worldIn.getBlockState(pos);
if (iblockstate.getBlock() != Blocks.OBSIDIAN && iblockstate.getBlock() != Blocks.BEDROCK)
{
return EnumActionResult.FAIL;
}
else
{
BlockPos blockpos = pos.up();
ItemStack itemstack = player.getHeldItem(hand);
if (!player.canPlayerEdit(blockpos, facing, itemstack))
{
return EnumActionResult.FAIL;
}
else
{
BlockPos blockpos1 = blockpos.up();
boolean flag = !worldIn.isAirBlock(blockpos) && !worldIn.getBlockState(blockpos).getBlock().isReplaceable(worldIn, blockpos);
flag = flag | (!worldIn.isAirBlock(blockpos1) && !worldIn.getBlockState(blockpos1).getBlock().isReplaceable(worldIn, blockpos1));
if (flag)
{
return EnumActionResult.FAIL;
}
else
{
double d0 = (double)blockpos.getX();
double d1 = (double)blockpos.getY();
double d2 = (double)blockpos.getZ();
List<Entity> list = worldIn.getEntitiesWithinAABBExcludingEntity((Entity)null, new AxisAlignedBB(d0, d1, d2, d0 + 1.0D, d1 + 2.0D, d2 + 1.0D));
if (!list.isEmpty())
{
return EnumActionResult.FAIL;
}
else
{
if (!worldIn.isRemote)
{
EntityEnderCrystal entityendercrystal = new EntityEnderCrystal(worldIn, (double)((float)pos.getX() + 0.5F), (double)(pos.getY() + 1), (double)((float)pos.getZ() + 0.5F));
entityendercrystal.setShowBottom(false);
worldIn.spawnEntity(entityendercrystal);
if (worldIn.provider instanceof WorldProviderEnd)
{
DragonFightManager dragonfightmanager = ((WorldProviderEnd)worldIn.provider).getDragonFightManager();
dragonfightmanager.respawnDragon();
}
}
itemstack.shrink(1);
return EnumActionResult.SUCCESS;
}
}
}
}
}
/**
* Returns true if this item has an enchantment glint. By default, this returns
* <code>stack.isItemEnchanted()</code>, but other items can override it (for instance, written books always return
* true).
*
* Note that if you override this method, you generally want to also call the super version (on {@link Item}) to get
* the glint for enchanted items. Of course, that is unnecessary if the overwritten version always returns true.
*/
@SideOnly(Side.CLIENT)
public boolean hasEffect(ItemStack stack)
{
return true;
}
}