Skip to content

Commit

Permalink
Added healing fragments, guidebook changes
Browse files Browse the repository at this point in the history
  • Loading branch information
TeamDman committed Nov 19, 2016
1 parent 7d5579f commit ef92d93
Show file tree
Hide file tree
Showing 9 changed files with 232 additions and 92 deletions.
105 changes: 58 additions & 47 deletions src/main/java/com/teamdman/animus/AnimusGuide.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import amerifrance.guideapi.entry.EntryItemStack;
import amerifrance.guideapi.page.PageIRecipe;
import amerifrance.guideapi.page.PageText;
import com.teamdman.animus.items.ItemAltarDiviner;
import com.teamdman.animus.items.ItemKama;
import com.teamdman.animus.items.ItemKamaBound;
import com.teamdman.animus.registry.AnimusBlocks;
Expand All @@ -20,6 +21,7 @@
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.CraftingManager;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.common.FMLCommonHandler;
import net.minecraftforge.fml.common.registry.GameRegistry;
Expand All @@ -37,68 +39,77 @@
public class AnimusGuide {
public static Book book;

public static void buildEntry(Map<ResourceLocation, EntryAbstract> entries, String identifier, int numpages, ItemStack icon, @Nullable Consumer<ArrayList<IPage>> extras) {
private static void buildEntry(Map<ResourceLocation, EntryAbstract> entries, String identifier, int numpages, ItemStack icon, List<IPage> extras) {
ArrayList<IPage> pages = new ArrayList<IPage>();
for (int i=0;i<numpages;i++)
pages.add(new PageText("guide.animus."+identifier+".page"+i));
for (int i = 0; i < numpages; i++)
pages.add(new PageText("guide.animus." + identifier + ".page" + i));

if (extras != null)
extras.accept(pages);
entries.put(new ResourceLocation(Animus.MODID,identifier), new EntryItemStack(pages,"guide.animus."+identifier+".entry",icon));
extras.forEach((pages::add));
entries.put(new ResourceLocation(Animus.MODID, identifier), new EntryItemStack(pages, "guide.animus." + identifier + ".entry", icon));
}

public static void buildEntry(Map<ResourceLocation, EntryAbstract> entries,String identifier, int pages, Block icon, @Nullable Consumer<ArrayList<IPage>> extras) {
buildEntry(entries, identifier,pages, new ItemStack(icon), extras);


private static void buildEntry(Map<ResourceLocation, EntryAbstract> entries, String identifier, int pages, Block icon, List<IPage> extras) {
buildEntry(entries, identifier, pages, new ItemStack(icon), extras);
}
public static void buildEntry(Map<ResourceLocation, EntryAbstract> entries,String identifier, int pages, Item icon, @Nullable Consumer<ArrayList<IPage>> extras) {
buildEntry(entries, identifier,pages, new ItemStack(icon), extras);

private static void buildEntry(Map<ResourceLocation, EntryAbstract> entries, String identifier, int pages, Item icon, List<IPage> extras) {
buildEntry(entries, identifier, pages, new ItemStack(icon), extras);
}

public static void buildEntry(Map<ResourceLocation, EntryAbstract> entries,String identifier, int pages, Block icon) {
buildEntry(entries, identifier,pages, new ItemStack(icon), null);
private static void buildEntry(Map<ResourceLocation, EntryAbstract> entries, String identifier, int pages, Block icon) {
buildEntry(entries, identifier, pages, new ItemStack(icon), null);
}
public static void buildEntry(Map<ResourceLocation, EntryAbstract> entries,String identifier, int pages, Item icon) {
buildEntry(entries, identifier,pages, new ItemStack(icon), null);

private static void buildEntry(Map<ResourceLocation, EntryAbstract> entries, String identifier, int pages, Item icon) {
buildEntry(entries, identifier, pages, new ItemStack(icon), null);
}

private static List<IPage> getRecipesPagesFor(Class<?> check) {
List<IPage> matches = new ArrayList<>();
CraftingManager.getInstance().getRecipeList().forEach((v) -> {
try {
if (check.isInstance(v.getRecipeOutput().getItem()))
matches.add(new PageIRecipe(v));
} catch (Exception e) {
System.out.println("Error fetching recipe to animus guidebook");
}
});
return matches;
}

public static void buildGuide() {
book = new Book();
List<CategoryAbstract> categories = new ArrayList<CategoryAbstract>();

Map<ResourceLocation, EntryAbstract> entries = new LinkedHashMap<ResourceLocation, EntryAbstract>();
buildEntry(entries,"rituals.sol",1,Blocks.GLOWSTONE);
buildEntry(entries,"rituals.luna",1, Items.COAL);
buildEntry(entries,"rituals.entropy",1, Blocks.COBBLESTONE);
buildEntry(entries,"rituals.unmaking",1, Items.ENCHANTED_BOOK);
buildEntry(entries,"rituals.peace",1, Items.SPAWN_EGG);
buildEntry(entries,"rituals.culling",1, Items.DIAMOND_SWORD);
buildEntry(entries,"rituals.leech",1, Blocks.LEAVES);
categories.add(new CategoryItemStack(entries,"guide.animus.category.rituals",new ItemStack(ModBlocks.ritualController)));
entries = new LinkedHashMap<ResourceLocation, EntryAbstract>();

buildEntry(entries,"sigils.chains",1, AnimusItems.sigilChains);
buildEntry(entries,"sigils.transposition",1, AnimusItems.sigilTransposition);
buildEntry(entries,"sigils.builder",1, AnimusItems.sigilBuilder);
categories.add(new CategoryItemStack(entries,"guide.animus.category.sigils",new ItemStack(AnimusItems.sigilBuilder)));
entries = new LinkedHashMap<ResourceLocation, EntryAbstract>();

buildEntry(entries,"blocks.phantom",1, AnimusBlocks.phantomBuilder);
categories.add(new CategoryItemStack(entries,"guide.animus.category.blocks",new ItemStack(AnimusBlocks.phantomBuilder)));
entries = new LinkedHashMap<ResourceLocation, EntryAbstract>();

buildEntry(entries,"items.kama",1,AnimusItems.kamaBound, (pages) -> {
CraftingManager.getInstance().getRecipeList().forEach((v) -> {
try {
if (v.getRecipeOutput().getItem() instanceof ItemKama)
pages.add(new PageIRecipe(v));
} catch (Exception e) {
System.out.println("Error adding kama recipe to guidebook");
}
});
});
buildEntry(entries,"items.altardiviner",1,AnimusItems.altarDiviner);
buildEntry(entries,"items.mobsoul",1,AnimusItems.mobSoul);
categories.add(new CategoryItemStack(entries,"guide.animus.category.items",new ItemStack(AnimusItems.kamaBound)));
Map<ResourceLocation, EntryAbstract> entries = new LinkedHashMap<>();
buildEntry(entries, "rituals.sol", 1, Blocks.GLOWSTONE);
buildEntry(entries, "rituals.luna", 1, Items.COAL);
buildEntry(entries, "rituals.entropy", 1, Blocks.COBBLESTONE);
buildEntry(entries, "rituals.unmaking", 1, Items.ENCHANTED_BOOK);
buildEntry(entries, "rituals.peace", 1, Items.SPAWN_EGG);
buildEntry(entries, "rituals.culling", 1, Items.DIAMOND_SWORD);
buildEntry(entries, "rituals.leech", 1, Blocks.LEAVES);
categories.add(new CategoryItemStack(entries, "guide.animus.category.rituals", new ItemStack(ModBlocks.ritualController)));
entries = new LinkedHashMap<>();

buildEntry(entries, "sigils.chains", 1, AnimusItems.sigilChains);
buildEntry(entries, "sigils.transposition", 1, AnimusItems.sigilTransposition);
buildEntry(entries, "sigils.builder", 1, AnimusItems.sigilBuilder);
categories.add(new CategoryItemStack(entries, "guide.animus.category.sigils", new ItemStack(AnimusItems.sigilBuilder)));
entries = new LinkedHashMap<>();

buildEntry(entries, "blocks.phantom", 1, AnimusBlocks.phantomBuilder);
categories.add(new CategoryItemStack(entries, "guide.animus.category.blocks", new ItemStack(AnimusBlocks.phantomBuilder)));
entries = new LinkedHashMap<>();

buildEntry(entries, "items.kama", 1, AnimusItems.kamaBound, getRecipesPagesFor(ItemKama.class));
buildEntry(entries, "items.altardiviner", 1, AnimusItems.altarDiviner, getRecipesPagesFor(ItemAltarDiviner.class));
buildEntry(entries, "items.mobsoul", 1, AnimusItems.mobSoul);
buildEntry(entries, "items.fragmenthealing", 1, AnimusItems.fragmentHealing);
categories.add(new CategoryItemStack(entries, "guide.animus.category.items", new ItemStack(AnimusItems.kamaBound)));

book.setCategoryList(categories);
book.setTitle("guide.animus.title");
Expand Down
35 changes: 33 additions & 2 deletions src/main/java/com/teamdman/animus/handlers/EventHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,18 @@

import com.teamdman.animus.Animus;
import com.teamdman.animus.AnimusConfig;
import com.teamdman.animus.registry.AnimusItems;
import com.teamdman.animus.slots.SlotNoPickup;
import net.minecraft.init.MobEffects;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.Slot;
import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionEffect;
import net.minecraft.potion.PotionHealthBoost;
import net.minecraftforge.client.event.sound.PlaySoundEvent;
import net.minecraftforge.fml.client.event.ConfigChangedEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent;

public class EventHandler {
@SubscribeEvent
Expand All @@ -21,6 +30,28 @@ public void onConfigChanged(ConfigChangedEvent.OnConfigChangedEvent e) {
AnimusConfig.syncConfig();
}
}




@SubscribeEvent
public void onPlayerTick(TickEvent.PlayerTickEvent eventArgs) {
Container open = eventArgs.player.openContainer;
if (open == null)
return;
int frags = 0;
for (int i = 0; i < open.inventorySlots.size(); i++) {
Slot slot = (Slot) open.inventorySlots.get(i);
if (slot.getHasStack() && slot.getStack().getItem() == AnimusItems.fragmentHealing) {
frags++;
if (!eventArgs.player.capabilities.isCreativeMode && slot.getClass()==Slot.class) {
open.inventorySlots.set(i,new SlotNoPickup(slot.inventory, slot.getSlotIndex(), slot.xDisplayPosition, slot.yDisplayPosition));
}
}
}
if (eventArgs.player.worldObj.getWorldTime()%20==0 && frags>=9 && !eventArgs.player.worldObj.isRemote) {
eventArgs.player.addPotionEffect(new PotionEffect(MobEffects.REGENERATION,20, frags/9-1));
if (frags>=35 && eventArgs.player.worldObj.getWorldTime()%200==0)
eventArgs.player.addPotionEffect(new PotionEffect(MobEffects.ABSORPTION,200,4));
}
}

}
48 changes: 48 additions & 0 deletions src/main/java/com/teamdman/animus/items/ItemFragmentHealing.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package com.teamdman.animus.items;

import WayofTime.bloodmagic.client.IVariantProvider;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.math.BlockPos;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;

import java.util.ArrayList;
import java.util.List;

public class ItemFragmentHealing extends Item implements IVariantProvider {
public ItemFragmentHealing() {
setMaxStackSize(1);
}

@Override
public void addInformation(ItemStack stack, EntityPlayer playerIn, List<String> tooltip, boolean advanced) {
tooltip.add("More the merrier!");
tooltip.add("This item cannot be moved.");
}

@Override
public boolean onDroppedByPlayer(ItemStack item, EntityPlayer player) {
return false;
}

@Override
public boolean onBlockStartBreak(ItemStack itemstack, BlockPos pos, EntityPlayer player) {
return true;
}

@Override
public boolean canHarvestBlock(IBlockState blockIn) {
return false;
}

@Override
public List<Pair<Integer, String>> getVariants()
{
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
ret.add(new ImmutablePair<Integer, String>(0, "type=normal"));
return ret;
}
}
82 changes: 40 additions & 42 deletions src/main/java/com/teamdman/animus/registry/AnimusItems.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,7 @@

import com.teamdman.animus.Animus;
import com.teamdman.animus.AnimusConfig;
import com.teamdman.animus.items.ItemAltarDiviner;
import com.teamdman.animus.items.ItemKama;
import com.teamdman.animus.items.ItemKamaBound;
import com.teamdman.animus.items.ItemMobSoul;
import com.teamdman.animus.items.*;
import com.teamdman.animus.items.sigils.ItemSigilBuilder;
import com.teamdman.animus.items.sigils.ItemSigilChains;
import com.teamdman.animus.items.sigils.ItemSigilTransposition;
Expand All @@ -18,50 +15,51 @@
* Created by TeamDman on 9/18/2016.
*/
public class AnimusItems {
public static Item kamaWood;
public static Item kamaStone;
public static Item kamaIron;
public static Item kamaGold;
public static Item kamaDiamond;
public static Item kamaBound;
public static Item kamaWood;
public static Item kamaStone;
public static Item kamaIron;
public static Item kamaGold;
public static Item kamaDiamond;
public static Item kamaBound;
public static Item altarDiviner;
public static Item mobSoul;
public static Item sigilChains;
public static Item sigilTransposition;
public static Item sigilBuilder;
public static Item mobSoul;
public static Item sigilChains;
public static Item sigilTransposition;
public static Item sigilBuilder;
public static Item fragmentHealing;

public static void init() {
kamaWood = setupItem(new ItemKama(Item.ToolMaterial.WOOD), "itemkamawood");
kamaStone = setupItem(new ItemKama(Item.ToolMaterial.STONE), "itemkamastone");
kamaIron = setupItem(new ItemKama(Item.ToolMaterial.IRON), "itemkamairon");
kamaGold = setupItem(new ItemKama(Item.ToolMaterial.GOLD), "itemkamagold");
kamaDiamond = setupItem(new ItemKama(Item.ToolMaterial.DIAMOND), "itemkamadiamond");
kamaBound = setupItem(new ItemKamaBound(), "itemkamabound");
public static void init() {
kamaWood = setupItem(new ItemKama(Item.ToolMaterial.WOOD), "itemkamawood");
kamaStone = setupItem(new ItemKama(Item.ToolMaterial.STONE), "itemkamastone");
kamaIron = setupItem(new ItemKama(Item.ToolMaterial.IRON), "itemkamairon");
kamaGold = setupItem(new ItemKama(Item.ToolMaterial.GOLD), "itemkamagold");
kamaDiamond = setupItem(new ItemKama(Item.ToolMaterial.DIAMOND), "itemkamadiamond");
kamaBound = setupItem(new ItemKamaBound(), "itemkamabound");
altarDiviner = setupItem(new ItemAltarDiviner(), "itemaltardiviner");
mobSoul=setupItem(new ItemMobSoul(), "itemmobsoul");
sigilChains=setupItem(new ItemSigilChains(), "itemsigilchains");
sigilTransposition=setupItem(new ItemSigilTransposition(), "itemsigiltransposition");
sigilBuilder=setupItem(new ItemSigilBuilder(), "itemsigilbuilder");
mobSoul = setupItem(new ItemMobSoul(), "itemmobsoul");
sigilChains = setupItem(new ItemSigilChains(), "itemsigilchains");
sigilTransposition = setupItem(new ItemSigilTransposition(), "itemsigiltransposition");
sigilBuilder = setupItem(new ItemSigilBuilder(), "itemsigilbuilder");
fragmentHealing = setupItem(new ItemFragmentHealing(), "itemfragmenthealing");
}

}
private static Item setupItem(Item item, String name) {
if (AnimusConfig.itemBlacklist.contains(name))
return item;
if (item.getRegistryName() == null)
item.setRegistryName(name);
item.setUnlocalizedName(name);
item.setCreativeTab(Animus.tabMain);
GameRegistry.register(item);
Animus.proxy.tryHandleItemModel(item, name);

private static Item setupItem(Item item, String name) {
if (AnimusConfig.itemBlacklist.contains(name))
return item;
if (item.getRegistryName() == null)
item.setRegistryName(name);
item.setUnlocalizedName(name);
item.setCreativeTab(Animus.tabMain);
GameRegistry.register(item);
Animus.proxy.tryHandleItemModel(item, name);
return item;
//TODO: Animus Config Blacklist
}

return item;
//TODO: Animus Config Blacklist
}
@SideOnly(Side.CLIENT)
public static void initRenders() {

@SideOnly(Side.CLIENT)
public static void initRenders() {

}
}

}
19 changes: 18 additions & 1 deletion src/main/java/com/teamdman/animus/registry/AnimusRecipes.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,21 @@
package com.teamdman.animus.registry;

import WayofTime.bloodmagic.alchemyArray.AlchemyArrayEffectBinding;
import WayofTime.bloodmagic.api.altar.EnumAltarTier;
import WayofTime.bloodmagic.api.recipe.ShapedBloodOrbRecipe;
import WayofTime.bloodmagic.api.registry.AlchemyArrayRecipeRegistry;
import WayofTime.bloodmagic.api.registry.AltarRecipeRegistry;
import WayofTime.bloodmagic.api.registry.OrbRegistry;
import WayofTime.bloodmagic.client.render.alchemyArray.BindingAlchemyCircleRenderer;
import WayofTime.bloodmagic.compat.jei.binding.BindingRecipeHandler;
import WayofTime.bloodmagic.item.ItemComponent;
import WayofTime.bloodmagic.registry.ModItems;
import WayofTime.bloodmagic.util.Utils;
import com.google.common.collect.ImmutableList;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.ShapelessRecipes;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.oredict.ShapedOreRecipe;

Expand All @@ -22,8 +32,15 @@ public static void initCrafting() {
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(AnimusItems.kamaDiamond), " a ", "a a", " b", 'a', Items.DIAMOND, 'b', Items.STICK));


GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(AnimusItems.sigilChains), "aba", "bcb", "ada", 'a', Blocks.END_STONE, 'b', Blocks.REDSTONE_LAMP, 'c', new ItemStack(ModItems.slate, 1, 3), 'd', OrbRegistry.getOrbStack(ModItems.orbMaster)));
GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(AnimusItems.sigilChains), "aba", "bcb", "ada", 'a', Blocks.END_STONE, 'b', Blocks.OBSIDIAN, 'c', new ItemStack(ModItems.slate, 1, 3), 'd', OrbRegistry.getOrbStack(ModItems.orbMaster)));
GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(AnimusItems.sigilTransposition), "aba", "bcb", "ada", 'a', Blocks.OBSIDIAN, 'b', Items.ENDER_PEARL, 'c', new ItemStack(ModItems.slate, 1, 3), 'd', OrbRegistry.getOrbStack(ModItems.orbMaster)));
GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(AnimusItems.sigilBuilder), "aba", "bcb", "ada", 'a', Items.SUGAR, 'b', Items.POTIONITEM, 'c',new ItemStack(ModItems.slate, 1, 3), 'd', OrbRegistry.getOrbStack(ModItems.orbApprentice)));

GameRegistry.addRecipe(new ShapelessRecipes(new ItemStack(AnimusItems.altarDiviner), ImmutableList.of(new ItemStack(ModItems.ritualDiviner),new ItemStack(Blocks.REDSTONE_TORCH))));

AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Items.PRISMARINE_SHARD),new ItemStack(AnimusItems.fragmentHealing), EnumAltarTier.TWO,1000,20,25));

AlchemyArrayRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_BINDING), new ItemStack(AnimusItems.kamaDiamond), new AlchemyArrayEffectBinding("boundKama", Utils.setUnbreakable(new ItemStack(AnimusItems.kamaBound))), new BindingAlchemyCircleRenderer());

}
}
16 changes: 16 additions & 0 deletions src/main/java/com/teamdman/animus/slots/SlotNoPickup.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.teamdman.animus.slots;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot;

public class SlotNoPickup extends Slot {
public SlotNoPickup(IInventory inventoryIn, int index, int xPosition, int yPosition) {
super(inventoryIn, index, xPosition, yPosition);
}

@Override
public boolean canTakeStack(EntityPlayer playerIn) {
return false;
}
}
Loading

0 comments on commit ef92d93

Please sign in to comment.