diff --git a/magicbees_res/assets/magicbees/lang/en_US.xml b/magicbees_res/assets/magicbees/lang/en_US.xml index 238d455..1b45537 100644 --- a/magicbees_res/assets/magicbees/lang/en_US.xml +++ b/magicbees_res/assets/magicbees/lang/en_US.xml @@ -5,6 +5,7 @@ Handful of Jelly Babies Thaumium Scoop Thaumium Grafter + Mysterious Magnet Jade Moon Dial @@ -153,6 +154,9 @@ Thaumaturge's Backpack Magic Bees + Level %s + %s - Active + %s - Inactive Requires a foundation of %s @@ -488,6 +492,6 @@ Essence of Scornful Oblivion [MB] Cast aside with malice - Breeding bees for mutations can be aggrivating, especially whith long-lived species. With a little cleverness and only the slightest hint of smugness, you have found a way to utilize the Dimensional Singularity in a manner that only sucks away the life force of your tiny flying friends, bit by bit. Well, maybe significant amounts all at once. It's probably not going to affect them too badly. + Breeding bees for mutations can be aggrivating, especially whith long-lived species. With a little cleverness and only the slightest hint of smugness, you have found a way to utilize the Dimensional Singularity in a manner that only sucks away the life force of your tiny flying friends, bit by bit. Well, maybe significant amounts all at once. It's probably not going to affect them too badly. ##lineBreak## It may be somewhat tricky to obtain more than one of the §5Dragon Eggs§0 nessecary to obtain more than one of these. Perhaps there is a bee species that can assist with the limitation. diff --git a/magicbees_res/assets/magicbees/textures/items/magnetActive.png b/magicbees_res/assets/magicbees/textures/items/magnetActive.png new file mode 100644 index 0000000..3edc6ae Binary files /dev/null and b/magicbees_res/assets/magicbees/textures/items/magnetActive.png differ diff --git a/magicbees_res/assets/magicbees/textures/items/magnetInactive.png b/magicbees_res/assets/magicbees/textures/items/magnetInactive.png new file mode 100644 index 0000000..07923e3 Binary files /dev/null and b/magicbees_res/assets/magicbees/textures/items/magnetInactive.png differ diff --git a/magicbees_res/build.xml b/magicbees_res/build.xml index 4929da9..ed48646 100644 --- a/magicbees_res/build.xml +++ b/magicbees_res/build.xml @@ -15,7 +15,7 @@ - + diff --git a/magicbees_res/changelog.txt b/magicbees_res/changelog.txt index 223beea..c553eb4 100644 --- a/magicbees_res/changelog.txt +++ b/magicbees_res/changelog.txt @@ -1,8 +1,11 @@ +2.1.5 +Behold! The Mysterious Magnet! It attracts items to it, and thus, you, from great distances! (well, greater than your arms anyhow.) + 2.1.4 Some cleanup of Helper code Hammering out rest of Transmutation effect, and exposing parts of it in an API so other people can hook into it if they want. Have some Ars Magica 2 integration. -Also have some Thaumcraft 4 integration. +Also, have some Thaumcraft 4 integration! 2.1.3 Added a new mini bee branch: Polymorphic. It is said Unusual bees can have some unusual effects on the world if they are advanced... diff --git a/magicbees_src/magicbees/bees/BeeSpecies.java b/magicbees_src/magicbees/bees/BeeSpecies.java index e6e6c58..54b477a 100644 --- a/magicbees_src/magicbees/bees/BeeSpecies.java +++ b/magicbees_src/magicbees/bees/BeeSpecies.java @@ -11,9 +11,9 @@ import magicbees.item.types.DropType; import magicbees.item.types.NuggetType; import magicbees.item.types.PollenType; import magicbees.item.types.ResourceType; +import magicbees.main.CommonProxy; import magicbees.main.Config; import magicbees.main.utils.LocalizationManager; -import magicbees.main.utils.VersionInfo; import magicbees.main.utils.compat.ArsMagicaHelper; import magicbees.main.utils.compat.EquivalentExchangeHelper; import magicbees.main.utils.compat.ForestryHelper; @@ -1113,7 +1113,7 @@ public enum BeeSpecies implements IAlleleBeeSpecies, IIconProvider case SKULKING: case GHASTLY: case SPIDERY: case SMOULDERING: case TC_BRAINY: case TC_WISPY: case TC_BATTY: case AM_VORTEX: case AM_WIGHT: - value = VersionInfo.ModName.toLowerCase() + ":bees/skulking/"; + value = CommonProxy.DOMAIN + ":bees/skulking/"; break; default: diff --git a/magicbees_src/magicbees/block/BlockPlanks.java b/magicbees_src/magicbees/block/BlockPlanks.java index b85e8c9..f22f9e7 100644 --- a/magicbees_src/magicbees/block/BlockPlanks.java +++ b/magicbees_src/magicbees/block/BlockPlanks.java @@ -3,16 +3,14 @@ package magicbees.block; import java.util.List; import magicbees.block.types.PlankType; +import magicbees.main.CommonProxy; import magicbees.main.MagicBees; -import magicbees.main.utils.VersionInfo; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.ItemStack; import net.minecraft.util.Icon; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -62,7 +60,7 @@ public class BlockPlanks extends Block this.icons = new Icon[PlankType.values().length]; for (PlankType t : PlankType.values()) { - this.icons[t.ordinal()] = par1IconRegister.registerIcon(VersionInfo.ModName.toLowerCase() + ":" + t.name); + this.icons[t.ordinal()] = par1IconRegister.registerIcon(CommonProxy.DOMAIN + ":" + t.name); } } } diff --git a/magicbees_src/magicbees/block/BlockWoodSlab.java b/magicbees_src/magicbees/block/BlockWoodSlab.java index b2fc71c..4e3a60f 100644 --- a/magicbees_src/magicbees/block/BlockWoodSlab.java +++ b/magicbees_src/magicbees/block/BlockWoodSlab.java @@ -4,9 +4,9 @@ import java.util.List; import java.util.Random; import magicbees.block.types.PlankType; +import magicbees.main.CommonProxy; import magicbees.main.Config; import magicbees.main.MagicBees; -import magicbees.main.utils.VersionInfo; import net.minecraft.block.Block; import net.minecraft.block.BlockHalfSlab; import net.minecraft.block.material.Material; @@ -78,7 +78,7 @@ public class BlockWoodSlab extends BlockHalfSlab this.icons = new Icon[PlankType.values().length]; for (PlankType t : PlankType.values()) { - this.icons[t.ordinal()] = par1IconRegister.registerIcon(VersionInfo.ModName.toLowerCase() + ":" + t.name); + this.icons[t.ordinal()] = par1IconRegister.registerIcon(CommonProxy.DOMAIN + ":" + t.name); } } diff --git a/magicbees_src/magicbees/block/types/HiveType.java b/magicbees_src/magicbees/block/types/HiveType.java index ee78c44..8cc9481 100644 --- a/magicbees_src/magicbees/block/types/HiveType.java +++ b/magicbees_src/magicbees/block/types/HiveType.java @@ -1,17 +1,14 @@ package magicbees.block.types; import java.util.ArrayList; -import java.util.HashMap; import java.util.Random; -import magicbees.bees.Allele; import magicbees.bees.BeeGenomeManager; -import magicbees.bees.BeeManager; import magicbees.bees.BeeSpecies; import magicbees.bees.HiveDrop; import magicbees.item.types.CombType; +import magicbees.main.CommonProxy; import magicbees.main.Config; -import magicbees.main.utils.VersionInfo; import magicbees.main.utils.compat.ForestryHelper; import magicbees.world.feature.FeatureHive; import net.minecraft.client.renderer.texture.IconRegister; @@ -121,8 +118,8 @@ public enum HiveType { type.icons = new Icon[2]; - type.icons[0] = register.registerIcon(VersionInfo.ModName.toLowerCase() + ":beehive." + type.ordinal() + ".top"); - type.icons[1] = register.registerIcon(VersionInfo.ModName.toLowerCase() + ":beehive." + type.ordinal() + ".side"); + type.icons[0] = register.registerIcon(CommonProxy.DOMAIN + ":beehive." + type.ordinal() + ".top"); + type.icons[1] = register.registerIcon(CommonProxy.DOMAIN + ":beehive." + type.ordinal() + ".side"); } } diff --git a/magicbees_src/magicbees/item/ItemCapsule.java b/magicbees_src/magicbees/item/ItemCapsule.java index 3048373..a64a38d 100644 --- a/magicbees_src/magicbees/item/ItemCapsule.java +++ b/magicbees_src/magicbees/item/ItemCapsule.java @@ -83,13 +83,13 @@ public class ItemCapsule extends Item @SideOnly(Side.CLIENT) public void registerIcons(IconRegister par1IconRegister) { - this.itemIcon = par1IconRegister.registerIcon(VersionInfo.ModName.toLowerCase() + ":capsule" + this.capsuleType.getName().substring(0, 1).toUpperCase() + this.itemIcon = par1IconRegister.registerIcon(CommonProxy.DOMAIN + ":capsule" + this.capsuleType.getName().substring(0, 1).toUpperCase() + this.capsuleType.getName().substring(1)); for (FluidType t : FluidType.values()) { if (t != FluidType.EMPTY && t.liquidIcon == null) { - t.liquidIcon = par1IconRegister.registerIcon(VersionInfo.ModName.toLowerCase() + ":liquids/" + t.liquidID); + t.liquidIcon = par1IconRegister.registerIcon(CommonProxy.DOMAIN + ":liquids/" + t.liquidID); } } } diff --git a/magicbees_src/magicbees/item/ItemCrystalAspect.java b/magicbees_src/magicbees/item/ItemCrystalAspect.java index c0f9541..28b9318 100644 --- a/magicbees_src/magicbees/item/ItemCrystalAspect.java +++ b/magicbees_src/magicbees/item/ItemCrystalAspect.java @@ -2,9 +2,9 @@ package magicbees.item; import java.util.List; +import magicbees.main.CommonProxy; import magicbees.main.utils.LocalizationManager; import magicbees.main.utils.TabMagicBees; -import magicbees.main.utils.VersionInfo; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; @@ -41,7 +41,7 @@ public class ItemCrystalAspect extends Item @SideOnly(Side.CLIENT) public void registerIcons(IconRegister par1IconRegister) { - this.itemIcon = par1IconRegister.registerIcon(VersionInfo.ModName.toLowerCase() + ":crystalAspect"); + this.itemIcon = par1IconRegister.registerIcon(CommonProxy.DOMAIN + ":crystalAspect"); } @Override diff --git a/magicbees_src/magicbees/item/ItemMagicHiveFrame.java b/magicbees_src/magicbees/item/ItemMagicHiveFrame.java index 704503e..df8b85a 100644 --- a/magicbees_src/magicbees/item/ItemMagicHiveFrame.java +++ b/magicbees_src/magicbees/item/ItemMagicHiveFrame.java @@ -1,16 +1,12 @@ package magicbees.item; import magicbees.item.types.HiveFrameType; -import magicbees.main.Config; +import magicbees.main.CommonProxy; import magicbees.main.utils.TabMagicBees; -import magicbees.main.utils.VersionInfo; -import magicbees.main.utils.compat.ThaumcraftHelper; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -import thaumcraft.api.ThaumcraftApi; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -37,7 +33,7 @@ public class ItemMagicHiveFrame extends Item implements IHiveFrame @SideOnly(Side.CLIENT) public void registerIcons(IconRegister par1IconRegister) { - this.itemIcon = par1IconRegister.registerIcon(VersionInfo.ModName.toLowerCase() + ":frame" + type.getName()); + this.itemIcon = par1IconRegister.registerIcon(CommonProxy.DOMAIN + ":frame" + type.getName()); } // --------- IHiveFrame functions ----------------------------------------- diff --git a/magicbees_src/magicbees/item/ItemMiscResources.java b/magicbees_src/magicbees/item/ItemMiscResources.java index a6af2b7..c812764 100644 --- a/magicbees_src/magicbees/item/ItemMiscResources.java +++ b/magicbees_src/magicbees/item/ItemMiscResources.java @@ -59,7 +59,7 @@ public class ItemMiscResources extends Item { for (int i = 0; i < ResourceType.values().length; i++) { - this.icons[i] = par1IconRegister.registerIcon(VersionInfo.ModName.toLowerCase() + ":" + ResourceType.values()[i].getName()); + this.icons[i] = par1IconRegister.registerIcon(CommonProxy.DOMAIN + ":" + ResourceType.values()[i].getName()); } } diff --git a/magicbees_src/magicbees/item/ItemMoonDial.java b/magicbees_src/magicbees/item/ItemMoonDial.java index 3daae29..0d0b293 100644 --- a/magicbees_src/magicbees/item/ItemMoonDial.java +++ b/magicbees_src/magicbees/item/ItemMoonDial.java @@ -2,22 +2,18 @@ package magicbees.item; import java.util.List; -import cpw.mods.fml.common.registry.GameRegistry; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import magicbees.item.types.PollenType; -import magicbees.main.Config; +import magicbees.main.CommonProxy; import magicbees.main.MagicBees; import magicbees.main.utils.MoonPhase; import magicbees.main.utils.TabMagicBees; -import magicbees.main.utils.VersionInfo; -import magicbees.main.utils.compat.ForestryHelper; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.server.MinecraftServer; import net.minecraft.util.Icon; +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; public class ItemMoonDial extends Item { @@ -38,7 +34,7 @@ public class ItemMoonDial extends Item this.icons = new Icon[MoonPhase.values().length]; for (int i = 0; i < MoonPhase.values().length; ++i) { - this.icons[i] = par1IconRegister.registerIcon(VersionInfo.ModName.toLowerCase() + ":moonDial." + i); + this.icons[i] = par1IconRegister.registerIcon(CommonProxy.DOMAIN + ":moonDial." + i); } this.itemIcon = this.icons[4]; } diff --git a/magicbees_src/magicbees/item/ItemMysteriousMagnet.java b/magicbees_src/magicbees/item/ItemMysteriousMagnet.java new file mode 100644 index 0000000..e82cd01 --- /dev/null +++ b/magicbees_src/magicbees/item/ItemMysteriousMagnet.java @@ -0,0 +1,181 @@ +package magicbees.item; + +import java.util.HashMap; +import java.util.List; + +import magicbees.main.CommonProxy; +import magicbees.main.utils.LocalizationManager; +import net.minecraft.client.renderer.texture.IconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.Entity; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.projectile.EntityArrow; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.Icon; +import net.minecraft.world.World; +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public class ItemMysteriousMagnet extends Item +{ + @SideOnly(Side.CLIENT) + private Icon activeIcon; + + private float rangeBase; + private float multiplier; + private HashMap special = new HashMap(); + + public ItemMysteriousMagnet(int par1) + { + super(par1); + this.setNoRepair(); + this.setHasSubtypes(true); + this.rangeBase = 3f; + this.multiplier = 0.75f; + this.special.put(792499080, 6f); + this.special.put(-1813233790, 0.4f); + this.special.put(902599041, 5.5f); + this.setUnlocalizedName(CommonProxy.DOMAIN + ":mysteriousMagnet"); + } + + public void setBaseRange(float value) + { + this.rangeBase = value; + } + + public void setLevelMultiplier(float value) + { + this.multiplier = value; + } + + @Override + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack itemStack, EntityPlayer player, List list, boolean par4) + { + String s = LocalizationManager.getLocalizedString("misc.level", itemStack.getItemDamage() >> 1); + if (isMagnetActive(itemStack)) + { + list.add(LocalizationManager.getLocalizedString("misc.magnetActive", s)); + } + else + { + list.add(LocalizationManager.getLocalizedString("misc.magnetInactive", s)); + } + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(int par1, CreativeTabs par2CreativeTabs, List list) + { + super.getSubItems(par1, par2CreativeTabs, list); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IconRegister iconRegister) + { + this.itemIcon = iconRegister.registerIcon(CommonProxy.DOMAIN + ":magnetInactive"); + this.activeIcon = iconRegister.registerIcon(CommonProxy.DOMAIN + ":magnetActive"); + } + + @Override + @SideOnly(Side.CLIENT) + public Icon getIconFromDamage(int damage) + { + return isMagnetActive(damage) ? this.activeIcon : this.itemIcon; + } + + @Override + public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player) + { + if (player.isSneaking()) + { + itemStack.setItemDamage(itemStack.getItemDamage() ^ 1); + } + return itemStack; + } + + @Override + public void onUpdate(ItemStack itemStack, World world, Entity entity, int par4, boolean par5) + { + if (isMagnetActive(itemStack) && entity instanceof EntityPlayer) + { + EntityPlayer player = (EntityPlayer)entity; + int dragCount = player.username.hashCode(); + float radius = getRadius(itemStack.getItemDamage()); + AxisAlignedBB bounds = player.boundingBox.expand(radius, radius, radius); + List list = world.getEntitiesWithinAABB(EntityItem.class, bounds); + + 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; + + double length = Math.sqrt(x * x + y * y + z * z) * 2; + + x = x / length + player.motionX / 2; + y = y / length + player.motionY / 2; + z = z / length + player.motionZ / 2; + + e.motionX =+ x; + e.motionY =+ y; + e.motionZ =+ z; + e.isAirBorne = true; + + if (e.isCollidedHorizontally) + { + e.motionY += 1; + } + + if (world.rand.nextInt(20) == 0) + { + float pitch = 0.9f - world.rand.nextFloat() / 10f; + world.playSoundEffect(e.posX, e.posY, e.posZ, "mob.endermen.portal", 0.6f, pitch); + } + } + if (this.special.containsKey(dragCount) && world.rand.nextInt(15) == 0) + { + world.playSoundEffect(entity.posX, entity.posY, entity.posZ, "mob.endermen.portal", 1.5f, this.special.get(dragCount)); + } + } + + if ((itemStack.getItemDamage() >> 1) >= 7 && FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER) + { + List arrows = world.getEntitiesWithinAABB(EntityArrow.class, bounds); + + for (EntityArrow arrow : arrows) + { + if (world.rand.nextInt(10) == 0) + { + EntityItem replacement = new EntityItem(world, arrow.posX, arrow.posY, arrow.posZ, new ItemStack(Item.arrow)); + world.spawnEntityInWorld(replacement); + } + world.removeEntity(arrow); + } + } + } + } + + private boolean isMagnetActive(ItemStack itemStack) + { + return isMagnetActive(itemStack.getItemDamage()); + } + + private boolean isMagnetActive(int damage) + { + return (damage & 0x01) == 1; + } + + private float getRadius(int damageValue) + { + return this.rangeBase + (multiplier * (damageValue >> 1)); + } + +} diff --git a/magicbees_src/magicbees/item/ItemNugget.java b/magicbees_src/magicbees/item/ItemNugget.java index a02af14..d693393 100644 --- a/magicbees_src/magicbees/item/ItemNugget.java +++ b/magicbees_src/magicbees/item/ItemNugget.java @@ -3,7 +3,7 @@ package magicbees.item; import java.util.List; import magicbees.item.types.NuggetType; -import magicbees.main.utils.VersionInfo; +import magicbees.main.CommonProxy; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; @@ -54,7 +54,7 @@ public class ItemNugget extends Item this.icons = new Icon[NuggetType.values().length]; for (int i = 0; i < NuggetType.values().length; i++) { - this.icons[i] = par1IconRegister.registerIcon(VersionInfo.ModName.toLowerCase() + ":nugget" + this.icons[i] = par1IconRegister.registerIcon(CommonProxy.DOMAIN + ":nugget" + NuggetType.values()[i].name().substring(0, 1) + NuggetType.values()[i].name().substring(1).toLowerCase()); } diff --git a/magicbees_src/magicbees/item/ItemThaumiumGrafter.java b/magicbees_src/magicbees/item/ItemThaumiumGrafter.java index a25a9a5..a81970d 100644 --- a/magicbees_src/magicbees/item/ItemThaumiumGrafter.java +++ b/magicbees_src/magicbees/item/ItemThaumiumGrafter.java @@ -1,7 +1,7 @@ package magicbees.item; +import magicbees.main.CommonProxy; import magicbees.main.Config; -import magicbees.main.utils.VersionInfo; import magicbees.main.utils.compat.ThaumcraftHelper; import net.minecraft.block.Block; import net.minecraft.entity.EntityLivingBase; @@ -10,11 +10,9 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.world.World; import net.minecraftforge.common.ForgeHooks; -import cpw.mods.fml.common.registry.GameRegistry; -import forestry.api.arboriculture.IToolGrafter; -import thaumcraft.api.IRepairable; import thaumcraft.api.IRepairableExtended; import thaumcraft.api.ThaumcraftApi; +import forestry.api.arboriculture.IToolGrafter; public class ItemThaumiumGrafter extends Item implements IRepairableExtended, IToolGrafter { @@ -24,7 +22,7 @@ public class ItemThaumiumGrafter extends Item implements IRepairableExtended, IT this.setMaxStackSize(1); this.setMaxDamage(15); this.setCreativeTab(forestry.api.core.Tabs.tabArboriculture); - this.setUnlocalizedName(this.iconString = VersionInfo.ModName.toLowerCase() + ":thaumiumGrafter"); + this.setUnlocalizedName(this.iconString = CommonProxy.DOMAIN + ":thaumiumGrafter"); } @Override diff --git a/magicbees_src/magicbees/item/ItemThaumiumScoop.java b/magicbees_src/magicbees/item/ItemThaumiumScoop.java index c52902e..47d4605 100644 --- a/magicbees_src/magicbees/item/ItemThaumiumScoop.java +++ b/magicbees_src/magicbees/item/ItemThaumiumScoop.java @@ -1,6 +1,6 @@ package magicbees.item; -import magicbees.main.utils.VersionInfo; +import magicbees.main.CommonProxy; import net.minecraft.block.Block; import net.minecraft.entity.EntityLivingBase; import net.minecraft.item.Item; @@ -9,7 +9,6 @@ import net.minecraft.world.World; import net.minecraftforge.common.ForgeHooks; import thaumcraft.api.IRepairable; import thaumcraft.api.ThaumcraftApi; -import cpw.mods.fml.common.registry.GameRegistry; import forestry.api.core.IToolScoop; public class ItemThaumiumScoop extends Item implements IRepairable, IToolScoop @@ -20,7 +19,7 @@ public class ItemThaumiumScoop extends Item implements IRepairable, IToolScoop this.setMaxStackSize(1); this.setMaxDamage(30); this.setCreativeTab(forestry.api.core.Tabs.tabApiculture); - this.setUnlocalizedName(this.iconString = VersionInfo.ModName.toLowerCase() + ":thaumiumScoop"); + this.setUnlocalizedName(this.iconString = CommonProxy.DOMAIN + ":thaumiumScoop"); } @Override diff --git a/magicbees_src/magicbees/item/ItemWax.java b/magicbees_src/magicbees/item/ItemWax.java index c8cd848..350710f 100644 --- a/magicbees_src/magicbees/item/ItemWax.java +++ b/magicbees_src/magicbees/item/ItemWax.java @@ -3,7 +3,7 @@ package magicbees.item; import java.util.List; import magicbees.item.types.WaxType; -import magicbees.main.utils.VersionInfo; +import magicbees.main.CommonProxy; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; @@ -41,8 +41,8 @@ public class ItemWax extends Item @SideOnly(Side.CLIENT) public void registerIcons(IconRegister par1IconRegister) { - this.itemIcon = par1IconRegister.registerIcon(VersionInfo.ModName.toLowerCase() + ":wax.0"); - this.secondaryIcon = par1IconRegister.registerIcon(VersionInfo.ModName.toLowerCase() + ":wax.1"); + this.itemIcon = par1IconRegister.registerIcon(CommonProxy.DOMAIN + ":wax.0"); + this.secondaryIcon = par1IconRegister.registerIcon(CommonProxy.DOMAIN + ":wax.1"); } @Override diff --git a/magicbees_src/magicbees/item/types/HiveFrameType.java b/magicbees_src/magicbees/item/types/HiveFrameType.java index 30009f0..bceaf87 100644 --- a/magicbees_src/magicbees/item/types/HiveFrameType.java +++ b/magicbees_src/magicbees/item/types/HiveFrameType.java @@ -4,19 +4,19 @@ import magicbees.main.utils.LocalizationManager; public enum HiveFrameType { - MAGIC("Magic", 240, 1f, 1f, 1f, 2f), - RESILIENT("Resilient", 800, 1f, 1f, 1f, 2f), - GENTLE("Gentle", 200, 1f, 0.7f, 1.5f, 1.4f), - METABOLIC("Metabolic", 130, 1f, 1.8f, 1f, 1.2f), - NECROTIC("Necrotic", 280, 1f, 1f, 0.3f, 0.75f), - TEMPORAL("Temporal", 300, 1f, 1f, 2.5f, 1f), - OBLIVION("Oblivion", 50, 1f, 1f, 0.0001f, 0f), + MAGIC("Magic", 240, 1f, 1f, 1f, 2f, 0.5f), + RESILIENT("Resilient", 800, 1f, 1f, 1f, 2f, 0.5f), + GENTLE("Gentle", 200, 1f, 0.7f, 1.5f, 1.4f, 0.1f), + METABOLIC("Metabolic", 130, 1f, 1.8f, 1f, 1.2f, 1f), + NECROTIC("Necrotic", 280, 1f, 1f, 0.3f, 0.75f, 0.8f), + TEMPORAL("Temporal", 300, 1f, 1f, 2.5f, 1f, 0.8f), + OBLIVION("Oblivion", 50, 1f, 1f, 0.0001f, 0f, 0.8f), ; private HiveFrameType(String name, int damage, - float territory, float mutation, float lifespan, float production) + float territory, float mutation, float lifespan, float production, float geneticDecay) { - this(name, damage, territory, mutation, lifespan, production, 1f, 0f, false, false, false, false); + this(name, damage, territory, mutation, lifespan, production, 1f, geneticDecay, false, false, false, false); } private HiveFrameType(String name, int damage, diff --git a/magicbees_src/magicbees/main/Config.java b/magicbees_src/magicbees/main/Config.java index e03b6f3..1ab5b70 100644 --- a/magicbees_src/magicbees/main/Config.java +++ b/magicbees_src/magicbees/main/Config.java @@ -9,7 +9,6 @@ import magicbees.block.BlockHive; import magicbees.block.BlockPlanks; import magicbees.block.BlockWoodSlab; import magicbees.block.types.HiveType; -import magicbees.block.types.PlankType; import magicbees.item.ItemCapsule; import magicbees.item.ItemComb; import magicbees.item.ItemCrystalAspect; @@ -17,6 +16,7 @@ import magicbees.item.ItemDrop; import magicbees.item.ItemMagicHiveFrame; import magicbees.item.ItemMiscResources; import magicbees.item.ItemMoonDial; +import magicbees.item.ItemMysteriousMagnet; import magicbees.item.ItemNugget; import magicbees.item.ItemPollen; import magicbees.item.ItemPropolis; @@ -27,10 +27,6 @@ import magicbees.item.types.NuggetType; import magicbees.item.types.ResourceType; import magicbees.item.types.WaxType; import magicbees.main.utils.LocalizationManager; -import magicbees.main.utils.VersionInfo; -import magicbees.main.utils.compat.ArsMagicaHelper; -import magicbees.main.utils.compat.EquivalentExchangeHelper; -import magicbees.main.utils.compat.ForestryHelper; import magicbees.main.utils.compat.ThaumcraftHelper; import magicbees.storage.BackpackDefinition; import magicbees.tileentity.TileEntityEffectJar; @@ -38,7 +34,6 @@ import net.minecraft.block.Block; import net.minecraft.item.Item; import net.minecraft.item.ItemFood; import net.minecraft.item.ItemMultiTextureTile; -import net.minecraft.item.ItemSlab; import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; import net.minecraft.util.WeightedRandomChestContent; @@ -73,7 +68,9 @@ public class Config public boolean DoHiveRetrogen; public boolean ForceHiveRegen; - public boolean EnableThaumcraftCompat; + public float MagnetBaseRange; + public float MagnetLevelMultiplier; + public static BlockPlanks planksWood; public static BlockWoodSlab slabWoodHalf; @@ -93,6 +90,7 @@ public class Config public static Item thaumiumGrafter; public static ItemNugget nuggets; public static ItemMoonDial moonDial; + public static ItemMysteriousMagnet magnet; //----- Liquid Capsules -------------------- public static ItemCapsule magicCapsule; @@ -299,8 +297,8 @@ public class Config jellyBaby = new ItemFood(configuration.getItem("jellyBabies", itemIDBase++).getInt() - 256, 1, false).setAlwaysEdible() .setPotionEffect(Potion.moveSpeed.id, 5, 1, 1f); - jellyBaby.setUnlocalizedName(VersionInfo.ModName.toLowerCase() + ":jellyBabies").setTextureName(VersionInfo.ModName.toLowerCase() + ":jellyBabies"); - GameRegistry.registerItem(jellyBaby, VersionInfo.ModName.toLowerCase() + ":jellyBabies"); + jellyBaby.setUnlocalizedName(CommonProxy.DOMAIN + ":jellyBabies").setTextureName(CommonProxy.DOMAIN + ":jellyBabies"); + GameRegistry.registerItem(jellyBaby, CommonProxy.DOMAIN + ":jellyBabies"); voidCapsule = new ItemCapsule(CapsuleType.VOID, configuration.getItem("voidCapsule", itemIDBase++).getInt() - 256, this.CapsuleStackSizeMax); @@ -329,6 +327,16 @@ public class Config nuggets = new ItemNugget(configuration.getItem("beeNuggets", itemIDBase++).getInt() - 256); + magnet = new ItemMysteriousMagnet(configuration.getItem("magicMagnet", itemIDBase++).getInt() - 256); + magnet.setBaseRange(3f); // magnet.setBaseRange(MagnetBaseRange); + magnet.setLevelMultiplier(0.75f); // magnet.setLevelMultiplier(MagnetLevelMultiplier); + + for (int level = 0; level <= 8; level++) + { + OreDictionary.registerOre("mb.magnet.level" + level, new ItemStack(magnet, 1, level * 2)); + OreDictionary.registerOre("mb.magnet.level" + level, new ItemStack(magnet, 1, level * 2 + 1)); + } + OreDictionary.registerOre("beeComb", new ItemStack(combs, 1, OreDictionary.WILDCARD_VALUE)); OreDictionary.registerOre("waxMagical", wax.getStackForType(WaxType.MAGIC)); OreDictionary.registerOre("waxMagical", wax.getStackForType(WaxType.AMNESIC)); @@ -407,11 +415,15 @@ public class Config { FMLLog.info("Magic Bees will attempt to regenerate hives in chunks that were generated before the mod was added."); } + + // TODO: Determine optimal settings, then uncomment. + /*p = configuration.get("general", "magnetRangeBase", 3.0); + p.comment = "Base range (in blocks) of the Mysterious Magnet"; + this.MagnetBaseRange = (float)p.getDouble(3.0); - // DELETE THIS. - p = configuration.get("DEBUG", "enableThaumcraftIntegration", true); - p.comment = "If MB blows up because of Thaumcraft, switch this to false."; - this.EnableThaumcraftCompat = p.getBoolean(true); + p = configuration.get("general", "magnetRangeMultiplier", 0.75); + p.comment = "Range multiplier per level of the Mysterious Magnet. Total range = base range + level * multiplier"; + this.MagnetLevelMultiplier = (float)p.getDouble(0.75);*/ } } diff --git a/magicbees_src/magicbees/main/utils/CraftingManager.java b/magicbees_src/magicbees/main/utils/CraftingManager.java index 4a5592b..6739b2d 100644 --- a/magicbees_src/magicbees/main/utils/CraftingManager.java +++ b/magicbees_src/magicbees/main/utils/CraftingManager.java @@ -313,12 +313,13 @@ public class CraftingManager 'x', Config.nuggets.getStackForType(NuggetType.APATITE) })); - output = Config.miscResources.getStackForType(ResourceType.DIMENSIONAL_SINGULARITY, 2); + output = Config.miscResources.getStackForType(ResourceType.DIMENSIONAL_SINGULARITY); GameRegistry.addRecipe(output, new Object[] { - " E ", "pOp", " E ", + "EOE", "QDQ", "EOE", 'E', Item.eyeOfEnder, - 'p', Item.enderPearl, - 'W', Block.obsidian + 'Q', Block.blockNetherQuartz, + 'O', Block.obsidian, + 'D', Block.blockDiamond }); output = Config.voidCapsule.getCapsuleForLiquid(FluidType.EMPTY); @@ -330,6 +331,26 @@ public class CraftingManager 'T', Item.goldNugget }); + output = new ItemStack(Config.magnet); + GameRegistry.addRecipe(output, new Object[] { + " i ", "cSc", " B ", + 'i', Item.ingotIron, + 'c', Item.compass, + 'B', Block.blockDiamond, + 'S', Config.miscResources.getStackForType(ResourceType.DIMENSIONAL_SINGULARITY) + }); + + for (int level = 1; level <= 8; level++) + { + output = new ItemStack(Config.magnet, 1, level * 2); + GameRegistry.addRecipe(new ShapedOreRecipe(output, new Object[] { + " m ", "mSm", " B ", + 'm', "mb.magnet.level" + (level - 1), + 'B', Item.diamond, + 'S', Config.miscResources.getStackForType(ResourceType.DIMENSIONAL_SINGULARITY) + })); + } + if (ThaumcraftHelper.isActive()) { diff --git a/magicbees_src/magicbees/main/utils/LocalizationManager.java b/magicbees_src/magicbees/main/utils/LocalizationManager.java index c7d821a..893c477 100644 --- a/magicbees_src/magicbees/main/utils/LocalizationManager.java +++ b/magicbees_src/magicbees/main/utils/LocalizationManager.java @@ -38,4 +38,14 @@ public class LocalizationManager } return result; } + + public static String getLocalizedString(String key, Object ...objects) + { + String result = LanguageRegistry.instance().getStringLocalization(key); + if (result.isEmpty()) + { + result = LanguageRegistry.instance().getStringLocalization(key, "en_US"); + } + return String.format(result, objects); + } } diff --git a/magicbees_src/magicbees/main/utils/compat/ThaumcraftHelper.java b/magicbees_src/magicbees/main/utils/compat/ThaumcraftHelper.java index 613fe59..09a81d9 100644 --- a/magicbees_src/magicbees/main/utils/compat/ThaumcraftHelper.java +++ b/magicbees_src/magicbees/main/utils/compat/ThaumcraftHelper.java @@ -302,10 +302,13 @@ public class ThaumcraftHelper new ItemStack(Item.pocketSundial), new AspectList().add(Aspect.ORDER, 10).add(Aspect.VOID, 10).add(Aspect.TRAP, 4)); singularity = ThaumcraftApi.addCrucibleRecipe("MB_DimensionalSingularity", Config.miscResources.getStackForType(ResourceType.DIMENSIONAL_SINGULARITY, 3), - new ItemStack(Block.dragonEgg), new AspectList().add(Aspect.ELDRITCH, 10).add(Aspect.EXCHANGE, 10)); + new ItemStack(Block.blockDiamond), new AspectList().add(Aspect.ELDRITCH, 10).add(Aspect.EXCHANGE, 20)); - essenceOblivion = ThaumcraftApi.addCrucibleRecipe("MB_EssenceOblivion", Config.miscResources.getStackForType(ResourceType.ESSENCE_SCORNFUL_OBLIVION), - Config.miscResources.getStackForType(ResourceType.DIMENSIONAL_SINGULARITY), new AspectList().add(Aspect.DARKNESS, 5).add(Aspect.ELDRITCH, 5).add(Aspect.HUNGER, 15).add(Aspect.VOID, 10)); + essenceOblivion = ThaumcraftApi.addShapelessArcaneCraftingRecipe("MB_EssenceOblivion", Config.miscResources.getStackForType(ResourceType.ESSENCE_SCORNFUL_OBLIVION), + new AspectList().add(Aspect.ENTROPY, 25).add(Aspect.AIR, 40).add(Aspect.ORDER, 15), new Object[] { + Config.miscResources.getStackForType(ResourceType.DIMENSIONAL_SINGULARITY), + Block.dragonEgg, + }); } private static Object frameMagic; @@ -455,7 +458,7 @@ public class ThaumcraftHelper ResearchItem essenceOblivionR = new ResearchItem("MB_EssenceOblivion", category, new AspectList().add(Aspect.VOID, 2).add(Aspect.HUNGER, 1), -3, 3, 5, Config.miscResources.getStackForType(ResourceType.ESSENCE_SCORNFUL_OBLIVION)) - .setPages(getResearchPage("MB_EssenceOblivion.1"), new ResearchPage((RecipeCrucible)essenceOblivion), new ResearchPage(recipe) ) + .setPages(getResearchPage("MB_EssenceOblivion.1"), new ResearchPage((IArcaneRecipe)essenceOblivion), new ResearchPage(recipe) ) .setParents("MB_DimensionalSingularity") .setConcealed() .registerResearchItem(); diff --git a/magicbees_src/magicbees/tileentity/TileEntityEffectJar.java b/magicbees_src/magicbees/tileentity/TileEntityEffectJar.java index bf25d4f..6aa48d0 100644 --- a/magicbees_src/magicbees/tileentity/TileEntityEffectJar.java +++ b/magicbees_src/magicbees/tileentity/TileEntityEffectJar.java @@ -1,20 +1,19 @@ package magicbees.tileentity; -import magicbees.main.utils.VersionInfo; +import magicbees.main.CommonProxy; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; -import forestry.api.apiculture.BeeManager; import forestry.api.apiculture.IAlleleBeeSpecies; import forestry.api.apiculture.IBee; import forestry.api.genetics.IEffectData; public class TileEntityEffectJar extends TileEntity implements IInventory { - public static final String tileEntityName = VersionInfo.ModName.toLowerCase() + ".effectJar"; + public static final String tileEntityName = CommonProxy.DOMAIN + ".effectJar"; private String ownerName; private EffectJarHousing housingLogic; diff --git a/magicbees_src/magicbees/world/WorldTicker.java b/magicbees_src/magicbees/world/WorldTicker.java index 037c1d8..439708c 100644 --- a/magicbees_src/magicbees/world/WorldTicker.java +++ b/magicbees_src/magicbees/world/WorldTicker.java @@ -1,13 +1,12 @@ package magicbees.world; -import java.util.ArrayList; import java.util.EnumSet; import java.util.HashMap; import java.util.LinkedList; import java.util.Random; +import magicbees.main.CommonProxy; import magicbees.main.utils.ChunkCoords; -import magicbees.main.utils.VersionInfo; import net.minecraft.world.World; import cpw.mods.fml.common.ITickHandler; import cpw.mods.fml.common.TickType; @@ -57,7 +56,7 @@ public class WorldTicker implements ITickHandler @Override public String getLabel() { - return VersionInfo.ModName.toLowerCase() + ".world"; + return CommonProxy.DOMAIN + ".world"; } public void queueChunkCoords(ChunkCoords coords)