From e12eda73fc8d6bf0e5aa23fbd4e8c7925ebf9f4d Mon Sep 17 00:00:00 2001 From: Alastors <78517796+Alastors@users.noreply.github.com> Date: Thu, 27 Apr 2023 22:01:03 -0400 Subject: [PATCH] Addition of Blood Magic Frames Adds the replacement for the Blood Frame from BM, which is soon to be deleted from BM because of glitches, likewise this adds a new frame, The Maddening Frame of Frenzy, both use LP, both need a recipe to be decided on a later date, both need their lp tweaked, the updated LP is currently proposed to be switched to 25k --- dependencies.gradle | 5 +- .../magicbees/item/types/HiveFrameType.java | 3 +- src/main/java/magicbees/main/Config.java | 12 ++ .../compat/bloodmagic/ItemBloodFrame.java | 140 ++++++++++++++++++ .../compat/bloodmagic/ItemFrenziedFrame.java | 137 +++++++++++++++++ .../assets/magicbees/lang/en_US.lang | 2 + .../magicbees/textures/items/bloodFrame.png | Bin 0 -> 401 bytes .../textures/items/frenziedFrame.png | Bin 0 -> 498 bytes 8 files changed, 296 insertions(+), 3 deletions(-) create mode 100644 src/main/java/magicbees/main/utils/compat/bloodmagic/ItemBloodFrame.java create mode 100644 src/main/java/magicbees/main/utils/compat/bloodmagic/ItemFrenziedFrame.java create mode 100644 src/main/resources/assets/magicbees/textures/items/bloodFrame.png create mode 100644 src/main/resources/assets/magicbees/textures/items/frenziedFrame.png diff --git a/dependencies.gradle b/dependencies.gradle index 14f4243..3dd097f 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -1,9 +1,10 @@ // Add your dependencies here dependencies { - compile('com.github.GTNewHorizons:ForestryMC:4.5.2:dev') + compile('com.github.GTNewHorizons:ForestryMC:4.6.6:dev') compileOnly('com.github.GTNewHorizons:Baubles:1.0.1.14:dev') {transitive = false} - compileOnly('com.github.GTNewHorizons:Botania:1.9.2-GTNH:api') {transitive = false} + compileOnly('com.github.GTNewHorizons:Botania:1.9.17-GTNH:api') {transitive = false} compileOnly('thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev') {transitive = false} + compileOnly('com.github.GTNewHorizons:BloodMagic:1.3.22:dev') {transitive = false} } diff --git a/src/main/java/magicbees/item/types/HiveFrameType.java b/src/main/java/magicbees/item/types/HiveFrameType.java index f822993..aa71438 100644 --- a/src/main/java/magicbees/item/types/HiveFrameType.java +++ b/src/main/java/magicbees/item/types/HiveFrameType.java @@ -12,7 +12,8 @@ public enum HiveFrameType implements IBeeModifier { METABOLIC("Metabolic", 130, 1f, 1.8f, 1f, 1.2f, 1f), NECROTIC("Necrotic", 280, 1f, 1f, 0.3f, 0.75f, 1.2f), TEMPORAL("Temporal", 300, 1f, 1f, 2.5f, 1f, 0.8f), - OBLIVION("Oblivion", 50, 1f, 1f, 0.0001f, 0f, 1f),; + OBLIVION("Oblivion", 50, 1f, 1f, 0.0001f, 0f, 1f); + private final String frameName; public final int maxDamage; diff --git a/src/main/java/magicbees/main/Config.java b/src/main/java/magicbees/main/Config.java index 88fa5c3..e5d620f 100644 --- a/src/main/java/magicbees/main/Config.java +++ b/src/main/java/magicbees/main/Config.java @@ -38,6 +38,8 @@ import magicbees.main.utils.LogHelper; import magicbees.main.utils.VersionInfo; import magicbees.main.utils.compat.BotaniaHelper; import magicbees.main.utils.compat.ThaumcraftHelper; +import magicbees.main.utils.compat.bloodmagic.ItemBloodFrame; +import magicbees.main.utils.compat.bloodmagic.ItemFrenziedFrame; import magicbees.storage.BackpackDefinition; import magicbees.tileentity.TileEntityEffectJar; import magicbees.tileentity.TileEntityMagicApiary; @@ -146,6 +148,8 @@ public class Config { public static ItemMagicHiveFrame hiveFrameNecrotic; public static ItemMagicHiveFrame hiveFrameTemporal; public static ItemMagicHiveFrame hiveFrameOblivion; + public static ItemBloodFrame hiveFrameBlood; + public static ItemFrenziedFrame hiveFrameFrenzy; // ----- Backpacks ------------------------------------------ public static Item thaumaturgeBackpackT1; @@ -482,6 +486,14 @@ public class Config { voidGrafter = new ItemVoidGrafter(); GameRegistry.registerItem(voidGrafter, voidGrafter.getUnlocalizedName(), CommonProxy.DOMAIN); + if (bloodMagicActive) { + hiveFrameBlood = new ItemBloodFrame(); + GameRegistry.registerItem(hiveFrameBlood, hiveFrameBlood.getUnlocalizedName(), CommonProxy.DOMAIN); + + hiveFrameFrenzy = new ItemFrenziedFrame(); + GameRegistry.registerItem(hiveFrameFrenzy, hiveFrameFrenzy.getUnlocalizedName(), CommonProxy.DOMAIN); + } + } } diff --git a/src/main/java/magicbees/main/utils/compat/bloodmagic/ItemBloodFrame.java b/src/main/java/magicbees/main/utils/compat/bloodmagic/ItemBloodFrame.java new file mode 100644 index 0000000..5b11b0b --- /dev/null +++ b/src/main/java/magicbees/main/utils/compat/bloodmagic/ItemBloodFrame.java @@ -0,0 +1,140 @@ +package magicbees.main.utils.compat.bloodmagic; + +import WayofTime.alchemicalWizardry.AlchemicalWizardry; +import WayofTime.alchemicalWizardry.common.items.EnergyItems; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import forestry.api.apiculture.*; +import magicbees.main.CommonProxy; +import magicbees.main.utils.TabMagicBees; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; + +import java.util.List; + +public class ItemBloodFrame extends EnergyItems implements IHiveFrame { + + private final IBeeModifier beeModifier = new BloodFrameBeeModifier(); + private EntityPlayer owner = null; + + public ItemBloodFrame() { + super(); + this.maxStackSize = 1; + this.setMaxDamage(1); + setEnergyUsed(1000); + setCreativeTab(TabMagicBees.tabMagicBees); + this.setUnlocalizedName("bloodFrame"); + } + + private static class BloodFrameBeeModifier implements IBeeModifier { + + @Override + public float getMutationModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier) { + return 1; + } + + @Override + public float getLifespanModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier) { + return 0.0001f; + } + + @Override + public float getProductionModifier(IBeeGenome genome, float currentModifier) { + return 0; + } + + @Override + public float getFloweringModifier(IBeeGenome genome, float currentModifier) { + return 1; + } + + @Override + public float getGeneticDecay(IBeeGenome genome, float currentModifier) { + return 1; + } + + @Override + public boolean isSealed() { + return false; + } + + @Override + public boolean isSelfLighted() { + return false; + } + + @Override + public boolean isSunlightSimulated() { + return false; + } + + @Override + public boolean isHellish() { + return false; + } + + @Override + public float getTerritoryModifier(IBeeGenome genome, float currentModifier) { + return 1; + } + } + + @Override + public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) { + par3List.add(StatCollector.translateToLocal("tooltip.bloodframe.desc")); + + if (!(par1ItemStack.getTagCompound() == null)) { + par3List.add( + StatCollector.translateToLocal("tooltip.owner.currentowner") + " " + + par1ItemStack.getTagCompound().getString("ownerName")); + } + + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister iconRegister) { + this.itemIcon = iconRegister.registerIcon(CommonProxy.DOMAIN + ":bloodFrame"); + } + + @Override + public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) { + + if (EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer)) { + owner = par3EntityPlayer; + if (par1ItemStack.getItemDamage() > 0) { + if (EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, getEnergyUsed())) { + par1ItemStack.setItemDamage(par1ItemStack.getItemDamage() - 1); + } + } + } + + return par1ItemStack; + } + + @Override + public ItemStack frameUsed(IBeeHousing housing, ItemStack frame, IBee queen, int wear) { + // TODO Auto-generated method stub + if (EnergyItems.canSyphonInContainer(frame, getEnergyUsed() * wear)) { + if (owner != null) { + EnergyItems.drainPlayerNetwork(owner, getEnergyUsed() * wear); + } + // EnergyItems.syphonWhileInContainer(frame, getEnergyUsed() * wear); + } else { + frame.setItemDamage(frame.getItemDamage() + wear); + if (frame.getItemDamage() >= frame.getMaxDamage()) { + return null; + } + } + return frame; + } + + @Override + public IBeeModifier getBeeModifier() { + return beeModifier; + } +} diff --git a/src/main/java/magicbees/main/utils/compat/bloodmagic/ItemFrenziedFrame.java b/src/main/java/magicbees/main/utils/compat/bloodmagic/ItemFrenziedFrame.java new file mode 100644 index 0000000..c7043f1 --- /dev/null +++ b/src/main/java/magicbees/main/utils/compat/bloodmagic/ItemFrenziedFrame.java @@ -0,0 +1,137 @@ +package magicbees.main.utils.compat.bloodmagic; + +import WayofTime.alchemicalWizardry.common.items.EnergyItems; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import forestry.api.apiculture.*; +import magicbees.main.CommonProxy; +import magicbees.main.utils.TabMagicBees; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; + +import java.util.List; + +public class ItemFrenziedFrame extends EnergyItems implements IHiveFrame { + + private final IBeeModifier beeModifier = new FrenziedFrameBeeModifier(); + private EntityPlayer owner = null; + + public ItemFrenziedFrame() { + super(); + this.maxStackSize = 1; + this.setMaxDamage(1); + setEnergyUsed(1000); + setCreativeTab(TabMagicBees.tabMagicBees); + this.setUnlocalizedName("frenziedFrame"); + } + + private static class FrenziedFrameBeeModifier implements IBeeModifier { + + @Override + public float getMutationModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier) { + return 10; + } + + @Override + public float getLifespanModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier) { + return 0.0001f; + } + + @Override + public float getProductionModifier(IBeeGenome genome, float currentModifier) { + return 0; + } + + @Override + public float getFloweringModifier(IBeeGenome genome, float currentModifier) { + return 0; + } + + @Override + public float getGeneticDecay(IBeeGenome genome, float currentModifier) { + return 10; + } + + @Override + public boolean isSealed() { + return false; + } + + @Override + public boolean isSelfLighted() { + return false; + } + + @Override + public boolean isSunlightSimulated() { + return false; + } + + @Override + public boolean isHellish() { + return false; + } + + @Override + public float getTerritoryModifier(IBeeGenome genome, float currentModifier) { + return 1; + } + } + + @Override + public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) { + par3List.add(StatCollector.translateToLocal("MAY CHAOS TAKE THE WORLD")); + + if (!(par1ItemStack.getTagCompound() == null)) { + par3List.add( + StatCollector.translateToLocal("tooltip.owner.currentowner") + " " + + par1ItemStack.getTagCompound().getString("ownerName")); + } + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister iconRegister) { + this.itemIcon = iconRegister.registerIcon(CommonProxy.DOMAIN + ":frenziedFrame"); + } + + @Override + public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) { + + if (EnergyItems.checkAndSetItemOwner(par1ItemStack, par3EntityPlayer)) { + owner = par3EntityPlayer; + if (par1ItemStack.getItemDamage() > 0) { + if (EnergyItems.syphonBatteries(par1ItemStack, par3EntityPlayer, getEnergyUsed())) { + par1ItemStack.setItemDamage(par1ItemStack.getItemDamage() - 1); + } + } + } + + return par1ItemStack; + } + + @Override + public ItemStack frameUsed(IBeeHousing housing, ItemStack frame, IBee queen, int wear) { + // TODO Auto-generated method stub + if (EnergyItems.canSyphonInContainer(frame, getEnergyUsed() * wear)) { + if (owner != null) { + EnergyItems.drainPlayerNetwork(owner, getEnergyUsed() * wear); + } + // EnergyItems.syphonWhileInContainer(frame, getEnergyUsed() * wear); + } else { + frame.setItemDamage(frame.getItemDamage() + wear); + if (frame.getItemDamage() >= frame.getMaxDamage()) { + return null; + } + } + return frame; + } + + @Override + public IBeeModifier getBeeModifier() { + return beeModifier; + } +} diff --git a/src/main/resources/assets/magicbees/lang/en_US.lang b/src/main/resources/assets/magicbees/lang/en_US.lang index 3bd43ee..bc95993 100644 --- a/src/main/resources/assets/magicbees/lang/en_US.lang +++ b/src/main/resources/assets/magicbees/lang/en_US.lang @@ -144,6 +144,8 @@ item.frameMetabolic.name=Metabolic Frame item.frameNecrotic.name=Necrotic Frame item.frameTemporal.name=Temporal Frame item.frameOblivion.name=Oblivion Frame +item.bloodFrame.name=Sanguis Artus +item.frenziedFrame.name=Maddening Frame of Frenzy #Capsules capsule.magic=%s Magic Capsule diff --git a/src/main/resources/assets/magicbees/textures/items/bloodFrame.png b/src/main/resources/assets/magicbees/textures/items/bloodFrame.png new file mode 100644 index 0000000000000000000000000000000000000000..f41865897d64710b72f2e334cdd5deb5fa62ca39 GIT binary patch literal 401 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D%z4Lw~PLo9l) zPBipB>>$xLfA_MEUPX&71xejOf21S-F!HT?760Phvq$sxKX~_O-r4#KkCeh(41?N* zmMqYb z?f7O9@7hzIoC$BE!^fEeYDb6bnC8^8}jQJ-ZoG8d)-ZQ$)dP#X-OYPx$l1W5CR5*>jlDkSnK@f(&jTbDuM1v>MDms)?j$3!lZ-UQzAENk=duYTo1mG`TcWf` z;b<1@8Vk8Q<5D=9Wnuoz#IN-R0L9{5^TMwATgoPo%5K!xZZOVR9mX9Xq!Zftwp6FG z8#O{Y_AS7!p_Xox5%4Z9z5lFkOLgO(-hWoHc$m-QX~S9Bd^B1iaZDev