Java 类net.minecraft.item.ItemShears 实例源码
项目:SimplyTea
文件:SimplyTea.java
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing face, float hitX, float hitY, float hitZ){
ItemStack heldItem = player.getHeldItem(hand);
if (heldItem.getItem() instanceof ItemShears){
if (state.getBlock() == this){
if (!state.getValue(CLIPPED) && state.getValue(TYPE) != 0){
ItemStack stack = heldItem.copy();
((ItemShears)heldItem.getItem()).setDamage(stack, ((ItemShears)heldItem.getItem()).getDamage(stack)+1);
if (((ItemShears)heldItem.getItem()).getDamage(stack) > ((ItemShears)heldItem.getItem()).getMaxDamage()){
player.setHeldItem(hand, ItemStack.EMPTY);
}
else {
player.setHeldItem(hand, stack);
}
this.dropBlockAsItem(world, pos, state, 0);
world.setBlockState(pos, state.withProperty(CLIPPED, true), 8);
world.notifyBlockUpdate(pos, state, state.withProperty(CLIPPED, true), 8);
return true;
}
}
}
return false;
}
项目:BetterThanWeagles
文件:EventHandlerShears.java
private static boolean isUsingShears(EntityPlayer player)
{
ItemStack stack = player.getHeldItemMainhand();
if (!stack.isEmpty() && stack.getItem() instanceof ItemShears)
{
return true;
}
stack = player.getHeldItemOffhand();
if (!stack.isEmpty() && stack.getItem() instanceof ItemShears)
{
return true;
}
return false;
}
项目:uniquecrops
文件:EmblemRainbow.java
@SubscribeEvent
public void onSheared(EntityInteractSpecific event) {
ItemStack rainbow = BaublesApi.getBaublesHandler((EntityPlayer)event.getEntityPlayer()).getStackInSlot(6);
if (rainbow == null || (rainbow != null && rainbow.getItem() != this)) return;
if (!(event.getTarget() instanceof IShearable)) return;
if (!(event.getTarget() instanceof EntitySheep) || (event.getTarget() instanceof EntitySheep && ((EntitySheep)event.getTarget()).getSheared())) return;
if (event.getItemStack() == null || (event.getItemStack() != null && !(event.getItemStack().getItem() instanceof ItemShears))) return;
int fortune = EnchantmentHelper.getEnchantmentLevel(Enchantments.FORTUNE, event.getItemStack());
if (!event.getWorld().isRemote) {
List<ItemStack> wools = ((IShearable)event.getTarget()).onSheared(event.getItemStack(), event.getWorld(), event.getPos(), fortune);
for (ItemStack is : wools) {
Random rand = new Random();
is.setItemDamage(rand.nextInt(15));
EntityItem wool = new EntityItem(event.getWorld(), event.getTarget().posX, event.getTarget().posY, event.getTarget().posZ, is);
event.getWorld().spawnEntityInWorld(wool);
}
}
}
项目:HempFarmer
文件:HempFarmer.java
@SubscribeEvent(priority = EventPriority.NORMAL, receiveCanceled = true)
public void onItemCraft(ItemCraftedEvent event) {
Item item = event.crafting.getItem();
if (item == HFItems.seeds_hemp_crushed || item == HFItems.seeds_indica_crushed
|| item == HFItems.seeds_sativa_crushed) {
for (int i = 0; i < event.craftMatrix.getSizeInventory(); i++) {
if (event.craftMatrix.getStackInSlot(i) != null) {
ItemStack stack = event.craftMatrix.getStackInSlot(i);
if (stack.getItem() instanceof ItemShears) {
if (stack.getItemDamage() < stack.getMaxDamage()) {
stack.shrink(1);
stack.setItemDamage(stack.getItemDamage() + 1);
event.craftMatrix.setInventorySlotContents(i, stack);
}
}
}
}
}
}
项目:MerchantsTFC
文件:ToolRackContainer.java
@Override
protected boolean isItemValid(TileEntity tileEntity, ItemStack itemStack)
{
Class<?> cls = tileEntity.getClass();
if(cls != TEToolRack.class)
return false;
Item item = itemStack.getItem();
return item instanceof ItemTool ||
item instanceof ItemWeapon ||
item instanceof ItemHoe ||
item instanceof ItemProPick ||
item instanceof ItemBow ||
item instanceof ItemSword ||
item instanceof ItemAxe ||
item instanceof ItemSpade ||
item instanceof ItemShears ||
item instanceof ItemSpindle
;
}
项目:TurtleExtension
文件:TurtleExtensionCore.java
private static void registerShearingUpgrades() {
if (ConfigurationLib.shearUpgradesEnabled) {
for (String shearUpgrade : ConfigurationLib.shearUpgrades) {
String[] string = shearUpgrade.split("-");
int shearUpgradeID = Integer.parseInt(string[0]);
String unlocalizedName = string[1];
if (Item.itemRegistry.containsKey(unlocalizedName)) {
Object object = Item.itemRegistry.getObject(unlocalizedName);
if (object != null && object instanceof ItemShears) {
ItemStack shears = new ItemStack((Item) object);
ComputerCraftAPI.registerTurtleUpgrade(new ShearingUpgrade(shearUpgradeID, shears));
}
}
}
}
}
项目:IceAndShadow2
文件:IaSRegistry.java
public static void preInit() {
for (final Object o : IceAndShadow2.getPreRegistrationHandlers()) {
IaSRegistry.doAdd(o);
}
setPrimarilyTransfusionTarget(ItemArmor.class);
setPrimarilyTransfusionTarget(ItemTool.class);
setPrimarilyTransfusionTarget(ItemSword.class);
setPrimarilyTransfusionTarget(ItemHoe.class);
setPrimarilyTransfusionTarget(ItemShears.class);
setPrimarilyTransfusionTarget(ItemFlintAndSteel.class);
setPrimarilyTransfusionTarget(ItemBow.class);
setPrimarilyTransfusionTarget(ItemFishingRod.class);
setPrimarilyTransfusionTarget(IaSItemEchirArmorActive.class);
setPrimarilyTransfusionTarget(IaSItemEchirKnifeActive.class);
setPrimarilyTransfusionTarget(IaSItemEchirToolActive.class);
setPrimarilyTransfusionTarget(IaSItemToolBroken.class);
setPrimarilyTransfusionTarget(NyxBaseItemBow.class);
setPrimarilyTransfusionTarget(NyxItemFlask.class);
setPrimarilyTransfusionTarget(NyxItemSwordFrost.class);
addGrenadeLogic(new NyxGrenadeExplosive());
addGrenadeLogic(new NyxGrenadeIceWall());
addGrenadeLogic(new NyxGrenadeShadow());
}
项目:ProgressiveAutomation
文件:ToolHelper.java
public static boolean damageTool(ItemStack tool, World world, int x, int y, int z) {
if ( (tool.getItem() instanceof ItemShears) || (tool.getItem() instanceof ItemTool) ||
(tool.getItem() instanceof ItemHoe) || (tool.getItem() instanceof ItemSword) ) {
if (tool.attemptDamageItem(1, RND)) {
return true;
}
} else {
Block mineBlock = world.getBlockState(new BlockPos(x, y, z)).getBlock();
PlayerFake fakePlayer = new PlayerFake((WorldServer)world);
if (tinkersType(tool.getItem())==TYPE_HOE) {
tool.attemptDamageItem(1, RND);
} else {
tool.getItem().onBlockDestroyed(tool, world, mineBlock.getDefaultState(), new BlockPos(x, y, z), fakePlayer);
}
if (tinkersIsBroken(tool)) return true;
}
return false;
}
项目:OpenBlocks
文件:LoreFlimFlam.java
private static String identityType(@Nonnull ItemStack stack) {
Item item = stack.getItem();
if (item instanceof ItemArmor) {
switch (((ItemArmor)item).armorType) {
case HEAD:
return "helmet";
case CHEST:
return "chestplate";
case LEGS:
return "leggings";
case FEET:
return "boots";
default:
break;
}
} else if (item instanceof ItemPickaxe) return "pickaxe";
else if (item instanceof ItemShears) return "shears";
else if (item instanceof ItemAxe) return "axe";
else if (item instanceof ItemSpade) return "shovel";
else if (item instanceof ItemBlock) return "block";
else if (item instanceof ItemBucket) return "bucket";
return "gizmo";
}
项目:Bewitchment
文件:BlockModLeaves.java
@Override
public void harvestBlock(World worldIn, EntityPlayer player, BlockPos pos, IBlockState state, @Nullable TileEntity te, ItemStack stack) {
if (!worldIn.isRemote && stack.getItem() instanceof ItemShears) {
player.addStat(StatList.getBlockStats(this));
spawnAsEntity(worldIn, pos, new ItemStack(Item.getItemFromBlock(this)));
} else {
super.harvestBlock(worldIn, player, pos, state, te, stack);
}
}
项目:connor41-etfuturum2
文件:ServerEventHandler.java
@SubscribeEvent
public void harvestEvent(BlockEvent.HarvestDropsEvent event) {
if (EtFuturum.enableSilkTouchingMushrooms && event.isSilkTouching)
if (event.block == Blocks.brown_mushroom_block) {
event.drops.clear();
event.drops.add(new ItemStack(ModBlocks.brown_mushroom_block));
} else if (event.block == Blocks.red_mushroom_block) {
event.drops.clear();
event.drops.add(new ItemStack(ModBlocks.red_mushroom_block));
}
if (EtFuturum.enableSticksFromDeadBushes)
if (event.block == Blocks.deadbush) {
boolean isShears = event.harvester != null && event.harvester.getCurrentEquippedItem() != null && event.harvester.getCurrentEquippedItem().getItem() instanceof ItemShears;
if (event.harvester == null || event.harvester.getCurrentEquippedItem() == null || !isShears)
for (int i = 0; i < event.world.rand.nextInt(3); i++)
event.drops.add(new ItemStack(Items.stick));
}
if (EtFuturum.enableShearableCobwebs)
if (event.block == Blocks.web && event.harvester != null) {
ItemStack stack = event.harvester.getCurrentEquippedItem();
if (stack != null && stack.getItem() instanceof ItemShears) {
event.drops.clear();
event.drops.add(new ItemStack(Blocks.web));
}
}
}
项目:BetterWithAddons
文件:HardcoreWoolHandler.java
@SubscribeEvent
public void onShearEvent(PlayerInteractEvent.EntityInteractSpecific event)
{
if(!InteractionBWM.HARDCORE_SHEARING)
return;
World world = event.getWorld();
BlockPos pos = event.getEntity().getPosition();
ItemStack tool = event.getItemStack();
EntityPlayer player = event.getEntityPlayer();
if(!world.isRemote && event.getTarget() instanceof EntitySheep && tool.getItem() instanceof ItemShears)
{
EntitySheep sheep = (EntitySheep) event.getTarget();
if(!sheep.isShearable(tool,world,pos))
return;
java.util.Random rand = new java.util.Random();
for(ItemStack stack : InteractionBWM.convertShearedWool(sheep.onSheared(tool,world,pos, EnchantmentHelper.getEnchantmentLevel(Enchantments.FORTUNE,tool))))
{
EntityItem ent = sheep.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;
}
tool.damageItem(1, player);
event.setCanceled(true);
event.setCancellationResult(EnumActionResult.SUCCESS);
}
}
项目:CrystalMod
文件:WorksiteAnimalFarm.java
public boolean giveShears(EntityMinionWorker worker) {
if(worker.getHeldItemMainhand() == null){
int[] slots = this.inventory.getRawIndices(RelativeSide.BOTTOM);
for(int i = 0; i < slots.length; i++){
int slot = slots[i];
ItemStack shears = inventory.getStackInSlot(slot);
if(ItemStackTools.isValid(shears) && shears.getItem() instanceof ItemShears && !ToolUtil.isEmptyRfTool(shears)){
worker.setItemStackToSlot(EntityEquipmentSlot.MAINHAND, shears);
this.inventory.setInventorySlotContents(slot, ItemStackTools.getEmptyStack());
return true;
}
}
}
return false;
}
项目:ShearMadness
文件:CommonForgeEventProxy.java
@SuppressWarnings({"ConstantConditions", "MethodWithMoreThanThreeNegations"})
@SubscribeEvent(priority = EventPriority.LOWEST)
public void onPlayerInteractionWithEntity(EntityInteract event)
{
//Process for shearing a sheep
if (event.getWorld().isRemote) return;
if (event.getHand() != EnumHand.MAIN_HAND) return;
if (!(event.getTarget() instanceof EntitySheep)) return;
final ItemStack itemStack = event.getItemStack();
if (itemStack == null) {
checkSpecialSheepInteraction(event);
return;
}
if (!(itemStack.getItem() instanceof ItemShears)) return;
final EntitySheep sheep = (EntitySheep) event.getTarget();
if (!sheep.isShearable(itemStack, event.getWorld(), event.getPos())) return;
final IChiseledSheepCapability capability = sheep.getCapability(Capability.CHISELED_SHEEP, null);
if (capability == null) return;
if (!capability.isChiseled()) return;
//Ok, we have a chiseled sheep, cancel vanilla.
event.setCanceled(true);
Shearing.shearSheep(itemStack, sheep, capability);
}
项目:Factorization
文件:ShaftManipulationRecipe.java
@Override
public ItemStack[] getRemainingItems(InventoryCrafting inv) {
ItemStack[] ret = new ItemStack[inv.getSizeInventory()];
for (int i = 0; i < ret.length; i++) {
ItemStack is = inv.getStackInSlot(i);
if (is == null) continue;
if (is.getItem() instanceof ItemShears) {
ItemStack s = is.copy();
if (!s.attemptDamageItem(1, rng)) {
ret[i] = s;
}
}
}
return ret;
}
项目:Et-Futurum
文件:ServerEventHandler.java
@SubscribeEvent
public void harvestEvent(BlockEvent.HarvestDropsEvent event) {
if (EtFuturum.enableSilkTouchingMushrooms && event.isSilkTouching)
if (event.block == Blocks.brown_mushroom_block) {
event.drops.clear();
event.drops.add(new ItemStack(ModBlocks.brown_mushroom_block));
} else if (event.block == Blocks.red_mushroom_block) {
event.drops.clear();
event.drops.add(new ItemStack(ModBlocks.red_mushroom_block));
}
if (EtFuturum.enableSticksFromDeadBushes)
if (event.block == Blocks.deadbush) {
boolean isShears = event.harvester != null && event.harvester.getCurrentEquippedItem() != null && event.harvester.getCurrentEquippedItem().getItem() instanceof ItemShears;
if (event.harvester == null || event.harvester.getCurrentEquippedItem() == null || !isShears)
for (int i = 0; i < event.world.rand.nextInt(3); i++)
event.drops.add(new ItemStack(Items.stick));
}
if (EtFuturum.enableShearableCobwebs)
if (event.block == Blocks.web && event.harvester != null) {
ItemStack stack = event.harvester.getCurrentEquippedItem();
if (stack != null && stack.getItem() instanceof ItemShears) {
event.drops.clear();
event.drops.add(new ItemStack(Blocks.web));
}
}
}
项目:MineFantasy
文件:BlockTanningRack.java
private boolean use(TileEntityTanningRack tile, EntityPlayer player)
{
ItemStack held = player.getHeldItem();
ItemStack hung = tile.getHung();
EnumToolType tool = null;
float efficiency = 1.0F;
if(held != null && hung != null)
{
if(held.getItem() instanceof ItemShears)
{
tool = EnumToolType.CUTTER;
efficiency = EnumToolMaterial.IRON.getEfficiencyOnProperMaterial();
}
if(held.getItem() instanceof ITanningItem)
{
tool = ((ITanningItem)held.getItem()).getType();
efficiency = ((ITanningItem)held.getItem()).getQuality();
}
if(tool != null)
{
tile.use(player, tool, efficiency);
return true;
}
}
return false;
}
项目:mcplus_mods
文件:TileEntityLoom.java
private static int getItemBurnTime(ItemStack itemstack)
{
if (itemstack == null)
{
return 0;
}
else
{
Item item = itemstack.getItem();
if (item == Items.stick) return 200;
if (item == Items.blaze_rod) return 800;
if (item instanceof ItemShears) return 3200;
return 0;
}
}
项目:ProgressiveAutomation
文件:SlotShearsDisabledUpgrade.java
@Override
public boolean isItemValid(ItemStack itemStack) {
if (upgrateEntity.hasUpgrade(upgradeRequired)) {
return itemStack.getItem() instanceof ItemShears;
}
return false;
}
项目:EnderIO
文件:TileSliceAndSplice.java
@Override
public boolean isMachineItemValidForSlot(int slot, @Nonnull ItemStack itemstack) {
if (Prep.isInvalid(itemstack)) {
return false;
}
if (!slotDefinition.isInputSlot(slot)) {
return false;
}
if (slot == axeIndex) {
return itemstack.getItem() instanceof ItemAxe;
}
if (slot == shearsIndex) {
return itemstack.getItem() instanceof ItemShears;
}
ItemStack currentStackInSlot = getStackInSlot(slot);
if (Prep.isValid(currentStackInSlot)) {
return currentStackInSlot.isItemEqual(itemstack);
}
int numSlotsFilled = 0;
for (int i = slotDefinition.getMinInputSlot(); i <= slotDefinition.getMaxInputSlot(); i++) {
if (i >= 0 && i < inventory.length && i != axeIndex && i != shearsIndex) {
if (Prep.isValid(getStackInSlot(i))) {
numSlotsFilled++;
}
}
}
List<IMachineRecipe> recipes = MachineRecipeRegistry.instance.getRecipesForInput(getMachineName(), MachineRecipeInput.create(slot, itemstack));
return isValidInputForAlloyRecipe(slot, itemstack, numSlotsFilled, recipes);
}
项目:CrystalMod
文件:JobShearEntity.java
@Override
public boolean run(EntityMinionWorker worker, TileWorksiteBase worksite) {
if(worker.getEntityWorld().isRemote) return false;
if(this.animalToShear == null || this.animalToShear.isDead || !(this.animalToShear instanceof IShearable)) return true;
if(worksite == null || !(worksite instanceof WorksiteAnimalFarm)) return true;
WorksiteAnimalFarm aFarm = (WorksiteAnimalFarm)worksite;
destroyTool(worker);
aFarm.giveShears(worker);
ItemStack held = worker.getHeldItemMainhand();
if(held == null || !(held.getItem() instanceof ItemShears)){
return true;
}
worker.getLookHelper().setLookPositionWithEntity(animalToShear, 10, 40);
double d = worker.getDistanceToEntity(animalToShear);
if(d <= 2.5D){
IShearable shearable = (IShearable)this.animalToShear;
BlockPos shearPos = new BlockPos(animalToShear);
if(shearable.isShearable(held, worker.getEntityWorld(), shearPos)){
worker.swingArm(EnumHand.MAIN_HAND);
int fourtune = EnchantmentHelper.getEnchantmentLevel(Enchantments.FORTUNE, held);
if(fourtune < 2)fourtune += aFarm.getUpgrades().contains(WorksiteUpgrade.ENCHANTED_TOOLS_1)? 1 : aFarm.getUpgrades().contains(WorksiteUpgrade.ENCHANTED_TOOLS_2)? 2 : aFarm.getUpgrades().contains(WorksiteUpgrade.ENCHANTED_TOOLS_3) ? 3 : 0;
List<ItemStack> stacks = shearable.onSheared(held, worker.getEntityWorld(), shearPos, fourtune);
for(ItemStack item : stacks){
if(item !=null){
aFarm.addStackToInventory(item, RelativeSide.TOP);
}
}
held.damageItem(1, worker);
destroyTool(worker);
animalToShear = null;
return true;
}
} else {
if(worker.getNavigator().noPath()){
worker.getNavigator().tryMoveToEntityLiving(animalToShear, MinionConstants.SPEED_WALK);
}
}
return false;
}
项目:CrystalMod
文件:WorksiteAnimalFarm.java
public WorksiteAnimalFarm() {
this.shouldCountResources = true;
this.inventory = new InventorySided(this, RotationType.FOUR_WAY, 33) {
@Override
public void markDirty() {
super.markDirty();
shouldCountResources = true;
}
};
int[] topIndices = ItemUtil.getIndiceArrayForSpread(0, 27);
int[] frontIndices = ItemUtil.getIndiceArrayForSpread(27, 3);
int[] bottomIndices = ItemUtil.getIndiceArrayForSpread(30, 3);
this.inventory.setAccessibleSideDefault(RelativeSide.TOP,
RelativeSide.TOP, topIndices);
this.inventory.setAccessibleSideDefault(RelativeSide.FRONT,
RelativeSide.FRONT, frontIndices);// feed
this.inventory.setAccessibleSideDefault(RelativeSide.BOTTOM,
RelativeSide.BOTTOM, bottomIndices);// buckets/shears
ItemSlotFilter filter = new ItemSlotFilter() {
@Override
public boolean isItemValid(ItemStack stack) {
if (!ItemStackTools.isValid(stack)) {
return true;
}
Item item = stack.getItem();
if (item == Items.WHEAT_SEEDS || item == Items.WHEAT
|| item == Items.CARROT) {
return true;
}
return false;
}
@Override
public String toString() {
return "Anon filter -- wheat / seeds / carrot";
}
};
inventory.setFilterForSlots(filter, frontIndices);
filter = new ItemSlotFilter() {
@Override
public boolean isItemValid(ItemStack stack) {
if (!ItemStackTools.isValid(stack)) {
return true;
}
Item item = stack.getItem();
if (item == Items.BUCKET || item instanceof ItemShears || item instanceof ItemSword) {
return true;
}
return false;
}
@Override
public String toString() {
return "Anon filter -- bucket / shears / sword";
}
};
inventory.setFilterForSlots(filter, bottomIndices);
}
项目:Gravestone-mod-Extended
文件:BlockMemorial.java
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) {
TileEntityMemorial te = (TileEntityMemorial) world.getTileEntity(pos);
if (te != null) {
ItemStack item = player.inventory.getCurrentItem();
if (item != null) {
if (te.isMossy()) {
if (item.getItem() instanceof ItemShears) {
if (!world.isRemote) {
GraveInventory.dropItem(new ItemStack(Blocks.VINE, 1), world, pos);
}
te.setMossy(false);
return false;
}
} else {
if (net.minecraft.block.Block.getBlockFromItem(item.getItem()) instanceof BlockVine) {
te.setMossy(true);
player.inventory.getCurrentItem().setCount(player.inventory.getCurrentItem().getCount() - 1);
return true;
}
}
}
if (world.isRemote) {
String name;
String killerName;
String deathText = te.getDeathTextComponent().getDeathText();
if (deathText.length() != 0) {
if (te.getDeathTextComponent().isLocalized()) {
name = ModGravestoneExtended.proxy.getLocalizedEntityName(te.getDeathTextComponent().getName());
if (name.length() != 0) {
killerName = ModGravestoneExtended.proxy.getLocalizedEntityName(te.getDeathTextComponent().getKillerName());
if (killerName.length() == 0) {
player.sendMessage(new TextComponentTranslation(deathText, new Object[]{name}));
} else {
player.sendMessage(new TextComponentTranslation(deathText, new Object[]{name, killerName}));
}
return false;
}
}
player.sendMessage(new TextComponentTranslation(deathText));
}
}
}
return false;
}
项目:TWBB-Tweaks
文件:BetterBeginningsHandler.java
private static AdditionalCosts getAdditionalCosts (final Item output)
{
int index = 0;
if (output instanceof ItemArmor)
{
index = ((ItemArmor) output).armorType;
}
else if (output instanceof ItemPickaxe)
{
index = 4;
}
else if (output instanceof ItemSword)
{
index = 5;
}
else if (output instanceof ItemAxe)
{
index = 6;
}
else if (output instanceof ItemSpade)
{
index = 7;
}
else if (output instanceof ItemHoe)
{
index = 8;
}
else if (output instanceof ItemBow)
{
index = 9;
}
else if (output instanceof ItemShears)
{
index = 10;
}
else if (output instanceof ItemFishingRod)
{
index = 11;
}
return AdditionalCosts.values()[index];
}
项目:SteelSheep
文件:EntitySteelSheep.java
@Override
public boolean isShearable(ItemStack item, IBlockAccess world, int x, int y, int z) {
return !isSheared() && item.getItem() instanceof ItemShears && item.getItemDamage() < (item.getMaxDamage() - 3) && rand.nextInt(100) > 66;
}
项目:AdventureBackpack2
文件:ItemMachete.java
@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);
for(ItemStack stacky : OreDictionary.getOres("treeLeaves")){
if (stacky.itemID == id) return false;
}
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;
*/
return new ItemStack(new ItemShears()).getItem().onBlockStartBreak(itemstack, x, y, z, player);
}
项目:rtap
文件:ModEvents.java
@SubscribeEvent
public static void interact(EntityInteract event) {
ItemStack itemstack = event.getItemStack();
EntityPlayer player = event.getEntityPlayer();
Entity entity = event.getTarget();
World world = event.getWorld();
if (world.isRemote || itemstack.equals(ItemStack.EMPTY)) {
return;
}
if ( entity instanceof EntityOcelot && ((EntityOcelot) entity).isSitting() && !entity.isDead && itemstack.getItem() instanceof ItemShears) {
if (itemstack.getItemDamage() > 1) {
itemstack.damageItem(2, player);
world.spawnEntity(new EntityItem(world, entity.posX, entity.posY, entity.lastTickPosZ, new ItemStack(ModItems.itemcathair)));
} else {
itemstack.damageItem(1, player);
if (Math.random() > .5) {
world.spawnEntity(new EntityItem(world, entity.posX, entity.posY, entity.lastTickPosZ, new ItemStack(ModItems.itemcathair)));
}
}
if (itemstack.getMaxDamage() <= -1) {
entity.onKillCommand();
} else {
if (100 / (((itemstack.getMaxDamage() + 1) / (itemstack.getItemDamage() + 1))) * Math.random() * 2 >= Math.random() * 50) {
DamageSource killedByShears = new ModDeath("killedByShears", player);
entity.attackEntityFrom(killedByShears, 1);
}
}
event.setCanceled(true);
}
}