Added in Unbinding Ritual recipes (UnbindingRegistry.registerRecipe(outputItemStack, inputItemStack)) and automatic reversion of registered Binding Recipes. Renamed Binding Ritual class, updated ritual blacklist. Blood Magic, now with 8% more lightning!

This commit is contained in:
Arcaratus 2015-05-11 21:38:16 -04:00
parent 1eefcda6ca
commit 9247e66f13
7 changed files with 177 additions and 22 deletions

View file

@ -11,6 +11,7 @@ import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import WayofTime.alchemicalWizardry.api.bindingRegistry.UnbindingRegistry;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
@ -166,7 +167,7 @@ import WayofTime.alchemicalWizardry.common.rituals.RitualEffectLifeConduit;
import WayofTime.alchemicalWizardry.common.rituals.RitualEffectMagnetic;
import WayofTime.alchemicalWizardry.common.rituals.RitualEffectOmegaStalling;
import WayofTime.alchemicalWizardry.common.rituals.RitualEffectOmegaTest;
import WayofTime.alchemicalWizardry.common.rituals.RitualEffectSoulBound;
import WayofTime.alchemicalWizardry.common.rituals.RitualEffectBinding;
import WayofTime.alchemicalWizardry.common.rituals.RitualEffectSpawnWard;
import WayofTime.alchemicalWizardry.common.rituals.RitualEffectSphereCreator;
import WayofTime.alchemicalWizardry.common.rituals.RitualEffectSummonMeteor;
@ -376,6 +377,13 @@ public class AlchemicalWizardry
public static boolean ritualDisabledSpawnWard;
public static boolean ritualDisabledVeilOfEvil;
public static boolean ritualDisabledFullStomach;
public static boolean ritualDisabledConvocation;
public static boolean ritualDisabledSymmetry;
public static boolean ritualDisabledStalling;
public static boolean ritualDisabledCrafting;
public static boolean ritualDisabledPhantomHands;
public static boolean ritualDisabledSphereIsland;
public static boolean isThaumcraftLoaded;
public static boolean isForestryLoaded;
@ -1391,7 +1399,7 @@ public class AlchemicalWizardry
Rituals.registerRitual("AW003GreenGrove", 1, 1000, new RitualEffectGrowth(), "Ritual of the Green Grove", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/AlchemyArrays/GreenGroveArray.png"), 244, 164, 96, 255, 0, 1.0, 1.6, 0, 1.5, false));
Rituals.registerRitual("AW004Interdiction", 1, 1000, new RitualEffectInterdiction(), "Interdiction Ritual", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/AlchemyArrays/InterdictionArray.png"), 27, 227, 206, 255, 0, 0.501, 0.8, 0, 1.5, false));
Rituals.registerRitual("AW005Containment", 1, 2000, new RitualEffectContainment(), "Ritual of Containment", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"), 186, 21, 21, 255, 0, 2.5, 2.5, 0, 2.5, false));
Rituals.registerRitual("AW006Binding", 1, 5000, new RitualEffectSoulBound(), "Ritual of Binding", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/TransCircleBinding.png"), 193, 7, 7, 255, 0, 0.501, 1.0, 0, 2.5, true));
Rituals.registerRitual("AW006Binding", 1, 5000, new RitualEffectBinding(), "Ritual of Binding", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/TransCircleBinding.png"), 193, 7, 7, 255, 0, 0.501, 1.0, 0, 2.5, true));
Rituals.registerRitual("AW007Unbinding", 1, 30000, new RitualEffectUnbinding(), "Ritual of Unbinding", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"), 193, 7, 7, 255, 0, 0.5, 0.8, 0, 2.5, false));
Rituals.registerRitual("AW008HighJump", 1, 1000, new RitualEffectJumping(), "Ritual of the High Jump", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/SimpleTransCircle.png"), 10, 183, 173, 255, 0, 0.501, 1.501, 0, 1.5, false));
Rituals.registerRitual("AW009Magnetism", 1, 5000, new RitualEffectMagnetic(), "Ritual of Magnetism", new AlchemyCircleRenderer(new ResourceLocation("alchemicalwizardry:textures/models/AlchemyArrays/MagnetismArray.png"), 126, 39, 0, 255, 0, 0.501, 2.0, 0, 1.5, false));
@ -1422,7 +1430,7 @@ public class AlchemicalWizardry
Rituals.registerRitual("AW034Crafting", 1, 15000, new RitualEffectCrafting(), "Rhythm of the Beating Anvil");
Rituals.registerRitual("AW035", 1, 10000, new RitualEffectItemRouting(), "Orchestra of the Phantom Hands");
Rituals.registerRitual("AW035PhantomHands", 1, 10000, new RitualEffectItemRouting(), "Orchestra of the Phantom Hands");
Rituals.registerRitual("AW036SphereIsland", 2, 10000, new RitualEffectSphereCreator(), "Birth of the Bastion");
//Rituals.registerRitual(1,100,new RitualEffectApiaryOverclock(),"Apiary Overclock"));
@ -1435,6 +1443,9 @@ public class AlchemicalWizardry
BindingRegistry.registerRecipe(new ItemStack(ModItems.boundShovel), new ItemStack(Items.diamond_shovel));
BindingRegistry.registerRecipe(new ItemStack(ModItems.energySword), new ItemStack(Items.diamond_sword));
BindingRegistry.registerRecipe(new ItemStack(ModItems.energyBlaster), new ItemStack(ModItems.apprenticeBloodOrb));
BindingRegistry.registerRecipe(new ItemStack(Items.baked_potato), new ItemStack(Items.potato)); // <---Shhhhhh....
UnbindingRegistry.addAllUnbindingRecipesFromBinding();
}
public static void initHarvestRegistry()

View file

@ -10,12 +10,10 @@ import net.minecraft.entity.EntityList;
import net.minecraft.entity.EntityLivingBase;
import net.minecraftforge.common.config.Configuration;
import WayofTime.alchemicalWizardry.api.rituals.Rituals;
import WayofTime.alchemicalWizardry.api.sacrifice.PlayerSacrificeHandler;
import WayofTime.alchemicalWizardry.client.renderer.ColourThreshold;
import WayofTime.alchemicalWizardry.client.renderer.RenderHelper;
import WayofTime.alchemicalWizardry.common.demonVillage.DemonVillagePath;
import WayofTime.alchemicalWizardry.common.demonVillage.tileEntity.TEDemonPortal;
import WayofTime.alchemicalWizardry.common.items.ItemIncense;
import WayofTime.alchemicalWizardry.common.items.armour.BoundArmour;
import WayofTime.alchemicalWizardry.common.summoning.meteor.MeteorParadigm;
import cpw.mods.fml.common.FMLCommonHandler;
@ -47,7 +45,6 @@ public class BloodMagicConfiguration
colorList.add(new ColourThreshold(Integer.valueOf(ct[0].trim()), ct[1].trim()));
}
config = new Configuration(configFile);
try
@ -142,6 +139,12 @@ public class BloodMagicConfiguration
AlchemicalWizardry.ritualDisabledSpawnWard = config.get("Ritual Blacklist", "Ward of Sacrosanctity", false).getBoolean(false);
AlchemicalWizardry.ritualDisabledVeilOfEvil = config.get("Ritual Blacklist", "Veil of Evil", false).getBoolean(false);
AlchemicalWizardry.ritualDisabledFullStomach = config.get("Ritual Blacklist", "Requiem of the Satiated Stomach", false).getBoolean(false);
AlchemicalWizardry.ritualDisabledConvocation = config.get("Ritual Blacklist", "Convocation of the Damned", false).getBoolean(false);
AlchemicalWizardry.ritualDisabledSymmetry = config.get("Ritual Blacklist", "Symmetry of the Omega", false).getBoolean(false);
AlchemicalWizardry.ritualDisabledStalling = config.get("Ritual Blacklist", "Duet of the Fused Souls", false).getBoolean(false);
AlchemicalWizardry.ritualDisabledCrafting = config.get("Ritual Blacklist", "Rhythm of the Beating Anvil", false).getBoolean(false);
AlchemicalWizardry.ritualDisabledPhantomHands = config.get("Ritual Blacklist", "Orchestra of the Phantom Hands", false).getBoolean(false);
AlchemicalWizardry.ritualDisabledSphereIsland = config.get("Ritual Blacklist", "Birth of the Bastion", false).getBoolean(false);
teleposerBlacklist = config.get("Teleposer Blacklist", "Blacklist", blacklist, "Stops specified blocks from being teleposed. Put entries on new lines. Valid syntax is: \nmodid:blockname:meta").getStringList();
@ -372,5 +375,35 @@ public class BloodMagicConfiguration
Rituals.ritualMap.remove("AW030FullStomach");
Rituals.keyList.remove("AW030FullStomach");
}
if (AlchemicalWizardry.ritualDisabledConvocation)
{
Rituals.ritualMap.remove("AW031Convocation");
Rituals.keyList.remove("AW031Convocation");
}
if (AlchemicalWizardry.ritualDisabledSymmetry)
{
Rituals.ritualMap.remove("AW032Symmetry");
Rituals.keyList.remove("AW032Symmetry");
}
if (AlchemicalWizardry.ritualDisabledStalling)
{
Rituals.ritualMap.remove("AW033Stalling");
Rituals.keyList.remove("AW033Stalling");
}
if (AlchemicalWizardry.ritualDisabledCrafting)
{
Rituals.ritualMap.remove("AW034Crafting");
Rituals.keyList.remove("AW034Crafting");
}
if (AlchemicalWizardry.ritualDisabledPhantomHands)
{
Rituals.ritualMap.remove("AW035PhantomHands");
Rituals.keyList.remove("AW035PhantomHands");
}
if (AlchemicalWizardry.ritualDisabledSphereIsland)
{
Rituals.ritualMap.remove("AW036SphereIsland");
Rituals.keyList.remove("AW036SphereIsland");
}
}
}

View file

@ -0,0 +1,35 @@
package WayofTime.alchemicalWizardry.api.bindingRegistry;
import net.minecraft.item.ItemStack;
public class UnbindingRecipe
{
public ItemStack requiredItem;
public ItemStack outputItem;
public UnbindingRecipe(ItemStack outputItem, ItemStack requiredItem)
{
this.requiredItem = requiredItem;
this.outputItem = outputItem;
}
public boolean doesRequiredItemMatch(ItemStack testStack)
{
if (testStack == null || this.requiredItem == null)
{
return false;
}
return this.requiredItem.isItemEqual(testStack);
}
public ItemStack getResult(ItemStack inputItem)
{
return this.getResult();
}
public ItemStack getResult()
{
return this.outputItem;
}
}

View file

@ -0,0 +1,62 @@
package WayofTime.alchemicalWizardry.api.bindingRegistry;
import net.minecraft.item.ItemStack;
import java.util.LinkedList;
import java.util.List;
public class UnbindingRegistry
{
public static List<UnbindingRecipe> unbindingRecipes = new LinkedList();
public static void addAllUnbindingRecipesFromBinding()
{
for (BindingRecipe bindingRecipe : BindingRegistry.bindingRecipes)
{
unbindingRecipes.add(new UnbindingRecipe(bindingRecipe.requiredItem, bindingRecipe.outputItem));
}
}
public static void registerRecipe(ItemStack output, ItemStack input)
{
unbindingRecipes.add(new UnbindingRecipe(output, input));
}
public static boolean isRequiredItemValid(ItemStack testItem)
{
for (UnbindingRecipe recipe : unbindingRecipes)
{
if (recipe.doesRequiredItemMatch(testItem))
{
return true;
}
}
return false;
}
public static int getIndexForItem(ItemStack testItem)
{
int i = 0;
for (UnbindingRecipe recipe : unbindingRecipes)
{
if (recipe.doesRequiredItemMatch(testItem))
{
return i;
}
i++;
}
return -1;
}
public static ItemStack getOutputForIndex(int index)
{
if (unbindingRecipes.size() <= index)
{
return null;
}
return unbindingRecipes.get(index).getResult();
}
}

View file

@ -19,7 +19,7 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class RitualEffectSoulBound extends RitualEffect
public class RitualEffectBinding extends RitualEffect
{
@Override
public void performEffect(IMasterRitualStone ritualStone)

View file

@ -3,6 +3,7 @@ package WayofTime.alchemicalWizardry.common.rituals;
import WayofTime.alchemicalWizardry.ModBlocks;
import WayofTime.alchemicalWizardry.ModItems;
import WayofTime.alchemicalWizardry.api.alchemy.energy.ReagentRegistry;
import WayofTime.alchemicalWizardry.api.bindingRegistry.UnbindingRegistry;
import WayofTime.alchemicalWizardry.api.items.interfaces.IBindable;
import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone;
import WayofTime.alchemicalWizardry.api.rituals.RitualComponent;
@ -95,15 +96,15 @@ public class RitualEffectUnbinding extends RitualEffect
{
ritualStone.setVar1(-1);
}
else if (UnbindingRegistry.isRequiredItemValid(itemStack))
{
ritualStone.setVar1(UnbindingRegistry.getIndexForItem(itemStack) + 9);
}
if (ritualStone.getVar1() > 0)
if (ritualStone.getVar1() > 0 && ritualStone.getVar1() <= 8)
{
item.setDead();
world.addWeatherEffect(new EntityLightningBolt(world, x, y + 1, z - 5));
world.addWeatherEffect(new EntityLightningBolt(world, x, y + 1, z + 5));
world.addWeatherEffect(new EntityLightningBolt(world, x - 5, y + 1, z));
world.addWeatherEffect(new EntityLightningBolt(world, x + 5, y + 1, z));
NBTTagCompound itemTag = itemStack.getTagCompound();
doLightning(world, x, y, z);
ItemStack[] inv = ((BoundArmour) itemStack.getItem()).getInternalInventory(itemStack);
if (inv != null)
@ -112,6 +113,7 @@ public class RitualEffectUnbinding extends RitualEffect
{
if (internalItem != null)
{
doLightning(world, x, y, z);
EntityItem newItem = new EntityItem(world, x + 0.5, y + 1, z + 0.5, internalItem.copy());
world.spawnEntityInWorld(newItem);
}
@ -126,11 +128,7 @@ public class RitualEffectUnbinding extends RitualEffect
} else if (ritualStone.getVar1() == -1)
{
item.setDead();
world.addWeatherEffect(new EntityLightningBolt(world, x, y + 1, z - 5));
world.addWeatherEffect(new EntityLightningBolt(world, x, y + 1, z + 5));
world.addWeatherEffect(new EntityLightningBolt(world, x - 5, y + 1, z));
world.addWeatherEffect(new EntityLightningBolt(world, x + 5, y + 1, z));
NBTTagCompound itemTag = itemStack.getTagCompound();
doLightning(world, x, y, z);
ItemStack[] inv = ((SigilOfHolding) itemStack.getItem()).getInternalInventory(itemStack);
if (inv != null)
@ -151,12 +149,21 @@ public class RitualEffectUnbinding extends RitualEffect
drain = true;
break;
}
else if (ritualStone.getVar1() >= 9)
{
item.setDead();
doLightning(world, x, y, z);
ItemStack spawnedItem = UnbindingRegistry.getOutputForIndex(ritualStone.getVar1() - 9);
EntityItem newItem = new EntityItem(world, x + 0.5, y + 1, z + 0.5, spawnedItem.copy());
world.spawnEntityInWorld(newItem);
ritualStone.setActive(false);
drain = true;
break;
}
}
if (drain)
{
if (drain) {
SoulNetworkHandler.syphonFromNetwork(owner, this.getCostPerRefresh());
}
}
@ -167,6 +174,14 @@ public class RitualEffectUnbinding extends RitualEffect
}
}
private void doLightning(World world, int x, int y, int z)
{
world.addWeatherEffect(new EntityLightningBolt(world, x, y + 1, z - 5));
world.addWeatherEffect(new EntityLightningBolt(world, x, y + 1, z + 5));
world.addWeatherEffect(new EntityLightningBolt(world, x - 5, y + 1, z));
world.addWeatherEffect(new EntityLightningBolt(world, x + 5, y + 1, z));
}
@Override
public int getCostPerRefresh()
{

View file

@ -52,7 +52,6 @@ public class ContainerTeleposer extends Container
{
ItemStack stackInSlot = slotObject.getStack();
stack = stackInSlot.copy();
System.out.println("Slots: " + slots);
if (stack.getItem() instanceof TelepositionFocus)
{