generated from tilera/1710mod
106 lines
3.8 KiB
Java
106 lines
3.8 KiB
Java
package com.eloraam.redpower.base;
|
|
|
|
import com.eloraam.redpower.RedPowerBase;
|
|
import com.eloraam.redpower.control.TileCPU;
|
|
import com.eloraam.redpower.core.CoreLib;
|
|
import com.eloraam.redpower.core.IRedbusConnectable;
|
|
import com.eloraam.redpower.core.IRotatable;
|
|
import com.google.common.collect.Multimap;
|
|
import net.minecraft.block.Block;
|
|
import net.minecraft.creativetab.CreativeTabs;
|
|
import net.minecraft.entity.EntityLivingBase;
|
|
import net.minecraft.entity.SharedMonsterAttributes;
|
|
import net.minecraft.entity.ai.attributes.AttributeModifier;
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
import net.minecraft.init.Blocks;
|
|
import net.minecraft.item.Item;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.util.MovingObjectPosition;
|
|
import net.minecraft.world.World;
|
|
|
|
public class ItemScrewdriver extends Item {
|
|
public ItemScrewdriver() {
|
|
this.setMaxDamage(200);
|
|
this.setMaxStackSize(1);
|
|
this.setCreativeTab(CreativeTabs.tabTools);
|
|
this.setUnlocalizedName("screwdriver");
|
|
this.setTextureName("rpbase:screwdriver");
|
|
}
|
|
|
|
public boolean hitEntity(ItemStack ist, EntityLivingBase ent, EntityLivingBase hitter) {
|
|
ist.damageItem(8, hitter);
|
|
return true;
|
|
}
|
|
|
|
public boolean onItemUseFirst(ItemStack ist, EntityPlayer player, World world, int x, int y, int z, int side, float xp, float yp, float zp) {
|
|
if (!world.isRemote) {
|
|
boolean sec = false;
|
|
if (player != null && player.isSneaking()) {
|
|
sec = true;
|
|
}
|
|
|
|
Block bid = world.getBlock(x, y, z);
|
|
int md = world.getBlockMetadata(x, y, z);
|
|
if (bid == Blocks.unpowered_repeater || bid == Blocks.powered_repeater) {
|
|
world.setBlock(x, y, z, bid, md & 12 | md + 1 & 3, 3);
|
|
ist.damageItem(1, player);
|
|
return true;
|
|
} else if (bid == Blocks.dispenser) {
|
|
md = md & 3 ^ md >> 2;
|
|
md += 2;
|
|
world.setBlock(x, y, z, bid, md, 3);
|
|
ist.damageItem(1, player);
|
|
return true;
|
|
} else if (bid != Blocks.piston && bid != Blocks.sticky_piston) {
|
|
if (player.isSneaking()) {
|
|
IRedbusConnectable irb = CoreLib.getTileEntity(world, x, y, z, IRedbusConnectable.class);
|
|
if (irb != null && !(irb instanceof TileCPU)) {
|
|
player.openGui(RedPowerBase.instance, 3, world, x, y, z);
|
|
return true;
|
|
}
|
|
}
|
|
|
|
IRotatable ir = CoreLib.getTileEntity(world, x, y, z, IRotatable.class);
|
|
if (ir == null) {
|
|
return false;
|
|
} else {
|
|
MovingObjectPosition mop = CoreLib.retraceBlock(world, player, x, y, z);
|
|
if (mop == null) {
|
|
return false;
|
|
} else {
|
|
int rm = ir.getPartMaxRotation(mop.subHit, sec);
|
|
if (rm == 0) {
|
|
return false;
|
|
} else {
|
|
int r = ir.getPartRotation(mop.subHit, sec);
|
|
if (++r > rm) {
|
|
r = 0;
|
|
}
|
|
|
|
ir.setPartRotation(mop.subHit, sec, r);
|
|
ist.damageItem(1, player);
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if (++md > 5) {
|
|
md = 0;
|
|
}
|
|
|
|
world.setBlock(x, y, z, bid, md, 3);
|
|
ist.damageItem(1, player);
|
|
return true;
|
|
}
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public Multimap getAttributeModifiers(ItemStack stack) {
|
|
Multimap map = super.getAttributeModifiers(stack);
|
|
map.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), new AttributeModifier(Item.field_111210_e, "Weapon modifier", 4.0, 0));
|
|
return map;
|
|
}
|
|
}
|