mirror of
https://github.com/GTNewHorizons/MagicBees.git
synced 2026-11-13 00:37:51 +00:00
Adding Baubles compat for Mysterious Magnet in the amulet slot, cleaning up code to make it more readable. Closes #59.
This commit is contained in:
1 parent
7ae7af2238
commit
89975c8718
2 files changed
+96
-71
No files matched your search
@@ -2,6 +2,8 @@ package magicbees.item;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import baubles.api.BaubleType;
|
||||
import baubles.api.IBauble;
|
||||
import cpw.mods.fml.common.FMLCommonHandler;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
@@ -12,6 +14,7 @@ import magicbees.main.utils.TabMagicBees;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.projectile.EntityArrow;
|
||||
@@ -21,16 +24,17 @@ import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.World;
|
||||
import cpw.mods.fml.common.Optional;
|
||||
|
||||
public class ItemMysteriousMagnet extends Item
|
||||
{
|
||||
@Optional.Interface(modid="Baubles", iface="baubles.api.IBauble")
|
||||
public class ItemMysteriousMagnet extends Item implements IBauble {
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
private IIcon activeIcon;
|
||||
|
||||
private final float FUDGE_FACTOR = 0.2f;
|
||||
|
||||
public ItemMysteriousMagnet()
|
||||
{
|
||||
public ItemMysteriousMagnet() {
|
||||
super();
|
||||
this.setNoRepair();
|
||||
this.setHasSubtypes(true);
|
||||
@@ -41,84 +45,130 @@ public class ItemMysteriousMagnet extends Item
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
@SuppressWarnings({ "unchecked", "rawtypes" })
|
||||
public void addInformation(ItemStack itemStack, EntityPlayer player, List list, boolean par4)
|
||||
{
|
||||
String s = LocalizationManager.getLocalizedString("misc.level", itemStack.getItemDamage() >> 1);
|
||||
if (isMagnetActive(itemStack))
|
||||
{
|
||||
public void addInformation(ItemStack itemStack, EntityPlayer player, List list, boolean par4) {
|
||||
String s = LocalizationManager.getLocalizedString("misc.level", getMagnetLevel(itemStack));
|
||||
if (isMagnetActive(itemStack)) {
|
||||
list.add(LocalizationManager.getLocalizedString("misc.magnetActive", s));
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
list.add(LocalizationManager.getLocalizedString("misc.magnetInactive", s));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpdate(ItemStack itemStack, World world, Entity entity, int par4, boolean par5) {
|
||||
if (entity instanceof EntityLivingBase) {
|
||||
onWornTick(itemStack, (EntityLivingBase) entity);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
@SuppressWarnings({ "unchecked", "rawtypes" })
|
||||
public void getSubItems(Item item, CreativeTabs tabs, List list)
|
||||
{
|
||||
for (int i = 0; i <= getMaximumLevel(); i++)
|
||||
{
|
||||
public void getSubItems(Item item, CreativeTabs tabs, List list) {
|
||||
for (int i = 0; i <= getMaximumLevel(); i++) {
|
||||
list.add(new ItemStack(this, 1, i * 2));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void registerIcons(IIconRegister iconRegister)
|
||||
{
|
||||
public void registerIcons(IIconRegister iconRegister) {
|
||||
this.itemIcon = iconRegister.registerIcon(CommonProxy.DOMAIN + ":magnetInactive");
|
||||
this.activeIcon = iconRegister.registerIcon(CommonProxy.DOMAIN + ":magnetActive");
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public IIcon getIconFromDamage(int damage)
|
||||
{
|
||||
return isMagnetActive(damage) ? this.activeIcon : this.itemIcon;
|
||||
public IIcon getIconFromDamage(int meta) {
|
||||
return isMagnetActive(meta) ? this.activeIcon : this.itemIcon;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public boolean hasEffect(ItemStack itemStack, int pass)
|
||||
{
|
||||
public boolean hasEffect(ItemStack itemStack, int pass) {
|
||||
return isMagnetActive(itemStack);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player)
|
||||
{
|
||||
if (player.isSneaking())
|
||||
{
|
||||
itemStack.setItemDamage(itemStack.getItemDamage() ^ 1);
|
||||
public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player) {
|
||||
if (player.isSneaking()) {
|
||||
toggleActive(itemStack);
|
||||
}
|
||||
return itemStack;
|
||||
}
|
||||
|
||||
public void toggleActive(ItemStack itemStack) {
|
||||
itemStack.setItemDamage(itemStack.getItemDamage() ^ 1);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public boolean isMagnetActive(ItemStack itemStack) {
|
||||
return isMagnetActive(itemStack.getItemDamage());
|
||||
}
|
||||
|
||||
private boolean isMagnetActive(int damage) {
|
||||
return (damage & 0x01) == 1;
|
||||
}
|
||||
|
||||
public int getMaximumLevel() {
|
||||
return Config.magnetMaxLevel;
|
||||
}
|
||||
|
||||
public int getMagnetLevel(ItemStack itemStack) {
|
||||
return itemStack.getItemDamage() >> 1;
|
||||
}
|
||||
|
||||
private float getRadius(ItemStack itemStack) {
|
||||
return Config.magnetBaseRange + (Config.magnetLevelMultiplier * getMagnetLevel(itemStack));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpdate(ItemStack itemStack, World world, Entity entity, int par4, boolean par5)
|
||||
{
|
||||
if (isMagnetActive(itemStack) && entity instanceof EntityPlayer)
|
||||
{
|
||||
public boolean canEquip(ItemStack arg0, EntityLivingBase arg1) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canUnequip(ItemStack arg0, EntityLivingBase arg1) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Optional.Method(modid="Baubles")
|
||||
public BaubleType getBaubleType(ItemStack arg0) {
|
||||
return BaubleType.AMULET;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEquipped(ItemStack itemStack, EntityLivingBase entity) {
|
||||
if (!isMagnetActive(itemStack)) {
|
||||
toggleActive(itemStack);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUnequipped(ItemStack itemStack, EntityLivingBase entity) {
|
||||
if (isMagnetActive(itemStack)) {
|
||||
toggleActive(itemStack);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public void onWornTick(ItemStack itemStack, EntityLivingBase entity) {
|
||||
if (isMagnetActive(itemStack) && entity instanceof EntityPlayer) {
|
||||
EntityPlayer player = (EntityPlayer)entity;
|
||||
float radius = getRadius(itemStack.getItemDamage()) - FUDGE_FACTOR;
|
||||
World world = entity.worldObj;
|
||||
float radius = getRadius(itemStack) - FUDGE_FACTOR;
|
||||
AxisAlignedBB bounds = player.boundingBox.expand(radius, radius, radius);
|
||||
|
||||
if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER)
|
||||
{
|
||||
if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER) {
|
||||
bounds.expand(FUDGE_FACTOR, FUDGE_FACTOR, FUDGE_FACTOR);
|
||||
|
||||
if ((itemStack.getItemDamage() >> 1) >= 7)
|
||||
{
|
||||
if (7 <= getMagnetLevel(itemStack)) {
|
||||
List<EntityArrow> arrows = world.getEntitiesWithinAABB(EntityArrow.class, bounds);
|
||||
|
||||
for (EntityArrow arrow : arrows)
|
||||
{
|
||||
if (arrow.canBePickedUp == 1 && world.rand.nextInt(6) == 0)
|
||||
{
|
||||
for (EntityArrow arrow : arrows) {
|
||||
if (arrow.canBePickedUp == 1 || world.rand.nextFloat() < 0.3f) {
|
||||
EntityItem replacement = new EntityItem(world, arrow.posX, arrow.posY, arrow.posZ,
|
||||
new ItemStack(Items.arrow));
|
||||
world.spawnEntityInWorld(replacement);
|
||||
@@ -130,10 +180,8 @@ public class ItemMysteriousMagnet extends Item
|
||||
|
||||
List<EntityItem> list = world.getEntitiesWithinAABB(EntityItem.class, bounds);
|
||||
|
||||
for (EntityItem e : list)
|
||||
{
|
||||
if (e.age >= 10)
|
||||
{
|
||||
for (EntityItem e : list) {
|
||||
if (e.age >= 10) {
|
||||
double x = player.posX - e.posX;
|
||||
double y = player.posY - e.posY;
|
||||
double z = player.posZ - e.posZ;
|
||||
@@ -149,13 +197,11 @@ public class ItemMysteriousMagnet extends Item
|
||||
e.motionZ = z;
|
||||
e.isAirBorne = true;
|
||||
|
||||
if (e.isCollidedHorizontally)
|
||||
{
|
||||
if (e.isCollidedHorizontally) {
|
||||
e.motionY += 1;
|
||||
}
|
||||
|
||||
if (world.rand.nextInt(20) == 0)
|
||||
{
|
||||
if (world.rand.nextFloat() < 0.2f) {
|
||||
float pitch = 0.85f - world.rand.nextFloat() * 3f / 10f;
|
||||
world.playSoundEffect(e.posX, e.posY, e.posZ, "mob.endermen.portal", 0.6f, pitch);
|
||||
}
|
||||
@@ -163,25 +209,4 @@ public class ItemMysteriousMagnet extends Item
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isMagnetActive(ItemStack itemStack)
|
||||
{
|
||||
return isMagnetActive(itemStack.getItemDamage());
|
||||
}
|
||||
|
||||
private boolean isMagnetActive(int damage)
|
||||
{
|
||||
return (damage & 0x01) == 1;
|
||||
}
|
||||
|
||||
public int getMaximumLevel()
|
||||
{
|
||||
return Config.magnetMaxLevel;
|
||||
}
|
||||
|
||||
private float getRadius(int damageValue)
|
||||
{
|
||||
return Config.magnetBaseRange + (Config.magnetLevelMultiplier * (damageValue >> 1));
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user