當前位置: 首頁>>代碼示例>>Java>>正文


Java IShearable.isShearable方法代碼示例

本文整理匯總了Java中net.minecraftforge.common.IShearable.isShearable方法的典型用法代碼示例。如果您正苦於以下問題:Java IShearable.isShearable方法的具體用法?Java IShearable.isShearable怎麽用?Java IShearable.isShearable使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在net.minecraftforge.common.IShearable的用法示例。


在下文中一共展示了IShearable.isShearable方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: getDrops

import net.minecraftforge.common.IShearable; //導入方法依賴的package包/類
@Override
public List<ItemStack> getDrops(World world, Random unused, Map<String, Boolean> harvesterSettings, int x, int y,
                                int z)
{
    final Block targetBlock = world.getBlock(x, y, z);
    if (harvesterSettings.get("silkTouch").equals(Boolean.TRUE))
    {
        if (targetBlock instanceof IShearable)
        {
            final ItemStack shears = new ItemStack(Items.shears, 1, 0);
            final IShearable shearable = (IShearable) targetBlock;
            if (shearable.isShearable(shears, world, x, y, z))
                return shearable.onSheared(shears, world, x, y, z, 0);
        }
        if (Item.getItemFromBlock(targetBlock) != null)
        {
            final List<ItemStack> drops = Lists.newArrayList();
            drops.add(new ItemStack(targetBlock, 1, targetBlock.getDamageValue(world, x, y, z)));
            return drops;
        }
    }
    return targetBlock.getDrops(world, x, y, z, world.getBlockMetadata(x, y, z), 0);
}
 
開發者ID:MinecraftModArchive,項目名稱:Dendrology,代碼行數:24,代碼來源:MFRLeaves.java

示例2: onImpact

import net.minecraftforge.common.IShearable; //導入方法依賴的package包/類
@Override
protected void onImpact(RayTraceResult objectPosition) {
    if (objectPosition.entityHit != null) {
        Entity entity = objectPosition.entityHit;
        entity.motionX += motionX;
        entity.motionY += motionY;
        entity.motionZ += motionZ;
        if (!entity.world.isRemote && entity instanceof IShearable) {
            IShearable shearable = (IShearable) entity;
            BlockPos pos = new BlockPos(posX, posY, posZ);
            if (shearable.isShearable(ItemStack.EMPTY, world, pos)) {
                List<ItemStack> drops = shearable.onSheared(ItemStack.EMPTY, world, pos, 0);
                for (ItemStack stack : drops) {
                    PneumaticCraftUtils.dropItemOnGround(stack, world, entity.posX, entity.posY, entity.posZ);
                }
            }
        }
    } else {
        Block block = world.getBlockState(objectPosition.getBlockPos()).getBlock();
        if (block instanceof IPlantable || block instanceof BlockLeaves) {
            motionX = oldMotionX;
            motionY = oldMotionY;
            motionZ = oldMotionZ;
        } else {
            setDead();
        }
    }
    hitCounter++;
    if (hitCounter > 20) setDead();
}
 
開發者ID:TeamPneumatic,項目名稱:pnc-repressurized,代碼行數:31,代碼來源:EntityVortex.java

示例3: onBlockStartBreak

import net.minecraftforge.common.IShearable; //導入方法依賴的package包/類
@Override
public boolean onBlockStartBreak(ItemStack itemstack, BlockPos pos, EntityPlayer player)
{
    if (player.world.isRemote || player.capabilities.isCreativeMode)
    {
        return false;
    }
    IBlockState state = player.world.getBlockState(pos);
    Block block = state.getBlock();
    if (canShear(itemstack,state) && block instanceof IShearable)
    {
        IShearable target = (IShearable)block;
        if (target.isShearable(itemstack, player.world, pos))
        {
            List<ItemStack> drops = target.onSheared(itemstack, player.world, pos,
                    getEnchantmentLevel(net.minecraft.init.Enchantments.FORTUNE, itemstack));

            for (ItemStack stack : drops)
            {
                InventoryUtil.addItemToPlayer(player,stack);
            }

            itemstack.damageItem(1, player);
            player.addStat(getBlockStats(block));
            player.world.setBlockState(pos, Blocks.AIR.getDefaultState(), 11); //TODO: Move to IShearable implementors in 1.12+
            return true;
        }
    }
    return false;
}
 
開發者ID:DaedalusGame,項目名稱:BetterWithAddons,代碼行數:31,代碼來源:ItemSpadeConvenient.java

示例4: getIdentifierItems

import net.minecraftforge.common.IShearable; //導入方法依賴的package包/類
public static ArrayList<ItemStack> getIdentifierItems(World world, EntityPlayer player, MovingObjectPosition hit) {
    int x = hit.blockX;
    int y = hit.blockY;
    int z = hit.blockZ;
    Block mouseoverBlock = world.getBlock(x, y, z);

    ArrayList<ItemStack> items = new ArrayList<ItemStack>();

    ArrayList<IHighlightHandler> handlers = new ArrayList<IHighlightHandler>();
    if (highlightIdentifiers.containsKey(null))
        handlers.addAll(highlightIdentifiers.get(null));
    if (highlightIdentifiers.containsKey(mouseoverBlock))
        handlers.addAll(highlightIdentifiers.get(mouseoverBlock));
    for (IHighlightHandler ident : handlers) {
        ItemStack item = ident.identifyHighlight(world, player, hit);
        if (item != null)
            items.add(item);
    }

    if (items.size() > 0)
        return items;

    ItemStack pick = mouseoverBlock.getPickBlock(hit, world, x, y, z);
    if (pick != null)
        items.add(pick);

    try {
        items.addAll(mouseoverBlock.getDrops(world, x, y, z, world.getBlockMetadata(x, y, z), 0));
    } catch (Exception ignored) {}
    if (mouseoverBlock instanceof IShearable) {
        IShearable shearable = (IShearable) mouseoverBlock;
        if (shearable.isShearable(new ItemStack(Items.shears), world, x, y, z))
            items.addAll(shearable.onSheared(new ItemStack(Items.shears), world, x, y, z, 0));
    }

    if (items.size() == 0)
        items.add(0, new ItemStack(mouseoverBlock, 1, world.getBlockMetadata(x, y, z)));

    return items;
}
 
開發者ID:4Space,項目名稱:4Space-5,代碼行數:41,代碼來源:ItemInfo.java

示例5: scanForSheep

import net.minecraftforge.common.IShearable; //導入方法依賴的package包/類
private void scanForSheep(List<EntityAnimal> sheep) {
	scanForAnimals(sheep, sheepToBreed, maxSheepCount);
	for (EntityAnimal animal : sheep) {
		if (animal instanceof IShearable) {
			IShearable sheep1 = (IShearable) animal;
			if (sheep1.isShearable(null, getWorld(), new BlockPos(animal))) {
				sheepToShear.add(animal.getEntityId());
			}
		}
	}
}
 
開發者ID:Alec-WAM,項目名稱:CrystalMod,代碼行數:12,代碼來源:WorksiteAnimalFarm.java

示例6: getIdentifierItems

import net.minecraftforge.common.IShearable; //導入方法依賴的package包/類
public static ArrayList<ItemStack> getIdentifierItems(World world, EntityPlayer player, MovingObjectPosition hit) {
    BlockPos pos = hit.getBlockPos();
    IBlockState state = world.getBlockState(pos);
    Block block = state.getBlock();

    ArrayList<ItemStack> items = new ArrayList<ItemStack>();

    ArrayList<IHighlightHandler> handlers = new ArrayList<IHighlightHandler>();
    if (highlightIdentifiers.containsKey(null))
        handlers.addAll(highlightIdentifiers.get(null));
    if (highlightIdentifiers.containsKey(block))
        handlers.addAll(highlightIdentifiers.get(block));
    for (IHighlightHandler ident : handlers) {
        ItemStack item = ident.identifyHighlight(world, player, hit);
        if (item != null)
            items.add(item);
    }

    if (items.size() > 0)
        return items;

    ItemStack pick = block.getPickBlock(hit, world, pos);
    if (pick != null)
        items.add(pick);

    try {
        items.addAll(block.getDrops(world, pos, state, 0));
    } catch (Exception ignored) {}
    if (block instanceof IShearable) {
        IShearable shearable = (IShearable) block;
        if (shearable.isShearable(new ItemStack(Items.shears), world, pos))
            items.addAll(shearable.onSheared(new ItemStack(Items.shears), world, pos, 0));
    }

    if (items.size() == 0)
        items.add(0, new ItemStack(block, 1, block.getMetaFromState(state)));

    return items;
}
 
開發者ID:SneakyTactician,項目名稱:BIGB,代碼行數:40,代碼來源:ItemInfo.java

示例7: shear

import net.minecraftforge.common.IShearable; //導入方法依賴的package包/類
@Override
public List<ItemStack> shear(ItemStack stack, int fortune) {
    List<ItemStack> result = Lists.newArrayList();
    EntityAnimal animal = this.getAnimal();
    if ((animal instanceof IShearable)) {
        IShearable shearable = (IShearable)animal;
        if (shearable.isShearable(stack, animal.getEntityWorld(), animal.getPosition())) {
            result = shearable.onSheared(stack, animal.getEntityWorld(), animal.getPosition(), fortune);
        }
    }
    return result;
}
 
開發者ID:faceofcat,項目名稱:Mekfarm,代碼行數:13,代碼來源:VanillaGenericAnimal.java

示例8: onEntityCollidedWithBlock

import net.minecraftforge.common.IShearable; //導入方法依賴的package包/類
@Override
public void onEntityCollidedWithBlock(World world, BlockPos pos, IBlockState state, Entity entity) {
  if (entity instanceof IShearable) {
    IShearable sheep = (IShearable) entity;
    ItemStack fake = new ItemStack(Items.SHEARS);
    if (sheep.isShearable(fake, world, pos)) {
      List<ItemStack> drops = sheep.onSheared(fake, world, pos, FORTUNE);//since iShearable doesnt do drops, but DOES do sound/make sheep naked
      UtilItemStack.dropItemStacksInWorld(world, pos, drops);
    }
  }
}
 
開發者ID:PrinceOfAmber,項目名稱:Cyclic,代碼行數:12,代碼來源:BlockShears.java

示例9: itemInteractionForEntity

import net.minecraftforge.common.IShearable; //導入方法依賴的package包/類
@Override
public boolean itemInteractionForEntity(ItemStack itemstack, EntityPlayer player, EntityLivingBase entity)
{
    if (entity.worldObj.isRemote)
    {
        return false;
    }
    if (entity instanceof IShearable)
    {
        IShearable target = (IShearable)entity;
        if (target.isShearable(itemstack, entity.worldObj, (int)entity.posX, (int)entity.posY, (int)entity.posZ))
        {
            // Cauldron start
            PlayerShearEntityEvent event = new PlayerShearEntityEvent((org.bukkit.entity.Player) player.getBukkitEntity(), entity.getBukkitEntity());
            player.worldObj.getServer().getPluginManager().callEvent(event);

            if (event.isCancelled())
            {
                return false;
            }

            // Cauldron end
            ArrayList<ItemStack> drops = target.onSheared(itemstack, entity.worldObj, (int)entity.posX, (int)entity.posY, (int)entity.posZ,
                    EnchantmentHelper.getEnchantmentLevel(Enchantment.fortune.effectId, itemstack));

            Random rand = new Random();
            for(ItemStack stack : drops)
            {
                EntityItem ent = entity.entityDropItem(stack, 1.0F);
                ent.motionY += rand.nextFloat() * 0.05F;
                ent.motionX += (rand.nextFloat() - rand.nextFloat()) * 0.1F;
                ent.motionZ += (rand.nextFloat() - rand.nextFloat()) * 0.1F;
            }
            itemstack.damageItem(1, entity);
        }
        return true;
    }
    return false;
}
 
開發者ID:xtrafrancyz,項目名稱:Cauldron,代碼行數:40,代碼來源:ItemShears.java

示例10: onBlockStartBreak

import net.minecraftforge.common.IShearable; //導入方法依賴的package包/類
@Override
public boolean onBlockStartBreak(ItemStack itemstack, int x, int y, int z, EntityPlayer player)
{
    if (player.worldObj.isRemote)
    {
        return false;
    }
    Block block = player.worldObj.getBlock(x, y, z);
    if (block instanceof IShearable)
    {
        IShearable target = (IShearable)block;
        if (target.isShearable(itemstack, player.worldObj, x, y, z))
        {
            ArrayList<ItemStack> drops = target.onSheared(itemstack, player.worldObj, x, y, z,
                    EnchantmentHelper.getEnchantmentLevel(Enchantment.fortune.effectId, itemstack));
            Random rand = new Random();

            for(ItemStack stack : drops)
            {
                float f = 0.7F;
                double d  = (double)(rand.nextFloat() * f) + (double)(1.0F - f) * 0.5D;
                double d1 = (double)(rand.nextFloat() * f) + (double)(1.0F - f) * 0.5D;
                double d2 = (double)(rand.nextFloat() * f) + (double)(1.0F - f) * 0.5D;
                EntityItem entityitem = new EntityItem(player.worldObj, (double)x + d, (double)y + d1, (double)z + d2, stack);
                entityitem.delayBeforeCanPickup = 10;
                player.worldObj.spawnEntityInWorld(entityitem);
            }

            itemstack.damageItem(1, player);
            player.addStat(StatList.mineBlockStatArray[Block.getIdFromBlock(block)], 1);
        }
    }
    return false;
}
 
開發者ID:xtrafrancyz,項目名稱:Cauldron,代碼行數:35,代碼來源:ItemShears.java

示例11: itemInteractionForEntity

import net.minecraftforge.common.IShearable; //導入方法依賴的package包/類
@Override
public boolean itemInteractionForEntity(ItemStack itemstack, EntityPlayer player, EntityLivingBase entity)
{
    if (entity.worldObj.isRemote)
    {
        return false;
    }
    if (entity instanceof IShearable)
    {
        IShearable target = (IShearable)entity;
        if (target.isShearable(itemstack, entity.worldObj, (int)entity.posX, (int)entity.posY, (int)entity.posZ))
        {
            ArrayList<ItemStack> drops = target.onSheared(itemstack, entity.worldObj, (int)entity.posX, (int)entity.posY, (int)entity.posZ,
                    EnchantmentHelper.getEnchantmentLevel(Enchantment.fortune.effectId, itemstack));

            Random rand = new Random();
            for(ItemStack stack : drops)
            {
                EntityItem ent = entity.entityDropItem(stack, 1.0F);
                ent.motionY += rand.nextFloat() * 0.05F;
                ent.motionX += (rand.nextFloat() - rand.nextFloat()) * 0.1F;
                ent.motionZ += (rand.nextFloat() - rand.nextFloat()) * 0.1F;
            }
            itemstack.damageItem(1, entity);
        }
        return true;
    }
    return false;
}
 
開發者ID:xtrafrancyz,項目名稱:Cauldron,代碼行數:30,代碼來源:ItemShears.java

示例12: onBlockStartBreak

import net.minecraftforge.common.IShearable; //導入方法依賴的package包/類
@Override
public boolean onBlockStartBreak(ItemStack stack, int x, int y, int z, EntityPlayer player) {
    if (player.worldObj.isRemote) {
        return false;
    }
    Block block = player.worldObj.getBlock(x, y, z);
    if (block instanceof IShearable) {
        IShearable target = (IShearable) block;
        if (target.isShearable(stack, player.worldObj, x, y, z)) {
            ArrayList<ItemStack> drops = target.onSheared(stack, player.worldObj, x, y, z,
                    EnchantmentHelper.getEnchantmentLevel(Enchantment.fortune.effectId, stack));
            Random rand = new Random();
            for (ItemStack drop : drops) {
                float f = 0.7F;
                double d = (double) (rand.nextFloat() * f) + (double) (1.0F - f) * 0.5D;
                double d1 = (double) (rand.nextFloat() * f) + (double) (1.0F - f) * 0.5D;
                double d2 = (double) (rand.nextFloat() * f) + (double) (1.0F - f) * 0.5D;
                EntityItem entityitem = new EntityItem(player.worldObj, (double) x + d, (double) y + d1, (double) z + d2, drop);
                entityitem.delayBeforeCanPickup = 10;
                player.worldObj.spawnEntityInWorld(entityitem);
            }
            stack.damageItem(1, player);
            player.addStat(StatList.mineBlockStatArray[Block.getIdFromBlock(block)], 1);
        }
    }
    return false;
}
 
開發者ID:TeamAmeriFrance,項目名稱:Electro-Magic-Tools,代碼行數:28,代碼來源:ItemBaseChainsaw.java

示例13: onBlockStartBreak

import net.minecraftforge.common.IShearable; //導入方法依賴的package包/類
@Override
public boolean onBlockStartBreak(ItemStack itemstack, int x, int y, int z, EntityPlayer player)
{
    if (player.worldObj.isRemote)
    {
        return false;
    }
    int id = player.worldObj.getBlockId(x, y, z);
    if (Block.blocksList[id] instanceof IShearable)
    {
        IShearable target = (IShearable)Block.blocksList[id];
        if (target.isShearable(itemstack, player.worldObj, x, y, z))
        {
            ArrayList<ItemStack> drops = target.onSheared(itemstack, player.worldObj, x, y, z,
                    EnchantmentHelper.getEnchantmentLevel(Enchantment.fortune.effectId, itemstack));
            Random rand = new Random();

            for(ItemStack stack : drops)
            {
                float f = 0.7F;
                double d  = (double)(rand.nextFloat() * f) + (double)(1.0F - f) * 0.5D;
                double d1 = (double)(rand.nextFloat() * f) + (double)(1.0F - f) * 0.5D;
                double d2 = (double)(rand.nextFloat() * f) + (double)(1.0F - f) * 0.5D;
                EntityItem entityitem = new EntityItem(player.worldObj, (double)x + d, (double)y + d1, (double)z + d2, stack);
                entityitem.delayBeforeCanPickup = 10;
                player.worldObj.spawnEntityInWorld(entityitem);
            }

            itemstack.damageItem(1, player);
            player.addStat(StatList.mineBlockStatArray[id], 1);
        }
    }
    return false;
}
 
開發者ID:HATB0T,項目名稱:RuneCraftery,代碼行數:35,代碼來源:ItemShears.java

示例14: onHitGround

import net.minecraftforge.common.IShearable; //導入方法依賴的package包/類
@Override
public void onHitGround(BlockPos pos) {
       boolean broken = false;
       if(canBreakBlocks()) {
           IBlockState block = world.getBlockState(pos);
           if (block.getMaterial() == Material.GLASS) {
               broken = world.destroyBlock(pos, false);
           } else if (block.getBlock() instanceof IShearable) {
               IShearable target = (IShearable) block.getBlock();
               if (target.isShearable(ItemStack.EMPTY, world, pos)) {
                   List<ItemStack> drops = target.onSheared(ItemStack.EMPTY, world, pos, 1);
                   if (!world.isRemote) {
                       for (ItemStack stack : drops) {
                           float f = 0.7F;
                           double d = (double) (rand.nextFloat() * f) + (double) (1.0F - f) * 0.5D;
                           double d1 = (double) (rand.nextFloat() * f) + (double) (1.0F - f) * 0.5D;
                           double d2 = (double) (rand.nextFloat() * f) + (double) (1.0F - f) * 0.5D;
                           EntityItem entityitem = new EntityItem(world, (double) pos.getY() + d, (double) pos.getY() + d1, (double) pos.getZ() + d2, stack);
                           entityitem.setDefaultPickupDelay();
                           world.spawnEntity(entityitem);
                       }
                   }
                   broken = world.setBlockToAir(pos);
               }
           }
       }
       if(broken){
           this.ticksInGround = 0;
           this.yTile = -1;
           this.motionY += 0.05F;
       }
}
 
開發者ID:Mine-and-blade-admin,項目名稱:Battlegear2,代碼行數:33,代碼來源:EntityPiercingArrow.java

示例15: onImpact

import net.minecraftforge.common.IShearable; //導入方法依賴的package包/類
@Override
protected void onImpact(MovingObjectPosition objectPosition){
    if(objectPosition.entityHit != null) {
        Entity entity = objectPosition.entityHit;
        entity.motionX += motionX;
        entity.motionY += motionY;
        entity.motionZ += motionZ;
        if(!entity.worldObj.isRemote && entity instanceof IShearable) {
            IShearable shearable = (IShearable)entity;
            int x = (int)Math.floor(posX);
            int y = (int)Math.floor(posY);
            int z = (int)Math.floor(posZ);
            if(shearable.isShearable(null, worldObj, x, y, z)) {
                List<ItemStack> drops = shearable.onSheared(null, worldObj, x, y, z, 0);
                for(ItemStack stack : drops) {
                    PneumaticCraftUtils.dropItemOnGround(stack, worldObj, entity.posX, entity.posY, entity.posZ);
                }
            }
        }

    } else {
        Block block = worldObj.getBlock(objectPosition.blockX, objectPosition.blockY, objectPosition.blockZ);
        if(block instanceof IPlantable || block instanceof BlockLeaves) {
            motionX = oldMotionX;
            motionY = oldMotionY;
            motionZ = oldMotionZ;
        } else {
            setDead();
        }
    }
    hitCounter++;
    if(hitCounter > 20) setDead();
}
 
開發者ID:MineMaarten,項目名稱:PneumaticCraft,代碼行數:34,代碼來源:EntityVortex.java


注:本文中的net.minecraftforge.common.IShearable.isShearable方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。