From b0404599c2beddcc34922be7cb5c075f5e33109a Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Thu, 17 Aug 2017 21:52:20 -0700 Subject: [PATCH 01/27] Half moved to new recipe stuff Still need to move alchemy table recipes over and figure out how to do the custom recipe types. --- .../java/WayofTime/bloodmagic/BloodMagic.java | 5 +- .../bloodmagic/altar/BloodAltar.java | 16 +- .../bloodmagic/api/altar/EnumAltarTier.java | 1 + .../bloodmagic/api_impl/BloodMagicAPI.java | 15 +- .../api_impl/BloodMagicBlacklist.java | 17 +- .../api_impl/BloodMagicCorePlugin.java | 5 + .../api_impl/BloodMagicRecipeRegistrar.java | 154 ++++++++++++++++++ .../api_impl/recipe/RecipeAlchemyTable.java | 83 ++++++++++ .../api_impl/recipe/RecipeBloodAltar.java | 96 +++++++++++ .../api_impl/recipe/RecipeTartaricForge.java | 79 +++++++++ .../bloodmagic/apiv2/IBloodMagicAPI.java | 11 +- .../apiv2/IBloodMagicBlacklist.java | 18 +- .../bloodmagic/apiv2/IBloodMagicPlugin.java | 4 +- .../apiv2/IBloodMagicRecipeRegistrar.java | 16 ++ .../compat/jei/BloodMagicPlugin.java | 29 ++-- .../AlchemyTableRecipeCategory.java | 6 +- .../AlchemyTableRecipeHandler.java | 31 ---- .../alchemyTable/AlchemyTableRecipeJEI.java | 25 ++- .../alchemyTable/AlchemyTableRecipeMaker.java | 21 --- .../compat/jei/altar/AltarRecipeCategory.java | 11 +- .../compat/jei/altar/AltarRecipeHandler.java | 31 ---- .../compat/jei/altar/AltarRecipeJEI.java | 28 ++-- .../compat/jei/altar/AltarRecipeMaker.java | 45 ----- .../forge/TartaricForgeRecipeCategory.java | 19 +-- .../jei/forge/TartaricForgeRecipeHandler.java | 31 ---- .../jei/forge/TartaricForgeRecipeJEI.java | 26 ++- .../jei/forge/TartaricForgeRecipeMaker.java | 21 --- .../core/RegistrarBloodMagicRecipes.java | 130 +++++++++++++++ .../core/recipe/IngredientSoulGem.java | 4 + .../bloodmagic/registry/ModRecipes.java | 95 ----------- .../bloodmagic/tile/TileSoulForge.java | 17 +- 31 files changed, 699 insertions(+), 391 deletions(-) create mode 100644 src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicRecipeRegistrar.java create mode 100644 src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeAlchemyTable.java create mode 100644 src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeBloodAltar.java create mode 100644 src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeTartaricForge.java create mode 100644 src/main/java/WayofTime/bloodmagic/apiv2/IBloodMagicRecipeRegistrar.java delete mode 100644 src/main/java/WayofTime/bloodmagic/compat/jei/alchemyTable/AlchemyTableRecipeHandler.java delete mode 100644 src/main/java/WayofTime/bloodmagic/compat/jei/alchemyTable/AlchemyTableRecipeMaker.java delete mode 100644 src/main/java/WayofTime/bloodmagic/compat/jei/altar/AltarRecipeHandler.java delete mode 100644 src/main/java/WayofTime/bloodmagic/compat/jei/altar/AltarRecipeMaker.java delete mode 100644 src/main/java/WayofTime/bloodmagic/compat/jei/forge/TartaricForgeRecipeHandler.java delete mode 100644 src/main/java/WayofTime/bloodmagic/compat/jei/forge/TartaricForgeRecipeMaker.java create mode 100644 src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicRecipes.java create mode 100644 src/main/java/WayofTime/bloodmagic/core/recipe/IngredientSoulGem.java diff --git a/src/main/java/WayofTime/bloodmagic/BloodMagic.java b/src/main/java/WayofTime/bloodmagic/BloodMagic.java index 4957a1be..4dbd80f0 100644 --- a/src/main/java/WayofTime/bloodmagic/BloodMagic.java +++ b/src/main/java/WayofTime/bloodmagic/BloodMagic.java @@ -88,8 +88,6 @@ public class BloodMagic { @Mod.EventHandler public void init(FMLInitializationEvent event) { BloodMagicPacketHandler.init(); - for (Pair plugin : PLUGINS) - plugin.getLeft().register(BloodMagicAPI.INSTANCE); ModRecipes.init(); ModRituals.initRituals(); @@ -106,6 +104,9 @@ public class BloodMagic { public void postInit(FMLPostInitializationEvent event) { ModRecipes.addCompressionHandlers(); + for (Pair plugin : PLUGINS) + plugin.getLeft().register(BloodMagicAPI.INSTANCE); + proxy.postInit(); } diff --git a/src/main/java/WayofTime/bloodmagic/altar/BloodAltar.java b/src/main/java/WayofTime/bloodmagic/altar/BloodAltar.java index b4846dfa..47e1f274 100644 --- a/src/main/java/WayofTime/bloodmagic/altar/BloodAltar.java +++ b/src/main/java/WayofTime/bloodmagic/altar/BloodAltar.java @@ -6,14 +6,12 @@ import WayofTime.bloodmagic.api.altar.*; import WayofTime.bloodmagic.api.event.AltarCraftedEvent; import WayofTime.bloodmagic.api.orb.BloodOrb; import WayofTime.bloodmagic.api.orb.IBloodOrb; -import WayofTime.bloodmagic.api.registry.AltarRecipeRegistry; -import WayofTime.bloodmagic.api.registry.AltarRecipeRegistry.AltarRecipe; import WayofTime.bloodmagic.api.util.helper.NetworkHelper; import WayofTime.bloodmagic.api_impl.BloodMagicAPI; +import WayofTime.bloodmagic.api_impl.recipe.RecipeBloodAltar; import WayofTime.bloodmagic.block.BlockBloodRune; import WayofTime.bloodmagic.block.BlockLifeEssence; import WayofTime.bloodmagic.tile.TileAltar; -import WayofTime.bloodmagic.util.Utils; import com.google.common.base.Enums; import com.google.common.base.Strings; import net.minecraft.block.state.IBlockState; @@ -31,7 +29,6 @@ import net.minecraftforge.fluids.FluidTank; import net.minecraftforge.fluids.capability.FluidTankPropertiesWrapper; import net.minecraftforge.fluids.capability.IFluidHandler; import net.minecraftforge.fluids.capability.IFluidTankProperties; -import org.apache.commons.lang3.tuple.ImmutablePair; import org.apache.commons.lang3.tuple.Pair; import java.util.List; @@ -78,7 +75,7 @@ public class BloodAltar implements IFluidHandler { private int chargingFrequency = 0; private int maxCharge = 0; private int cooldownAfterCrafting = 60; - private AltarRecipe recipe; + private RecipeBloodAltar recipe; private ItemStack result = ItemStack.EMPTY; private EnumAltarTier currentTierDisplayed = EnumAltarTier.ONE; @@ -189,14 +186,14 @@ public class BloodAltar implements IFluidHandler { if (!input.isEmpty()) { // Do recipes - AltarRecipe recipe = AltarRecipeRegistry.getRecipeForInput(input); + RecipeBloodAltar recipe = BloodMagicAPI.INSTANCE.getRecipeRegistrar().getBloodAltar(input); if (recipe != null) { - if (recipe.doesRequiredItemMatch(input, altarTier)) { + if (recipe.getMinimumTier().ordinal() <= altarTier.ordinal()) { this.isActive = true; this.recipe = recipe; this.result = recipe.getOutput().isEmpty() ? ItemStack.EMPTY : new ItemStack(recipe.getOutput().getItem(), 1, recipe.getOutput().getMetadata()); this.liquidRequired = recipe.getSyphon(); - this.canBeFilled = recipe.isFillable(); + this.canBeFilled = false; this.consumptionRate = recipe.getConsumeRate(); this.drainRate = recipe.getDrainRate(); return; @@ -318,7 +315,8 @@ public class BloodAltar implements IFluidHandler { if (!result.isEmpty()) result.setCount(result.getCount() * stackSize); - MinecraftForge.EVENT_BUS.post(new AltarCraftedEvent(recipe, result)); + // TODO - Update for new recipe type +// MinecraftForge.EVENT_BUS.post(new AltarCraftedEvent(recipe, result)); tileAltar.setInventorySlotContents(0, result); progress = 0; diff --git a/src/main/java/WayofTime/bloodmagic/api/altar/EnumAltarTier.java b/src/main/java/WayofTime/bloodmagic/api/altar/EnumAltarTier.java index 16a4e7e1..a5ac7a96 100644 --- a/src/main/java/WayofTime/bloodmagic/api/altar/EnumAltarTier.java +++ b/src/main/java/WayofTime/bloodmagic/api/altar/EnumAltarTier.java @@ -120,6 +120,7 @@ public enum EnumAltarTier { //@formatter:on }; + public static final EnumAltarTier[] VALUES = values(); public static final int MAXTIERS = values().length; ArrayList altarComponents = new ArrayList(); diff --git a/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicAPI.java b/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicAPI.java index b2fc17ce..e7dc13d6 100644 --- a/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicAPI.java +++ b/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicAPI.java @@ -9,6 +9,8 @@ import com.google.common.collect.Multimap; import net.minecraft.block.state.IBlockState; import net.minecraft.util.ResourceLocation; +import javax.annotation.Nonnegative; +import javax.annotation.Nonnull; import java.util.*; public class BloodMagicAPI implements IBloodMagicAPI { @@ -16,27 +18,36 @@ public class BloodMagicAPI implements IBloodMagicAPI { public static final BloodMagicAPI INSTANCE = new BloodMagicAPI(); private final BloodMagicBlacklist blacklist; + private final BloodMagicRecipeRegistrar recipeRegistrar; private final Map sacrificialValues; private final Multimap altarComponents; public BloodMagicAPI() { this.blacklist = new BloodMagicBlacklist(); + this.recipeRegistrar = new BloodMagicRecipeRegistrar(); this.sacrificialValues = Maps.newHashMap(); this.altarComponents = ArrayListMultimap.create(); } + @Nonnull @Override public BloodMagicBlacklist getBlacklist() { return blacklist; } + @Nonnull @Override - public void setSacrificialValue(ResourceLocation entityId, int value) { + public BloodMagicRecipeRegistrar getRecipeRegistrar() { + return recipeRegistrar; + } + + @Override + public void setSacrificialValue(@Nonnull ResourceLocation entityId, @Nonnegative int value) { sacrificialValues.put(entityId, value); } @Override - public void registerAltarComponent(IBlockState state, String componentType) { + public void registerAltarComponent(@Nonnull IBlockState state, @Nonnull String componentType) { EnumAltarComponent component = EnumAltarComponent.NOTAIR; for (EnumAltarComponent type : EnumAltarComponent.VALUES) { if (type.name().equalsIgnoreCase(componentType)) { diff --git a/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicBlacklist.java b/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicBlacklist.java index 0d448390..de4c9f77 100644 --- a/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicBlacklist.java +++ b/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicBlacklist.java @@ -7,6 +7,7 @@ import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.util.ResourceLocation; +import javax.annotation.Nonnull; import java.util.Set; public class BloodMagicBlacklist implements IBloodMagicBlacklist { @@ -26,49 +27,49 @@ public class BloodMagicBlacklist implements IBloodMagicBlacklist { } @Override - public void addTeleposer(IBlockState state) { + public void addTeleposer(@Nonnull IBlockState state) { if (!teleposer.contains(state)) teleposer.add(state); } @Override - public void addTeleposer(Block block) { + public void addTeleposer(@Nonnull Block block) { for (IBlockState state : block.getBlockState().getValidStates()) addTeleposer(state); } @Override - public void addTeleposer(ResourceLocation entityId) { + public void addTeleposer(@Nonnull ResourceLocation entityId) { if (!teleposerEntities.contains(entityId)) teleposerEntities.add(entityId); } @Override - public void addTransposition(IBlockState state) { + public void addTransposition(@Nonnull IBlockState state) { if (!transposition.contains(state)) transposition.add(state); } @Override - public void addTransposition(Block block) { + public void addTransposition(@Nonnull Block block) { for (IBlockState state : block.getBlockState().getValidStates()) addTransposition(state); } @Override - public void addGreenGrove(IBlockState state) { + public void addGreenGrove(@Nonnull IBlockState state) { if (!greenGrove.contains(state)) greenGrove.add(state); } @Override - public void addGreenGrove(Block block) { + public void addGreenGrove(@Nonnull Block block) { for (IBlockState state : block.getBlockState().getValidStates()) addGreenGrove(state); } @Override - public void addSacrifice(ResourceLocation entityId) { + public void addSacrifice(@Nonnull ResourceLocation entityId) { if (!sacrifice.contains(entityId)) sacrifice.add(entityId); } diff --git a/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicCorePlugin.java b/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicCorePlugin.java index e2800fc6..161ee241 100644 --- a/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicCorePlugin.java +++ b/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicCorePlugin.java @@ -10,6 +10,7 @@ import WayofTime.bloodmagic.block.BlockDecorative; import WayofTime.bloodmagic.block.enums.EnumBloodRune; import WayofTime.bloodmagic.block.enums.EnumDecorative; import WayofTime.bloodmagic.core.RegistrarBloodMagicBlocks; +import WayofTime.bloodmagic.core.RegistrarBloodMagicRecipes; import net.minecraft.init.Blocks; import net.minecraft.util.ResourceLocation; @@ -50,5 +51,9 @@ public class BloodMagicCorePlugin implements IBloodMagicPlugin { BlockBloodRune bloodRune = (BlockBloodRune) RegistrarBloodMagicBlocks.BLOOD_RUNE; for (EnumBloodRune runeType : EnumBloodRune.values()) api.registerAltarComponent(bloodRune.getDefaultState().withProperty(bloodRune.getProperty(), runeType), EnumAltarComponent.BLOODRUNE.name()); + + RegistrarBloodMagicRecipes.registerAltarRecipes(api.getRecipeRegistrar()); + RegistrarBloodMagicRecipes.registerAlchemyTableRecipes(api.getRecipeRegistrar()); + RegistrarBloodMagicRecipes.registerTartaricForgeRecipes(((BloodMagicAPI) api).getRecipeRegistrar()); } } diff --git a/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicRecipeRegistrar.java b/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicRecipeRegistrar.java new file mode 100644 index 00000000..6e251afe --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicRecipeRegistrar.java @@ -0,0 +1,154 @@ +package WayofTime.bloodmagic.api_impl; + +import WayofTime.bloodmagic.api.orb.IBloodOrb; +import WayofTime.bloodmagic.api_impl.recipe.RecipeAlchemyTable; +import WayofTime.bloodmagic.api_impl.recipe.RecipeBloodAltar; +import WayofTime.bloodmagic.api_impl.recipe.RecipeTartaricForge; +import WayofTime.bloodmagic.apiv2.IBloodMagicRecipeRegistrar; +import WayofTime.bloodmagic.core.recipe.IngredientBloodOrb; +import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.Ingredient; +import net.minecraft.util.NonNullList; +import net.minecraftforge.common.crafting.CraftingHelper; + +import javax.annotation.Nonnegative; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.util.List; +import java.util.Map; + +public class BloodMagicRecipeRegistrar implements IBloodMagicRecipeRegistrar { + + private final Map altarRecipes; + private final Map, RecipeAlchemyTable> alchemyRecipes; + private final Map, RecipeTartaricForge> tartaricForgeRecipes; + + public BloodMagicRecipeRegistrar() { + this.altarRecipes = Maps.newHashMap(); + this.alchemyRecipes = Maps.newHashMap(); + this.tartaricForgeRecipes = Maps.newHashMap(); + } + + @Override + public void addBloodAltar(@Nonnull Ingredient input, @Nonnull ItemStack output, @Nonnegative int minimumTier, @Nonnegative int syphon, @Nonnegative int consumeRate, @Nonnegative int drainRate) { + Preconditions.checkNotNull(input, "input cannot be null."); + Preconditions.checkNotNull(output, "output cannot be null."); + Preconditions.checkArgument(minimumTier >= 0, "minimumTier cannot be negative."); + Preconditions.checkArgument(syphon >= 0, "syphon cannot be negative."); + Preconditions.checkArgument(consumeRate >= 0, "consumeRate cannot be negative."); + Preconditions.checkArgument(drainRate >= 0, "drainRate cannot be negative."); + + altarRecipes.put(input, new RecipeBloodAltar(input, output, minimumTier, syphon, consumeRate, drainRate)); + } + + @Override + public void addAlchemyTable(@Nonnull ItemStack output, @Nonnegative int syphon, @Nonnegative int ticks, @Nonnegative int minimumTier, @Nonnull Ingredient... input) { + Preconditions.checkNotNull(output, "output cannot be null."); + Preconditions.checkArgument(syphon >= 0, "syphon cannot be negative."); + Preconditions.checkArgument(ticks >= 0, "ticks cannot be negative."); + Preconditions.checkArgument(minimumTier >= 0, "minimumTier cannot be negative."); + Preconditions.checkNotNull(input, "input cannot be null."); + + NonNullList inputs = NonNullList.from(Ingredient.EMPTY, input); + alchemyRecipes.put(inputs, new RecipeAlchemyTable(inputs, output, syphon, ticks, minimumTier)); + } + + @Override + public void addTartaricForge(@Nonnull ItemStack output, @Nonnegative double minimumSouls, @Nonnegative double soulDrain, @Nonnull Ingredient... input) { + Preconditions.checkNotNull(output, "output cannot be null."); + Preconditions.checkArgument(minimumSouls >= 0, "minimumSouls cannot be negative."); + Preconditions.checkArgument(soulDrain >= 0, "soulDrain cannot be negative."); + Preconditions.checkNotNull(input, "input cannot be null."); + + NonNullList inputs = NonNullList.from(Ingredient.EMPTY, input); + tartaricForgeRecipes.put(inputs, new RecipeTartaricForge(inputs, output, minimumSouls, soulDrain)); + } + + public void addTartaricForge(@Nonnull ItemStack output, @Nonnegative double minimumSouls, @Nonnegative double soulDrain, @Nonnull Object... input) { + Preconditions.checkNotNull(output, "output cannot be null."); + Preconditions.checkArgument(minimumSouls >= 0, "minimumSouls cannot be negative."); + Preconditions.checkArgument(soulDrain >= 0, "soulDrain cannot be negative."); + Preconditions.checkNotNull(input, "input cannot be null."); + + List ingredients = Lists.newArrayList(); + for (Object object : input) { + if (object instanceof ItemStack && ((ItemStack) object).getItem() instanceof IBloodOrb) { + ingredients.add(new IngredientBloodOrb(((IBloodOrb) ((ItemStack) object).getItem()).getOrb((ItemStack) object))); + continue; + } + + ingredients.add(CraftingHelper.getIngredient(object)); + } + + addTartaricForge(output, minimumSouls, soulDrain, ingredients.toArray(new Ingredient[0])); + } + + @Nullable + public RecipeBloodAltar getBloodAltar(@Nonnull ItemStack input) { + Preconditions.checkNotNull(input, "input cannot be null."); + + for (Map.Entry entry : altarRecipes.entrySet()) + if (entry.getKey().test(input)) + return entry.getValue(); + + return null; + } + + @Nullable + public RecipeAlchemyTable getAlchemyTable(@Nonnull List input) { + Preconditions.checkNotNull(input, "input cannot be null."); + + mainLoop: + for (Map.Entry, RecipeAlchemyTable> entry : alchemyRecipes.entrySet()) { + if (entry.getKey().size() != input.size()) + continue; + + for (int i = 0; i > input.size(); i++) { + Ingredient ingredient = entry.getKey().get(i); + if (!ingredient.apply(input.get(i))) + continue mainLoop; + } + + return entry.getValue(); + } + + return null; + } + + @Nullable + public RecipeTartaricForge getTartaricForge(@Nonnull List input) { + Preconditions.checkNotNull(input, "input cannot be null."); + + mainLoop: + for (Map.Entry, RecipeTartaricForge> entry : tartaricForgeRecipes.entrySet()) { + if (entry.getKey().size() != input.size()) + continue; + + for (int i = 0; i > input.size(); i++) { + Ingredient ingredient = entry.getKey().get(i); + if (!ingredient.apply(input.get(i))) + continue mainLoop; + } + + return entry.getValue(); + } + + return null; + } + + public Map getAltarRecipes() { + return ImmutableMap.copyOf(altarRecipes); + } + + public Map, RecipeAlchemyTable> getAlchemyRecipes() { + return ImmutableMap.copyOf(alchemyRecipes); + } + + public Map, RecipeTartaricForge> getTartaricForgeRecipes() { + return ImmutableMap.copyOf(tartaricForgeRecipes); + } +} diff --git a/src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeAlchemyTable.java b/src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeAlchemyTable.java new file mode 100644 index 00000000..736b33e2 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeAlchemyTable.java @@ -0,0 +1,83 @@ +package WayofTime.bloodmagic.api_impl.recipe; + +import com.google.common.base.Preconditions; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.Ingredient; +import net.minecraft.util.NonNullList; + +import javax.annotation.Nonnegative; +import javax.annotation.Nonnull; + +public class RecipeAlchemyTable { + + @Nonnull + private final NonNullList input; + @Nonnull + private final ItemStack output; + @Nonnegative + private final int syphon; + @Nonnegative + private final int ticks; + @Nonnegative + private final int minimumTier; + + public RecipeAlchemyTable(@Nonnull NonNullList input, @Nonnull ItemStack output, int syphon, int ticks, int minimumTier) { + Preconditions.checkNotNull(input, "input cannot be null."); + Preconditions.checkNotNull(output, "output cannot be null."); + Preconditions.checkArgument(syphon >= 0, "syphon cannot be negative."); + Preconditions.checkArgument(ticks >= 0, "ticks cannot be negative."); + Preconditions.checkArgument(minimumTier >= 0, "minimumTier cannot be negative."); + + this.input = input; + this.output = output; + this.syphon = syphon; + this.ticks = ticks; + this.minimumTier = minimumTier; + } + + @Nonnull + public final NonNullList getInput() { + return input; + } + + @Nonnull + public final ItemStack getOutput() { + return output; + } + + public final int getSyphon() { + return syphon; + } + + public final int getTicks() { + return ticks; + } + + public final int getMinimumTier() { + return minimumTier; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof RecipeAlchemyTable)) return false; + + RecipeAlchemyTable that = (RecipeAlchemyTable) o; + + if (syphon != that.syphon) return false; + if (ticks != that.ticks) return false; + if (minimumTier != that.minimumTier) return false; + if (!input.equals(that.input)) return false; + return ItemStack.areItemStacksEqual(output, that.output); + } + + @Override + public int hashCode() { + int result = input.hashCode(); + result = 31 * result + output.hashCode(); + result = 31 * result + syphon; + result = 31 * result + ticks; + result = 31 * result + minimumTier; + return result; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeBloodAltar.java b/src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeBloodAltar.java new file mode 100644 index 00000000..9b47ed43 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeBloodAltar.java @@ -0,0 +1,96 @@ +package WayofTime.bloodmagic.api_impl.recipe; + +import WayofTime.bloodmagic.api.altar.EnumAltarTier; +import com.google.common.base.Preconditions; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.Ingredient; + +import javax.annotation.Nonnegative; +import javax.annotation.Nonnull; + +public class RecipeBloodAltar { + + @Nonnull + private final Ingredient input; + @Nonnull + private final ItemStack output; + @Nonnull + private final EnumAltarTier minimumTier; + @Nonnegative + private final int syphon; + @Nonnegative + private final int consumeRate; + @Nonnegative + private final int drainRate; + + public RecipeBloodAltar(@Nonnull Ingredient input, @Nonnull ItemStack output, @Nonnegative int minimumTier, @Nonnegative int syphon, @Nonnegative int consumeRate, @Nonnegative int drainRate) { + Preconditions.checkNotNull(input, "input cannot be null."); + Preconditions.checkNotNull(output, "output cannot be null."); + Preconditions.checkNotNull(minimumTier, "minimumTier cannot be negative."); + Preconditions.checkArgument(minimumTier <= EnumAltarTier.MAXTIERS, "minimumTier cannot be higher than max tier"); + Preconditions.checkArgument(syphon >= 0, "syphon cannot be negative."); + Preconditions.checkArgument(consumeRate >= 0, "consumeRate cannot be negative."); + Preconditions.checkArgument(drainRate >= 0, "drain cannot be negative."); + + this.input = input; + this.output = output; + this.minimumTier = EnumAltarTier.VALUES[minimumTier]; + this.syphon = syphon; + this.consumeRate = consumeRate; + this.drainRate = drainRate; + } + + @Nonnull + public final Ingredient getInput() { + return input; + } + + @Nonnull + public final ItemStack getOutput() { + return output; + } + + @Nonnull + public EnumAltarTier getMinimumTier() { + return minimumTier; + } + + @Nonnegative + public final int getSyphon() { + return syphon; + } + + @Nonnegative + public final int getConsumeRate() { + return consumeRate; + } + + @Nonnegative + public final int getDrainRate() { + return drainRate; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof RecipeBloodAltar)) return false; + + RecipeBloodAltar that = (RecipeBloodAltar) o; + + if (minimumTier != that.minimumTier) return false; + if (syphon != that.syphon) return false; + if (drainRate != that.drainRate) return false; + if (!input.equals(that.input)) return false; + return ItemStack.areItemStacksEqual(output, that.output); + } + + @Override + public int hashCode() { + int result = input.hashCode(); + result = 31 * result + output.hashCode(); + result = 31 * result + minimumTier.ordinal(); + result = 31 * result + syphon; + result = 31 * result + drainRate; + return result; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeTartaricForge.java b/src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeTartaricForge.java new file mode 100644 index 00000000..6acc46cd --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeTartaricForge.java @@ -0,0 +1,79 @@ +package WayofTime.bloodmagic.api_impl.recipe; + +import com.google.common.base.Preconditions; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.Ingredient; +import net.minecraft.util.NonNullList; + +import javax.annotation.Nonnegative; +import javax.annotation.Nonnull; + +public class RecipeTartaricForge { + + @Nonnull + private final NonNullList input; + @Nonnull + private final ItemStack output; + @Nonnegative + private final double minimumSouls; + @Nonnegative + private final double soulDrain; + + public RecipeTartaricForge(@Nonnull NonNullList input, @Nonnull ItemStack output, @Nonnegative double minimumSouls, @Nonnegative double soulDrain) { + Preconditions.checkNotNull(input, "input cannot be null."); + Preconditions.checkNotNull(output, "output cannot be null."); + Preconditions.checkArgument(minimumSouls >= 0, "minimumSouls cannot be negative."); + Preconditions.checkArgument(soulDrain >= 0, "soulDrain cannot be negative."); + + this.input = input; + this.output = output; + this.minimumSouls = minimumSouls; + this.soulDrain = soulDrain; + } + + @Nonnull + public final NonNullList getInput() { + return input; + } + + @Nonnull + public final ItemStack getOutput() { + return output; + } + + @Nonnegative + public final double getMinimumSouls() { + return minimumSouls; + } + + @Nonnegative + public final double getSoulDrain() { + return soulDrain; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof RecipeTartaricForge)) return false; + + RecipeTartaricForge that = (RecipeTartaricForge) o; + + if (minimumSouls != that.minimumSouls) return false; + if (soulDrain != that.soulDrain) return false; + if (!input.equals(that.input)) return false; + return ItemStack.areItemStacksEqual(output, that.output); + } + + @Override + public int hashCode() { + int result; + long temp; + result = input.hashCode(); + result = 31 * result + output.hashCode(); + temp = Double.doubleToLongBits(minimumSouls); + result = 31 * result + (int) (temp ^ (temp >>> 32)); + temp = Double.doubleToLongBits(soulDrain); + result = 31 * result + (int) (temp ^ (temp >>> 32)); + return result; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/apiv2/IBloodMagicAPI.java b/src/main/java/WayofTime/bloodmagic/apiv2/IBloodMagicAPI.java index 0e7c8d50..0024672a 100644 --- a/src/main/java/WayofTime/bloodmagic/apiv2/IBloodMagicAPI.java +++ b/src/main/java/WayofTime/bloodmagic/apiv2/IBloodMagicAPI.java @@ -3,6 +3,9 @@ package WayofTime.bloodmagic.apiv2; import net.minecraft.block.state.IBlockState; import net.minecraft.util.ResourceLocation; +import javax.annotation.Nonnegative; +import javax.annotation.Nonnull; + public interface IBloodMagicAPI { /** @@ -10,9 +13,13 @@ public interface IBloodMagicAPI { * * @return the active blacklist instance */ + @Nonnull IBloodMagicBlacklist getBlacklist(); - void setSacrificialValue(ResourceLocation entityId, int value); + @Nonnull + IBloodMagicRecipeRegistrar getRecipeRegistrar(); - void registerAltarComponent(IBlockState state, String componentType); + void setSacrificialValue(@Nonnull ResourceLocation entityId, @Nonnegative int value); + + void registerAltarComponent(@Nonnull IBlockState state, @Nonnull String componentType); } diff --git a/src/main/java/WayofTime/bloodmagic/apiv2/IBloodMagicBlacklist.java b/src/main/java/WayofTime/bloodmagic/apiv2/IBloodMagicBlacklist.java index 61caa272..13852efd 100644 --- a/src/main/java/WayofTime/bloodmagic/apiv2/IBloodMagicBlacklist.java +++ b/src/main/java/WayofTime/bloodmagic/apiv2/IBloodMagicBlacklist.java @@ -4,21 +4,23 @@ import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.util.ResourceLocation; +import javax.annotation.Nonnull; + public interface IBloodMagicBlacklist { - void addTeleposer(IBlockState state); + void addTeleposer(@Nonnull IBlockState state); - void addTeleposer(Block block); + void addTeleposer(@Nonnull Block block); - void addTeleposer(ResourceLocation entityId); + void addTeleposer(@Nonnull ResourceLocation entityId); - void addTransposition(IBlockState state); + void addTransposition(@Nonnull IBlockState state); - void addTransposition(Block block); + void addTransposition(@Nonnull Block block); - void addGreenGrove(IBlockState state); + void addGreenGrove(@Nonnull IBlockState state); - void addGreenGrove(Block block); + void addGreenGrove(@Nonnull Block block); - void addSacrifice(ResourceLocation entityId); + void addSacrifice(@Nonnull ResourceLocation entityId); } diff --git a/src/main/java/WayofTime/bloodmagic/apiv2/IBloodMagicPlugin.java b/src/main/java/WayofTime/bloodmagic/apiv2/IBloodMagicPlugin.java index ad2098a7..3d6c899d 100644 --- a/src/main/java/WayofTime/bloodmagic/apiv2/IBloodMagicPlugin.java +++ b/src/main/java/WayofTime/bloodmagic/apiv2/IBloodMagicPlugin.java @@ -1,6 +1,8 @@ package WayofTime.bloodmagic.apiv2; +import javax.annotation.Nonnull; + public interface IBloodMagicPlugin { - void register(IBloodMagicAPI api); + void register(@Nonnull IBloodMagicAPI api); } diff --git a/src/main/java/WayofTime/bloodmagic/apiv2/IBloodMagicRecipeRegistrar.java b/src/main/java/WayofTime/bloodmagic/apiv2/IBloodMagicRecipeRegistrar.java new file mode 100644 index 00000000..92c7ea6c --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/apiv2/IBloodMagicRecipeRegistrar.java @@ -0,0 +1,16 @@ +package WayofTime.bloodmagic.apiv2; + +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.Ingredient; + +import javax.annotation.Nonnegative; +import javax.annotation.Nonnull; + +public interface IBloodMagicRecipeRegistrar { + + void addBloodAltar(@Nonnull Ingredient input, @Nonnull ItemStack output, @Nonnegative int minimumTier, @Nonnegative int syphon, @Nonnegative int consumeRate, @Nonnegative int drainRate); + + void addAlchemyTable(@Nonnull ItemStack output, @Nonnegative int syphon, @Nonnegative int ticks, @Nonnegative int minimumTier, @Nonnull Ingredient... input); + + void addTartaricForge(@Nonnull ItemStack output, @Nonnegative double minimumSouls, @Nonnegative double soulDrain, @Nonnull Ingredient... input); +} diff --git a/src/main/java/WayofTime/bloodmagic/compat/jei/BloodMagicPlugin.java b/src/main/java/WayofTime/bloodmagic/compat/jei/BloodMagicPlugin.java index 11c3f80a..ab7ed560 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/jei/BloodMagicPlugin.java +++ b/src/main/java/WayofTime/bloodmagic/compat/jei/BloodMagicPlugin.java @@ -3,16 +3,18 @@ package WayofTime.bloodmagic.compat.jei; import WayofTime.bloodmagic.api.Constants; import WayofTime.bloodmagic.api.livingArmour.LivingArmourHandler; import WayofTime.bloodmagic.api.util.helper.ItemHelper.LivingUpgrades; +import WayofTime.bloodmagic.api_impl.BloodMagicAPI; +import WayofTime.bloodmagic.api_impl.recipe.RecipeAlchemyTable; +import WayofTime.bloodmagic.api_impl.recipe.RecipeBloodAltar; +import WayofTime.bloodmagic.api_impl.recipe.RecipeTartaricForge; import WayofTime.bloodmagic.client.gui.GuiSoulForge; import WayofTime.bloodmagic.compat.jei.alchemyArray.AlchemyArrayCraftingCategory; import WayofTime.bloodmagic.compat.jei.alchemyArray.AlchemyArrayCraftingRecipeHandler; import WayofTime.bloodmagic.compat.jei.alchemyArray.AlchemyArrayCraftingRecipeMaker; import WayofTime.bloodmagic.compat.jei.alchemyTable.AlchemyTableRecipeCategory; -import WayofTime.bloodmagic.compat.jei.alchemyTable.AlchemyTableRecipeHandler; -import WayofTime.bloodmagic.compat.jei.alchemyTable.AlchemyTableRecipeMaker; +import WayofTime.bloodmagic.compat.jei.alchemyTable.AlchemyTableRecipeJEI; import WayofTime.bloodmagic.compat.jei.altar.AltarRecipeCategory; -import WayofTime.bloodmagic.compat.jei.altar.AltarRecipeHandler; -import WayofTime.bloodmagic.compat.jei.altar.AltarRecipeMaker; +import WayofTime.bloodmagic.compat.jei.altar.AltarRecipeJEI; import WayofTime.bloodmagic.compat.jei.armourDowngrade.ArmourDowngradeRecipeCategory; import WayofTime.bloodmagic.compat.jei.armourDowngrade.ArmourDowngradeRecipeHandler; import WayofTime.bloodmagic.compat.jei.armourDowngrade.ArmourDowngradeRecipeMaker; @@ -20,8 +22,7 @@ import WayofTime.bloodmagic.compat.jei.binding.BindingRecipeCategory; import WayofTime.bloodmagic.compat.jei.binding.BindingRecipeHandler; import WayofTime.bloodmagic.compat.jei.binding.BindingRecipeMaker; import WayofTime.bloodmagic.compat.jei.forge.TartaricForgeRecipeCategory; -import WayofTime.bloodmagic.compat.jei.forge.TartaricForgeRecipeHandler; -import WayofTime.bloodmagic.compat.jei.forge.TartaricForgeRecipeMaker; +import WayofTime.bloodmagic.compat.jei.forge.TartaricForgeRecipeJEI; import WayofTime.bloodmagic.core.RegistrarBloodMagicBlocks; import WayofTime.bloodmagic.core.RegistrarBloodMagicItems; import mezz.jei.api.*; @@ -32,7 +33,7 @@ import javax.annotation.Nonnull; import java.util.Map; @JEIPlugin -public class BloodMagicPlugin extends BlankModPlugin { +public class BloodMagicPlugin implements IModPlugin { public static IJeiHelpers jeiHelper; @Override @@ -40,19 +41,21 @@ public class BloodMagicPlugin extends BlankModPlugin { jeiHelper = registry.getJeiHelpers(); registry.addRecipeHandlers( - new AltarRecipeHandler(), new BindingRecipeHandler(), new AlchemyArrayCraftingRecipeHandler(), - new TartaricForgeRecipeHandler(), - new AlchemyTableRecipeHandler(), new ArmourDowngradeRecipeHandler() ); - registry.addRecipes(AltarRecipeMaker.getRecipes()); + registry.addRecipes(BloodMagicAPI.INSTANCE.getRecipeRegistrar().getAltarRecipes().values(), Constants.Compat.JEI_CATEGORY_ALTAR); + registry.addRecipes(BloodMagicAPI.INSTANCE.getRecipeRegistrar().getAlchemyRecipes().values(), Constants.Compat.JEI_CATEGORY_ALCHEMYTABLE); + registry.addRecipes(BloodMagicAPI.INSTANCE.getRecipeRegistrar().getTartaricForgeRecipes().values(), Constants.Compat.JEI_CATEGORY_SOULFORGE); + + registry.handleRecipes(RecipeBloodAltar.class, AltarRecipeJEI::new, Constants.Compat.JEI_CATEGORY_ALTAR); + registry.handleRecipes(RecipeAlchemyTable.class, AlchemyTableRecipeJEI::new, Constants.Compat.JEI_CATEGORY_ALCHEMYTABLE); + registry.handleRecipes(RecipeTartaricForge.class, TartaricForgeRecipeJEI::new, Constants.Compat.JEI_CATEGORY_SOULFORGE); + registry.addRecipes(BindingRecipeMaker.getRecipes()); registry.addRecipes(AlchemyArrayCraftingRecipeMaker.getRecipes()); - registry.addRecipes(TartaricForgeRecipeMaker.getRecipes()); - registry.addRecipes(AlchemyTableRecipeMaker.getRecipes()); registry.addRecipes(ArmourDowngradeRecipeMaker.getRecipes()); registry.addIngredientInfo(new ItemStack(RegistrarBloodMagicItems.ALTAR_MAKER), ItemStack.class, "jei.bloodmagic.desc.altarBuilder"); diff --git a/src/main/java/WayofTime/bloodmagic/compat/jei/alchemyTable/AlchemyTableRecipeCategory.java b/src/main/java/WayofTime/bloodmagic/compat/jei/alchemyTable/AlchemyTableRecipeCategory.java index 4ade8678..a6b38e9c 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/jei/alchemyTable/AlchemyTableRecipeCategory.java +++ b/src/main/java/WayofTime/bloodmagic/compat/jei/alchemyTable/AlchemyTableRecipeCategory.java @@ -10,13 +10,13 @@ import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IGuiItemStackGroup; import mezz.jei.api.gui.IRecipeLayout; import mezz.jei.api.ingredients.IIngredients; -import mezz.jei.api.recipe.BlankRecipeCategory; +import mezz.jei.api.recipe.IRecipeCategory; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import javax.annotation.Nonnull; -public class AlchemyTableRecipeCategory extends BlankRecipeCategory { +public class AlchemyTableRecipeCategory implements IRecipeCategory { private static final int OUTPUT_SLOT = 0; private static final int ORB_SLOT = 1; private static final int INPUT_SLOT = 2; @@ -64,7 +64,7 @@ public class AlchemyTableRecipeCategory extends BlankRecipeCategory { - @Nonnull - @Override - public Class getRecipeClass() { - return AlchemyTableRecipeJEI.class; - } - - @Override - public String getRecipeCategoryUid(@Nonnull AlchemyTableRecipeJEI recipe) { - return Constants.Compat.JEI_CATEGORY_ALCHEMYTABLE; - } - - @Nonnull - @Override - public IRecipeWrapper getRecipeWrapper(@Nonnull AlchemyTableRecipeJEI recipe) { - return recipe; - } - - @Override - public boolean isRecipeValid(@Nonnull AlchemyTableRecipeJEI recipe) { - return true; - } -} diff --git a/src/main/java/WayofTime/bloodmagic/compat/jei/alchemyTable/AlchemyTableRecipeJEI.java b/src/main/java/WayofTime/bloodmagic/compat/jei/alchemyTable/AlchemyTableRecipeJEI.java index 0079d60a..8ec43f49 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/jei/alchemyTable/AlchemyTableRecipeJEI.java +++ b/src/main/java/WayofTime/bloodmagic/compat/jei/alchemyTable/AlchemyTableRecipeJEI.java @@ -1,20 +1,19 @@ package WayofTime.bloodmagic.compat.jei.alchemyTable; -import WayofTime.bloodmagic.api.recipe.AlchemyTableRecipe; +import WayofTime.bloodmagic.api_impl.recipe.RecipeAlchemyTable; import WayofTime.bloodmagic.compat.jei.BloodMagicPlugin; import WayofTime.bloodmagic.util.helper.TextHelper; import com.google.common.collect.Lists; import mezz.jei.api.ingredients.IIngredients; -import mezz.jei.api.recipe.BlankRecipeWrapper; +import mezz.jei.api.recipe.IRecipeWrapper; import net.minecraft.item.ItemStack; -import java.util.ArrayList; import java.util.List; -public class AlchemyTableRecipeJEI extends BlankRecipeWrapper { - private AlchemyTableRecipe recipe; +public class AlchemyTableRecipeJEI implements IRecipeWrapper { + private RecipeAlchemyTable recipe; - public AlchemyTableRecipeJEI(AlchemyTableRecipe recipe) { + public AlchemyTableRecipeJEI(RecipeAlchemyTable recipe) { this.recipe = recipe; } @@ -22,21 +21,21 @@ public class AlchemyTableRecipeJEI extends BlankRecipeWrapper { public void getIngredients(IIngredients ingredients) { List> expanded = BloodMagicPlugin.jeiHelper.getStackHelper().expandRecipeItemStackInputs(recipe.getInput()); ingredients.setInputLists(ItemStack.class, expanded); - ingredients.setOutput(ItemStack.class, recipe.getRecipeOutput(Lists.newArrayList())); + ingredients.setOutput(ItemStack.class, recipe.getOutput()); } @Override public List getTooltipStrings(int mouseX, int mouseY) { - ArrayList ret = new ArrayList(); + List tooltip = Lists.newArrayList(); if (mouseX >= 58 && mouseX <= 78 && mouseY >= 21 && mouseY <= 34) { - ret.add(TextHelper.localize("tooltip.bloodmagic.tier", recipe.getTierRequired())); - ret.add(TextHelper.localize("jei.bloodmagic.recipe.lpDrained", recipe.getLpDrained())); - ret.add(TextHelper.localize("jei.bloodmagic.recipe.ticksRequired", recipe.getTicksRequired())); + tooltip.add(TextHelper.localize("tooltip.bloodmagic.tier", recipe.getMinimumTier())); + tooltip.add(TextHelper.localize("jei.bloodmagic.recipe.lpDrained", recipe.getSyphon())); + tooltip.add(TextHelper.localize("jei.bloodmagic.recipe.ticksRequired", recipe.getTicks())); } - return ret; + return tooltip; } - public AlchemyTableRecipe getRecipe() { + public RecipeAlchemyTable getRecipe() { return recipe; } } diff --git a/src/main/java/WayofTime/bloodmagic/compat/jei/alchemyTable/AlchemyTableRecipeMaker.java b/src/main/java/WayofTime/bloodmagic/compat/jei/alchemyTable/AlchemyTableRecipeMaker.java deleted file mode 100644 index e526d182..00000000 --- a/src/main/java/WayofTime/bloodmagic/compat/jei/alchemyTable/AlchemyTableRecipeMaker.java +++ /dev/null @@ -1,21 +0,0 @@ -package WayofTime.bloodmagic.compat.jei.alchemyTable; - -import WayofTime.bloodmagic.api.recipe.AlchemyTableRecipe; -import WayofTime.bloodmagic.api.registry.AlchemyTableRecipeRegistry; - -import javax.annotation.Nonnull; -import java.util.ArrayList; -import java.util.List; - -public class AlchemyTableRecipeMaker { - @Nonnull - public static List getRecipes() { - List recipeList = AlchemyTableRecipeRegistry.getRecipeList(); - ArrayList recipes = new ArrayList(); - - for (AlchemyTableRecipe recipe : recipeList) - recipes.add(new AlchemyTableRecipeJEI(recipe)); - - return recipes; - } -} diff --git a/src/main/java/WayofTime/bloodmagic/compat/jei/altar/AltarRecipeCategory.java b/src/main/java/WayofTime/bloodmagic/compat/jei/altar/AltarRecipeCategory.java index 482b98ab..32f955c8 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/jei/altar/AltarRecipeCategory.java +++ b/src/main/java/WayofTime/bloodmagic/compat/jei/altar/AltarRecipeCategory.java @@ -8,7 +8,6 @@ import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IRecipeLayout; import mezz.jei.api.ingredients.IIngredients; import mezz.jei.api.recipe.IRecipeCategory; -import mezz.jei.api.recipe.IRecipeWrapper; import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; @@ -16,7 +15,7 @@ import net.minecraft.util.ResourceLocation; import javax.annotation.Nonnull; import javax.annotation.Nullable; -public class AltarRecipeCategory implements IRecipeCategory { +public class AltarRecipeCategory implements IRecipeCategory { private static final int INPUT_SLOT = 0; private static final int OUTPUT_SLOT = 1; @@ -55,14 +54,12 @@ public class AltarRecipeCategory implements IRecipeCategory { } @Override - public void setRecipe(IRecipeLayout recipeLayout, IRecipeWrapper recipeWrapper, IIngredients ingredients) { + public void setRecipe(IRecipeLayout recipeLayout, AltarRecipeJEI recipeWrapper, IIngredients ingredients) { recipeLayout.getItemStacks().init(INPUT_SLOT, true, 31, 0); recipeLayout.getItemStacks().init(OUTPUT_SLOT, false, 125, 30); - if (recipeWrapper instanceof AltarRecipeJEI) { - recipeLayout.getItemStacks().set(INPUT_SLOT, ingredients.getInputs(ItemStack.class).get(0)); - recipeLayout.getItemStacks().set(OUTPUT_SLOT, ingredients.getOutputs(ItemStack.class).get(0)); - } + recipeLayout.getItemStacks().set(INPUT_SLOT, ingredients.getInputs(ItemStack.class).get(0)); + recipeLayout.getItemStacks().set(OUTPUT_SLOT, ingredients.getOutputs(ItemStack.class).get(0)); } @Override diff --git a/src/main/java/WayofTime/bloodmagic/compat/jei/altar/AltarRecipeHandler.java b/src/main/java/WayofTime/bloodmagic/compat/jei/altar/AltarRecipeHandler.java deleted file mode 100644 index efd8c457..00000000 --- a/src/main/java/WayofTime/bloodmagic/compat/jei/altar/AltarRecipeHandler.java +++ /dev/null @@ -1,31 +0,0 @@ -package WayofTime.bloodmagic.compat.jei.altar; - -import WayofTime.bloodmagic.api.Constants; -import mezz.jei.api.recipe.IRecipeHandler; -import mezz.jei.api.recipe.IRecipeWrapper; - -import javax.annotation.Nonnull; - -public class AltarRecipeHandler implements IRecipeHandler { - @Nonnull - @Override - public Class getRecipeClass() { - return AltarRecipeJEI.class; - } - - @Override - public String getRecipeCategoryUid(@Nonnull AltarRecipeJEI recipe) { - return Constants.Compat.JEI_CATEGORY_ALTAR; - } - - @Nonnull - @Override - public IRecipeWrapper getRecipeWrapper(@Nonnull AltarRecipeJEI recipe) { - return recipe; - } - - @Override - public boolean isRecipeValid(@Nonnull AltarRecipeJEI recipe) { - return true; - } -} diff --git a/src/main/java/WayofTime/bloodmagic/compat/jei/altar/AltarRecipeJEI.java b/src/main/java/WayofTime/bloodmagic/compat/jei/altar/AltarRecipeJEI.java index d7de9b3d..c7f93c33 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/jei/altar/AltarRecipeJEI.java +++ b/src/main/java/WayofTime/bloodmagic/compat/jei/altar/AltarRecipeJEI.java @@ -1,18 +1,20 @@ package WayofTime.bloodmagic.compat.jei.altar; +import WayofTime.bloodmagic.api_impl.recipe.RecipeBloodAltar; import WayofTime.bloodmagic.util.helper.NumeralHelper; import WayofTime.bloodmagic.util.helper.TextHelper; +import com.google.common.collect.Lists; import mezz.jei.api.ingredients.IIngredients; -import mezz.jei.api.recipe.BlankRecipeWrapper; +import mezz.jei.api.recipe.IRecipeWrapper; import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; +import net.minecraft.util.NonNullList; import javax.annotation.Nonnull; import java.awt.Color; -import java.util.ArrayList; import java.util.List; -public class AltarRecipeJEI extends BlankRecipeWrapper { +public class AltarRecipeJEI implements IRecipeWrapper { @Nonnull private final List input; @Nonnull @@ -22,13 +24,13 @@ public class AltarRecipeJEI extends BlankRecipeWrapper { private final int consumptionRate; private final int drainRate; - public AltarRecipeJEI(@Nonnull List input, @Nonnull ItemStack output, int tier, int requiredLP, int consumptionRate, int drainRate) { - this.input = input; - this.output = output; + public AltarRecipeJEI(RecipeBloodAltar recipe) { + this.input = NonNullList.from(ItemStack.EMPTY, recipe.getInput().getMatchingStacks()); + this.output = recipe.getOutput(); - this.infoString = new String[]{TextHelper.localize("jei.bloodmagic.recipe.requiredTier", NumeralHelper.toRoman(tier)), TextHelper.localize("jei.bloodmagic.recipe.requiredLP", requiredLP)}; - this.consumptionRate = consumptionRate; - this.drainRate = drainRate; + this.infoString = new String[]{TextHelper.localize("jei.bloodmagic.recipe.requiredTier", NumeralHelper.toRoman(recipe.getMinimumTier().toInt())), TextHelper.localize("jei.bloodmagic.recipe.requiredLP", recipe.getSyphon())}; + this.consumptionRate = recipe.getConsumeRate(); + this.drainRate = recipe.getDrainRate(); } @Override @@ -39,12 +41,12 @@ public class AltarRecipeJEI extends BlankRecipeWrapper { @Override public List getTooltipStrings(int mouseX, int mouseY) { - ArrayList ret = new ArrayList(); + List tooltip = Lists.newArrayList(); if (mouseX >= 13 && mouseX <= 64 && mouseY >= 27 && mouseY <= 58) { - ret.add(TextHelper.localize("jei.bloodmagic.recipe.consumptionRate", consumptionRate)); - ret.add(TextHelper.localize("jei.bloodmagic.recipe.drainRate", drainRate)); + tooltip.add(TextHelper.localize("jei.bloodmagic.recipe.consumptionRate", consumptionRate)); + tooltip.add(TextHelper.localize("jei.bloodmagic.recipe.drainRate", drainRate)); } - return ret; + return tooltip; } @Override diff --git a/src/main/java/WayofTime/bloodmagic/compat/jei/altar/AltarRecipeMaker.java b/src/main/java/WayofTime/bloodmagic/compat/jei/altar/AltarRecipeMaker.java deleted file mode 100644 index 760852b2..00000000 --- a/src/main/java/WayofTime/bloodmagic/compat/jei/altar/AltarRecipeMaker.java +++ /dev/null @@ -1,45 +0,0 @@ -package WayofTime.bloodmagic.compat.jei.altar; - -import WayofTime.bloodmagic.api.ItemStackWrapper; -import WayofTime.bloodmagic.api.orb.IBloodOrb; -import WayofTime.bloodmagic.api.registry.AltarRecipeRegistry; -import WayofTime.bloodmagic.block.BlockLifeEssence; -import net.minecraft.item.ItemStack; -import net.minecraftforge.common.ForgeModContainer; -import net.minecraftforge.fluids.Fluid; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.FluidUtil; - -import javax.annotation.Nonnull; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -public class AltarRecipeMaker { - @Nonnull - public static List getRecipes() { - Map, AltarRecipeRegistry.AltarRecipe> altarMap = AltarRecipeRegistry.getRecipes(); - - ArrayList recipes = new ArrayList(); - - for (Map.Entry, AltarRecipeRegistry.AltarRecipe> itemStackAltarRecipeEntry : altarMap.entrySet()) { - // Make sure input is not a Blood Orb. If it is, the recipe is for a filling orb, and we don't want that. - if (!(itemStackAltarRecipeEntry.getKey().get(0).toStack().getItem() instanceof IBloodOrb)) { - List input = ItemStackWrapper.toStackList(itemStackAltarRecipeEntry.getValue().getInput()); - ItemStack output = itemStackAltarRecipeEntry.getValue().getOutput(); - int requiredTier = itemStackAltarRecipeEntry.getValue().getMinTier().toInt(); - int requiredLP = itemStackAltarRecipeEntry.getValue().getSyphon(); - int consumptionRate = itemStackAltarRecipeEntry.getValue().getConsumeRate(); - int drainRate = itemStackAltarRecipeEntry.getValue().getDrainRate(); - - if (output.getItem() == ForgeModContainer.getInstance().universalBucket && requiredLP == 1000) - output = FluidUtil.getFilledBucket(new FluidStack(BlockLifeEssence.getLifeEssence(), Fluid.BUCKET_VOLUME)); - - AltarRecipeJEI recipe = new AltarRecipeJEI(input, output, requiredTier, requiredLP, consumptionRate, drainRate); - recipes.add(recipe); - } - } - - return recipes; - } -} diff --git a/src/main/java/WayofTime/bloodmagic/compat/jei/forge/TartaricForgeRecipeCategory.java b/src/main/java/WayofTime/bloodmagic/compat/jei/forge/TartaricForgeRecipeCategory.java index ceee68d8..3e03d2f7 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/jei/forge/TartaricForgeRecipeCategory.java +++ b/src/main/java/WayofTime/bloodmagic/compat/jei/forge/TartaricForgeRecipeCategory.java @@ -10,7 +10,6 @@ import mezz.jei.api.gui.IGuiItemStackGroup; import mezz.jei.api.gui.IRecipeLayout; import mezz.jei.api.ingredients.IIngredients; import mezz.jei.api.recipe.IRecipeCategory; -import mezz.jei.api.recipe.IRecipeWrapper; import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; @@ -19,7 +18,7 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.List; -public class TartaricForgeRecipeCategory implements IRecipeCategory { +public class TartaricForgeRecipeCategory implements IRecipeCategory { private static final int OUTPUT_SLOT = 0; private static final int GEM_SLOT = 1; private static final int INPUT_SLOT = 2; @@ -65,7 +64,7 @@ public class TartaricForgeRecipeCategory implements IRecipeCategory { } @Override - public void setRecipe(IRecipeLayout recipeLayout, IRecipeWrapper recipeWrapper, IIngredients ingredients) { + public void setRecipe(IRecipeLayout recipeLayout, TartaricForgeRecipeJEI recipeWrapper, IIngredients ingredients) { IGuiItemStackGroup guiItemStacks = recipeLayout.getItemStacks(); guiItemStacks.init(OUTPUT_SLOT, false, 73, 13); @@ -79,16 +78,12 @@ public class TartaricForgeRecipeCategory implements IRecipeCategory { } List> inputs = ingredients.getInputs(ItemStack.class); - List> outputs = ingredients.getOutputs(ItemStack.class); - if (recipeWrapper instanceof TartaricForgeRecipeJEI) { - TartaricForgeRecipeJEI recipe = (TartaricForgeRecipeJEI) recipeWrapper; - guiItemStacks.set(GEM_SLOT, ingredients.getInputs(ItemStack.class).get(ingredients.getInputs(ItemStack.class).size() - 1)); - inputs.remove(ingredients.getInputs(ItemStack.class).size() - 1); - guiItemStacks.set(OUTPUT_SLOT, ingredients.getOutputs(ItemStack.class).get(0)); - guiItemStacks.set(INPUT_SLOT, ingredients.getInputs(ItemStack.class).get(0)); - craftingGridHelper.setInputs(guiItemStacks, inputs); - } + guiItemStacks.set(GEM_SLOT, ingredients.getInputs(ItemStack.class).get(ingredients.getInputs(ItemStack.class).size() - 1)); + inputs.remove(ingredients.getInputs(ItemStack.class).size() - 1); + guiItemStacks.set(OUTPUT_SLOT, ingredients.getOutputs(ItemStack.class).get(0)); + guiItemStacks.set(INPUT_SLOT, ingredients.getInputs(ItemStack.class).get(0)); + craftingGridHelper.setInputs(guiItemStacks, inputs); } @Override diff --git a/src/main/java/WayofTime/bloodmagic/compat/jei/forge/TartaricForgeRecipeHandler.java b/src/main/java/WayofTime/bloodmagic/compat/jei/forge/TartaricForgeRecipeHandler.java deleted file mode 100644 index 608d97be..00000000 --- a/src/main/java/WayofTime/bloodmagic/compat/jei/forge/TartaricForgeRecipeHandler.java +++ /dev/null @@ -1,31 +0,0 @@ -package WayofTime.bloodmagic.compat.jei.forge; - -import WayofTime.bloodmagic.api.Constants; -import mezz.jei.api.recipe.IRecipeHandler; -import mezz.jei.api.recipe.IRecipeWrapper; - -import javax.annotation.Nonnull; - -public class TartaricForgeRecipeHandler implements IRecipeHandler { - @Nonnull - @Override - public Class getRecipeClass() { - return TartaricForgeRecipeJEI.class; - } - - @Override - public String getRecipeCategoryUid(@Nonnull TartaricForgeRecipeJEI recipe) { - return Constants.Compat.JEI_CATEGORY_SOULFORGE; - } - - @Nonnull - @Override - public IRecipeWrapper getRecipeWrapper(@Nonnull TartaricForgeRecipeJEI recipe) { - return recipe; - } - - @Override - public boolean isRecipeValid(@Nonnull TartaricForgeRecipeJEI recipe) { - return true; - } -} diff --git a/src/main/java/WayofTime/bloodmagic/compat/jei/forge/TartaricForgeRecipeJEI.java b/src/main/java/WayofTime/bloodmagic/compat/jei/forge/TartaricForgeRecipeJEI.java index 9919a733..2c7d4f97 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/jei/forge/TartaricForgeRecipeJEI.java +++ b/src/main/java/WayofTime/bloodmagic/compat/jei/forge/TartaricForgeRecipeJEI.java @@ -1,22 +1,22 @@ package WayofTime.bloodmagic.compat.jei.forge; -import WayofTime.bloodmagic.api.recipe.TartaricForgeRecipe; +import WayofTime.bloodmagic.api_impl.recipe.RecipeTartaricForge; import WayofTime.bloodmagic.compat.jei.BloodMagicPlugin; import WayofTime.bloodmagic.core.RegistrarBloodMagicItems; import WayofTime.bloodmagic.util.helper.TextHelper; +import com.google.common.collect.Lists; import mezz.jei.api.ingredients.IIngredients; import mezz.jei.api.recipe.BlankRecipeWrapper; import net.minecraft.item.ItemStack; import javax.annotation.Nullable; -import java.util.ArrayList; import java.util.List; public class TartaricForgeRecipeJEI extends BlankRecipeWrapper { - private TartaricForgeRecipe recipe; - private List validGems = new ArrayList(); + private RecipeTartaricForge recipe; + private List validGems = Lists.newArrayList(); - public TartaricForgeRecipeJEI(TartaricForgeRecipe recipe) { + public TartaricForgeRecipeJEI(RecipeTartaricForge recipe) { this.recipe = recipe; for (DefaultWill will : DefaultWill.values()) @@ -29,29 +29,25 @@ public class TartaricForgeRecipeJEI extends BlankRecipeWrapper { List> expandedInputs = BloodMagicPlugin.jeiHelper.getStackHelper().expandRecipeItemStackInputs(recipe.getInput()); expandedInputs.add(validGems); ingredients.setInputLists(ItemStack.class, expandedInputs); - ingredients.setOutput(ItemStack.class, recipe.getRecipeOutput()); + ingredients.setOutput(ItemStack.class, recipe.getOutput()); } @Nullable @Override public List getTooltipStrings(int mouseX, int mouseY) { - ArrayList ret = new ArrayList(); + List tooltip = Lists.newArrayList(); if (mouseX >= 40 && mouseX <= 60 && mouseY >= 21 && mouseY <= 34) { - ret.add(TextHelper.localize("jei.bloodmagic.recipe.minimumSouls", recipe.getMinimumSouls())); - ret.add(TextHelper.localize("jei.bloodmagic.recipe.soulsDrained", recipe.getSoulsDrained())); - return ret; + tooltip.add(TextHelper.localize("jei.bloodmagic.recipe.minimumSouls", recipe.getMinimumSouls())); + tooltip.add(TextHelper.localize("jei.bloodmagic.recipe.soulsDrained", recipe.getSoulDrain())); + return tooltip; } return null; } - public TartaricForgeRecipe getRecipe() { + public RecipeTartaricForge getRecipe() { return recipe; } - public List getValidGems() { - return validGems; - } - public enum DefaultWill { SOUL(new ItemStack(RegistrarBloodMagicItems.MONSTER_SOUL, 1, 0), 64), PETTY(new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 0), 64), diff --git a/src/main/java/WayofTime/bloodmagic/compat/jei/forge/TartaricForgeRecipeMaker.java b/src/main/java/WayofTime/bloodmagic/compat/jei/forge/TartaricForgeRecipeMaker.java deleted file mode 100644 index 9f66cc27..00000000 --- a/src/main/java/WayofTime/bloodmagic/compat/jei/forge/TartaricForgeRecipeMaker.java +++ /dev/null @@ -1,21 +0,0 @@ -package WayofTime.bloodmagic.compat.jei.forge; - -import WayofTime.bloodmagic.api.recipe.TartaricForgeRecipe; -import WayofTime.bloodmagic.api.registry.TartaricForgeRecipeRegistry; - -import javax.annotation.Nonnull; -import java.util.ArrayList; -import java.util.List; - -public class TartaricForgeRecipeMaker { - @Nonnull - public static List getRecipes() { - List recipeList = TartaricForgeRecipeRegistry.getRecipeList(); - ArrayList recipes = new ArrayList(); - - for (TartaricForgeRecipe recipe : recipeList) - recipes.add(new TartaricForgeRecipeJEI(recipe)); - - return recipes; - } -} diff --git a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicRecipes.java b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicRecipes.java new file mode 100644 index 00000000..087d7025 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicRecipes.java @@ -0,0 +1,130 @@ +package WayofTime.bloodmagic.core; + +import WayofTime.bloodmagic.BloodMagic; +import WayofTime.bloodmagic.api.altar.EnumAltarTier; +import WayofTime.bloodmagic.api.registry.OrbRegistry; +import WayofTime.bloodmagic.api.ritual.EnumRuneType; +import WayofTime.bloodmagic.api_impl.BloodMagicRecipeRegistrar; +import WayofTime.bloodmagic.apiv2.IBloodMagicRecipeRegistrar; +import WayofTime.bloodmagic.block.BlockLifeEssence; +import WayofTime.bloodmagic.item.ItemComponent; +import WayofTime.bloodmagic.item.ItemDemonCrystal; +import WayofTime.bloodmagic.item.alchemy.ItemCuttingFluid; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.IRecipe; +import net.minecraft.item.crafting.Ingredient; +import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidUtil; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.oredict.OreIngredient; + +@Mod.EventBusSubscriber(modid = BloodMagic.MODID) +public class RegistrarBloodMagicRecipes { + + @SubscribeEvent + public static void registerCrafting(RegistryEvent.Register event) { + // TODO - Figure out what recipes still need to be here + } + + public static void registerAltarRecipes(IBloodMagicRecipeRegistrar registrar) { + // ONE + registrar.addBloodAltar(new OreIngredient("gemDiamond"), OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_WEAK), EnumAltarTier.ONE.ordinal(), 2000, 2, 1); + registrar.addBloodAltar(new OreIngredient("stone"), new ItemStack(RegistrarBloodMagicItems.SLATE), EnumAltarTier.ONE.ordinal(), 1000, 5, 5); + registrar.addBloodAltar(Ingredient.fromItem(Items.BUCKET), FluidUtil.getFilledBucket(new FluidStack(BlockLifeEssence.getLifeEssence(), Fluid.BUCKET_VOLUME)), EnumAltarTier.ONE.ordinal(), 1000, 5, 0); + registrar.addBloodAltar(Ingredient.fromItem(Items.BOOK), new ItemStack(RegistrarBloodMagicItems.SANGUINE_BOOK), EnumAltarTier.ONE.ordinal(), 1000, 20, 0); + + // TWO + registrar.addBloodAltar(new OreIngredient("blockRedstone"), OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_APPRENTICE), EnumAltarTier.TWO.ordinal(), 5000, 5, 5); + registrar.addBloodAltar(Ingredient.fromItem(RegistrarBloodMagicItems.SLATE), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), EnumAltarTier.TWO.ordinal(), 2000, 5, 5); + registrar.addBloodAltar(Ingredient.fromItem(Items.IRON_SWORD), new ItemStack(RegistrarBloodMagicItems.DAGGER_OF_SACRIFICE), EnumAltarTier.TWO.ordinal(), 3000, 5, 5); + + // THREE + registrar.addBloodAltar(new OreIngredient("blockGold"), OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_MAGICIAN), EnumAltarTier.THREE.ordinal(), 25000, 20, 20); + registrar.addBloodAltar(Ingredient.fromStacks(new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1)), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2), EnumAltarTier.THREE.ordinal(), 5000, 15, 10); + registrar.addBloodAltar(new OreIngredient("obsidian"), EnumRuneType.EARTH.getScribeStack(), EnumAltarTier.THREE.ordinal(), 1000, 5, 5); + registrar.addBloodAltar(new OreIngredient("blockLapis"), EnumRuneType.WATER.getScribeStack(), EnumAltarTier.THREE.ordinal(), 1000, 5, 5); + registrar.addBloodAltar(Ingredient.fromItem(Items.MAGMA_CREAM), EnumRuneType.FIRE.getScribeStack(), EnumAltarTier.THREE.ordinal(), 1000, 5, 5); + registrar.addBloodAltar(Ingredient.fromItem(Items.GHAST_TEAR), EnumRuneType.AIR.getScribeStack(), EnumAltarTier.THREE.ordinal(), 1000, 5, 5); + registrar.addBloodAltar(Ingredient.fromItem(RegistrarBloodMagicItems.LAVA_CRYSTAL), new ItemStack(RegistrarBloodMagicItems.ACTIVATION_CRYSTAL), EnumAltarTier.THREE.ordinal(), 10000, 20, 10); + + // FOUR + registrar.addBloodAltar(Ingredient.fromItem(RegistrarBloodMagicItems.BLOOD_SHARD), OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_MASTER), EnumAltarTier.FOUR.ordinal(), 25000, 30, 50); + registrar.addBloodAltar(Ingredient.fromStacks(new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2)), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), EnumAltarTier.FOUR.ordinal(), 15000, 20, 20); + registrar.addBloodAltar(new OreIngredient("blockCoal"), EnumRuneType.DUSK.getScribeStack(), EnumAltarTier.FOUR.ordinal(), 2000, 20, 10); + registrar.addBloodAltar(new OreIngredient("enderpearl"), new ItemStack(RegistrarBloodMagicItems.TELEPOSITION_FOCUS), EnumAltarTier.FOUR.ordinal(), 2000, 10, 10); + registrar.addBloodAltar(Ingredient.fromItem(RegistrarBloodMagicItems.TELEPOSITION_FOCUS), new ItemStack(RegistrarBloodMagicItems.TELEPOSITION_FOCUS, 1, 1), EnumAltarTier.FOUR.ordinal(), 10000, 20, 10); + + // FIVE + registrar.addBloodAltar(new OreIngredient("netherstar"), OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_ARCHMAGE), EnumAltarTier.FIVE.ordinal(), 80000, 50, 100); + registrar.addBloodAltar(Ingredient.fromStacks(new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3)), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 4), EnumAltarTier.FIVE.ordinal(), 30000, 40, 100); + + // SIX + registrar.addBloodAltar(Ingredient.fromStacks(new ItemStack(RegistrarBloodMagicBlocks.DECORATIVE_BRICK, 1, 2)), OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_TRANSCENDENT), EnumAltarTier.SIX.ordinal(), 200000, 100, 200); + registrar.addBloodAltar(new OreIngredient("glowstone"), EnumRuneType.DAWN.getScribeStack(), EnumAltarTier.SIX.ordinal(), 200000, 100, 200); + } + + public static void registerAlchemyTableRecipes(IBloodMagicRecipeRegistrar registrar) { + + } + + public static void registerTartaricForgeRecipes(BloodMagicRecipeRegistrar registrar) { + registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicItems.SOUL_GEM), 1, 1, "dustRedstone", "ingotGold", "blockGlass", "dyeBlue"); + registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 1), 60, 20, new ItemStack(RegistrarBloodMagicItems.SOUL_GEM), "gemDiamond", "blockRedstone", "blockLapis"); + registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 2), 240, 50, new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 1), "gemDiamond", "blockGold", new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2)); + registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 3), 1000, 100, new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 2), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.BLOOD_SHARD), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_DEFAULT)); + registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 4), 4000, 500, new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 3), Items.NETHER_STAR); + registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicItems.SENTIENT_SWORD), 0, 0, new ItemStack(RegistrarBloodMagicItems.SOUL_GEM), new ItemStack(Items.IRON_SWORD)); + registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicItems.SENTIENT_AXE), 0, 0, new ItemStack(RegistrarBloodMagicItems.SOUL_GEM), new ItemStack(Items.IRON_AXE)); + registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicItems.SENTIENT_PICKAXE), 0, 0, new ItemStack(RegistrarBloodMagicItems.SOUL_GEM), new ItemStack(Items.IRON_PICKAXE)); + registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicItems.SENTIENT_SHOVEL), 0, 0, new ItemStack(RegistrarBloodMagicItems.SOUL_GEM), new ItemStack(Items.IRON_SHOVEL)); + registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicItems.SENTIENT_BOW), 70, 0, new ItemStack(Items.BOW), new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 1), "string", "string"); + registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicItems.ARCANE_ASHES), 0, 0, "dustRedstone", "dyeWhite", "gunpowder", Items.COAL); + registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_WATER), 10, 3, new ItemStack(Items.SUGAR), new ItemStack(Items.WATER_BUCKET), new ItemStack(Items.WATER_BUCKET)); + registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_LAVA), 32, 10, Items.LAVA_BUCKET, "dustRedstone", "cobblestone", "blockCoal"); + registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_VOID), 64, 10, Items.BUCKET, "string", "string", "gunpowder"); + registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_GROWTH), 128, 20, "treeSapling", "treeSapling", "sugarcane", Items.SUGAR); + registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_AIR), 128, 20, Items.GHAST_TEAR, "feather", "feather"); + registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_SIGHT), 64, 0, RegistrarBloodMagicItems.SIGIL_DIVINATION, "blockGlass", "blockGlass", "dustGlowstone"); + registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_HOLDING), 64, 20, "chestWood", "leather", "string", "string"); + registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_FASTMINER), 128, 10, Items.IRON_PICKAXE, Items.IRON_AXE, Items.IRON_SHOVEL, Items.GUNPOWDER); + registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_AFFINITY), 300, 30, RegistrarBloodMagicItems.SIGIL_WATER, RegistrarBloodMagicItems.SIGIL_AIR, RegistrarBloodMagicItems.SIGIL_LAVA, Blocks.OBSIDIAN); + registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_SUPPRESSION), 500, 50, RegistrarBloodMagicBlocks.TELEPOSER, Items.WATER_BUCKET, Items.LAVA_BUCKET, Items.BLAZE_ROD); + registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_BINDING), 400, 10, "dustGlowstone", "dustRedstone", "nuggetGold", Items.GUNPOWDER); + registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_BLOODLIGHT), 300, 10, "glowstone", Blocks.TORCH, "dustRedstone", "dustRedstone"); + registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_MAGNETISM), 600, 10, "string", "ingotGold", "blockIron", "ingotGold"); + registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_HASTE), 1400, 100, Items.COOKIE, Items.SUGAR, Items.COOKIE, "stone"); + registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_BRIDGE), 600, 50, Blocks.SOUL_SAND, Blocks.SOUL_SAND, "stone", Blocks.OBSIDIAN); + registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_SEVERANCE), 800, 70, Items.ENDER_EYE, Items.ENDER_PEARL, "ingotGold", "ingotGold"); + registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_COMPRESSION), 2000, 200, "blockIron", "blockGold", Blocks.OBSIDIAN, "cobblestone"); + registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_TELEPOSITION), 1500, 200, RegistrarBloodMagicBlocks.TELEPOSER, "glowstone", "blockRedstone", "ingotGold"); + registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_TRANSPOSITION), 1500, 200, RegistrarBloodMagicBlocks.TELEPOSER, "gemDiamond", Items.ENDER_PEARL, Blocks.OBSIDIAN); + registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_CLAW), 800, 120, Items.FLINT, Items.FLINT, ItemCuttingFluid.getStack(ItemCuttingFluid.BASIC)); + registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_BOUNCE), 200, 20, Blocks.SLIME_BLOCK, Blocks.SLIME_BLOCK, Items.LEATHER, "string"); + registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_FROST), 80, 10, Blocks.ICE, Items.SNOWBALL, Items.SNOWBALL, "dustRedstone"); + + registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicItems.SENTIENT_ARMOUR_GEM), 240, 150, Items.DIAMOND_CHESTPLATE, new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 1), Blocks.IRON_BLOCK, Blocks.OBSIDIAN); + + registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.COMPONENT_FRAME_PART), 400, 10, "blockGlass", "stone", new ItemStack(RegistrarBloodMagicItems.SLATE)); + registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicItems.NODE_ROUTER), 400, 5, "stickWood", new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), "gemLapis", "gemLapis"); + registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicBlocks.ITEM_ROUTING_NODE), 400, 5, "dustGlowstone", "dustRedstone", "blockGlass", "stone"); + registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicBlocks.OUTPUT_ROUTING_NODE), 400, 25, "dustGlowstone", "dustRedstone", "ingotIron", new ItemStack(RegistrarBloodMagicBlocks.ITEM_ROUTING_NODE)); + registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicBlocks.INPUT_ROUTING_NODE), 400, 25, "dustGlowstone", "dustRedstone", "ingotGold", new ItemStack(RegistrarBloodMagicBlocks.ITEM_ROUTING_NODE)); + registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicBlocks.MASTER_ROUTING_NODE), 400, 200, "blockIron", "gemDiamond", new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2)); + + registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicBlocks.DEMON_CRYSTAL, 1, 0), 1200, 100, ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_DEFAULT), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_DEFAULT), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_DEFAULT), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_DEFAULT)); + registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicBlocks.DEMON_CRYSTAL, 1, 1), 1200, 100, ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_CORROSIVE), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_CORROSIVE), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_CORROSIVE), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_CORROSIVE)); + registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicBlocks.DEMON_CRYSTAL, 1, 2), 1200, 100, ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_DESTRUCTIVE), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_DESTRUCTIVE), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_DESTRUCTIVE), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_DESTRUCTIVE)); + registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicBlocks.DEMON_CRYSTAL, 1, 3), 1200, 100, ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_VENGEFUL), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_VENGEFUL), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_VENGEFUL), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_VENGEFUL)); + registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicBlocks.DEMON_CRYSTAL, 1, 4), 1200, 100, ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_STEADFAST), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_STEADFAST), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_STEADFAST), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_STEADFAST)); + + registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicBlocks.DEMON_CRUCIBLE), 400, 100, Items.CAULDRON, "stone", "gemLapis", "gemDiamond"); + registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicBlocks.DEMON_PYLON), 400, 50, "blockIron", "stone", "gemLapis", RegistrarBloodMagicItems.ITEM_DEMON_CRYSTAL); + registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicBlocks.DEMON_CRYSTALLIZER), 500, 100, RegistrarBloodMagicBlocks.SOUL_FORGE, "stone", "gemLapis", "blockGlass"); + registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicItems.DEMON_WILL_GAUGE), 400, 50, "ingotGold", "dustRedstone", "blockGlass", RegistrarBloodMagicItems.ITEM_DEMON_CRYSTAL); + } +} diff --git a/src/main/java/WayofTime/bloodmagic/core/recipe/IngredientSoulGem.java b/src/main/java/WayofTime/bloodmagic/core/recipe/IngredientSoulGem.java new file mode 100644 index 00000000..5d63e947 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/core/recipe/IngredientSoulGem.java @@ -0,0 +1,4 @@ +package WayofTime.bloodmagic.core.recipe; + +public class IngredientSoulGem { +} diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java b/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java index 30cde112..3a61373e 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java @@ -3,7 +3,6 @@ package WayofTime.bloodmagic.registry; import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.ConfigHandler; import WayofTime.bloodmagic.alchemyArray.*; -import WayofTime.bloodmagic.api.altar.EnumAltarTier; import WayofTime.bloodmagic.api.compress.CompressionRegistry; import WayofTime.bloodmagic.api.iface.ISigil; import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; @@ -46,7 +45,6 @@ import net.minecraft.potion.PotionEffect; import net.minecraft.util.ResourceLocation; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.TextComponentTranslation; -import net.minecraftforge.common.ForgeModContainer; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.oredict.OreDictionary; import org.apache.commons.lang3.tuple.Pair; @@ -207,46 +205,6 @@ public class ModRecipes { } public static void addAltarRecipes() { - // ONE - AltarRecipeRegistry.registerFillRecipe(OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_WEAK), EnumAltarTier.ONE, RegistrarBloodMagic.ORB_WEAK.getCapacity(), 2, 1); - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Items.DIAMOND), OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_WEAK), EnumAltarTier.ONE, 2000, 2, 1)); - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Blocks.STONE), new ItemStack(RegistrarBloodMagicItems.SLATE), EnumAltarTier.ONE, 1000, 5, 5)); - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Items.BUCKET), new ItemStack(ForgeModContainer.getInstance().universalBucket), EnumAltarTier.ONE, 1000, 5, 0)); - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Items.BOOK), new ItemStack(RegistrarBloodMagicItems.SANGUINE_BOOK), EnumAltarTier.ONE, 1000, 20, 0)); - - // TWO - AltarRecipeRegistry.registerFillRecipe(OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_APPRENTICE), EnumAltarTier.TWO, RegistrarBloodMagic.ORB_APPRENTICE.getCapacity(), 5, 5); - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Blocks.REDSTONE_BLOCK), OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_APPRENTICE), EnumAltarTier.TWO, 5000, 5, 5)); - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(RegistrarBloodMagicItems.SLATE), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), EnumAltarTier.TWO, 2000, 5, 5)); - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Items.IRON_SWORD), new ItemStack(RegistrarBloodMagicItems.DAGGER_OF_SACRIFICE), EnumAltarTier.TWO, 3000, 5, 5)); - - // THREE - AltarRecipeRegistry.registerFillRecipe(OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_MAGICIAN), EnumAltarTier.THREE, RegistrarBloodMagic.ORB_MAGICIAN.getCapacity(), 15, 15); - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Blocks.GOLD_BLOCK), OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_MAGICIAN), EnumAltarTier.THREE, 25000, 20, 20)); - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2), EnumAltarTier.THREE, 5000, 15, 10)); - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Blocks.OBSIDIAN), EnumRuneType.EARTH.getScribeStack(), EnumAltarTier.THREE, 1000, 5, 5)); - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Blocks.LAPIS_BLOCK), EnumRuneType.WATER.getScribeStack(), EnumAltarTier.THREE, 1000, 5, 5)); - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Items.MAGMA_CREAM), EnumRuneType.FIRE.getScribeStack(), EnumAltarTier.THREE, 1000, 5, 5)); - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Items.GHAST_TEAR), EnumRuneType.AIR.getScribeStack(), EnumAltarTier.THREE, 1000, 5, 5)); - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(RegistrarBloodMagicItems.LAVA_CRYSTAL), new ItemStack(RegistrarBloodMagicItems.ACTIVATION_CRYSTAL), EnumAltarTier.THREE, 10000, 20, 10)); - - // FOUR - AltarRecipeRegistry.registerFillRecipe(OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_MASTER), EnumAltarTier.FOUR, RegistrarBloodMagic.ORB_MASTER.getCapacity(), 25, 25); - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(RegistrarBloodMagicItems.BLOOD_SHARD), OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_MASTER), EnumAltarTier.FOUR, 25000, 30, 50)); - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), EnumAltarTier.FOUR, 15000, 20, 20)); - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Blocks.COAL_BLOCK), EnumRuneType.DUSK.getScribeStack(), EnumAltarTier.FOUR, 2000, 20, 10)); - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Items.ENDER_PEARL), new ItemStack(RegistrarBloodMagicItems.TELEPOSITION_FOCUS), EnumAltarTier.FOUR, 2000, 10, 10)); - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(RegistrarBloodMagicItems.TELEPOSITION_FOCUS), new ItemStack(RegistrarBloodMagicItems.TELEPOSITION_FOCUS, 1, 1), EnumAltarTier.FOUR, 10000, 20, 10)); - - // FIVE - AltarRecipeRegistry.registerFillRecipe(OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_ARCHMAGE), EnumAltarTier.FIVE, RegistrarBloodMagic.ORB_ARCHMAGE.getCapacity(), 50, 50); - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Items.NETHER_STAR), OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_ARCHMAGE), EnumAltarTier.FIVE, 80000, 50, 100)); - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 4), EnumAltarTier.FIVE, 30000, 40, 100)); - - // SIX - AltarRecipeRegistry.registerFillRecipe(OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_TRANSCENDENT), EnumAltarTier.SIX, RegistrarBloodMagic.ORB_TRANSCENDENT.getCapacity(), 50, 50); - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(RegistrarBloodMagicBlocks.DECORATIVE_BRICK, 1, 2), OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_TRANSCENDENT), EnumAltarTier.SIX, 200000, 100, 200)); - AltarRecipeRegistry.registerRecipe(new AltarRecipeRegistry.AltarRecipe(new ItemStack(Blocks.GLOWSTONE), EnumRuneType.DAWN.getScribeStack(), EnumAltarTier.SIX, 200000, 100, 200)); } public static void addAlchemyArrayRecipes() { @@ -308,59 +266,6 @@ public class ModRecipes { } public static void addSoulForgeRecipes() { - TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(RegistrarBloodMagicItems.SOUL_GEM), 1, 1, "dustRedstone", "ingotGold", "blockGlass", "dyeBlue"); - TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 1), 60, 20, new ItemStack(RegistrarBloodMagicItems.SOUL_GEM), "gemDiamond", "blockRedstone", "blockLapis"); - TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 2), 240, 50, new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 1), "gemDiamond", "blockGold", new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2)); - TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 3), 1000, 100, new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 2), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.BLOOD_SHARD), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_DEFAULT)); - TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 4), 4000, 500, new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 3), Items.NETHER_STAR); - TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(RegistrarBloodMagicItems.SENTIENT_SWORD), 0, 0, new ItemStack(RegistrarBloodMagicItems.SOUL_GEM), new ItemStack(Items.IRON_SWORD)); - TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(RegistrarBloodMagicItems.SENTIENT_AXE), 0, 0, new ItemStack(RegistrarBloodMagicItems.SOUL_GEM), new ItemStack(Items.IRON_AXE)); - TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(RegistrarBloodMagicItems.SENTIENT_PICKAXE), 0, 0, new ItemStack(RegistrarBloodMagicItems.SOUL_GEM), new ItemStack(Items.IRON_PICKAXE)); - TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(RegistrarBloodMagicItems.SENTIENT_SHOVEL), 0, 0, new ItemStack(RegistrarBloodMagicItems.SOUL_GEM), new ItemStack(Items.IRON_SHOVEL)); - TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(RegistrarBloodMagicItems.SENTIENT_BOW), 70, 0, new ItemStack(Items.BOW), new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 1), "string", "string"); - TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(RegistrarBloodMagicItems.ARCANE_ASHES), 0, 0, "dustRedstone", "dyeWhite", "gunpowder", Items.COAL); - TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_WATER), 10, 3, new ItemStack(Items.SUGAR), new ItemStack(Items.WATER_BUCKET), new ItemStack(Items.WATER_BUCKET)); - TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_LAVA), 32, 10, Items.LAVA_BUCKET, "dustRedstone", "cobblestone", "blockCoal"); - TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_VOID), 64, 10, Items.BUCKET, "string", "string", "gunpowder"); - TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_GROWTH), 128, 20, "treeSapling", "treeSapling", "sugarcane", Items.SUGAR); - TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_AIR), 128, 20, Items.GHAST_TEAR, "feather", "feather"); - TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_SIGHT), 64, 0, RegistrarBloodMagicItems.SIGIL_DIVINATION, "blockGlass", "blockGlass", "dustGlowstone"); - TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_HOLDING), 64, 20, "chestWood", "leather", "string", "string"); - TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_FASTMINER), 128, 10, Items.IRON_PICKAXE, Items.IRON_AXE, Items.IRON_SHOVEL, Items.GUNPOWDER); - TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_AFFINITY), 300, 30, RegistrarBloodMagicItems.SIGIL_WATER, RegistrarBloodMagicItems.SIGIL_AIR, RegistrarBloodMagicItems.SIGIL_LAVA, Blocks.OBSIDIAN); - TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_SUPPRESSION), 500, 50, RegistrarBloodMagicBlocks.TELEPOSER, Items.WATER_BUCKET, Items.LAVA_BUCKET, Items.BLAZE_ROD); - TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_BINDING), 400, 10, "dustGlowstone", "dustRedstone", "nuggetGold", Items.GUNPOWDER); - TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_BLOODLIGHT), 300, 10, "glowstone", Blocks.TORCH, "dustRedstone", "dustRedstone"); - TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_MAGNETISM), 600, 10, "string", "ingotGold", "blockIron", "ingotGold"); - TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_HASTE), 1400, 100, Items.COOKIE, Items.SUGAR, Items.COOKIE, "stone"); - TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_BRIDGE), 600, 50, Blocks.SOUL_SAND, Blocks.SOUL_SAND, "stone", Blocks.OBSIDIAN); - TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_SEVERANCE), 800, 70, Items.ENDER_EYE, Items.ENDER_PEARL, "ingotGold", "ingotGold"); - TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_COMPRESSION), 2000, 200, "blockIron", "blockGold", Blocks.OBSIDIAN, "cobblestone"); - TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_TELEPOSITION), 1500, 200, RegistrarBloodMagicBlocks.TELEPOSER, "glowstone", "blockRedstone", "ingotGold"); - TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_TRANSPOSITION), 1500, 200, RegistrarBloodMagicBlocks.TELEPOSER, "gemDiamond", Items.ENDER_PEARL, Blocks.OBSIDIAN); - TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_CLAW), 800, 120, Items.FLINT, Items.FLINT, ItemCuttingFluid.getStack(ItemCuttingFluid.BASIC)); - TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_BOUNCE), 200, 20, Blocks.SLIME_BLOCK, Blocks.SLIME_BLOCK, Items.LEATHER, "string"); - TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_FROST), 80, 10, Blocks.ICE, Items.SNOWBALL, Items.SNOWBALL, "dustRedstone"); - - TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(RegistrarBloodMagicItems.SENTIENT_ARMOUR_GEM), 240, 150, Items.DIAMOND_CHESTPLATE, new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 1), Blocks.IRON_BLOCK, Blocks.OBSIDIAN); - - TartaricForgeRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.COMPONENT_FRAME_PART), 400, 10, "blockGlass", "stone", new ItemStack(RegistrarBloodMagicItems.SLATE)); - TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(RegistrarBloodMagicItems.NODE_ROUTER), 400, 5, "stickWood", new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), "gemLapis", "gemLapis"); - TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(RegistrarBloodMagicBlocks.ITEM_ROUTING_NODE), 400, 5, "dustGlowstone", "dustRedstone", "blockGlass", "stone"); - TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(RegistrarBloodMagicBlocks.OUTPUT_ROUTING_NODE), 400, 25, "dustGlowstone", "dustRedstone", "ingotIron", new ItemStack(RegistrarBloodMagicBlocks.ITEM_ROUTING_NODE)); - TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(RegistrarBloodMagicBlocks.INPUT_ROUTING_NODE), 400, 25, "dustGlowstone", "dustRedstone", "ingotGold", new ItemStack(RegistrarBloodMagicBlocks.ITEM_ROUTING_NODE)); - TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(RegistrarBloodMagicBlocks.MASTER_ROUTING_NODE), 400, 200, "blockIron", "gemDiamond", new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2)); - - TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(RegistrarBloodMagicBlocks.DEMON_CRYSTAL, 1, 0), 1200, 100, ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_DEFAULT), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_DEFAULT), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_DEFAULT), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_DEFAULT)); - TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(RegistrarBloodMagicBlocks.DEMON_CRYSTAL, 1, 1), 1200, 100, ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_CORROSIVE), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_CORROSIVE), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_CORROSIVE), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_CORROSIVE)); - TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(RegistrarBloodMagicBlocks.DEMON_CRYSTAL, 1, 2), 1200, 100, ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_DESTRUCTIVE), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_DESTRUCTIVE), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_DESTRUCTIVE), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_DESTRUCTIVE)); - TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(RegistrarBloodMagicBlocks.DEMON_CRYSTAL, 1, 3), 1200, 100, ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_VENGEFUL), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_VENGEFUL), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_VENGEFUL), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_VENGEFUL)); - TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(RegistrarBloodMagicBlocks.DEMON_CRYSTAL, 1, 4), 1200, 100, ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_STEADFAST), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_STEADFAST), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_STEADFAST), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_STEADFAST)); - - TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(RegistrarBloodMagicBlocks.DEMON_CRUCIBLE), 400, 100, Items.CAULDRON, "stone", "gemLapis", "gemDiamond"); - TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(RegistrarBloodMagicBlocks.DEMON_PYLON), 400, 50, "blockIron", "stone", "gemLapis", RegistrarBloodMagicItems.ITEM_DEMON_CRYSTAL); - TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(RegistrarBloodMagicBlocks.DEMON_CRYSTALLIZER), 500, 100, RegistrarBloodMagicBlocks.SOUL_FORGE, "stone", "gemLapis", "blockGlass"); - TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(RegistrarBloodMagicItems.DEMON_WILL_GAUGE), 400, 50, "ingotGold", "dustRedstone", "blockGlass", RegistrarBloodMagicItems.ITEM_DEMON_CRYSTAL); } public static void addAlchemyTableRecipes() { diff --git a/src/main/java/WayofTime/bloodmagic/tile/TileSoulForge.java b/src/main/java/WayofTime/bloodmagic/tile/TileSoulForge.java index 7bdf5b3e..3ec94d23 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/TileSoulForge.java +++ b/src/main/java/WayofTime/bloodmagic/tile/TileSoulForge.java @@ -1,12 +1,12 @@ package WayofTime.bloodmagic.tile; import WayofTime.bloodmagic.api.Constants; -import WayofTime.bloodmagic.api.recipe.TartaricForgeRecipe; -import WayofTime.bloodmagic.api.registry.TartaricForgeRecipeRegistry; import WayofTime.bloodmagic.api.soul.EnumDemonWillType; import WayofTime.bloodmagic.api.soul.IDemonWill; import WayofTime.bloodmagic.api.soul.IDemonWillConduit; import WayofTime.bloodmagic.api.soul.IDemonWillGem; +import WayofTime.bloodmagic.api_impl.BloodMagicAPI; +import WayofTime.bloodmagic.api_impl.recipe.RecipeTartaricForge; import WayofTime.bloodmagic.demonAura.WorldDemonWillHandler; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -79,14 +79,15 @@ public class TileSoulForge extends TileInventory implements ITickable, IDemonWil } } - TartaricForgeRecipe recipe = TartaricForgeRecipeRegistry.getMatchingRecipe(inputList, getWorld(), getPos()); + RecipeTartaricForge recipe = BloodMagicAPI.INSTANCE.getRecipeRegistrar().getTartaricForge(inputList); +// TartaricForgeRecipe recipe = TartaricForgeRecipeRegistry.getMatchingRecipe(inputList, getWorld(), getPos()); if (recipe != null && (soulsInGem >= recipe.getMinimumSouls() || burnTime > 0)) { if (canCraft(recipe)) { burnTime++; if (burnTime == ticksRequired) { if (!getWorld().isRemote) { - double requiredSouls = recipe.getSoulsDrained(); + double requiredSouls = recipe.getSoulDrain(); if (requiredSouls > 0) { if (!getWorld().isRemote && soulsInGem >= recipe.getMinimumSouls()) { consumeSouls(EnumDemonWillType.DEFAULT, requiredSouls); @@ -113,12 +114,12 @@ public class TileSoulForge extends TileInventory implements ITickable, IDemonWil return ((double) burnTime) / ticksRequired; } - private boolean canCraft(TartaricForgeRecipe recipe) { + private boolean canCraft(RecipeTartaricForge recipe) { if (recipe == null) { return false; } - ItemStack outputStack = recipe.getRecipeOutput(); + ItemStack outputStack = recipe.getOutput(); ItemStack currentOutputStack = getStackInSlot(outputSlot); if (outputStack.isEmpty()) return false; @@ -131,9 +132,9 @@ public class TileSoulForge extends TileInventory implements ITickable, IDemonWil } - public void craftItem(TartaricForgeRecipe recipe) { + public void craftItem(RecipeTartaricForge recipe) { if (this.canCraft(recipe)) { - ItemStack outputStack = recipe.getRecipeOutput(); + ItemStack outputStack = recipe.getOutput(); ItemStack currentOutputStack = getStackInSlot(outputSlot); if (currentOutputStack.isEmpty()) { From d587a8c96f342ce625f35ca92baef900cd9a6318 Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Sat, 19 Aug 2017 18:56:50 -0700 Subject: [PATCH 02/27] Move config to annotation system All old configs must be deleted for this to work properly. Since the rest of the update is filled with world breaking changes, this should be fine. --- .../java/WayofTime/bloodmagic/BloodMagic.java | 5 +- .../WayofTime/bloodmagic/ConfigHandler.java | 425 ++++-------------- .../util/helper/PlayerSacrificeHelper.java | 2 +- .../api_impl/BloodMagicBlacklist.java | 2 +- .../api_impl/BloodMagicCorePlugin.java | 92 +++- .../apiv2/IBloodMagicBlacklist.java | 2 +- .../bloodmagic/block/BlockSpectral.java | 2 +- .../client/gui/config/ConfigGui.java | 37 -- .../client/gui/config/ConfigGuiFactory.java | 29 -- .../render/block/RenderItemRoutingNode.java | 2 +- .../provider/DataProviderBloodAltar.java | 28 +- .../item/ItemSacrificialDagger.java | 6 +- .../meteor/MeteorConfigHandler.java | 4 +- .../bloodmagic/registry/ModRecipes.java | 4 +- .../bloodmagic/registry/ModRituals.java | 71 ++- .../ritual/RitualFeatheredKnife.java | 2 +- .../util/handler/event/ClientHandler.java | 2 +- .../util/handler/event/CraftingHandler.java | 28 +- .../util/handler/event/GenericHandler.java | 2 +- 19 files changed, 251 insertions(+), 494 deletions(-) delete mode 100644 src/main/java/WayofTime/bloodmagic/client/gui/config/ConfigGui.java delete mode 100644 src/main/java/WayofTime/bloodmagic/client/gui/config/ConfigGuiFactory.java diff --git a/src/main/java/WayofTime/bloodmagic/BloodMagic.java b/src/main/java/WayofTime/bloodmagic/BloodMagic.java index 4dbd80f0..8ab9b602 100644 --- a/src/main/java/WayofTime/bloodmagic/BloodMagic.java +++ b/src/main/java/WayofTime/bloodmagic/BloodMagic.java @@ -33,7 +33,7 @@ import org.apache.commons.lang3.tuple.Pair; import java.io.File; import java.util.List; -@Mod(modid = BloodMagic.MODID, name = BloodMagic.NAME, version = BloodMagic.VERSION, dependencies = BloodMagic.DEPEND, guiFactory = "WayofTime.bloodmagic.client.gui.config.ConfigGuiFactory") +@Mod(modid = BloodMagic.MODID, name = BloodMagic.NAME, version = BloodMagic.VERSION, dependencies = BloodMagic.DEPEND) public class BloodMagic { public static final String MODID = "bloodmagic"; public static final String NAME = "Blood Magic: Alchemical Wizardry"; @@ -73,8 +73,7 @@ public class BloodMagic { @Mod.EventHandler public void preInit(FMLPreInitializationEvent event) { - configDir = new File(event.getModConfigurationDirectory(), "BloodMagic"); - ConfigHandler.init(new File(configDir, "BloodMagic.cfg")); + configDir = new File(event.getModConfigurationDirectory(), "bloodmagic"); PLUGINS.addAll(PluginUtil.getPlugins(event.getAsmData())); diff --git a/src/main/java/WayofTime/bloodmagic/ConfigHandler.java b/src/main/java/WayofTime/bloodmagic/ConfigHandler.java index 4ec4c8c6..99867dc1 100644 --- a/src/main/java/WayofTime/bloodmagic/ConfigHandler.java +++ b/src/main/java/WayofTime/bloodmagic/ConfigHandler.java @@ -1,352 +1,115 @@ package WayofTime.bloodmagic; -import WayofTime.bloodmagic.annot.Handler; -import WayofTime.bloodmagic.api.BlockStack; -import WayofTime.bloodmagic.api.BloodMagicAPI; -import WayofTime.bloodmagic.api.Constants; import WayofTime.bloodmagic.meteor.MeteorConfigHandler; -import WayofTime.bloodmagic.util.Utils; -import net.minecraft.block.Block; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.common.config.Configuration; +import net.minecraftforge.common.config.Config; +import net.minecraftforge.common.config.ConfigManager; import net.minecraftforge.fml.client.event.ConfigChangedEvent; +import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; -import net.minecraftforge.fml.common.registry.ForgeRegistries; -import net.minecraftforge.oredict.OreDictionary; -import java.io.File; -import java.util.*; - -@Handler +@Config(modid = BloodMagic.MODID, name = BloodMagic.MODID + "/" + BloodMagic.MODID, category = "") +@Mod.EventBusSubscriber public class ConfigHandler { - public static Configuration config; - // Teleposer - public static String[] teleposerBlacklisting; - public static ArrayList teleposerBlacklist = new ArrayList<>(); - public static List teleposerBlacklistEntity; + @Config.Comment({ "Blacklist options for various features" }) + public static ConfigBlacklist blacklist = new ConfigBlacklist(); + @Config.Comment({ "Value modifiers for various features" }) + public static ConfigValues values = new ConfigValues(); + @Config.Comment({ "Toggles for all rituals" }) + public static ConfigRituals rituals = new ConfigRituals(); + @Config.Comment({ "Settings that only pertain to the client" }) + public static ConfigClient client = new ConfigClient(); + @Config.Comment({ "Compatibility settings" }) + public static ConfigCompat compat = new ConfigCompat(); - // Transposition Sigil - public static String[] transpositionBlacklisting; - public static ArrayList transpositionBlacklist = new ArrayList<>(); + public static class ConfigBlacklist { + @Config.Comment({ "Stops listed blocks and entities from being teleposed.", "Use the registry name of the block or entity. Vanilla objects do not require the modid.", "If a block is specified, you can list the variants to only blacklist a given state." }) + public String[] teleposer = { "bedrock", "mob_spawner" }; + @Config.Comment({ "Stops listed blocks from being transposed.", "Use the registry name of the block. Vanilla blocks do not require the modid." }) + public String[] transposer = { "bedrock", "mob_spawner" }; + @Config.Comment({ "Stops the listed entities from being used in the Well of Suffering.", "Use the registry name of the entity. Vanilla entities do not require the modid." }) + public String[] wellOfSuffering = { }; + } - // Well of Suffering Blacklist - public static List wellOfSufferingBlacklist; + public static class ConfigValues { + @Config.Comment({ "Declares the amount of LP gained per HP sacrificed for the given entity.", "Setting the value to 0 will blacklist it.", "Use the registry name of the entity followed by a ';' and then the value you want.", "Vanilla entities do not require the modid." }) + public String[] sacrificialValues = { "villager;100", "slime;15", "enderman;10", "cow;100", "chicken;100", "horse;100", "sheep;100", "wolf;100", "ocelot;100", "pig;100", "rabbit;100" }; + @Config.Comment({ "Amount of LP the Coat of Arms should provide for each damage dealt." }) + @Config.RangeInt(min = 0, max = 100) + public int coatOfArmsConversion = 20; + @Config.Comment({ "Amount of LP the Sacrificial Dagger should provide for each damage dealt." }) + @Config.RangeInt(min = 0, max = 10000) + public int sacrificialDaggerConversion = 100; + @Config.Comment({ "Will rewrite any default meteor types with new versions.", "Disable this if you want any of your changes to stay, or do not want default meteor types regenerated." }) + public boolean shouldResyncMeteors = true; + } - // Blood Altar Sacrificial Values - public static String[] entitySacrificeValuesList; - public static Map entitySacrificeValues = new HashMap<>(); + public static class ConfigRituals { + public boolean ritualAnimalGrowth = true; + public boolean ritualContainment = true; + public boolean ritualCrushing = true; + public boolean ritualExpulsion = true; + public boolean ritualFeatheredKnife = true; + public boolean ritualFullStomach = true; + public boolean ritualGreenGrove = true; + public boolean ritualHarvest = true; + public boolean ritualInterdiction = true; + public boolean ritualJumping = true; + public boolean ritualLava = true; + public boolean ritualMagnetic = true; + public boolean ritualRegeneration = true; + public boolean ritualSpeed = true; + public boolean ritualSuppression = true; + public boolean ritualWater = true; + public boolean ritualWellOfSuffering = true; + public boolean ritualZephyr = true; + public boolean ritualUpgradeRemove = true; + public boolean ritualArmourEvolve = true; + public boolean ritualForsakenSoul = true; + public boolean ritualCrystalHarvest = true; + public boolean ritualPlacer = true; + public boolean ritualFelling = true; + public boolean ritualPump = true; + public boolean ritualAltarBuilder = true; + public boolean ritualPortal = true; + public boolean ritualMeteor = true; + public boolean ritualDowngrade = true; + public ConfigImperfectRituals imperfect = new ConfigImperfectRituals(); + } - // Rituals - public static boolean ritualAnimalGrowth; - public static boolean ritualContainment; - public static boolean ritualCrushing; - public static boolean ritualExpulsion; - public static boolean ritualFeatheredKnife; - public static boolean ritualFullStomach; - public static boolean ritualGreenGrove; - public static boolean ritualHarvest; - public static boolean ritualInterdiction; - public static boolean ritualJumping; - public static boolean ritualLava; - public static boolean ritualMagnetic; - public static boolean ritualRegeneration; - public static boolean ritualSpeed; - public static boolean ritualSuppression; - public static boolean ritualWater; - public static boolean ritualWellOfSuffering; - public static boolean ritualZephyr; - public static boolean ritualUpgradeRemove; - public static boolean ritualArmourEvolve; - public static boolean ritualForsakenSoul; - public static boolean ritualCrystalHarvest; + public static class ConfigImperfectRituals { + public boolean imperfectRitualNight = true; + public boolean imperfectRitualRain = true; + public boolean imperfectRitualResistance = true; + public boolean imperfectRitualZombie = true; + } - public static boolean cobblestoneRitual; - public static boolean placerRitual; - public static boolean fellingRitual; - public static boolean pumpRitual; - public static boolean altarBuilderRitual; - public static boolean portalRitual; - public static boolean meteorRitual; - public static boolean downgradeRitual; + public static class ConfigClient { + @Config.Comment({ "Always render the beams between routing nodes.", "If disabled, the beams will only render while the Node Router is held." }) + public boolean alwaysRenderRoutingLines = false; + @Config.Comment({ "Completely hide spectral blocks from view.", "If disabled, a transparent block will be displayed." }) + public boolean invisibleSpectralBlocks = true; + @Config.Comment({ "When cycling through slots, the Sigil of Holding will skip over empty slots and move to the next occupied one.", "If disabled, it will behave identically to the default hotbar." }) + public boolean sigilHoldingSkipsEmptySlots = false; + } - // Imperfect Rituals - public static boolean imperfectRitualNight; - public static boolean imperfectRitualRain; - public static boolean imperfectRitualResistance; - public static boolean imperfectRitualZombie; + public static class ConfigCompat { + @Config.Comment({ "The display mode to use when looking at a Blood Altar.", "ALWAYS - Always display information.", "SIGIL_HELD - Only display information when a Divination or Seers sigil is held in either hand.", "SIGIL_CONTAINED - Only display information when a Divination or Seers sigil is somewhere in the inventory." }) + public AltarDisplayMode wailaAltarDisplayMode = AltarDisplayMode.SIGIL_HELD; - // Potion ID's - public static int customPotionDrowningID; - public static int customPotionBoostID; - public static int customPotionProjProtID; - public static int customPotionInhibitID; - public static int customPotionFlightID; - public static int customPotionReciprocationID; - public static int customPotionFlameCloakID; - public static int customPotionIceCloakID; - public static int customPotionHeavyHeartID; - public static int customPotionFireFuseID; - public static int customPotionPlanarBindingID; - public static int customPotionSoulFrayID; - public static int customPotionSoulHardenID; - public static int customPotionDeafID; - public static int customPotionFeatherFallID; - public static int customPotionDemonCloakID; - public static int customPotionAmphibianID; - - // Potion toggles - public static boolean customPotionDrowningEnabled; - public static boolean customPotionBoostEnabled; - public static boolean customPotionProjProtEnabled; - public static boolean customPotionInhibitEnabled; - public static boolean customPotionFlightEnabled; - public static boolean customPotionReciprocationEnabled; - public static boolean customPotionFlameCloakEnabled; - public static boolean customPotionIceCloakEnabled; - public static boolean customPotionHeavyHeartEnabled; - public static boolean customPotionFireFuseEnabled; - public static boolean customPotionPlanarBindingEnabled; - public static boolean customPotionSoulFrayEnabled; - public static boolean customPotionSoulHardenEnabled; - public static boolean customPotionDeafEnabled; - public static boolean customPotionFeatherFallEnabled; - public static boolean customPotionDemonCloakEnabled; - public static boolean customPotionAmphibianEnabled; - public static boolean vanillaPotionRegenerationEnabled; - public static boolean vanillaPotionNightVisionEnabled; - public static boolean vanillaPotionFireResistEnabled; - public static boolean vanillaPotionWaterBreathingEnabled; - public static boolean vanillaPotionSpeedEnabled; - public static boolean vanillaPotionHealthEnabled; - public static boolean vanillaPotionPoisonEnabled; - public static boolean vanillaPotionBlindnessEnabled; - public static boolean vanillaPotionWeaknessEnabled; - public static boolean vanillaPotionStrengthEnabled; - public static boolean vanillaPotionJumpBoostEnabled; - public static boolean vanillaPotionSlownessEnabled; - public static boolean vanillaPotionMiningEnabled; - public static boolean vanillaPotionInvisibilityEnabled; - public static boolean vanillaPotionResistanceEnabled; - public static boolean vanillaPotionSaturationEnabled; - public static boolean vanillaPotionHealthBoostEnabled; - public static boolean vanillaPotionAbsorptionEnabled; - - // General - public static int sacrificialPackConversion; - public static int sacrificialDaggerDamage; - public static int sacrificialDaggerConversion; - - // Client - public static boolean alwaysRenderRoutingLines; - public static boolean invisibleSpectralBlocks; - public static boolean sigilHoldingSkipsEmptySlots; - - // Compat - public static int wailaAltarDisplayMode; - public static boolean thaumcraftGogglesUpgrade; - public static boolean ignoreCompressionSpamAddedByCompression; + public enum AltarDisplayMode { + ALWAYS, + SIGIL_HELD, + SIGIL_CONTAINED, + ; + } + } @SubscribeEvent - public void onConfigChanged(ConfigChangedEvent event) { + public static void onConfigChanged(ConfigChangedEvent.OnConfigChangedEvent event) { if (event.getModID().equals(BloodMagic.MODID)) { - syncConfig(); - MeteorConfigHandler.handleMeteors(false); - } - } - - public static void init(File file) { - config = new Configuration(file); - syncConfig(); - } - - public static void syncConfig() { - String category; - - category = "Item/Block Blacklisting"; - config.addCustomCategoryComment(category, "Allows disabling of specific Blocks/Items.\nNote that using this may result in crashes. Use is not supported."); - config.setCategoryRequiresMcRestart(category, true); - - category = "Teleposer Blacklist"; - config.addCustomCategoryComment(category, "Block blacklisting"); - teleposerBlacklisting = config.getStringList("teleposerBlacklist", category, new String[]{"minecraft:bedrock", "minecraft:mob_spawner"}, "Stops specified blocks from being teleposed. Put entries on new lines. Valid syntax is:\nmodid:blockname:meta"); - buildBlacklist(teleposerBlacklisting, teleposerBlacklist); - teleposerBlacklistEntity = Arrays.asList(config.getStringList("teleposerBlacklistEntity", category, new String[]{}, "Entity class names listed here will not be able to be teleposed.")); - - category = "Transposition Sigil Blacklist"; - config.addCustomCategoryComment(category, "Block blacklisting"); - transpositionBlacklisting = config.getStringList("transpositionBlacklist", category, new String[]{"minecraft:bedrock", "minecraft:mob_spawner"}, "Stops specified blocks from being teleposed. Put entries on new lines. Valid syntax is:\nmodid:blockname:meta"); - buildBlacklist(transpositionBlacklisting, transpositionBlacklist); - - category = "Well of Suffering Blacklist"; - config.addCustomCategoryComment(category, "Entity blacklisting from WoS"); - wellOfSufferingBlacklist = Arrays.asList(config.getStringList("wellOfSufferingBlacklist", category, new String[]{"EntityArmorStand", "EntitySentientSpecter"}, "Use the class name of the Entity to blacklist it from usage.\nIE: EntityWolf, EntityWitch, etc")); - - category = "Blood Altar Sacrificial Values"; - config.addCustomCategoryComment(category, "Entity Sacrificial Value Settings"); - entitySacrificeValuesList = config.getStringList("entitySacrificeLP:HPValues", category, new String[]{"EntityVillager;100", "EntitySlime;15", "EntityEnderman;10", "EntityCow;100", "EntityChicken;100", "EntityHorse;100", "EntitySheep;100", "EntityWolf;100", "EntityOcelot;100", "EntityPig;100", "EntityRabbit;100", "EntityArmorStand;0", "EntitySentientSpecter;0"}, "Used to edit the amount of LP gained per HP sacrificed for the given entity.\nSetting an entity to 0 effectively blacklists it.\nIf a mod modifies an entity via the API, it will take precedence over this config.\nSyntax: EntityClassName;LPPerHP"); - buildEntitySacrificeValues(); - - category = "Potions"; - config.addCustomCategoryComment(category, "Potion settings"); - config.addCustomCategoryComment(category + ".id", "Potion ID settings"); - customPotionDrowningID = config.getInt("customPotionDrowningID", category + ".id", 100, 20, Constants.Misc.POTION_ARRAY_SIZE, "ID of the Drowning potion"); - customPotionBoostID = config.getInt("customPotionBoostID", category + ".id", 101, 20, Constants.Misc.POTION_ARRAY_SIZE, "ID of the Boost potion"); - customPotionProjProtID = config.getInt("customPotionProjProtID", category + ".id", 102, 20, Constants.Misc.POTION_ARRAY_SIZE, "ID of the Projectile Protection potion"); - customPotionInhibitID = config.getInt("customPotionInhibitID", category + ".id", 103, 20, Constants.Misc.POTION_ARRAY_SIZE, "ID of the Inhibit potion"); - customPotionFlightID = config.getInt("customPotionFlightID", category + ".id", 104, 20, Constants.Misc.POTION_ARRAY_SIZE, "ID of the Flight potion"); - customPotionReciprocationID = config.getInt("customPotionReciprocationID", category + ".id", 105, 20, Constants.Misc.POTION_ARRAY_SIZE, "ID of the Reciprocation potion"); - customPotionFlameCloakID = config.getInt("customPotionFlameCloakID", category + ".id", 106, 20, Constants.Misc.POTION_ARRAY_SIZE, "ID of the Flame Cloak potion"); - customPotionIceCloakID = config.getInt("customPotionIceCloakID", category + ".id", 107, 20, Constants.Misc.POTION_ARRAY_SIZE, "ID of the Ice Cloak potion"); - customPotionHeavyHeartID = config.getInt("customPotionHeavyHeartID", category + ".id", 108, 20, Constants.Misc.POTION_ARRAY_SIZE, "ID of the Heavy Heart potion"); - customPotionFireFuseID = config.getInt("customPotionFireFuseID", category + ".id", 109, 20, Constants.Misc.POTION_ARRAY_SIZE, "ID of the Fire Fuse potion"); - customPotionPlanarBindingID = config.getInt("customPotionPlanarBindingID", category + ".id", 110, 20, Constants.Misc.POTION_ARRAY_SIZE, "ID of the Planar Binding potion"); - customPotionSoulFrayID = config.getInt("customPotionSoulFrayID", category + ".id", 111, 20, Constants.Misc.POTION_ARRAY_SIZE, "ID of the Soul Fray potion"); - customPotionSoulHardenID = config.getInt("customPotionSoulHardenID", category + ".id", 112, 20, Constants.Misc.POTION_ARRAY_SIZE, "ID of the Soul Harden potion"); - customPotionDeafID = config.getInt("customPotionDeafID", category + ".id", 113, 20, Constants.Misc.POTION_ARRAY_SIZE, "ID of the Deaf potion"); - customPotionFeatherFallID = config.getInt("customPotionFeatherFallID", category + ".id", 114, 20, Constants.Misc.POTION_ARRAY_SIZE, "ID of the Feather Fall potion"); - customPotionDemonCloakID = config.getInt("customPotionDemonCloakID", category + ".id", 115, 20, Constants.Misc.POTION_ARRAY_SIZE, "ID of the Demon Cloak potion"); - customPotionAmphibianID = config.getInt("customPotionAmphibianID", category + ".id", 116, 20, Constants.Misc.POTION_ARRAY_SIZE, "ID of the Amphibian potion"); - - config.addCustomCategoryComment(category + ".toggle", "Toggle potions available in Alchemy"); - customPotionDrowningEnabled = config.getBoolean("customPotionDrowningEnabled", category + ".toggle", true, "Enables the Drowning potion in Alchemy"); - customPotionBoostEnabled = config.getBoolean("customPotionBoostEnabled", category + ".toggle", true, "Enables the Boost potion in Alchemy"); - customPotionProjProtEnabled = config.getBoolean("customPotionProjProtEnabled", category + ".toggle", true, "Enables the Projectile Protection potion in Alchemy"); - customPotionInhibitEnabled = config.getBoolean("customPotionInhibitEnabled", category + ".toggle", true, "Enables the Inhibit potion in Alchemy"); - customPotionFlightEnabled = config.getBoolean("customPotionFlightEnabled", category + ".toggle", true, "Enables the Flight potion in Alchemy"); - customPotionReciprocationEnabled = config.getBoolean("customPotionReciprocationEnabled", category + ".toggle", true, "Enables the Reciprocation potion in Alchemy"); - customPotionFlameCloakEnabled = config.getBoolean("customPotionFlameCloakEnabled", category + ".toggle", true, "Enables the Flame Cloak potion in Alchemy"); - customPotionIceCloakEnabled = config.getBoolean("customPotionIceCloakEnabled", category + ".toggle", true, "Enables the Ice Cloak potion in Alchemy"); - customPotionHeavyHeartEnabled = config.getBoolean("customPotionHeavyHeartEnabled", category + ".toggle", true, "Enables the Heavy Heart potion in Alchemy"); - customPotionFireFuseEnabled = config.getBoolean("customPotionFireFuseEnabled", category + ".toggle", true, "Enables the Fire Fuse potion in Alchemy"); - customPotionPlanarBindingEnabled = config.getBoolean("customPotionPlanarBindingEnabled", category + ".toggle", true, "Enables the Planar Binding potion in Alchemy"); - customPotionSoulFrayEnabled = config.getBoolean("customPotionSoulFrayEnabled", category + ".toggle", true, "Enables the Soul Fray potion in Alchemy"); - customPotionSoulHardenEnabled = config.getBoolean("customPotionSoulHardenEnabled", category + ".toggle", true, "Enables the Soul Harden potion in Alchemy"); - customPotionDeafEnabled = config.getBoolean("customPotionDeafEnabled", category + ".toggle", true, "Enables the Deaf potion in Alchemy"); - customPotionFeatherFallEnabled = config.getBoolean("customPotionFeatherFallEnabled", category + ".toggle", true, "Enables the Feather Fall potion in Alchemy"); - customPotionDemonCloakEnabled = config.getBoolean("customPotionDemonCloakEnabled", category + ".toggle", true, "Enables the Demon Cloak potion in Alchemy"); - customPotionAmphibianEnabled = config.getBoolean("customPotionAmphibianEnabled", category + ".toggle", true, "Enables the Amphibian potion in Alchemy"); - vanillaPotionAbsorptionEnabled = config.getBoolean("vanillaPotionAbsorptionEnabled", category + ".toggle", true, "Enables the Absorption potion in Alchemy"); - vanillaPotionBlindnessEnabled = config.getBoolean("vanillaPotionBlindnessEnabled", category + ".toggle", true, "Enables the Blindness potion in Alchemy"); - vanillaPotionFireResistEnabled = config.getBoolean("vanillaPotionFireResistEnabled", category + ".toggle", true, "Enables the Fire Resistance potion in Alchemy"); - vanillaPotionHealthBoostEnabled = config.getBoolean("vanillaPotionHealthBoostEnabled", category + ".toggle", true, "Enables the Health Boost potion in Alchemy"); - vanillaPotionHealthEnabled = config.getBoolean("vanillaPotionHealthEnabled", category + ".toggle", true, "Enables the Instant Health potion in Alchemy"); - vanillaPotionInvisibilityEnabled = config.getBoolean("vanillaPotionInvisibilityEnabled", category + ".toggle", true, "Enables the Invisibility potion in Alchemy"); - vanillaPotionJumpBoostEnabled = config.getBoolean("vanillaPotionJumpBoostEnabled", category + ".toggle", true, "Enables the Jump Boost potion in Alchemy"); - vanillaPotionMiningEnabled = config.getBoolean("vanillaPotionMiningEnabled", category + ".toggle", true, "Enables the Mining potion in Alchemy"); - vanillaPotionPoisonEnabled = config.getBoolean("vanillaPotionPoisonEnabled", category + ".toggle", true, "Enables the Poison potion in Alchemy"); - vanillaPotionRegenerationEnabled = config.getBoolean("vanillaPotionRegenerationEnabled", category + ".toggle", true, "Enables the Regeneration potion in Alchemy"); - vanillaPotionNightVisionEnabled = config.getBoolean("vanillaPotionNightVisionEnabled", category + ".toggle", true, "Enables the Night Vision potion in Alchemy"); - vanillaPotionResistanceEnabled = config.getBoolean("vanillaPotionResistanceEnabled", category + ".toggle", true, "Enables the Resistance potion in Alchemy"); - vanillaPotionSaturationEnabled = config.getBoolean("vanillaPotionSaturationEnabled", category + ".toggle", true, "Enables the Saturation potion in Alchemy"); - vanillaPotionSlownessEnabled = config.getBoolean("vanillaPotionSlownessEnabled", category + ".toggle", true, "Enables the Slowness potion in Alchemy"); - vanillaPotionSpeedEnabled = config.getBoolean("vanillaPotionSpeedEnabled", category + ".toggle", true, "Enables the Speed potion in Alchemy"); - vanillaPotionStrengthEnabled = config.getBoolean("vanillaPotionStrengthEnabled", category + ".toggle", true, "Enables the Strength potion in Alchemy"); - vanillaPotionWaterBreathingEnabled = config.getBoolean("vanillaPotionWaterBreathingEnabled", category + ".toggle", true, "Enables the Water Breathing potion in Alchemy"); - vanillaPotionWeaknessEnabled = config.getBoolean("vanillaPotionWeaknessEnabled", category + ".toggle", true, "Enables the Weakness potion in Alchemy"); - - category = "Rituals"; - config.addCustomCategoryComment(category, "Ritual toggling"); - config.setCategoryRequiresMcRestart(category, true); - ritualAnimalGrowth = config.get(category, "ritualAnimalGrowth", true).getBoolean(); - ritualContainment = config.get(category, "ritualContainment", true).getBoolean(); - ritualCrushing = config.get(category, "ritualCrushing", true).getBoolean(); - ritualExpulsion = config.get(category, "ritualExpulsion", true).getBoolean(); - ritualFeatheredKnife = config.get(category, "ritualFeatheredKnife", true).getBoolean(); - ritualFullStomach = config.get(category, "ritualFullStomach", true).getBoolean(); - ritualGreenGrove = config.get(category, "ritualGreenGrove", true).getBoolean(); - ritualHarvest = config.get(category, "ritualHarvest", true).getBoolean(); - ritualInterdiction = config.get(category, "ritualInterdiction", true).getBoolean(); - ritualJumping = config.get(category, "ritualJumping", true).getBoolean(); - ritualLava = config.get(category, "ritualLava", true).getBoolean(); - ritualMagnetic = config.get(category, "ritualMagnetic", true).getBoolean(); - ritualRegeneration = config.get(category, "ritualRegeneration", true).getBoolean(); - ritualSpeed = config.get(category, "ritualSpeed", true).getBoolean(); - ritualSuppression = config.get(category, "ritualSuppression", true).getBoolean(); - ritualWater = config.get(category, "ritualWater", true).getBoolean(); - ritualWellOfSuffering = config.get(category, "ritualWellOfSuffering", true).getBoolean(); - ritualZephyr = config.get(category, "ritualZephyr", true).getBoolean(); - ritualUpgradeRemove = config.get(category, "ritualRemove", true).getBoolean(); - ritualArmourEvolve = config.get(category, "ritualArmourEvolve", true).getBoolean(); - ritualForsakenSoul = config.get(category, "ritualForsakenSoul", true).getBoolean(); - ritualCrystalHarvest = config.get(category, "ritualCrystalHarvest", true).getBoolean(); - - cobblestoneRitual = config.get(category, "ritualCobblestone", true).getBoolean(); - placerRitual = config.get(category, "ritualPlacer", true).getBoolean(); - fellingRitual = config.get(category, "ritualFelling", true).getBoolean(); - pumpRitual = config.get(category, "ritualPump", true).getBoolean(); - altarBuilderRitual = config.get(category, "ritualAltarBuilder", true).getBoolean(); - portalRitual = config.get(category, "ritualPortal", true).getBoolean(); - meteorRitual = config.get(category, "ritualMeteor", true).getBoolean(); - downgradeRitual = config.get(category, "ritualDowngrade", true).getBoolean(); - - category = "Rituals.Imperfect"; - imperfectRitualNight = config.get(category, "imperfectRitualNight", true).getBoolean(); - imperfectRitualRain = config.get(category, "imperfectRitualRain", true).getBoolean(); - imperfectRitualResistance = config.get(category, "imperfectRitualResistance", true).getBoolean(); - imperfectRitualZombie = config.get(category, "imperfectRitualZombie", true).getBoolean(); - - category = "General"; - config.addCustomCategoryComment(category, "General settings"); - BloodMagicAPI.loggingEnabled = config.getBoolean("enableLogging", category, true, "Allows logging information to the console. Fatal errors will bypass this"); - sacrificialPackConversion = config.getInt("sacrificialPackConversion", category, 20, 0, 100, "Base multiplier for the Coat of Arms. DamageDealt * sacrificialPackConversion"); - sacrificialDaggerDamage = config.getInt("sacrificialDaggerDamage", category, 2, 0, 10000, "Damage done from using the Sacrificial Dagger"); - sacrificialDaggerConversion = config.getInt("sacrificialDaggerConversion", category, 100, 0, 10000, "Amount of LP received per damage point (not heart!)"); - - category = "Client"; - config.addCustomCategoryComment(category, "Client only settings"); - alwaysRenderRoutingLines = config.getBoolean("alwaysRenderRoutingLines", category, false, "Always renders the beams between routing nodes. If false, only renders while a Node Router is being held."); - invisibleSpectralBlocks = config.get(category, "invisibleSpectralBlocks", true, "Spectral Blocks (Used by the Suppression Sigil to store fluids) will not render at all. If false, a see through texture will render. [default: true]").setRequiresMcRestart(true).getBoolean(); - sigilHoldingSkipsEmptySlots = config.getBoolean("sigilHoldingSkipsEmptySlots", category, false, "The Sigil of Holding will skip empty sigil slots if set to true."); - - category = "Compatibility"; - config.addCustomCategoryComment(category, "Compatibility settings"); - wailaAltarDisplayMode = config.getInt("wailaAltarDisplayMode", category + ".waila", 1, 0, 2, "The mode for the Waila display on Blood Altars.\n0 - Always display information\n1 - Only display when Divination/Seer sigil is in hand.\n2 - Only display when Divination/Seer sigil is in inventory"); - thaumcraftGogglesUpgrade = config.getBoolean("thaumcraftGogglesUpgrade", category + ".thaumcraft", true, "Allows the Living Helmet to be upgraded with Goggles of Revealing in an Anvil."); - ignoreCompressionSpamAddedByCompression = config.getBoolean("ignoreCompressionSpamAddedByCompression", category + ".compression", true, "Compression decided to add a storage recipe for every item and block in the game. This will make the Sigil of Compression ignore those recipes so your game will actually load in a decent amount of time."); - - category = "Meteors"; - config.addCustomCategoryComment(category, "Meteor settings"); - - config.save(); - } - - private static void buildBlacklist(String[] blacklisting, List blockBlacklist) { - blockBlacklist.clear(); - - for (String blockSet : blacklisting) { - String[] blockData = blockSet.split(":"); - - Block block = ForgeRegistries.BLOCKS.getValue(new ResourceLocation(blockData[0], blockData[1])); - int meta = 0; - - if (blockData.length == 3) { - // Check if it's an int, if so, parse it. If not, set meta to 0 - // to avoid crashing. - if (Utils.isInteger(blockData[2])) - meta = Integer.parseInt(blockData[2]); - else if (blockData[2].equals("*")) - meta = OreDictionary.WILDCARD_VALUE; - else - meta = 0; - } - - blockBlacklist.add(new BlockStack(block, meta)); - } - } - - private static void buildEntitySacrificeValues() { - entitySacrificeValues.clear(); - - for (String entityData : entitySacrificeValuesList) { - String[] split = entityData.split(";"); - - int amount = 500; - if (Utils.isInteger(split[1])) - amount = Integer.parseInt(split[1]); - - if (!entitySacrificeValues.containsKey(split[0])) - entitySacrificeValues.put(split[0], amount); + ConfigManager.sync(event.getModID(), Config.Type.INSTANCE); // Sync config values + MeteorConfigHandler.handleMeteors(false); // Reload meteors } } } diff --git a/src/main/java/WayofTime/bloodmagic/api/util/helper/PlayerSacrificeHelper.java b/src/main/java/WayofTime/bloodmagic/api/util/helper/PlayerSacrificeHelper.java index 4691fadc..6c1fdc9d 100644 --- a/src/main/java/WayofTime/bloodmagic/api/util/helper/PlayerSacrificeHelper.java +++ b/src/main/java/WayofTime/bloodmagic/api/util/helper/PlayerSacrificeHelper.java @@ -61,7 +61,7 @@ public class PlayerSacrificeHelper { if (health > maxHealth / 10.0) { float sacrificedHealth = health - maxHealth / 10.0f; - int lpAdded = (int) (sacrificedHealth * ConfigHandler.sacrificialDaggerConversion * getModifier(amount)); + int lpAdded = (int) (sacrificedHealth * ConfigHandler.values.sacrificialDaggerConversion * getModifier(amount)); SacrificeKnifeUsedEvent evt = new SacrificeKnifeUsedEvent(player, true, true, (int) sacrificedHealth, lpAdded); if (MinecraftForge.EVENT_BUS.post(evt)) diff --git a/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicBlacklist.java b/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicBlacklist.java index de4c9f77..b88d64b6 100644 --- a/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicBlacklist.java +++ b/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicBlacklist.java @@ -69,7 +69,7 @@ public class BloodMagicBlacklist implements IBloodMagicBlacklist { } @Override - public void addSacrifice(@Nonnull ResourceLocation entityId) { + public void addWellOfSuffering(@Nonnull ResourceLocation entityId) { if (!sacrifice.contains(entityId)) sacrifice.add(entityId); } diff --git a/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicCorePlugin.java b/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicCorePlugin.java index 161ee241..e9d57594 100644 --- a/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicCorePlugin.java +++ b/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicCorePlugin.java @@ -1,9 +1,11 @@ package WayofTime.bloodmagic.api_impl; import WayofTime.bloodmagic.BloodMagic; +import WayofTime.bloodmagic.ConfigHandler; import WayofTime.bloodmagic.api.altar.EnumAltarComponent; import WayofTime.bloodmagic.apiv2.BloodMagicPlugin; import WayofTime.bloodmagic.apiv2.IBloodMagicAPI; +import WayofTime.bloodmagic.apiv2.IBloodMagicBlacklist; import WayofTime.bloodmagic.apiv2.IBloodMagicPlugin; import WayofTime.bloodmagic.block.BlockBloodRune; import WayofTime.bloodmagic.block.BlockDecorative; @@ -11,8 +13,14 @@ import WayofTime.bloodmagic.block.enums.EnumBloodRune; import WayofTime.bloodmagic.block.enums.EnumDecorative; import WayofTime.bloodmagic.core.RegistrarBloodMagicBlocks; import WayofTime.bloodmagic.core.RegistrarBloodMagicRecipes; +import net.minecraft.block.Block; +import net.minecraft.block.properties.IProperty; +import net.minecraft.block.state.BlockStateContainer; +import net.minecraft.block.state.IBlockState; import net.minecraft.init.Blocks; import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.common.registry.EntityEntry; +import net.minecraftforge.fml.common.registry.ForgeRegistries; @BloodMagicPlugin public class BloodMagicCorePlugin implements IBloodMagicPlugin { @@ -32,10 +40,13 @@ public class BloodMagicCorePlugin implements IBloodMagicPlugin { api.getBlacklist().addTransposition(RegistrarBloodMagicBlocks.DEMON_CRYSTAL); api.getBlacklist().addTeleposer(RegistrarBloodMagicBlocks.INVERSION_PILLAR); api.getBlacklist().addTransposition(RegistrarBloodMagicBlocks.INVERSION_PILLAR); - api.getBlacklist().addSacrifice(new ResourceLocation("armor_stand")); - api.getBlacklist().addSacrifice(new ResourceLocation(BloodMagic.MODID, "sentient_specter")); + api.getBlacklist().addWellOfSuffering(new ResourceLocation("armor_stand")); + api.getBlacklist().addWellOfSuffering(new ResourceLocation(BloodMagic.MODID, "sentient_specter")); - // TODO - Register things from config + api.setSacrificialValue(new ResourceLocation("armor_stand"), 0); + api.setSacrificialValue(new ResourceLocation(BloodMagic.MODID, "sentient_specter"), 0); + + handleConfigValues(api); // Add standard blocks for altar components api.registerAltarComponent(Blocks.GLOWSTONE.getDefaultState(), EnumAltarComponent.GLOWSTONE.name()); @@ -56,4 +67,79 @@ public class BloodMagicCorePlugin implements IBloodMagicPlugin { RegistrarBloodMagicRecipes.registerAlchemyTableRecipes(api.getRecipeRegistrar()); RegistrarBloodMagicRecipes.registerTartaricForgeRecipes(((BloodMagicAPI) api).getRecipeRegistrar()); } + + private static void handleConfigValues(IBloodMagicAPI api) { + for (String value : ConfigHandler.values.sacrificialValues) { + String[] split = value.split(";"); + if (split.length != 2) // Not valid format + continue; + + api.setSacrificialValue(new ResourceLocation(split[0]), Integer.parseInt(split[1])); + } + + for (String value : ConfigHandler.blacklist.teleposer) { + EntityEntry entityEntry = ForgeRegistries.ENTITIES.getValue(new ResourceLocation(value)); + if (entityEntry == null) { // It's not an entity (or at least not a valid one), so let's try a block. + String[] blockData = value.split("\\["); + Block block = ForgeRegistries.BLOCKS.getValue(new ResourceLocation(blockData[0])); + if (block == Blocks.AIR || block == null) // Not a valid block either + continue; + + if (blockData.length > 1) { // We have properties listed, so let's build a state. + api.getBlacklist().addTeleposer(parseState(value)); + continue; + } + + api.getBlacklist().addTeleposer(block); + continue; + } + + api.getBlacklist().addTeleposer(entityEntry.getRegistryName()); + } + + for (String value : ConfigHandler.blacklist.transposer) { + String[] blockData = value.split("\\["); + Block block = ForgeRegistries.BLOCKS.getValue(new ResourceLocation(blockData[0])); + if (block == Blocks.AIR || block == null) // Not a valid block + continue; + + if (blockData.length > 1) { // We have properties listed, so let's build a state. + api.getBlacklist().addTeleposer(parseState(value)); + continue; + } + + api.getBlacklist().addTeleposer(block); + } + + for (String value : ConfigHandler.blacklist.wellOfSuffering) { + EntityEntry entityEntry = ForgeRegistries.ENTITIES.getValue(new ResourceLocation(value)); + if (entityEntry == null) // Not a valid entity + continue; + + api.getBlacklist().addWellOfSuffering(entityEntry.getRegistryName()); + } + } + + private static IBlockState parseState(String blockInfo) { + String[] split = blockInfo.split("\\["); + split[1] = split[1].substring(0, split[1].lastIndexOf("]")); // Make sure brackets are removed from state + + Block block = ForgeRegistries.BLOCKS.getValue(new ResourceLocation(split[0])); // Find the block + if (block == Blocks.AIR) + return Blocks.AIR.getDefaultState(); // The block is air, so we're looking at invalid data + + BlockStateContainer blockState = block.getBlockState(); + IBlockState returnState = blockState.getBaseState(); + + // Force our values into the state + String[] stateValues = split[1].split(","); // Splits up each value + for (String value : stateValues) { + String[] valueSplit = value.split("="); // Separates property and value + IProperty property = blockState.getProperty(valueSplit[0]); + if (property != null) + returnState = returnState.withProperty(property, (Comparable) property.parseValue(valueSplit[1]).get()); // Force the property into the state + } + + return returnState; + } } diff --git a/src/main/java/WayofTime/bloodmagic/apiv2/IBloodMagicBlacklist.java b/src/main/java/WayofTime/bloodmagic/apiv2/IBloodMagicBlacklist.java index 13852efd..f1f1b0ad 100644 --- a/src/main/java/WayofTime/bloodmagic/apiv2/IBloodMagicBlacklist.java +++ b/src/main/java/WayofTime/bloodmagic/apiv2/IBloodMagicBlacklist.java @@ -22,5 +22,5 @@ public interface IBloodMagicBlacklist { void addGreenGrove(@Nonnull Block block); - void addSacrifice(@Nonnull ResourceLocation entityId); + void addWellOfSuffering(@Nonnull ResourceLocation entityId); } diff --git a/src/main/java/WayofTime/bloodmagic/block/BlockSpectral.java b/src/main/java/WayofTime/bloodmagic/block/BlockSpectral.java index 7a001100..6aa45663 100644 --- a/src/main/java/WayofTime/bloodmagic/block/BlockSpectral.java +++ b/src/main/java/WayofTime/bloodmagic/block/BlockSpectral.java @@ -68,7 +68,7 @@ public class BlockSpectral extends Block implements IVariantProvider { @Override public EnumBlockRenderType getRenderType(IBlockState state) { - return ConfigHandler.invisibleSpectralBlocks ? EnumBlockRenderType.INVISIBLE : EnumBlockRenderType.MODEL; + return ConfigHandler.client.invisibleSpectralBlocks ? EnumBlockRenderType.INVISIBLE : EnumBlockRenderType.MODEL; } @Override diff --git a/src/main/java/WayofTime/bloodmagic/client/gui/config/ConfigGui.java b/src/main/java/WayofTime/bloodmagic/client/gui/config/ConfigGui.java deleted file mode 100644 index 9013d8ea..00000000 --- a/src/main/java/WayofTime/bloodmagic/client/gui/config/ConfigGui.java +++ /dev/null @@ -1,37 +0,0 @@ -package WayofTime.bloodmagic.client.gui.config; - -import WayofTime.bloodmagic.BloodMagic; -import WayofTime.bloodmagic.ConfigHandler; -import net.minecraft.client.gui.GuiScreen; -import net.minecraftforge.common.config.ConfigElement; -import net.minecraftforge.fml.client.config.GuiConfig; -import net.minecraftforge.fml.client.config.IConfigElement; - -import java.util.ArrayList; -import java.util.List; - -public class ConfigGui extends GuiConfig { - - public ConfigGui(GuiScreen parentScreen) { - super(parentScreen, getConfigElements(parentScreen), BloodMagic.MODID, false, false, "BloodMagic Configuration"); - } - - @SuppressWarnings("rawtypes") - private static List getConfigElements(GuiScreen parent) { - List list = new ArrayList(); - - // adds sections declared in ConfigHandler. toLowerCase() is used - // because the configuration class automatically does this, so must we. - list.add(new ConfigElement(ConfigHandler.config.getCategory("Potions".toLowerCase()))); - list.add(new ConfigElement(ConfigHandler.config.getCategory("Client".toLowerCase()))); - list.add(new ConfigElement(ConfigHandler.config.getCategory("Compatibility".toLowerCase()))); - list.add(new ConfigElement(ConfigHandler.config.getCategory("Teleposer Blacklist".toLowerCase()))); - list.add(new ConfigElement(ConfigHandler.config.getCategory("Well of Suffering Blacklist".toLowerCase()))); - list.add(new ConfigElement(ConfigHandler.config.getCategory("Item/Block Blacklisting".toLowerCase()))); - list.add(new ConfigElement(ConfigHandler.config.getCategory("General".toLowerCase()))); - list.add(new ConfigElement(ConfigHandler.config.getCategory("Rituals".toLowerCase()))); - list.add(new ConfigElement(ConfigHandler.config.getCategory("Blood Altar Sacrificial Values".toLowerCase()))); - - return list; - } -} diff --git a/src/main/java/WayofTime/bloodmagic/client/gui/config/ConfigGuiFactory.java b/src/main/java/WayofTime/bloodmagic/client/gui/config/ConfigGuiFactory.java deleted file mode 100644 index 2f968574..00000000 --- a/src/main/java/WayofTime/bloodmagic/client/gui/config/ConfigGuiFactory.java +++ /dev/null @@ -1,29 +0,0 @@ -package WayofTime.bloodmagic.client.gui.config; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiScreen; -import net.minecraftforge.fml.client.IModGuiFactory; - -import java.util.Set; - -public class ConfigGuiFactory implements IModGuiFactory { - @Override - public void initialize(Minecraft minecraftInstance) { - - } - - @Override - public boolean hasConfigGui() { - return false; - } - - @Override - public GuiScreen createConfigGui(GuiScreen parentScreen) { - return new ConfigGui(parentScreen); - } - - @Override - public Set runtimeGuiCategories() { - return null; - } -} diff --git a/src/main/java/WayofTime/bloodmagic/client/render/block/RenderItemRoutingNode.java b/src/main/java/WayofTime/bloodmagic/client/render/block/RenderItemRoutingNode.java index 9a94e561..083de767 100644 --- a/src/main/java/WayofTime/bloodmagic/client/render/block/RenderItemRoutingNode.java +++ b/src/main/java/WayofTime/bloodmagic/client/render/block/RenderItemRoutingNode.java @@ -24,7 +24,7 @@ public class RenderItemRoutingNode extends TileEntitySpecialRenderer connectionList = tileNode.getConnected(); for (BlockPos wantedPos : connectionList) { BlockPos offsetPos = wantedPos.subtract(tileNode.getPos()); diff --git a/src/main/java/WayofTime/bloodmagic/compat/waila/provider/DataProviderBloodAltar.java b/src/main/java/WayofTime/bloodmagic/compat/waila/provider/DataProviderBloodAltar.java index 8affc801..9e3ddf39 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/waila/provider/DataProviderBloodAltar.java +++ b/src/main/java/WayofTime/bloodmagic/compat/waila/provider/DataProviderBloodAltar.java @@ -27,16 +27,6 @@ import java.util.List; * in ImLookingAtBlood by Pokefenn. */ public class DataProviderBloodAltar implements IWailaDataProvider { - @Override - public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config) { - return null; - } - - @Override - public List getWailaHead(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) { - return null; - } - @Override public List getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) { if (!config.getConfig(Constants.Compat.WAILA_CONFIG_ALTAR)) @@ -45,24 +35,21 @@ public class DataProviderBloodAltar implements IWailaDataProvider { boolean hasSigil = false; boolean hasSeer = false; - switch (ConfigHandler.wailaAltarDisplayMode) { - case 0: { + switch (ConfigHandler.compat.wailaAltarDisplayMode) { + case ALWAYS: { hasSigil = hasSeer = true; break; } - case 1: { + case SIGIL_HELD: { hasSeer = holdingSeerSigil(accessor.getPlayer()); hasSigil = hasSeer || holdingDivinationSigil(accessor.getPlayer()); break; } - case 2: { + case SIGIL_CONTAINED: { hasSeer = hasStack(new ItemStack(RegistrarBloodMagicItems.SIGIL_SEER), accessor.getPlayer()); hasSigil = hasSeer || hasStack(new ItemStack(RegistrarBloodMagicItems.SIGIL_DIVINATION), accessor.getPlayer()); break; } - default: { - break; - } } if (!hasSeer && !hasSigil) @@ -93,11 +80,6 @@ public class DataProviderBloodAltar implements IWailaDataProvider { return currenttip; } - @Override - public List getWailaTail(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) { - return null; - } - @Override public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, BlockPos pos) { if (te != null) @@ -127,7 +109,7 @@ public class DataProviderBloodAltar implements IWailaDataProvider { if (player.getHeldItemMainhand().getItem() instanceof ItemSigilDivination) return true; - if (player.getHeldItemOffhand() != null && player.getHeldItemOffhand().getItem() instanceof ItemSigilDivination) + if (!player.getHeldItemOffhand().isEmpty() && player.getHeldItemOffhand().getItem() instanceof ItemSigilDivination) return true; return false; diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemSacrificialDagger.java b/src/main/java/WayofTime/bloodmagic/item/ItemSacrificialDagger.java index ba46d284..1444de0e 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemSacrificialDagger.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemSacrificialDagger.java @@ -98,7 +98,7 @@ public class ItemSacrificialDagger extends Item implements IMeshProvider { return new ActionResult(EnumActionResult.SUCCESS, stack); } - int lpAdded = ConfigHandler.sacrificialDaggerConversion * ConfigHandler.sacrificialDaggerDamage; + int lpAdded = ConfigHandler.values.sacrificialDaggerConversion * 2; RayTraceResult rayTrace = rayTrace(world, player, false); if (rayTrace != null && rayTrace.typeOfHit == RayTraceResult.Type.BLOCK) { @@ -109,14 +109,14 @@ public class ItemSacrificialDagger extends Item implements IMeshProvider { } if (!player.capabilities.isCreativeMode) { - SacrificeKnifeUsedEvent evt = new SacrificeKnifeUsedEvent(player, true, true, ConfigHandler.sacrificialDaggerDamage, lpAdded); + SacrificeKnifeUsedEvent evt = new SacrificeKnifeUsedEvent(player, true, true, 2, lpAdded); if (MinecraftForge.EVENT_BUS.post(evt)) return super.onItemRightClick(world, player, hand); if (evt.shouldDrainHealth) { player.hurtResistantTime = 0; player.attackEntityFrom(BloodMagicAPI.damageSource, 0.001F); - player.setHealth(Math.max(player.getHealth() - ConfigHandler.sacrificialDaggerDamage, 0.0001f)); + player.setHealth(Math.max(player.getHealth() - 2, 0.0001f)); if (player.getHealth() <= 0.001f) { player.onDeath(BloodMagicAPI.damageSource); player.setHealth(0); diff --git a/src/main/java/WayofTime/bloodmagic/meteor/MeteorConfigHandler.java b/src/main/java/WayofTime/bloodmagic/meteor/MeteorConfigHandler.java index 1c482c0d..e5aadc77 100644 --- a/src/main/java/WayofTime/bloodmagic/meteor/MeteorConfigHandler.java +++ b/src/main/java/WayofTime/bloodmagic/meteor/MeteorConfigHandler.java @@ -63,7 +63,7 @@ public class MeteorConfigHandler { reader.close(); } - if (checkNewVersion && ConfigHandler.config.getBoolean("resyncOnVersionChange", "Meteors", true, "Should the default meteors be regenerated if the mod has updated them")) { + if (checkNewVersion && ConfigHandler.values.shouldResyncMeteors) { Set discoveredDefaults = Sets.newHashSet(); // Check existing defaults for new version @@ -93,8 +93,6 @@ public class MeteorConfigHandler { } catch (Exception e) { e.printStackTrace(); } - - ConfigHandler.config.save(); } private static List> getDefaultMeteors() { diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java b/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java index 3a61373e..6427eee3 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java @@ -1,7 +1,6 @@ package WayofTime.bloodmagic.registry; import WayofTime.bloodmagic.BloodMagic; -import WayofTime.bloodmagic.ConfigHandler; import WayofTime.bloodmagic.alchemyArray.*; import WayofTime.bloodmagic.api.compress.CompressionRegistry; import WayofTime.bloodmagic.api.iface.ISigil; @@ -45,6 +44,7 @@ import net.minecraft.potion.PotionEffect; import net.minecraft.util.ResourceLocation; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.TextComponentTranslation; +import net.minecraftforge.fml.common.Loader; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.oredict.OreDictionary; import org.apache.commons.lang3.tuple.Pair; @@ -464,7 +464,7 @@ public class ModRecipes { private static void setupDir() { if (RECIPE_DIR == null) { - RECIPE_DIR = ConfigHandler.config.getConfigFile().toPath().resolve("../recipes/").toFile(); + RECIPE_DIR = new File(Loader.instance().getConfigDir(), "bloodmagic/recipes"); } if (!RECIPE_DIR.exists()) { diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModRituals.java b/src/main/java/WayofTime/bloodmagic/registry/ModRituals.java index ad026e23..3d0def9a 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModRituals.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModRituals.java @@ -42,7 +42,6 @@ public class ModRituals { public static Ritual forsakenSoulRitual; public static Ritual crystalHarvestRitual; - // public static Ritual cobblestoneRitual; public static Ritual placerRitual; public static Ritual fellingRitual; public static Ritual pumpRitual; @@ -60,68 +59,64 @@ public class ModRituals { public static void initRituals() { waterRitual = new RitualWater(); - RitualRegistry.registerRitual(waterRitual, ConfigHandler.ritualWater); + RitualRegistry.registerRitual(waterRitual, ConfigHandler.rituals.ritualWater); lavaRitual = new RitualLava(); - RitualRegistry.registerRitual(lavaRitual, ConfigHandler.ritualLava); + RitualRegistry.registerRitual(lavaRitual, ConfigHandler.rituals.ritualLava); greenGroveRitual = new RitualGreenGrove(); - RitualRegistry.registerRitual(greenGroveRitual, ConfigHandler.ritualGreenGrove); + RitualRegistry.registerRitual(greenGroveRitual, ConfigHandler.rituals.ritualGreenGrove); jumpRitual = new RitualJumping(); - RitualRegistry.registerRitual(jumpRitual, ConfigHandler.ritualJumping); + RitualRegistry.registerRitual(jumpRitual, ConfigHandler.rituals.ritualJumping); sufferingRitual = new RitualWellOfSuffering(); - RitualRegistry.registerRitual(sufferingRitual, ConfigHandler.ritualWellOfSuffering); + RitualRegistry.registerRitual(sufferingRitual, ConfigHandler.rituals.ritualWellOfSuffering); featheredKnifeRitual = new RitualFeatheredKnife(); - RitualRegistry.registerRitual(featheredKnifeRitual, ConfigHandler.ritualFeatheredKnife); + RitualRegistry.registerRitual(featheredKnifeRitual, ConfigHandler.rituals.ritualFeatheredKnife); regenerationRitual = new RitualRegeneration(); - RitualRegistry.registerRitual(regenerationRitual, ConfigHandler.ritualRegeneration); + RitualRegistry.registerRitual(regenerationRitual, ConfigHandler.rituals.ritualRegeneration); animalGrowthRitual = new RitualAnimalGrowth(); - RitualRegistry.registerRitual(animalGrowthRitual, ConfigHandler.ritualAnimalGrowth); + RitualRegistry.registerRitual(animalGrowthRitual, ConfigHandler.rituals.ritualAnimalGrowth); harvestRitual = new RitualHarvest(); - RitualRegistry.registerRitual(harvestRitual, ConfigHandler.ritualHarvest); + RitualRegistry.registerRitual(harvestRitual, ConfigHandler.rituals.ritualHarvest); initHarvestHandlers(); magneticRitual = new RitualMagnetic(); - RitualRegistry.registerRitual(magneticRitual, ConfigHandler.ritualMagnetic); + RitualRegistry.registerRitual(magneticRitual, ConfigHandler.rituals.ritualMagnetic); crushingRitual = new RitualCrushing(); - RitualRegistry.registerRitual(crushingRitual, ConfigHandler.ritualCrushing); + RitualRegistry.registerRitual(crushingRitual, ConfigHandler.rituals.ritualCrushing); stomachRitual = new RitualFullStomach(); - RitualRegistry.registerRitual(stomachRitual, ConfigHandler.ritualFullStomach); + RitualRegistry.registerRitual(stomachRitual, ConfigHandler.rituals.ritualFullStomach); interdictionRitual = new RitualInterdiction(); - RitualRegistry.registerRitual(interdictionRitual, ConfigHandler.ritualInterdiction); + RitualRegistry.registerRitual(interdictionRitual, ConfigHandler.rituals.ritualInterdiction); containmentRitual = new RitualContainment(); - RitualRegistry.registerRitual(containmentRitual, ConfigHandler.ritualContainment); + RitualRegistry.registerRitual(containmentRitual, ConfigHandler.rituals.ritualContainment); speedRitual = new RitualSpeed(); - RitualRegistry.registerRitual(speedRitual, ConfigHandler.ritualSpeed); + RitualRegistry.registerRitual(speedRitual, ConfigHandler.rituals.ritualSpeed); suppressionRitual = new RitualSuppression(); - RitualRegistry.registerRitual(suppressionRitual, ConfigHandler.ritualSuppression); + RitualRegistry.registerRitual(suppressionRitual, ConfigHandler.rituals.ritualSuppression); zephyrRitual = new RitualZephyr(); - RitualRegistry.registerRitual(zephyrRitual, ConfigHandler.ritualZephyr); + RitualRegistry.registerRitual(zephyrRitual, ConfigHandler.rituals.ritualZephyr); expulsionRitual = new RitualExpulsion(); - RitualRegistry.registerRitual(expulsionRitual, ConfigHandler.ritualExpulsion); + RitualRegistry.registerRitual(expulsionRitual, ConfigHandler.rituals.ritualExpulsion); upgradeRemoveRitual = new RitualUpgradeRemove(); - RitualRegistry.registerRitual(upgradeRemoveRitual, ConfigHandler.ritualUpgradeRemove); + RitualRegistry.registerRitual(upgradeRemoveRitual, ConfigHandler.rituals.ritualUpgradeRemove); armourEvolveRitual = new RitualArmourEvolve(); - RitualRegistry.registerRitual(armourEvolveRitual, ConfigHandler.ritualArmourEvolve); + RitualRegistry.registerRitual(armourEvolveRitual, ConfigHandler.rituals.ritualArmourEvolve); forsakenSoulRitual = new RitualForsakenSoul(); - RitualRegistry.registerRitual(forsakenSoulRitual, ConfigHandler.ritualForsakenSoul); + RitualRegistry.registerRitual(forsakenSoulRitual, ConfigHandler.rituals.ritualForsakenSoul); crystalHarvestRitual = new RitualCrystalHarvest(); - RitualRegistry.registerRitual(crystalHarvestRitual, ConfigHandler.ritualCrystalHarvest); - -// cobblestoneRitual = new RitualCobblestone(); -// RitualRegistry.registerRitual(cobblestoneRitual, ConfigHandler.cobblestoneRitual); + RitualRegistry.registerRitual(crystalHarvestRitual, ConfigHandler.rituals.ritualCrystalHarvest); placerRitual = new RitualPlacer(); - RitualRegistry.registerRitual(placerRitual, ConfigHandler.placerRitual); + RitualRegistry.registerRitual(placerRitual, ConfigHandler.rituals.ritualPlacer); fellingRitual = new RitualFelling(); - RitualRegistry.registerRitual(fellingRitual, ConfigHandler.fellingRitual); + RitualRegistry.registerRitual(fellingRitual, ConfigHandler.rituals.ritualFelling); pumpRitual = new RitualPump(); - RitualRegistry.registerRitual(pumpRitual, ConfigHandler.pumpRitual); + RitualRegistry.registerRitual(pumpRitual, ConfigHandler.rituals.ritualPump); altarBuilderRitual = new RitualAltarBuilder(); - RitualRegistry.registerRitual(altarBuilderRitual, ConfigHandler.altarBuilderRitual); + RitualRegistry.registerRitual(altarBuilderRitual, ConfigHandler.rituals.ritualAltarBuilder); portalRitual = new RitualPortal(); - RitualRegistry.registerRitual(portalRitual, ConfigHandler.portalRitual); + RitualRegistry.registerRitual(portalRitual, ConfigHandler.rituals.ritualPortal); meteorRitual = new RitualMeteor(); - RitualRegistry.registerRitual(meteorRitual, ConfigHandler.meteorRitual); - + RitualRegistry.registerRitual(meteorRitual, ConfigHandler.rituals.ritualMeteor); downgradeRitual = new RitualLivingArmourDowngrade(); - RitualRegistry.registerRitual(downgradeRitual, ConfigHandler.downgradeRitual); + RitualRegistry.registerRitual(downgradeRitual, ConfigHandler.rituals.ritualDowngrade); RitualCrushing.registerCuttingFluid(ItemCuttingFluid.getStack(ItemCuttingFluid.BASIC), 250, 0.5); RitualCrushing.registerCuttingFluid(ItemCuttingFluid.getStack(ItemCuttingFluid.EXPLOSIVE), 25, 0.05); @@ -129,13 +124,13 @@ public class ModRituals { public static void initImperfectRituals() { imperfectNight = new ImperfectRitualNight(); - ImperfectRitualRegistry.registerRitual(imperfectNight, ConfigHandler.imperfectRitualNight); + ImperfectRitualRegistry.registerRitual(imperfectNight, ConfigHandler.rituals.imperfect.imperfectRitualNight); imperfectRain = new ImperfectRitualRain(); - ImperfectRitualRegistry.registerRitual(imperfectRain, ConfigHandler.imperfectRitualRain); + ImperfectRitualRegistry.registerRitual(imperfectRain, ConfigHandler.rituals.imperfect.imperfectRitualRain); imperfectResistance = new ImperfectRitualResistance(); - ImperfectRitualRegistry.registerRitual(imperfectResistance, ConfigHandler.imperfectRitualResistance); + ImperfectRitualRegistry.registerRitual(imperfectResistance, ConfigHandler.rituals.imperfect.imperfectRitualResistance); imperfectZombie = new ImperfectRitualZombie(); - ImperfectRitualRegistry.registerRitual(imperfectZombie, ConfigHandler.imperfectRitualZombie); + ImperfectRitualRegistry.registerRitual(imperfectZombie, ConfigHandler.rituals.imperfect.imperfectRitualZombie); } public static void initHarvestHandlers() { diff --git a/src/main/java/WayofTime/bloodmagic/ritual/RitualFeatheredKnife.java b/src/main/java/WayofTime/bloodmagic/ritual/RitualFeatheredKnife.java index 60dce160..38a5b4fb 100644 --- a/src/main/java/WayofTime/bloodmagic/ritual/RitualFeatheredKnife.java +++ b/src/main/java/WayofTime/bloodmagic/ritual/RitualFeatheredKnife.java @@ -152,7 +152,7 @@ public class RitualFeatheredKnife extends Ritual { player.setHealth(health - sacrificedHealth); - tileAltar.sacrificialDaggerCall((int) (ConfigHandler.sacrificialDaggerConversion * lpModifier * sacrificedHealth), false); + tileAltar.sacrificialDaggerCall((int) (ConfigHandler.values.sacrificialDaggerConversion * lpModifier * sacrificedHealth), false); totalEffects++; diff --git a/src/main/java/WayofTime/bloodmagic/util/handler/event/ClientHandler.java b/src/main/java/WayofTime/bloodmagic/util/handler/event/ClientHandler.java index c92e1267..8c9aa9ee 100644 --- a/src/main/java/WayofTime/bloodmagic/util/handler/event/ClientHandler.java +++ b/src/main/java/WayofTime/bloodmagic/util/handler/event/ClientHandler.java @@ -311,7 +311,7 @@ public class ClientHandler { public static void cycleSigil(ItemStack stack, EntityPlayer player, int dWheel) { int mode = dWheel; - if (!ConfigHandler.sigilHoldingSkipsEmptySlots) { + if (!ConfigHandler.client.sigilHoldingSkipsEmptySlots) { mode = ItemSigilHolding.getCurrentItemOrdinal(stack); mode = dWheel < 0 ? ItemSigilHolding.next(mode) : ItemSigilHolding.prev(mode); } diff --git a/src/main/java/WayofTime/bloodmagic/util/handler/event/CraftingHandler.java b/src/main/java/WayofTime/bloodmagic/util/handler/event/CraftingHandler.java index 366c9c1f..f47c2065 100644 --- a/src/main/java/WayofTime/bloodmagic/util/handler/event/CraftingHandler.java +++ b/src/main/java/WayofTime/bloodmagic/util/handler/event/CraftingHandler.java @@ -1,7 +1,6 @@ package WayofTime.bloodmagic.util.handler.event; import WayofTime.bloodmagic.BloodMagic; -import WayofTime.bloodmagic.ConfigHandler; import WayofTime.bloodmagic.annot.Handler; import WayofTime.bloodmagic.api.Constants; import WayofTime.bloodmagic.api.event.AltarCraftedEvent; @@ -51,19 +50,20 @@ public class CraftingHandler { // Handles crafting of: Revealing Upgrade Tome, Elytra Upgrade Tome, Combining Upgrade Tomes, Setting Upgrade for Trainer @SubscribeEvent public void onAnvil(AnvilUpdateEvent event) { - if (ConfigHandler.thaumcraftGogglesUpgrade) { - if (event.getLeft().getItem() == RegistrarBloodMagicItems.LIVING_ARMOUR_HELMET && event.getRight().getItem() == Constants.Compat.THAUMCRAFT_GOGGLES && !event.getRight().isItemDamaged()) { - ItemStack output = new ItemStack(RegistrarBloodMagicItems.UPGRADE_TOME); - output = NBTHelper.checkNBT(output); - ItemHelper.LivingUpgrades.setKey(output, BloodMagic.MODID + ".upgrade.revealing"); - ItemHelper.LivingUpgrades.setLevel(output, 1); - event.setCost(1); - - event.setOutput(output); - - return; - } - } + // TODO - Azanor come back :( +// if (ConfigHandler.thaumcraftGogglesUpgrade) { +// if (event.getLeft().getItem() == RegistrarBloodMagicItems.LIVING_ARMOUR_HELMET && event.getRight().getItem() == Constants.Compat.THAUMCRAFT_GOGGLES && !event.getRight().isItemDamaged()) { +// ItemStack output = new ItemStack(RegistrarBloodMagicItems.UPGRADE_TOME); +// output = NBTHelper.checkNBT(output); +// ItemHelper.LivingUpgrades.setKey(output, BloodMagic.MODID + ".upgrade.revealing"); +// ItemHelper.LivingUpgrades.setLevel(output, 1); +// event.setCost(1); +// +// event.setOutput(output); +// +// return; +// } +// } if (event.getLeft().getItem() == RegistrarBloodMagicItems.SIGIL_HOLDING) { if (event.getRight().getItem() == Items.NAME_TAG) { diff --git a/src/main/java/WayofTime/bloodmagic/util/handler/event/GenericHandler.java b/src/main/java/WayofTime/bloodmagic/util/handler/event/GenericHandler.java index 74d75c62..defb55fa 100644 --- a/src/main/java/WayofTime/bloodmagic/util/handler/event/GenericHandler.java +++ b/src/main/java/WayofTime/bloodmagic/util/handler/event/GenericHandler.java @@ -186,7 +186,7 @@ public class GenericHandler { boolean shouldSyphon = pack.getStoredLP(player.getItemStackFromSlot(EntityEquipmentSlot.CHEST)) < pack.CAPACITY; float damageDone = event.getEntityLiving().getHealth() < event.getAmount() ? event.getAmount() - event.getEntityLiving().getHealth() : event.getAmount(); - int totalLP = Math.round(damageDone * ConfigHandler.sacrificialPackConversion); + int totalLP = Math.round(damageDone * ConfigHandler.values.coatOfArmsConversion); if (shouldSyphon) ItemHelper.LPContainer.addLPToItem(player.getItemStackFromSlot(EntityEquipmentSlot.CHEST), totalLP, pack.CAPACITY); From 59df51a66b359e8ce4b19ea67bbc68eb33f796d4 Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Sat, 19 Aug 2017 19:00:09 -0700 Subject: [PATCH 03/27] Rename meteor files to lowercase --- .../bloodmagic/meteor/MeteorConfigHandler.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/WayofTime/bloodmagic/meteor/MeteorConfigHandler.java b/src/main/java/WayofTime/bloodmagic/meteor/MeteorConfigHandler.java index e5aadc77..c608e061 100644 --- a/src/main/java/WayofTime/bloodmagic/meteor/MeteorConfigHandler.java +++ b/src/main/java/WayofTime/bloodmagic/meteor/MeteorConfigHandler.java @@ -136,14 +136,14 @@ public class MeteorConfigHandler { Meteor diamondMeteor = new Meteor(new ItemStack(Blocks.DIAMOND_BLOCK), diamondMeteorList, 10, 3); diamondMeteor.setVersion(3); - holders.add(Pair.of("IronMeteor", ironMeteor)); - DEFAULT_METEORS.put("IronMeteor", ironMeteor); + holders.add(Pair.of("iron", ironMeteor)); + DEFAULT_METEORS.put("iron", ironMeteor); - holders.add(Pair.of("GoldMeteor", goldMeteor)); - DEFAULT_METEORS.put("GoldMeteor", goldMeteor); + holders.add(Pair.of("gold", goldMeteor)); + DEFAULT_METEORS.put("gold", goldMeteor); - holders.add(Pair.of("DiamondMeteor", diamondMeteor)); - DEFAULT_METEORS.put("DiamondMeteor", diamondMeteor); + holders.add(Pair.of("diamond", diamondMeteor)); + DEFAULT_METEORS.put("diamond", diamondMeteor); return holders; } From c23d577c3301fa18f793f1acacaf0ec9c47cf089 Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Sat, 19 Aug 2017 20:45:11 -0700 Subject: [PATCH 04/27] JSON recipes, much to the displeasure of Elucent feelsgoodman --- .../core/RegistrarBloodMagicRecipes.java | 24 +- .../core/recipe/IngredientSoulGem.java | 4 - .../bloodmagic/item/ItemBloodOrb.java | 2 +- .../bloodmagic/registry/ModRecipes.java | 300 ------------------ .../assets/bloodmagic/recipes/_constants.json | 128 ++++++++ .../recipes/activation_crystal.json | 16 + .../bloodmagic/recipes/alchemy_table.json | 29 ++ .../assets/bloodmagic/recipes/altar.json | 26 ++ .../recipes/base_item_filter_0.json | 24 ++ .../recipes/base_item_filter_1.json | 24 ++ .../recipes/base_item_filter_2.json | 24 ++ .../recipes/base_item_filter_3.json | 24 ++ .../blood_rune/blood_rune_acceleration.json | 32 ++ .../blood_rune/blood_rune_augcapacity.json | 32 ++ .../recipes/blood_rune/blood_rune_blank.json | 25 ++ .../blood_rune/blood_rune_capacity.json | 28 ++ .../blood_rune/blood_rune_charging.json | 32 ++ .../blood_rune/blood_rune_displacement.json | 28 ++ .../recipes/blood_rune/blood_rune_orb.json | 29 ++ .../blood_rune/blood_rune_sacrifice.json | 32 ++ .../blood_rune/blood_rune_selfsacrifice.json | 32 ++ .../recipes/blood_rune/blood_rune_speed.json | 28 ++ .../recipes/blood_tank/blood_tank_0.json | 25 ++ .../recipes/blood_tank/blood_tank_1.json | 26 ++ .../recipes/blood_tank/blood_tank_10.json | 26 ++ .../recipes/blood_tank/blood_tank_11.json | 26 ++ .../recipes/blood_tank/blood_tank_12.json | 26 ++ .../recipes/blood_tank/blood_tank_13.json | 26 ++ .../recipes/blood_tank/blood_tank_14.json | 26 ++ .../recipes/blood_tank/blood_tank_15.json | 26 ++ .../recipes/blood_tank/blood_tank_2.json | 26 ++ .../recipes/blood_tank/blood_tank_3.json | 26 ++ .../recipes/blood_tank/blood_tank_4.json | 26 ++ .../recipes/blood_tank/blood_tank_5.json | 26 ++ .../recipes/blood_tank/blood_tank_6.json | 26 ++ .../recipes/blood_tank/blood_tank_7.json | 26 ++ .../recipes/blood_tank/blood_tank_8.json | 26 ++ .../recipes/blood_tank/blood_tank_9.json | 26 ++ .../decorative_brick_bloodstone_brick.json | 18 ++ .../decorative_brick_bloodstone_tile.json | 17 + .../demon_brick_1_brick1_corrosive.json | 18 ++ .../demon_brick_1_brick1_destructive.json | 18 ++ .../demon_decor/demon_brick_1_brick1_raw.json | 18 ++ .../demon_brick_1_brick1_steadfast.json | 18 ++ .../demon_brick_1_brick1_vengeful.json | 18 ++ .../demon_brick_2_smallbrick_corrosive.json | 17 + .../demon_brick_2_smallbrick_destructive.json | 17 + .../demon_brick_2_smallbrick_raw.json | 17 + .../demon_brick_2_smallbrick_steadfast.json | 17 + .../demon_brick_2_smallbrick_vengeful.json | 17 + .../demon_brick_2_tile_corrosive.json | 23 ++ .../demon_brick_2_tile_destructive.json | 23 ++ .../demon_decor/demon_brick_2_tile_raw.json | 23 ++ .../demon_brick_2_tile_steadfast.json | 23 ++ .../demon_brick_2_tile_vengeful.json | 23 ++ .../demon_brick_2_tilespecial_corrosive.json | 27 ++ ...demon_brick_2_tilespecial_destructive.json | 27 ++ .../demon_brick_2_tilespecial_raw.json | 27 ++ .../demon_brick_2_tilespecial_steadfast.json | 27 ++ .../demon_brick_2_tilespecial_vengeful.json | 27 ++ .../demon_extras_stone_corrosive.json | 38 +++ .../demon_extras_stone_destructive.json | 38 +++ .../demon_decor/demon_extras_stone_raw.json | 38 +++ .../demon_extras_stone_steadfast.json | 38 +++ .../demon_extras_stone_vengeful.json | 38 +++ .../demon_decor/demon_light_corrosive.json | 22 ++ .../demon_decor/demon_light_destructive.json | 22 ++ .../recipes/demon_decor/demon_light_raw.json | 22 ++ .../demon_decor/demon_light_steadfast.json | 22 ++ .../demon_decor/demon_light_vengeful.json | 22 ++ .../demon_decor/demon_pillar_1_corrosive.json | 19 ++ .../demon_pillar_1_destructive.json | 19 ++ .../demon_decor/demon_pillar_1_raw.json | 19 ++ .../demon_decor/demon_pillar_1_steadfast.json | 19 ++ .../demon_decor/demon_pillar_1_vengeful.json | 19 ++ .../demon_decor/demon_pillar_2_corrosive.json | 23 ++ .../demon_pillar_2_destructive.json | 23 ++ .../demon_decor/demon_pillar_2_raw.json | 23 ++ .../demon_decor/demon_pillar_2_steadfast.json | 23 ++ .../demon_decor/demon_pillar_2_vengeful.json | 23 ++ .../demon_pillar_cap_1_corrosive.json | 18 ++ .../demon_decor/demon_pillar_cap_1_raw.json | 18 ++ .../demon_pillar_cap_2_destructive.json | 18 ++ .../demon_pillar_cap_2_vengeful.json | 18 ++ .../demon_pillar_cap_3_steadfast.json | 17 + .../demon_decor/demon_stairs_1_corrosive.json | 19 ++ .../demon_decor/demon_stairs_1_raw.json | 19 ++ .../demon_stairs_2_destructive.json | 19 ++ .../demon_decor/demon_stairs_2_vengeful.json | 19 ++ .../demon_decor/demon_stairs_3_steadfast.json | 18 ++ .../demon_wall_1_brick_corrosive.json | 18 ++ .../demon_wall_1_brick_destructive.json | 18 ++ .../demon_decor/demon_wall_1_brick_raw.json | 18 ++ .../demon_wall_1_brick_steadfast.json | 18 ++ .../demon_wall_1_brick_vengeful.json | 18 ++ .../demon_wall_1_large_corrosive.json | 18 ++ .../demon_wall_1_large_destructive.json | 18 ++ .../demon_decor/demon_wall_1_large_raw.json | 18 ++ .../demon_wall_1_large_steadfast.json | 18 ++ .../demon_wall_1_large_vengeful.json | 18 ++ .../demon_wall_1_smallbrick_corrosive.json | 18 ++ .../demon_wall_1_smallbrick_destructive.json | 18 ++ .../demon_wall_1_smallbrick_raw.json | 18 ++ .../demon_wall_1_smallbrick_steadfast.json | 18 ++ .../demon_wall_1_smallbrick_vengeful.json | 18 ++ .../bloodmagic/recipes/experience_tome.json | 33 ++ .../bloodmagic/recipes/incense_altar.json | 27 ++ .../bloodmagic/recipes/lava_crystal.json | 29 ++ .../bloodmagic/recipes/mimic_nohitbox.json | 27 ++ .../bloodmagic/recipes/mimic_solidclear.json | 30 ++ .../bloodmagic/recipes/mimic_solidlight.json | 33 ++ .../bloodmagic/recipes/mimic_solidopaque.json | 30 ++ .../bloodmagic/recipes/pack_sacrifice.json | 29 ++ .../recipes/pack_self_sacrifice.json | 29 ++ .../recipes/path/path_obsidian.json | 26 ++ .../recipes/path/path_obsidiantile.json | 26 ++ .../bloodmagic/recipes/path/path_stone.json | 26 ++ .../recipes/path/path_stonetile.json | 26 ++ .../bloodmagic/recipes/path/path_wood.json | 26 ++ .../recipes/path/path_woodtile.json | 26 ++ .../recipes/path/path_wornstone.json | 30 ++ .../recipes/path/path_wornstonetile.json | 26 ++ .../recipes/ritual_controller_imperfect.json | 24 ++ .../recipes/ritual_controller_inverted.json | 20 ++ .../recipes/ritual_controller_master.json | 25 ++ .../recipes/ritual_controller_master_alt.json | 13 + .../bloodmagic/recipes/ritual_diviner_0.json | 36 +++ .../bloodmagic/recipes/ritual_diviner_1.json | 26 ++ .../bloodmagic/recipes/ritual_reader.json | 27 ++ .../recipes/ritual_stone_blank.json | 26 ++ .../recipes/ritual_stone_reset.json | 13 + .../recipes/sacrificial_dagger.json | 23 ++ .../assets/bloodmagic/recipes/soul_forge.json | 25 ++ .../assets/bloodmagic/recipes/soul_snare.json | 24 ++ .../assets/bloodmagic/recipes/teleposer.json | 23 ++ .../recipes/teleposition_focus_2.json | 17 + .../recipes/teleposition_focus_3.json | 17 + .../bloodmagic/recipes/upgrade_trainer.json | 27 ++ 138 files changed, 3297 insertions(+), 309 deletions(-) delete mode 100644 src/main/java/WayofTime/bloodmagic/core/recipe/IngredientSoulGem.java create mode 100644 src/main/resources/assets/bloodmagic/recipes/_constants.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/activation_crystal.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/alchemy_table.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/altar.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/base_item_filter_0.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/base_item_filter_1.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/base_item_filter_2.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/base_item_filter_3.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_acceleration.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_augcapacity.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_blank.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_capacity.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_charging.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_displacement.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_orb.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_sacrifice.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_selfsacrifice.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_speed.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_0.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_1.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_10.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_11.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_12.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_13.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_14.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_15.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_2.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_3.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_4.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_5.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_6.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_7.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_8.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_9.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/decorative_brick_bloodstone_brick.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/decorative_brick_bloodstone_tile.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_1_brick1_corrosive.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_1_brick1_destructive.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_1_brick1_raw.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_1_brick1_steadfast.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_1_brick1_vengeful.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_smallbrick_corrosive.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_smallbrick_destructive.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_smallbrick_raw.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_smallbrick_steadfast.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_smallbrick_vengeful.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tile_corrosive.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tile_destructive.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tile_raw.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tile_steadfast.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tile_vengeful.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tilespecial_corrosive.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tilespecial_destructive.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tilespecial_raw.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tilespecial_steadfast.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tilespecial_vengeful.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_extras_stone_corrosive.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_extras_stone_destructive.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_extras_stone_raw.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_extras_stone_steadfast.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_extras_stone_vengeful.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_light_corrosive.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_light_destructive.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_light_raw.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_light_steadfast.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_light_vengeful.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_1_corrosive.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_1_destructive.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_1_raw.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_1_steadfast.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_1_vengeful.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_2_corrosive.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_2_destructive.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_2_raw.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_2_steadfast.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_2_vengeful.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_cap_1_corrosive.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_cap_1_raw.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_cap_2_destructive.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_cap_2_vengeful.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_cap_3_steadfast.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_stairs_1_corrosive.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_stairs_1_raw.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_stairs_2_destructive.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_stairs_2_vengeful.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_stairs_3_steadfast.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_brick_corrosive.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_brick_destructive.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_brick_raw.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_brick_steadfast.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_brick_vengeful.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_large_corrosive.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_large_destructive.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_large_raw.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_large_steadfast.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_large_vengeful.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_smallbrick_corrosive.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_smallbrick_destructive.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_smallbrick_raw.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_smallbrick_steadfast.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_smallbrick_vengeful.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/experience_tome.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/incense_altar.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/lava_crystal.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/mimic_nohitbox.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/mimic_solidclear.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/mimic_solidlight.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/mimic_solidopaque.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/pack_sacrifice.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/pack_self_sacrifice.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/path/path_obsidian.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/path/path_obsidiantile.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/path/path_stone.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/path/path_stonetile.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/path/path_wood.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/path/path_woodtile.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/path/path_wornstone.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/path/path_wornstonetile.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/ritual_controller_imperfect.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/ritual_controller_inverted.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/ritual_controller_master.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/ritual_controller_master_alt.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/ritual_diviner_0.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/ritual_diviner_1.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/ritual_reader.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/ritual_stone_blank.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/ritual_stone_reset.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/sacrificial_dagger.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/soul_forge.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/soul_snare.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/teleposer.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/teleposition_focus_2.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/teleposition_focus_3.json create mode 100644 src/main/resources/assets/bloodmagic/recipes/upgrade_trainer.json diff --git a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicRecipes.java b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicRecipes.java index 087d7025..49660987 100644 --- a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicRecipes.java +++ b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicRecipes.java @@ -4,17 +4,20 @@ import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.api.altar.EnumAltarTier; import WayofTime.bloodmagic.api.registry.OrbRegistry; import WayofTime.bloodmagic.api.ritual.EnumRuneType; +import WayofTime.bloodmagic.api.soul.EnumDemonWillType; import WayofTime.bloodmagic.api_impl.BloodMagicRecipeRegistrar; import WayofTime.bloodmagic.apiv2.IBloodMagicRecipeRegistrar; import WayofTime.bloodmagic.block.BlockLifeEssence; import WayofTime.bloodmagic.item.ItemComponent; import WayofTime.bloodmagic.item.ItemDemonCrystal; import WayofTime.bloodmagic.item.alchemy.ItemCuttingFluid; +import WayofTime.bloodmagic.item.soul.ItemSoulGem; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.IRecipe; import net.minecraft.item.crafting.Ingredient; +import net.minecraft.util.ResourceLocation; import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; @@ -22,13 +25,26 @@ import net.minecraftforge.fluids.FluidUtil; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.oredict.OreIngredient; +import net.minecraftforge.oredict.ShapelessOreRecipe; @Mod.EventBusSubscriber(modid = BloodMagic.MODID) public class RegistrarBloodMagicRecipes { @SubscribeEvent public static void registerCrafting(RegistryEvent.Register event) { - // TODO - Figure out what recipes still need to be here + for (int i = 0; i < ItemSoulGem.names.length; i++) { + for (int j = 0; j < ItemDemonCrystal.NAMES.size(); j++) { + ItemStack baseGemStack = new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, i); + ItemStack newGemStack = new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, i); + + ItemStack crystalStack = new ItemStack(RegistrarBloodMagicItems.ITEM_DEMON_CRYSTAL, 1, j); + + EnumDemonWillType willType = ((ItemDemonCrystal) RegistrarBloodMagicItems.ITEM_DEMON_CRYSTAL).getType(crystalStack); + ((ItemSoulGem) RegistrarBloodMagicItems.SOUL_GEM).setCurrentType(willType, newGemStack); + ShapelessOreRecipe shapeless = new ShapelessOreRecipe(new ResourceLocation(BloodMagic.MODID, "soul_gem"), newGemStack, baseGemStack, crystalStack); + event.getRegistry().register(shapeless.setRegistryName("soul_gem_" + willType.getName())); + } + } } public static void registerAltarRecipes(IBloodMagicRecipeRegistrar registrar) { @@ -53,14 +69,14 @@ public class RegistrarBloodMagicRecipes { registrar.addBloodAltar(Ingredient.fromItem(RegistrarBloodMagicItems.LAVA_CRYSTAL), new ItemStack(RegistrarBloodMagicItems.ACTIVATION_CRYSTAL), EnumAltarTier.THREE.ordinal(), 10000, 20, 10); // FOUR - registrar.addBloodAltar(Ingredient.fromItem(RegistrarBloodMagicItems.BLOOD_SHARD), OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_MASTER), EnumAltarTier.FOUR.ordinal(), 25000, 30, 50); + registrar.addBloodAltar(Ingredient.fromStacks(new ItemStack(RegistrarBloodMagicItems.BLOOD_SHARD)), OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_MASTER), EnumAltarTier.FOUR.ordinal(), 25000, 30, 50); registrar.addBloodAltar(Ingredient.fromStacks(new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2)), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), EnumAltarTier.FOUR.ordinal(), 15000, 20, 20); registrar.addBloodAltar(new OreIngredient("blockCoal"), EnumRuneType.DUSK.getScribeStack(), EnumAltarTier.FOUR.ordinal(), 2000, 20, 10); registrar.addBloodAltar(new OreIngredient("enderpearl"), new ItemStack(RegistrarBloodMagicItems.TELEPOSITION_FOCUS), EnumAltarTier.FOUR.ordinal(), 2000, 10, 10); - registrar.addBloodAltar(Ingredient.fromItem(RegistrarBloodMagicItems.TELEPOSITION_FOCUS), new ItemStack(RegistrarBloodMagicItems.TELEPOSITION_FOCUS, 1, 1), EnumAltarTier.FOUR.ordinal(), 10000, 20, 10); + registrar.addBloodAltar(Ingredient.fromStacks(new ItemStack(RegistrarBloodMagicItems.TELEPOSITION_FOCUS)), new ItemStack(RegistrarBloodMagicItems.TELEPOSITION_FOCUS, 1, 1), EnumAltarTier.FOUR.ordinal(), 10000, 20, 10); // FIVE - registrar.addBloodAltar(new OreIngredient("netherstar"), OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_ARCHMAGE), EnumAltarTier.FIVE.ordinal(), 80000, 50, 100); + registrar.addBloodAltar(new OreIngredient("netherStar"), OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_ARCHMAGE), EnumAltarTier.FIVE.ordinal(), 80000, 50, 100); registrar.addBloodAltar(Ingredient.fromStacks(new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3)), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 4), EnumAltarTier.FIVE.ordinal(), 30000, 40, 100); // SIX diff --git a/src/main/java/WayofTime/bloodmagic/core/recipe/IngredientSoulGem.java b/src/main/java/WayofTime/bloodmagic/core/recipe/IngredientSoulGem.java deleted file mode 100644 index 5d63e947..00000000 --- a/src/main/java/WayofTime/bloodmagic/core/recipe/IngredientSoulGem.java +++ /dev/null @@ -1,4 +0,0 @@ -package WayofTime.bloodmagic.core.recipe; - -public class IngredientSoulGem { -} diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemBloodOrb.java b/src/main/java/WayofTime/bloodmagic/item/ItemBloodOrb.java index 46f441da..0b7311a5 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemBloodOrb.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemBloodOrb.java @@ -94,7 +94,7 @@ public class ItemBloodOrb extends ItemBindableBase implements IBloodOrb, IBindab BloodOrb orb = getOrb(stack); if (flag.isAdvanced() && orb != null) - tooltip.add(TextHelper.localizeEffect("tooltip.bloodmagic.orb.owner", orb.getRegistryName())); + tooltip.add(TextHelper.localizeEffect("tooltip.bloodmagic.orb.owner", orb.getRegistryName().getResourceDomain())); super.addInformation(stack, world, tooltip, flag); } diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java b/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java index 6427eee3..85cfb7a8 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java @@ -5,68 +5,46 @@ import WayofTime.bloodmagic.alchemyArray.*; import WayofTime.bloodmagic.api.compress.CompressionRegistry; import WayofTime.bloodmagic.api.iface.ISigil; import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; -import WayofTime.bloodmagic.api.orb.BloodOrb; -import WayofTime.bloodmagic.api.orb.IBloodOrb; import WayofTime.bloodmagic.api.recipe.AlchemyTableCustomRecipe; import WayofTime.bloodmagic.api.registry.*; -import WayofTime.bloodmagic.api.ritual.EnumRuneType; -import WayofTime.bloodmagic.block.enums.EnumBloodRune; import WayofTime.bloodmagic.client.render.alchemyArray.*; import WayofTime.bloodmagic.compress.AdvancedCompressionHandler; import WayofTime.bloodmagic.compress.BaseCompressionHandler; import WayofTime.bloodmagic.compress.StorageBlockCraftingManager; import WayofTime.bloodmagic.core.RegistrarBloodMagic; -import WayofTime.bloodmagic.core.RegistrarBloodMagicBlocks; import WayofTime.bloodmagic.core.RegistrarBloodMagicItems; import WayofTime.bloodmagic.item.ItemComponent; -import WayofTime.bloodmagic.item.ItemDemonCrystal; import WayofTime.bloodmagic.item.alchemy.ItemCuttingFluid; import WayofTime.bloodmagic.item.alchemy.ItemLivingArmourPointsUpgrade; -import WayofTime.bloodmagic.item.soul.ItemSoulGem; import WayofTime.bloodmagic.livingArmour.downgrade.*; import WayofTime.bloodmagic.potion.BMPotionUtils; import WayofTime.bloodmagic.recipe.alchemyTable.AlchemyTableDyeableRecipe; import WayofTime.bloodmagic.recipe.alchemyTable.AlchemyTablePotionRecipe; -import WayofTime.bloodmagic.tile.TileBloodTank; import WayofTime.bloodmagic.util.Utils; import com.google.common.base.Stopwatch; -import com.google.common.collect.ImmutableMap; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.init.MobEffects; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.potion.PotionEffect; import net.minecraft.util.ResourceLocation; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.TextComponentTranslation; -import net.minecraftforge.fml.common.Loader; -import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.oredict.OreDictionary; import org.apache.commons.lang3.tuple.Pair; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; import java.util.*; import java.util.Map.Entry; public class ModRecipes { - private static final Gson GSON = new GsonBuilder().setPrettyPrinting().create(); - private static final Set USED_OD_NAMES = new TreeSet<>(); public static ArrayList addedOreRecipeList = new ArrayList(); static ItemStack mundaneLengtheningStack = ItemComponent.getStack(ItemComponent.CATALYST_LENGTH_1); static ItemStack mundanePowerStack = ItemComponent.getStack(ItemComponent.CATALYST_POWER_1); - private static File RECIPE_DIR = null; public static void init() { initOreDict(); addFurnaceRecipes(); -// addCraftingRecipes(); addAltarRecipes(); addAlchemyArrayRecipes(); addSoulForgeRecipes(); @@ -87,123 +65,6 @@ public class ModRecipes { FurnaceRecipes.instance().addSmeltingRecipe(ItemComponent.getStack(ItemComponent.SAND_GOLD), new ItemStack(Items.GOLD_INGOT), (float) 0.15); } - public static void addCraftingRecipes() { - addShapedRecipe(new ItemStack(RegistrarBloodMagicBlocks.SOUL_FORGE), "i i", "sgs", "sos", 'i', "ingotIron", 's', "stone", 'g', "ingotGold", 'o', "blockIron"); - addShapedRecipe(new ItemStack(RegistrarBloodMagicItems.SACRIFICIAL_DAGGER), "aaa", " ba", "c a", 'a', "blockGlass", 'b', "ingotGold", 'c', "ingotIron"); - addShapedRecipe(new ItemStack(RegistrarBloodMagicBlocks.ALTAR), "a a", "aba", "cdc", 'a', "stone", 'b', Blocks.FURNACE, 'c', "ingotGold", 'd', new ItemStack(RegistrarBloodMagicItems.MONSTER_SOUL)); - addShapedRecipe(new ItemStack(RegistrarBloodMagicItems.PACK_SELF_SACRIFICE), "aba", "cdc", "aea", 'a', "blockGlass", 'b', Items.BUCKET, 'c', Items.FLINT, 'd', Items.LEATHER_CHESTPLATE, 'e', RegistrarBloodMagicItems.SLATE); - addShapedRecipe(new ItemStack(RegistrarBloodMagicItems.PACK_SACRIFICE), "aba", "cdc", "aea", 'a', "blockGlass", 'b', Items.BUCKET, 'c', "ingotIron", 'd', Items.LEATHER_CHESTPLATE, 'e', RegistrarBloodMagicItems.SLATE); - addShapedRecipe(new ItemStack(RegistrarBloodMagicItems.RITUAL_DIVINER), "dfd", "ase", "dwd", 'f', EnumRuneType.FIRE.getScribeStack(), 'a', EnumRuneType.AIR.getScribeStack(), 'w', EnumRuneType.WATER.getScribeStack(), 'e', EnumRuneType.EARTH.getScribeStack(), 'd', "gemDiamond", 's', "stickWood"); - addShapedRecipe(new ItemStack(RegistrarBloodMagicItems.RITUAL_DIVINER, 1, 1), " S ", "tdt", " S ", 'S', new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), 't', EnumRuneType.DUSK.getScribeStack(), 'd', new ItemStack(RegistrarBloodMagicItems.RITUAL_DIVINER)); - addShapedRecipe(new ItemStack(RegistrarBloodMagicBlocks.DECORATIVE_BRICK, 4, 1), "aa", "aa", 'a', new ItemStack(RegistrarBloodMagicBlocks.DECORATIVE_BRICK)); - addShapelessRecipe(new ItemStack(RegistrarBloodMagicBlocks.DECORATIVE_BRICK, 16), "stone", new ItemStack(RegistrarBloodMagicItems.BLOOD_SHARD)); - addShapelessRecipe(new ItemStack(RegistrarBloodMagicItems.ACTIVATION_CRYSTAL, 1, 1), new ItemStack(Items.NETHER_STAR), OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_ARCHMAGE)); - addShapedRecipe(new ItemStack(RegistrarBloodMagicItems.SOUL_SNARE, 4, 0), "sis", "iri", "sis", 's', "string", 'i', "ingotIron", 'r', "dustRedstone"); - - addShapedRecipe(new ItemStack(RegistrarBloodMagicBlocks.BLOOD_TANK), "RBR", "G G", "RRR", 'R', new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE), 'B', RegistrarBloodMagicBlocks.DECORATIVE_BRICK, 'G', "blockGlass"); - for (int i = 1; i < TileBloodTank.CAPACITIES.length; i++) - addShapedRecipe(new ItemStack(RegistrarBloodMagicBlocks.BLOOD_TANK, 1, i), "RBR", "T T", "RRR", 'R', new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE), 'B', RegistrarBloodMagicBlocks.DECORATIVE_BRICK, 'T', new ItemStack(RegistrarBloodMagicBlocks.BLOOD_TANK, 1, i - 1)); - - addShapelessRecipe(new ItemStack(RegistrarBloodMagicItems.TELEPOSITION_FOCUS, 1, 2), new ItemStack(RegistrarBloodMagicItems.TELEPOSITION_FOCUS, 1, 1), new ItemStack(RegistrarBloodMagicItems.BLOOD_SHARD)); - addShapelessRecipe(new ItemStack(RegistrarBloodMagicItems.TELEPOSITION_FOCUS, 1, 3), new ItemStack(RegistrarBloodMagicItems.TELEPOSITION_FOCUS, 1, 2), new ItemStack(RegistrarBloodMagicItems.BLOOD_SHARD, 1, 1)); - addShapedRecipe(new ItemStack(RegistrarBloodMagicBlocks.TELEPOSER), "ggg", "efe", "ggg", 'g', "ingotGold", 'e', new ItemStack(Items.ENDER_PEARL), 'f', RegistrarBloodMagicItems.TELEPOSITION_FOCUS); - -// GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(RegistrarBloodMagicItems.LAVA_CRYSTAL), "aba", "bcb", "ded", 'a', "blockGlass", 'b', Items.LAVA_BUCKET, 'c', OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_WEAK), 'd', Blocks.OBSIDIAN, 'e', "gemDiamond")); -// GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE), "aaa", "bcb", "aaa", 'a', "stone", 'b', RegistrarBloodMagicItems.SLATE, 'c', OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_WEAK))); - addShapedRecipe(new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE, 1, 1), "aba", "cdc", "aba", 'a', "stone", 'b', RegistrarBloodMagicItems.SLATE, 'c', Items.SUGAR, 'd', new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE)); //Speed -// addShapedRecipe(new ItemStack(RegistrarBloodMagicBlocks.bloodRune, 1, 2), "aba", "cdc", "aba", 'a', "stone", 'b', RegistrarBloodMagicItems.slate, 'c', Items.sugar, 'd', new ItemStack(RegistrarBloodMagicBlocks.bloodRune))); //Efficiency -// GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE, 1, 3), "aba", "cdc", "aea", 'a', "stone", 'b', new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), 'c', "ingotGold", 'd', new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE), 'e', OrbRegistry.getOrbStack(RegistrarBloodMagicItems.ORB_APPRENTICE))); //Sacrifice -// GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE, 1, 4), "aba", "cdc", "aea", 'a', "stone", 'b', new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), 'c', "dustGlowstone", 'd', new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE), 'e', OrbRegistry.getOrbStack(RegistrarBloodMagicItems.ORB_APPRENTICE))); //Self-Sacrifice - addShapedRecipe(new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE, 1, 5), "aba", "bcb", "ada", 'a', "stone", 'b', Items.WATER_BUCKET, 'c', new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE), 'd', new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2)); //Displacement - addShapedRecipe(new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE, 1, 6), "aba", "bcb", "ada", 'a', "stone", 'b', Items.BUCKET, 'c', new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE), 'd', new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2)); //Capacity -// GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE, 1, 7), "aba", "cdc", "aea", 'a', Blocks.OBSIDIAN, 'b', new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), 'c', Items.BUCKET, 'd', new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE, 1, 6), 'e', OrbRegistry.getOrbStack(RegistrarBloodMagicItems.ORB_MASTER))); //Augmented Capacity -// GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE, 1, 8), "aba", "cdc", "aba", 'a', "stone", 'b', OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_WEAK), 'c', new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE), 'd', OrbRegistry.getOrbStack(RegistrarBloodMagicItems.ORB_MASTER))); //Orb -// GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE, 1, 9), "aba", "cdc", "aea", 'a', Items.BUCKET, 'b', new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), 'c', "ingotGold", 'd', new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE, 1, 1), 'e', OrbRegistry.getOrbStack(RegistrarBloodMagicItems.ORB_MASTER))); //Acceleration -// GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE, 1, 10), "RsR", "GrG", "ReR", 'G', "glowstone", 's', new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), 'R', "dustRedstone", 'r', new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE, 1), 'e', OrbRegistry.getOrbStack(RegistrarBloodMagicItems.ORB_MASTER))); //Charging -// GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(RegistrarBloodMagicBlocks.RITUAL_STONE, 4), "aba", "bcb", "aba", 'a', Blocks.OBSIDIAN, 'b', new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), 'c', OrbRegistry.getOrbStack(RegistrarBloodMagicItems.ORB_APPRENTICE))); -// GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(RegistrarBloodMagicBlocks.RITUAL_CONTROLLER), "aba", "bcb", "aba", 'a', Blocks.OBSIDIAN, 'b', RegistrarBloodMagicBlocks.RITUAL_STONE, 'c', OrbRegistry.getOrbStack(RegistrarBloodMagicItems.ORB_MAGICIAN))); -// GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(RegistrarBloodMagicBlocks.RITUAL_CONTROLLER, 1, 1), "aba", "bcb", "aba", 'a', Blocks.OBSIDIAN, 'b', "stone", 'c', OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_WEAK))); - addShapelessRecipe(new ItemStack(RegistrarBloodMagicBlocks.RITUAL_CONTROLLER, 1, 2), new ItemStack(RegistrarBloodMagicBlocks.RITUAL_CONTROLLER), new ItemStack(Blocks.REDSTONE_TORCH), new ItemStack(RegistrarBloodMagicItems.SLATE)); - addShapelessRecipe(new ItemStack(RegistrarBloodMagicBlocks.RITUAL_CONTROLLER), new ItemStack(RegistrarBloodMagicBlocks.RITUAL_CONTROLLER, 1, 2)); - - addShapedRecipe(new ItemStack(RegistrarBloodMagicItems.BASE_ITEM_FILTER, 1, 0), "sgs", "gfg", "sgs", 'f', ItemComponent.getStack(ItemComponent.COMPONENT_FRAME_PART), 'g', "blockGlass", 's', "stickWood"); - addShapedRecipe(new ItemStack(RegistrarBloodMagicItems.BASE_ITEM_FILTER, 1, 1), "sgs", "gfg", "sgs", 'f', ItemComponent.getStack(ItemComponent.COMPONENT_FRAME_PART), 'g', "dyeYellow", 's', "stickWood"); - addShapedRecipe(new ItemStack(RegistrarBloodMagicItems.BASE_ITEM_FILTER, 1, 2), "sgs", "gfg", "sgs", 'f', ItemComponent.getStack(ItemComponent.COMPONENT_FRAME_PART), 'g', "dyeGreen", 's', "stickWood"); - addShapedRecipe(new ItemStack(RegistrarBloodMagicItems.BASE_ITEM_FILTER, 1, 3), "sgs", "gfg", "sgs", 'f', ItemComponent.getStack(ItemComponent.COMPONENT_FRAME_PART), 'g', "dyePurple", 's', "stickWood"); - -// GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(RegistrarBloodMagicItems.UPGRADE_TRAINER), "ngn", "ioi", "ngn", 'o', OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_MASTER), 'i', "ingotIron", 'n', "nuggetGold", 'g', "ingotGold")); - -// GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(RegistrarBloodMagicBlocks.INCENSE_ALTAR), "s s", "shs", "coc", 'o', OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_WEAK), 's', "stone", 'c', "cobblestone", 'h', new ItemStack(Items.COAL, 1, 1))); -// GameRegistry.addRecipe(new ShapelessBloodOrbRecipe(new ItemStack(RegistrarBloodMagicBlocks.PATH, 4, 0), "plankWood", "plankWood", "plankWood", "plankWood", OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_APPRENTICE))); - addShapelessRecipe(new ItemStack(RegistrarBloodMagicBlocks.PATH, 4, 1), new ItemStack(RegistrarBloodMagicBlocks.PATH, 1, 0), new ItemStack(RegistrarBloodMagicBlocks.PATH, 1, 0), new ItemStack(RegistrarBloodMagicBlocks.PATH, 1, 0), new ItemStack(RegistrarBloodMagicBlocks.PATH, 1, 0)); -// GameRegistry.addRecipe(new ShapelessBloodOrbRecipe(new ItemStack(RegistrarBloodMagicBlocks.PATH, 4, 2), "stone", "stone", "stone", "stone", OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_MAGICIAN))); - addShapelessRecipe(new ItemStack(RegistrarBloodMagicBlocks.PATH, 4, 3), new ItemStack(RegistrarBloodMagicBlocks.PATH, 1, 2), new ItemStack(RegistrarBloodMagicBlocks.PATH, 1, 2), new ItemStack(RegistrarBloodMagicBlocks.PATH, 1, 2), new ItemStack(RegistrarBloodMagicBlocks.PATH, 1, 2)); -// GameRegistry.addRecipe(new ShapelessBloodOrbRecipe(new ItemStack(RegistrarBloodMagicBlocks.PATH, 4, 4), new ItemStack(RegistrarBloodMagicBlocks.PATH, 1, 2), new ItemStack(RegistrarBloodMagicBlocks.PATH, 1, 2), new ItemStack(RegistrarBloodMagicBlocks.PATH, 1, 2), new ItemStack(RegistrarBloodMagicBlocks.PATH, 1, 2), OrbRegistry.getOrbStack(RegistrarBloodMagicItems.ORB_MASTER))); - addShapelessRecipe(new ItemStack(RegistrarBloodMagicBlocks.PATH, 4, 5), new ItemStack(RegistrarBloodMagicBlocks.PATH, 1, 4), new ItemStack(RegistrarBloodMagicBlocks.PATH, 1, 4), new ItemStack(RegistrarBloodMagicBlocks.PATH, 1, 4), new ItemStack(RegistrarBloodMagicBlocks.PATH, 1, 4)); -// GameRegistry.addRecipe(new ShapelessBloodOrbRecipe(new ItemStack(RegistrarBloodMagicBlocks.PATH, 4, 6), Blocks.OBSIDIAN, Blocks.OBSIDIAN, Blocks.OBSIDIAN, Blocks.OBSIDIAN, OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_ARCHMAGE))); - addShapelessRecipe(new ItemStack(RegistrarBloodMagicBlocks.PATH, 4, 7), new ItemStack(RegistrarBloodMagicBlocks.PATH, 1, 6), new ItemStack(RegistrarBloodMagicBlocks.PATH, 1, 6), new ItemStack(RegistrarBloodMagicBlocks.PATH, 1, 6), new ItemStack(RegistrarBloodMagicBlocks.PATH, 1, 6)); - -// GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(RegistrarBloodMagicItems.EXPERIENCE_TOME), "ses", "lbl", "gog", 'o', OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_MAGICIAN), 'e', Blocks.LAPIS_BLOCK, 'l', new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2), 'b', Items.ENCHANTED_BOOK, 's', "string", 'g', "ingotGold")); -// GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(RegistrarBloodMagicItems.RITUAL_READER), "gog", "isi", " s ", 's', new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), 'g', "blockGlass", 'i', "ingotGold", 'o', OrbRegistry.getOrbStack(RegistrarBloodMagicItems.ORB_MASTER))); -// -// GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(RegistrarBloodMagicBlocks.ALCHEMY_TABLE), "sss", "wbw", "gog", 's', "stone", 'w', "plankWood", 'b', Items.BLAZE_ROD, 'g', "ingotGold", 'o', OrbRegistry.getOrbStack(RegistrarBloodMagicItems.ORB_WEAK))); - - for (int i = 1; i < EnumBloodRune.values().length; i++) - addShapelessRecipe(new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE), new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE, 1, i)); - - for (int i = 0; i < ItemSoulGem.names.length; i++) { - for (int j = 0; j < ItemDemonCrystal.NAMES.size(); j++) { - ItemStack baseGemStack = new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, i); - ItemStack newGemStack = new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, i); - - ItemStack crystalStack = new ItemStack(RegistrarBloodMagicItems.ITEM_DEMON_CRYSTAL, 1, j); - - ((ItemSoulGem) RegistrarBloodMagicItems.SOUL_GEM).setCurrentType(((ItemDemonCrystal) RegistrarBloodMagicItems.ITEM_DEMON_CRYSTAL).getType(crystalStack), newGemStack); - addShapelessRecipe(newGemStack, baseGemStack, crystalStack); - } - } - -// GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(RegistrarBloodMagicBlocks.MIMIC, 4, 0), "b b", " r ", "bob", 'b', new ItemStack(RegistrarBloodMagicBlocks.DECORATIVE_BRICK), 'r', new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE), 'o', OrbRegistry.getOrbStack(RegistrarBloodMagicItems.ORB_MAGICIAN))); -// GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(RegistrarBloodMagicBlocks.MIMIC, 4, 1), "bsb", "srs", "bob", 'b', new ItemStack(RegistrarBloodMagicBlocks.DECORATIVE_BRICK), 'r', new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE), 's', "stone", 'o', OrbRegistry.getOrbStack(RegistrarBloodMagicItems.ORB_MAGICIAN))); -// GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(RegistrarBloodMagicBlocks.MIMIC, 4, 2), "bsb", "srs", "bob", 'b', new ItemStack(RegistrarBloodMagicBlocks.DECORATIVE_BRICK), 'r', new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE), 's', "blockGlass", 'o', OrbRegistry.getOrbStack(RegistrarBloodMagicItems.ORB_MAGICIAN))); -// GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(RegistrarBloodMagicBlocks.MIMIC, 2, 3), "bnb", "trt", "bob", 'b', new ItemStack(RegistrarBloodMagicBlocks.DECORATIVE_BRICK), 'r', new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE), 'n', "glowstone", 't', "torch", 'o', OrbRegistry.getOrbStack(RegistrarBloodMagicItems.ORB_MAGICIAN))); - - for (int i = 0; i < 5; i++) { - ItemStack crystalStack = new ItemStack(RegistrarBloodMagicItems.ITEM_DEMON_CRYSTAL, 1, i); - ItemStack baseStoneStack = new ItemStack(RegistrarBloodMagicBlocks.DEMON_EXTRAS, 1, i); - ItemStack baseStoneStackCrafted = new ItemStack(RegistrarBloodMagicBlocks.DEMON_EXTRAS, 16, i); - ItemStack polishedStoneStack = new ItemStack(RegistrarBloodMagicBlocks.DEMON_EXTRAS, 1, i + 5); - ItemStack willBrickStack = new ItemStack(RegistrarBloodMagicBlocks.DEMON_BRICK_1, 1, i); - ItemStack willBrickStackCrafted = new ItemStack(RegistrarBloodMagicBlocks.DEMON_BRICK_1, 4, i); - - ItemStack willSmallBrickStack = new ItemStack(RegistrarBloodMagicBlocks.DEMON_BRICK_2, 1, i); - ItemStack willSmallBrickStackCrafted = new ItemStack(RegistrarBloodMagicBlocks.DEMON_BRICK_2, 1, i); - ItemStack pillarStack = new ItemStack(RegistrarBloodMagicBlocks.DEMON_PILLAR_1, 1, i); - ItemStack pillarStackCrafted = new ItemStack(RegistrarBloodMagicBlocks.DEMON_PILLAR_1, 6, i); - - addShapelessRecipe(baseStoneStackCrafted, crystalStack, "stone", "stone", "stone", "stone", "stone", "stone", "stone", "stone"); - addShapedRecipe(willBrickStackCrafted, "ss", "ss", 's', baseStoneStack); - addShapedRecipe(willSmallBrickStackCrafted, "ss", "ss", 's', willBrickStack); - addShapedRecipe(new ItemStack(RegistrarBloodMagicBlocks.DEMON_BRICK_2, 9, i + 5), "scs", "ccc", "scs", 's', baseStoneStack, 'c', willBrickStack); - addShapedRecipe(new ItemStack(RegistrarBloodMagicBlocks.DEMON_BRICK_2, 9, i + 10), "scs", "coc", "scs", 's', baseStoneStack, 'c', willBrickStack, 'o', crystalStack); - addShapedRecipe(pillarStackCrafted, "ss", "ss", "ss", 's', polishedStoneStack); - addShapedRecipe(new ItemStack(RegistrarBloodMagicBlocks.DEMON_PILLAR_2, 8, i), "ppp", "pcp", "ppp", 'p', pillarStack, 'c', crystalStack); - - addShapedRecipe(new ItemStack(RegistrarBloodMagicBlocks.DEMON_WALL_1, 6, i), "sss", "sss", 's', willBrickStack); - addShapedRecipe(new ItemStack(RegistrarBloodMagicBlocks.DEMON_WALL_1, 6, i + 5), "sss", "sss", 's', willSmallBrickStack); - addShapedRecipe(new ItemStack(RegistrarBloodMagicBlocks.DEMON_WALL_1, 6, i + 10), "sss", "sss", 's', polishedStoneStack); - - addShapedRecipe(new ItemStack(i < 2 ? RegistrarBloodMagicBlocks.DEMON_STAIRS_1 : (i < 4 ? RegistrarBloodMagicBlocks.DEMON_STAIRS_2 : RegistrarBloodMagicBlocks.DEMON_STAIRS_3), 8, i % 2), "s ", "ss ", "sss", 's', polishedStoneStack); - addShapedRecipe(new ItemStack(i < 2 ? RegistrarBloodMagicBlocks.DEMON_PILLAR_CAP_1 : (i < 4 ? RegistrarBloodMagicBlocks.DEMON_PILLAR_CAP_2 : RegistrarBloodMagicBlocks.DEMON_PILLAR_CAP_3), 6, i % 2), "sss", "sss", 's', pillarStack); - - addShapedRecipe(new ItemStack(RegistrarBloodMagicBlocks.DEMON_LIGHT, 5, i), "sgs", "ggg", "sgs", 's', polishedStoneStack, 'g', Blocks.GLOWSTONE); - - GameRegistry.addSmelting(baseStoneStack, polishedStoneStack, 0.15f); - } - - generateConstants(); - } - public static void addAltarRecipes() { } @@ -461,165 +322,4 @@ public class ModRecipes { LivingArmourDowngradeRecipeRegistry.registerRecipe(upgrade, stack, Items.NETHER_STAR, "gemDiamond", "gemDiamond", new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 4)); } } - - private static void setupDir() { - if (RECIPE_DIR == null) { - RECIPE_DIR = new File(Loader.instance().getConfigDir(), "bloodmagic/recipes"); - } - - if (!RECIPE_DIR.exists()) { - RECIPE_DIR.mkdir(); - } - } - - private static void addShapedRecipe(ItemStack result, Object... components) { - setupDir(); - - // GameRegistry.addShapedRecipe(result, components); - - Map json = new HashMap<>(); - - List pattern = new ArrayList<>(); - int i = 0; - while (i < components.length && components[i] instanceof String) { - pattern.add((String) components[i]); - i++; - } - json.put("pattern", pattern); - - boolean isOreDict = false; - Map> key = new HashMap<>(); - Character curKey = null; - for (; i < components.length; i++) { - Object o = components[i]; - if (o instanceof Character) { - if (curKey != null) - throw new IllegalArgumentException("Provided two char keys in a row"); - curKey = (Character) o; - } else { - if (curKey == null) - throw new IllegalArgumentException("Providing object without a char key"); - if (o instanceof String) - isOreDict = true; - key.put(Character.toString(curKey), serializeItem(o)); - curKey = null; - } - } - json.put("key", key); - json.put("type", isOreDict ? "forge:ore_shaped" : "minecraft:crafting_shaped"); - json.put("result", serializeItem(result)); - - // names the json the same name as the output's registry name - // repeatedly adds _alt if a file already exists - // janky I know but it works - String suffix = result.getItem().getHasSubtypes() ? "_" + result.getItemDamage() : ""; - File f = new File(RECIPE_DIR, result.getItem().getRegistryName().getResourcePath() + suffix + ".json"); - - while (f.exists()) { - suffix += "_alt"; - f = new File(RECIPE_DIR, result.getItem().getRegistryName().getResourcePath() + suffix + ".json"); - } - - try (FileWriter w = new FileWriter(f)) { - GSON.toJson(json, w); - } catch (IOException e) { - e.printStackTrace(); - } - } - - private static void addShapelessRecipe(ItemStack result, Object... components) { - setupDir(); - - // addShapelessRecipe(result, components); - - Map json = new HashMap<>(); - - boolean isOreDict = false; - List> ingredients = new ArrayList<>(); - for (Object o : components) { - if (o instanceof String) - isOreDict = true; - ingredients.add(serializeItem(o)); - } - json.put("ingredients", ingredients); - json.put("type", isOreDict ? "forge:ore_shapeless" : "minecraft:crafting_shapeless"); - json.put("result", serializeItem(result)); - - // names the json the same name as the output's registry name - // repeatedly adds _alt if a file already exists - // janky I know but it works - String suffix = result.getItem().getHasSubtypes() ? "_" + result.getItemDamage() : ""; - File f = new File(RECIPE_DIR, result.getItem().getRegistryName().getResourcePath() + suffix + ".json"); - - while (f.exists()) { - suffix += "_alt"; - f = new File(RECIPE_DIR, result.getItem().getRegistryName().getResourcePath() + suffix + ".json"); - } - - - try (FileWriter w = new FileWriter(f)) { - GSON.toJson(json, w); - } catch (IOException e) { - e.printStackTrace(); - } - } - - private static Map serializeItem(Object thing) { - if (thing instanceof Item) { - return serializeItem(new ItemStack((Item) thing)); - } - if (thing instanceof Block) { - return serializeItem(new ItemStack((Block) thing)); - } - if (thing instanceof ItemStack) { - ItemStack stack = (ItemStack) thing; - - if (stack.getItem() instanceof IBloodOrb) { - Map ret = new HashMap<>(); - BloodOrb orb = ((IBloodOrb) stack.getItem()).getOrb(stack); - ret.put("orb", orb == null ? RegistrarBloodMagic.ORB_WEAK.getRegistryName().toString() : orb.getRegistryName().toString()); - return ret; - } - - Map ret = new HashMap<>(); - ret.put("item", stack.getItem().getRegistryName().toString()); - if (stack.getItem().getHasSubtypes() || stack.getItemDamage() != 0) { - ret.put("data", stack.getItemDamage()); - } - if (stack.getCount() > 1) { - ret.put("count", stack.getCount()); - } - - if (stack.hasTagCompound()) { - throw new IllegalArgumentException("nbt not implemented"); - } - - return ret; - } - if (thing instanceof String) { - Map ret = new HashMap<>(); - USED_OD_NAMES.add((String) thing); - ret.put("item", "#" + ((String) thing).toUpperCase(Locale.ROOT)); - return ret; - } - - throw new IllegalArgumentException("Not a block, item, stack, or od name"); - } - - private static void generateConstants() { - List> json = new ArrayList<>(); - for (String s : USED_OD_NAMES) { - Map entry = new HashMap<>(); - entry.put("name", s.toUpperCase(Locale.ROOT)); - entry.put("ingredient", ImmutableMap.of("type", "forge:ore_dict", "ore", s)); - json.add(entry); - } - - try (FileWriter w = new FileWriter(new File(RECIPE_DIR, "_constants.json"))) { - GSON.toJson(json, w); - } catch (IOException e) { - e.printStackTrace(); - - } - } } diff --git a/src/main/resources/assets/bloodmagic/recipes/_constants.json b/src/main/resources/assets/bloodmagic/recipes/_constants.json new file mode 100644 index 00000000..4685f9ef --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/_constants.json @@ -0,0 +1,128 @@ +[ + { + "ingredient": { + "type": "forge:ore_dict", + "ore": "blockGlass" + }, + "name": "BLOCKGLASS" + }, + { + "ingredient": { + "type": "forge:ore_dict", + "ore": "blockIron" + }, + "name": "BLOCKIRON" + }, + { + "ingredient": { + "type": "forge:ore_dict", + "ore": "cobblestone" + }, + "name": "COBBLESTONE" + }, + { + "ingredient": { + "type": "forge:ore_dict", + "ore": "dustGlowstone" + }, + "name": "DUSTGLOWSTONE" + }, + { + "ingredient": { + "type": "forge:ore_dict", + "ore": "dustRedstone" + }, + "name": "DUSTREDSTONE" + }, + { + "ingredient": { + "type": "forge:ore_dict", + "ore": "dyeGreen" + }, + "name": "DYEGREEN" + }, + { + "ingredient": { + "type": "forge:ore_dict", + "ore": "dyePurple" + }, + "name": "DYEPURPLE" + }, + { + "ingredient": { + "type": "forge:ore_dict", + "ore": "dyeYellow" + }, + "name": "DYEYELLOW" + }, + { + "ingredient": { + "type": "forge:ore_dict", + "ore": "gemDiamond" + }, + "name": "GEMDIAMOND" + }, + { + "ingredient": { + "type": "forge:ore_dict", + "ore": "glowstone" + }, + "name": "GLOWSTONE" + }, + { + "ingredient": { + "type": "forge:ore_dict", + "ore": "ingotGold" + }, + "name": "INGOTGOLD" + }, + { + "ingredient": { + "type": "forge:ore_dict", + "ore": "ingotIron" + }, + "name": "INGOTIRON" + }, + { + "ingredient": { + "type": "forge:ore_dict", + "ore": "nuggetGold" + }, + "name": "NUGGETGOLD" + }, + { + "ingredient": { + "type": "forge:ore_dict", + "ore": "plankWood" + }, + "name": "PLANKWOOD" + }, + { + "ingredient": { + "type": "forge:ore_dict", + "ore": "stickWood" + }, + "name": "STICKWOOD" + }, + { + "ingredient": { + "type": "forge:ore_dict", + "ore": "stone" + }, + "name": "STONE" + }, + { + "ingredient": { + "type": "forge:ore_dict", + "ore": "string" + }, + "name": "STRING" + }, + { + "ingredient": { + "type": "forge:ore_dict", + "ore": "torch" + }, + "name": "TORCH" + } +] \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/activation_crystal.json b/src/main/resources/assets/bloodmagic/recipes/activation_crystal.json new file mode 100644 index 00000000..3f376baa --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/activation_crystal.json @@ -0,0 +1,16 @@ +{ + "result": { + "item": "bloodmagic:activation_crystal", + "data": 1 + }, + "ingredients": [ + { + "item": "minecraft:nether_star" + }, + { + "type": "bloodmagic:orb", + "orb": "bloodmagic:archmage" + } + ], + "type": "minecraft:crafting_shapeless" +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/alchemy_table.json b/src/main/resources/assets/bloodmagic/recipes/alchemy_table.json new file mode 100644 index 00000000..ab2cc8c2 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/alchemy_table.json @@ -0,0 +1,29 @@ +{ + "result": { + "item": "bloodmagic:alchemy_table" + }, + "pattern": [ + "sss", + "wbw", + "gog" + ], + "type": "forge:ore_shaped", + "key": { + "b": { + "item": "minecraft:blaze_rod" + }, + "s": { + "item": "#STONE" + }, + "w": { + "item": "#PLANKWOOD" + }, + "g": { + "item": "#INGOTGOLD" + }, + "o": { + "type": "bloodmagic:orb", + "orb": "bloodmagic:weak" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/altar.json b/src/main/resources/assets/bloodmagic/recipes/altar.json new file mode 100644 index 00000000..f346a26f --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/altar.json @@ -0,0 +1,26 @@ +{ + "result": { + "item": "bloodmagic:altar" + }, + "pattern": [ + "a a", + "aba", + "cdc" + ], + "type": "forge:ore_shaped", + "key": { + "a": { + "item": "#STONE" + }, + "b": { + "item": "minecraft:furnace" + }, + "c": { + "item": "#INGOTGOLD" + }, + "d": { + "item": "bloodmagic:monster_soul", + "data": 0 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/base_item_filter_0.json b/src/main/resources/assets/bloodmagic/recipes/base_item_filter_0.json new file mode 100644 index 00000000..1655e10c --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/base_item_filter_0.json @@ -0,0 +1,24 @@ +{ + "result": { + "item": "bloodmagic:base_item_filter", + "data": 0 + }, + "pattern": [ + "sgs", + "gfg", + "sgs" + ], + "type": "forge:ore_shaped", + "key": { + "s": { + "item": "#STICKWOOD" + }, + "f": { + "item": "bloodmagic:component", + "data": 10 + }, + "g": { + "item": "#BLOCKGLASS" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/base_item_filter_1.json b/src/main/resources/assets/bloodmagic/recipes/base_item_filter_1.json new file mode 100644 index 00000000..6f529b90 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/base_item_filter_1.json @@ -0,0 +1,24 @@ +{ + "result": { + "item": "bloodmagic:base_item_filter", + "data": 1 + }, + "pattern": [ + "sgs", + "gfg", + "sgs" + ], + "type": "forge:ore_shaped", + "key": { + "s": { + "item": "#STICKWOOD" + }, + "f": { + "item": "bloodmagic:component", + "data": 10 + }, + "g": { + "item": "#DYEYELLOW" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/base_item_filter_2.json b/src/main/resources/assets/bloodmagic/recipes/base_item_filter_2.json new file mode 100644 index 00000000..8f82c2f4 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/base_item_filter_2.json @@ -0,0 +1,24 @@ +{ + "result": { + "item": "bloodmagic:base_item_filter", + "data": 2 + }, + "pattern": [ + "sgs", + "gfg", + "sgs" + ], + "type": "forge:ore_shaped", + "key": { + "s": { + "item": "#STICKWOOD" + }, + "f": { + "item": "bloodmagic:component", + "data": 10 + }, + "g": { + "item": "#DYEGREEN" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/base_item_filter_3.json b/src/main/resources/assets/bloodmagic/recipes/base_item_filter_3.json new file mode 100644 index 00000000..a7459853 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/base_item_filter_3.json @@ -0,0 +1,24 @@ +{ + "result": { + "item": "bloodmagic:base_item_filter", + "data": 3 + }, + "pattern": [ + "sgs", + "gfg", + "sgs" + ], + "type": "forge:ore_shaped", + "key": { + "s": { + "item": "#STICKWOOD" + }, + "f": { + "item": "bloodmagic:component", + "data": 10 + }, + "g": { + "item": "#DYEPURPLE" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_acceleration.json b/src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_acceleration.json new file mode 100644 index 00000000..885311d0 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_acceleration.json @@ -0,0 +1,32 @@ +{ + "result": { + "item": "bloodmagic:blood_rune", + "data": 9 + }, + "pattern": [ + "aba", + "cdc", + "aea" + ], + "type": "forge:ore_shaped", + "key": { + "a": { + "item": "minecraft:bucket" + }, + "b": { + "item": "bloodmagic:slate", + "data": 3 + }, + "c": { + "item": "#INGOTGOLD" + }, + "d": { + "item": "bloodmagic:blood_rune", + "data": 1 + }, + "e": { + "type": "bloodmagic:orb", + "orb": "bloodmagic:master" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_augcapacity.json b/src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_augcapacity.json new file mode 100644 index 00000000..2c63c590 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_augcapacity.json @@ -0,0 +1,32 @@ +{ + "result": { + "item": "bloodmagic:blood_rune", + "data": 7 + }, + "pattern": [ + "aba", + "cdc", + "aea" + ], + "type": "minecraft:crafting_shaped", + "key": { + "a": { + "item": "minecraft:obsidian" + }, + "b": { + "item": "bloodmagic:slate", + "data": 3 + }, + "c": { + "item": "minecraft:bucket" + }, + "d": { + "item": "bloodmagic:blood_rune", + "data": 6 + }, + "e": { + "type": "bloodmagic:orb", + "orb": "bloodmagic:master" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_blank.json b/src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_blank.json new file mode 100644 index 00000000..1a354301 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_blank.json @@ -0,0 +1,25 @@ +{ + "result": { + "item": "bloodmagic:blood_rune", + "data": 0 + }, + "pattern": [ + "aaa", + "bcb", + "aaa" + ], + "type": "forge:ore_shaped", + "key": { + "a": { + "item": "#STONE" + }, + "b": { + "item": "bloodmagic:slate", + "data": 0 + }, + "c": { + "type": "bloodmagic:orb", + "orb": "bloodmagic:weak" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_capacity.json b/src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_capacity.json new file mode 100644 index 00000000..e3b8a876 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_capacity.json @@ -0,0 +1,28 @@ +{ + "result": { + "item": "bloodmagic:blood_rune", + "data": 6 + }, + "pattern": [ + "aba", + "bcb", + "ada" + ], + "type": "forge:ore_shaped", + "key": { + "a": { + "item": "#STONE" + }, + "b": { + "item": "minecraft:bucket" + }, + "c": { + "item": "bloodmagic:blood_rune", + "data": 0 + }, + "d": { + "item": "bloodmagic:slate", + "data": 2 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_charging.json b/src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_charging.json new file mode 100644 index 00000000..7ebc7383 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_charging.json @@ -0,0 +1,32 @@ +{ + "result": { + "item": "bloodmagic:blood_rune", + "data": 10 + }, + "pattern": [ + "RsR", + "GrG", + "ReR" + ], + "type": "forge:ore_shaped", + "key": { + "R": { + "item": "#DUSTREDSTONE" + }, + "r": { + "item": "bloodmagic:blood_rune", + "data": 0 + }, + "s": { + "item": "bloodmagic:slate", + "data": 3 + }, + "e": { + "type": "bloodmagic:orb", + "orb": "bloodmagic:master" + }, + "G": { + "item": "#GLOWSTONE" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_displacement.json b/src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_displacement.json new file mode 100644 index 00000000..54b8c8c4 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_displacement.json @@ -0,0 +1,28 @@ +{ + "result": { + "item": "bloodmagic:blood_rune", + "data": 5 + }, + "pattern": [ + "aba", + "bcb", + "ada" + ], + "type": "forge:ore_shaped", + "key": { + "a": { + "item": "#STONE" + }, + "b": { + "item": "minecraft:water_bucket" + }, + "c": { + "item": "bloodmagic:blood_rune", + "data": 0 + }, + "d": { + "item": "bloodmagic:slate", + "data": 2 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_orb.json b/src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_orb.json new file mode 100644 index 00000000..9f76c1a9 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_orb.json @@ -0,0 +1,29 @@ +{ + "result": { + "item": "bloodmagic:blood_rune", + "data": 8 + }, + "pattern": [ + "aba", + "cdc", + "aba" + ], + "type": "forge:ore_shaped", + "key": { + "a": { + "item": "#STONE" + }, + "b": { + "type": "bloodmagic:orb", + "orb": "bloodmagic:weak" + }, + "c": { + "item": "bloodmagic:blood_rune", + "data": 0 + }, + "d": { + "type": "bloodmagic:orb", + "orb": "bloodmagic:master" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_sacrifice.json b/src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_sacrifice.json new file mode 100644 index 00000000..70e2c399 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_sacrifice.json @@ -0,0 +1,32 @@ +{ + "result": { + "item": "bloodmagic:blood_rune", + "data": 3 + }, + "pattern": [ + "aba", + "cdc", + "aea" + ], + "type": "forge:ore_shaped", + "key": { + "a": { + "item": "#STONE" + }, + "b": { + "item": "bloodmagic:slate", + "data": 1 + }, + "c": { + "item": "#INGOTGOLD" + }, + "d": { + "item": "bloodmagic:blood_rune", + "data": 0 + }, + "e": { + "type": "bloodmagic:orb", + "orb": "bloodmagic:apprentice" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_selfsacrifice.json b/src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_selfsacrifice.json new file mode 100644 index 00000000..af7f3bc3 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_selfsacrifice.json @@ -0,0 +1,32 @@ +{ + "result": { + "item": "bloodmagic:blood_rune", + "data": 4 + }, + "pattern": [ + "aba", + "cdc", + "aea" + ], + "type": "forge:ore_shaped", + "key": { + "a": { + "item": "#STONE" + }, + "b": { + "item": "bloodmagic:slate", + "data": 1 + }, + "c": { + "item": "#DUSTGLOWSTONE" + }, + "d": { + "item": "bloodmagic:blood_rune", + "data": 0 + }, + "e": { + "type": "bloodmagic:orb", + "orb": "bloodmagic:apprentice" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_speed.json b/src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_speed.json new file mode 100644 index 00000000..b161a4af --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/blood_rune/blood_rune_speed.json @@ -0,0 +1,28 @@ +{ + "result": { + "item": "bloodmagic:blood_rune", + "data": 1 + }, + "pattern": [ + "aba", + "cdc", + "aba" + ], + "type": "forge:ore_shaped", + "key": { + "a": { + "item": "#STONE" + }, + "b": { + "item": "bloodmagic:slate", + "data": 0 + }, + "c": { + "item": "minecraft:sugar" + }, + "d": { + "item": "bloodmagic:blood_rune", + "data": 0 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_0.json b/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_0.json new file mode 100644 index 00000000..756d43af --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_0.json @@ -0,0 +1,25 @@ +{ + "result": { + "item": "bloodmagic:blood_tank", + "data": 0 + }, + "pattern": [ + "RBR", + "G G", + "RRR" + ], + "type": "forge:ore_shaped", + "key": { + "R": { + "item": "bloodmagic:blood_rune", + "data": 0 + }, + "B": { + "item": "bloodmagic:decorative_brick", + "data": 0 + }, + "G": { + "item": "#BLOCKGLASS" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_1.json b/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_1.json new file mode 100644 index 00000000..5167464b --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_1.json @@ -0,0 +1,26 @@ +{ + "result": { + "item": "bloodmagic:blood_tank", + "data": 1 + }, + "pattern": [ + "RBR", + "T T", + "RRR" + ], + "type": "minecraft:crafting_shaped", + "key": { + "R": { + "item": "bloodmagic:blood_rune", + "data": 0 + }, + "B": { + "item": "bloodmagic:decorative_brick", + "data": 0 + }, + "T": { + "item": "bloodmagic:blood_tank", + "data": 0 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_10.json b/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_10.json new file mode 100644 index 00000000..fdf4337f --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_10.json @@ -0,0 +1,26 @@ +{ + "result": { + "item": "bloodmagic:blood_tank", + "data": 10 + }, + "pattern": [ + "RBR", + "T T", + "RRR" + ], + "type": "minecraft:crafting_shaped", + "key": { + "R": { + "item": "bloodmagic:blood_rune", + "data": 0 + }, + "B": { + "item": "bloodmagic:decorative_brick", + "data": 0 + }, + "T": { + "item": "bloodmagic:blood_tank", + "data": 9 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_11.json b/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_11.json new file mode 100644 index 00000000..1aee0e5e --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_11.json @@ -0,0 +1,26 @@ +{ + "result": { + "item": "bloodmagic:blood_tank", + "data": 11 + }, + "pattern": [ + "RBR", + "T T", + "RRR" + ], + "type": "minecraft:crafting_shaped", + "key": { + "R": { + "item": "bloodmagic:blood_rune", + "data": 0 + }, + "B": { + "item": "bloodmagic:decorative_brick", + "data": 0 + }, + "T": { + "item": "bloodmagic:blood_tank", + "data": 10 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_12.json b/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_12.json new file mode 100644 index 00000000..ac198a0d --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_12.json @@ -0,0 +1,26 @@ +{ + "result": { + "item": "bloodmagic:blood_tank", + "data": 12 + }, + "pattern": [ + "RBR", + "T T", + "RRR" + ], + "type": "minecraft:crafting_shaped", + "key": { + "R": { + "item": "bloodmagic:blood_rune", + "data": 0 + }, + "B": { + "item": "bloodmagic:decorative_brick", + "data": 0 + }, + "T": { + "item": "bloodmagic:blood_tank", + "data": 11 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_13.json b/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_13.json new file mode 100644 index 00000000..7d3511fc --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_13.json @@ -0,0 +1,26 @@ +{ + "result": { + "item": "bloodmagic:blood_tank", + "data": 13 + }, + "pattern": [ + "RBR", + "T T", + "RRR" + ], + "type": "minecraft:crafting_shaped", + "key": { + "R": { + "item": "bloodmagic:blood_rune", + "data": 0 + }, + "B": { + "item": "bloodmagic:decorative_brick", + "data": 0 + }, + "T": { + "item": "bloodmagic:blood_tank", + "data": 12 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_14.json b/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_14.json new file mode 100644 index 00000000..057ef84b --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_14.json @@ -0,0 +1,26 @@ +{ + "result": { + "item": "bloodmagic:blood_tank", + "data": 14 + }, + "pattern": [ + "RBR", + "T T", + "RRR" + ], + "type": "minecraft:crafting_shaped", + "key": { + "R": { + "item": "bloodmagic:blood_rune", + "data": 0 + }, + "B": { + "item": "bloodmagic:decorative_brick", + "data": 0 + }, + "T": { + "item": "bloodmagic:blood_tank", + "data": 13 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_15.json b/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_15.json new file mode 100644 index 00000000..9c12b336 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_15.json @@ -0,0 +1,26 @@ +{ + "result": { + "item": "bloodmagic:blood_tank", + "data": 15 + }, + "pattern": [ + "RBR", + "T T", + "RRR" + ], + "type": "minecraft:crafting_shaped", + "key": { + "R": { + "item": "bloodmagic:blood_rune", + "data": 0 + }, + "B": { + "item": "bloodmagic:decorative_brick", + "data": 0 + }, + "T": { + "item": "bloodmagic:blood_tank", + "data": 14 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_2.json b/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_2.json new file mode 100644 index 00000000..46e11986 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_2.json @@ -0,0 +1,26 @@ +{ + "result": { + "item": "bloodmagic:blood_tank", + "data": 2 + }, + "pattern": [ + "RBR", + "T T", + "RRR" + ], + "type": "minecraft:crafting_shaped", + "key": { + "R": { + "item": "bloodmagic:blood_rune", + "data": 0 + }, + "B": { + "item": "bloodmagic:decorative_brick", + "data": 0 + }, + "T": { + "item": "bloodmagic:blood_tank", + "data": 1 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_3.json b/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_3.json new file mode 100644 index 00000000..62d52c96 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_3.json @@ -0,0 +1,26 @@ +{ + "result": { + "item": "bloodmagic:blood_tank", + "data": 3 + }, + "pattern": [ + "RBR", + "T T", + "RRR" + ], + "type": "minecraft:crafting_shaped", + "key": { + "R": { + "item": "bloodmagic:blood_rune", + "data": 0 + }, + "B": { + "item": "bloodmagic:decorative_brick", + "data": 0 + }, + "T": { + "item": "bloodmagic:blood_tank", + "data": 2 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_4.json b/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_4.json new file mode 100644 index 00000000..88b6b83e --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_4.json @@ -0,0 +1,26 @@ +{ + "result": { + "item": "bloodmagic:blood_tank", + "data": 4 + }, + "pattern": [ + "RBR", + "T T", + "RRR" + ], + "type": "minecraft:crafting_shaped", + "key": { + "R": { + "item": "bloodmagic:blood_rune", + "data": 0 + }, + "B": { + "item": "bloodmagic:decorative_brick", + "data": 0 + }, + "T": { + "item": "bloodmagic:blood_tank", + "data": 3 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_5.json b/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_5.json new file mode 100644 index 00000000..8d6db55e --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_5.json @@ -0,0 +1,26 @@ +{ + "result": { + "item": "bloodmagic:blood_tank", + "data": 5 + }, + "pattern": [ + "RBR", + "T T", + "RRR" + ], + "type": "minecraft:crafting_shaped", + "key": { + "R": { + "item": "bloodmagic:blood_rune", + "data": 0 + }, + "B": { + "item": "bloodmagic:decorative_brick", + "data": 0 + }, + "T": { + "item": "bloodmagic:blood_tank", + "data": 4 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_6.json b/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_6.json new file mode 100644 index 00000000..9304a747 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_6.json @@ -0,0 +1,26 @@ +{ + "result": { + "item": "bloodmagic:blood_tank", + "data": 6 + }, + "pattern": [ + "RBR", + "T T", + "RRR" + ], + "type": "minecraft:crafting_shaped", + "key": { + "R": { + "item": "bloodmagic:blood_rune", + "data": 0 + }, + "B": { + "item": "bloodmagic:decorative_brick", + "data": 0 + }, + "T": { + "item": "bloodmagic:blood_tank", + "data": 5 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_7.json b/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_7.json new file mode 100644 index 00000000..7decd313 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_7.json @@ -0,0 +1,26 @@ +{ + "result": { + "item": "bloodmagic:blood_tank", + "data": 7 + }, + "pattern": [ + "RBR", + "T T", + "RRR" + ], + "type": "minecraft:crafting_shaped", + "key": { + "R": { + "item": "bloodmagic:blood_rune", + "data": 0 + }, + "B": { + "item": "bloodmagic:decorative_brick", + "data": 0 + }, + "T": { + "item": "bloodmagic:blood_tank", + "data": 6 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_8.json b/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_8.json new file mode 100644 index 00000000..8181bfae --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_8.json @@ -0,0 +1,26 @@ +{ + "result": { + "item": "bloodmagic:blood_tank", + "data": 8 + }, + "pattern": [ + "RBR", + "T T", + "RRR" + ], + "type": "minecraft:crafting_shaped", + "key": { + "R": { + "item": "bloodmagic:blood_rune", + "data": 0 + }, + "B": { + "item": "bloodmagic:decorative_brick", + "data": 0 + }, + "T": { + "item": "bloodmagic:blood_tank", + "data": 7 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_9.json b/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_9.json new file mode 100644 index 00000000..e1237382 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/blood_tank/blood_tank_9.json @@ -0,0 +1,26 @@ +{ + "result": { + "item": "bloodmagic:blood_tank", + "data": 9 + }, + "pattern": [ + "RBR", + "T T", + "RRR" + ], + "type": "minecraft:crafting_shaped", + "key": { + "R": { + "item": "bloodmagic:blood_rune", + "data": 0 + }, + "B": { + "item": "bloodmagic:decorative_brick", + "data": 0 + }, + "T": { + "item": "bloodmagic:blood_tank", + "data": 8 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/decorative_brick_bloodstone_brick.json b/src/main/resources/assets/bloodmagic/recipes/decorative_brick_bloodstone_brick.json new file mode 100644 index 00000000..636c8710 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/decorative_brick_bloodstone_brick.json @@ -0,0 +1,18 @@ +{ + "result": { + "item": "bloodmagic:decorative_brick", + "data": 1, + "count": 4 + }, + "pattern": [ + "aa", + "aa" + ], + "type": "minecraft:crafting_shaped", + "key": { + "a": { + "item": "bloodmagic:decorative_brick", + "data": 0 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/decorative_brick_bloodstone_tile.json b/src/main/resources/assets/bloodmagic/recipes/decorative_brick_bloodstone_tile.json new file mode 100644 index 00000000..9dc01b3e --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/decorative_brick_bloodstone_tile.json @@ -0,0 +1,17 @@ +{ + "result": { + "item": "bloodmagic:decorative_brick", + "data": 0, + "count": 16 + }, + "ingredients": [ + { + "item": "#STONE" + }, + { + "item": "bloodmagic:blood_shard", + "data": 0 + } + ], + "type": "forge:ore_shapeless" +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_1_brick1_corrosive.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_1_brick1_corrosive.json new file mode 100644 index 00000000..021815ad --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_1_brick1_corrosive.json @@ -0,0 +1,18 @@ +{ + "result": { + "item": "bloodmagic:demon_brick_1", + "data": 1, + "count": 4 + }, + "pattern": [ + "ss", + "ss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 1 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_1_brick1_destructive.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_1_brick1_destructive.json new file mode 100644 index 00000000..ce28a636 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_1_brick1_destructive.json @@ -0,0 +1,18 @@ +{ + "result": { + "item": "bloodmagic:demon_brick_1", + "data": 2, + "count": 4 + }, + "pattern": [ + "ss", + "ss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 2 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_1_brick1_raw.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_1_brick1_raw.json new file mode 100644 index 00000000..60a2b525 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_1_brick1_raw.json @@ -0,0 +1,18 @@ +{ + "result": { + "item": "bloodmagic:demon_brick_1", + "data": 0, + "count": 4 + }, + "pattern": [ + "ss", + "ss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 0 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_1_brick1_steadfast.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_1_brick1_steadfast.json new file mode 100644 index 00000000..7aff9cee --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_1_brick1_steadfast.json @@ -0,0 +1,18 @@ +{ + "result": { + "item": "bloodmagic:demon_brick_1", + "data": 4, + "count": 4 + }, + "pattern": [ + "ss", + "ss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 4 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_1_brick1_vengeful.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_1_brick1_vengeful.json new file mode 100644 index 00000000..4904ae75 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_1_brick1_vengeful.json @@ -0,0 +1,18 @@ +{ + "result": { + "item": "bloodmagic:demon_brick_1", + "data": 3, + "count": 4 + }, + "pattern": [ + "ss", + "ss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 3 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_smallbrick_corrosive.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_smallbrick_corrosive.json new file mode 100644 index 00000000..11e92c0e --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_smallbrick_corrosive.json @@ -0,0 +1,17 @@ +{ + "result": { + "item": "bloodmagic:demon_brick_2", + "data": 1 + }, + "pattern": [ + "ss", + "ss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_brick_1", + "data": 1 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_smallbrick_destructive.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_smallbrick_destructive.json new file mode 100644 index 00000000..b3956493 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_smallbrick_destructive.json @@ -0,0 +1,17 @@ +{ + "result": { + "item": "bloodmagic:demon_brick_2", + "data": 2 + }, + "pattern": [ + "ss", + "ss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_brick_1", + "data": 2 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_smallbrick_raw.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_smallbrick_raw.json new file mode 100644 index 00000000..7137a604 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_smallbrick_raw.json @@ -0,0 +1,17 @@ +{ + "result": { + "item": "bloodmagic:demon_brick_2", + "data": 0 + }, + "pattern": [ + "ss", + "ss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_brick_1", + "data": 0 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_smallbrick_steadfast.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_smallbrick_steadfast.json new file mode 100644 index 00000000..24142cf4 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_smallbrick_steadfast.json @@ -0,0 +1,17 @@ +{ + "result": { + "item": "bloodmagic:demon_brick_2", + "data": 4 + }, + "pattern": [ + "ss", + "ss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_brick_1", + "data": 4 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_smallbrick_vengeful.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_smallbrick_vengeful.json new file mode 100644 index 00000000..6a889c25 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_smallbrick_vengeful.json @@ -0,0 +1,17 @@ +{ + "result": { + "item": "bloodmagic:demon_brick_2", + "data": 3 + }, + "pattern": [ + "ss", + "ss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_brick_1", + "data": 3 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tile_corrosive.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tile_corrosive.json new file mode 100644 index 00000000..cc134c02 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tile_corrosive.json @@ -0,0 +1,23 @@ +{ + "result": { + "item": "bloodmagic:demon_brick_2", + "data": 6, + "count": 9 + }, + "pattern": [ + "scs", + "ccc", + "scs" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 1 + }, + "c": { + "item": "bloodmagic:demon_brick_1", + "data": 1 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tile_destructive.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tile_destructive.json new file mode 100644 index 00000000..305ed3a7 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tile_destructive.json @@ -0,0 +1,23 @@ +{ + "result": { + "item": "bloodmagic:demon_brick_2", + "data": 7, + "count": 9 + }, + "pattern": [ + "scs", + "ccc", + "scs" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 2 + }, + "c": { + "item": "bloodmagic:demon_brick_1", + "data": 2 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tile_raw.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tile_raw.json new file mode 100644 index 00000000..a9aa5a77 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tile_raw.json @@ -0,0 +1,23 @@ +{ + "result": { + "item": "bloodmagic:demon_brick_2", + "data": 5, + "count": 9 + }, + "pattern": [ + "scs", + "ccc", + "scs" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 0 + }, + "c": { + "item": "bloodmagic:demon_brick_1", + "data": 0 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tile_steadfast.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tile_steadfast.json new file mode 100644 index 00000000..718356e2 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tile_steadfast.json @@ -0,0 +1,23 @@ +{ + "result": { + "item": "bloodmagic:demon_brick_2", + "data": 9, + "count": 9 + }, + "pattern": [ + "scs", + "ccc", + "scs" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 4 + }, + "c": { + "item": "bloodmagic:demon_brick_1", + "data": 4 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tile_vengeful.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tile_vengeful.json new file mode 100644 index 00000000..caa3ad55 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tile_vengeful.json @@ -0,0 +1,23 @@ +{ + "result": { + "item": "bloodmagic:demon_brick_2", + "data": 8, + "count": 9 + }, + "pattern": [ + "scs", + "ccc", + "scs" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 3 + }, + "c": { + "item": "bloodmagic:demon_brick_1", + "data": 3 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tilespecial_corrosive.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tilespecial_corrosive.json new file mode 100644 index 00000000..46cc1293 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tilespecial_corrosive.json @@ -0,0 +1,27 @@ +{ + "result": { + "item": "bloodmagic:demon_brick_2", + "data": 11, + "count": 9 + }, + "pattern": [ + "scs", + "coc", + "scs" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 1 + }, + "c": { + "item": "bloodmagic:demon_brick_1", + "data": 1 + }, + "o": { + "item": "bloodmagic:item_demon_crystal", + "data": 1 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tilespecial_destructive.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tilespecial_destructive.json new file mode 100644 index 00000000..17bc0d0e --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tilespecial_destructive.json @@ -0,0 +1,27 @@ +{ + "result": { + "item": "bloodmagic:demon_brick_2", + "data": 12, + "count": 9 + }, + "pattern": [ + "scs", + "coc", + "scs" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 2 + }, + "c": { + "item": "bloodmagic:demon_brick_1", + "data": 2 + }, + "o": { + "item": "bloodmagic:item_demon_crystal", + "data": 2 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tilespecial_raw.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tilespecial_raw.json new file mode 100644 index 00000000..0e6832a4 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tilespecial_raw.json @@ -0,0 +1,27 @@ +{ + "result": { + "item": "bloodmagic:demon_brick_2", + "data": 10, + "count": 9 + }, + "pattern": [ + "scs", + "coc", + "scs" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 0 + }, + "c": { + "item": "bloodmagic:demon_brick_1", + "data": 0 + }, + "o": { + "item": "bloodmagic:item_demon_crystal", + "data": 0 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tilespecial_steadfast.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tilespecial_steadfast.json new file mode 100644 index 00000000..d221cbe8 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tilespecial_steadfast.json @@ -0,0 +1,27 @@ +{ + "result": { + "item": "bloodmagic:demon_brick_2", + "data": 14, + "count": 9 + }, + "pattern": [ + "scs", + "coc", + "scs" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 4 + }, + "c": { + "item": "bloodmagic:demon_brick_1", + "data": 4 + }, + "o": { + "item": "bloodmagic:item_demon_crystal", + "data": 4 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tilespecial_vengeful.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tilespecial_vengeful.json new file mode 100644 index 00000000..32fbbeec --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_brick_2_tilespecial_vengeful.json @@ -0,0 +1,27 @@ +{ + "result": { + "item": "bloodmagic:demon_brick_2", + "data": 13, + "count": 9 + }, + "pattern": [ + "scs", + "coc", + "scs" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 3 + }, + "c": { + "item": "bloodmagic:demon_brick_1", + "data": 3 + }, + "o": { + "item": "bloodmagic:item_demon_crystal", + "data": 3 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_extras_stone_corrosive.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_extras_stone_corrosive.json new file mode 100644 index 00000000..28bf109a --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_extras_stone_corrosive.json @@ -0,0 +1,38 @@ +{ + "result": { + "item": "bloodmagic:demon_extras", + "data": 1, + "count": 16 + }, + "ingredients": [ + { + "item": "bloodmagic:item_demon_crystal", + "data": 1 + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + } + ], + "type": "forge:ore_shapeless" +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_extras_stone_destructive.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_extras_stone_destructive.json new file mode 100644 index 00000000..b190c56f --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_extras_stone_destructive.json @@ -0,0 +1,38 @@ +{ + "result": { + "item": "bloodmagic:demon_extras", + "data": 2, + "count": 16 + }, + "ingredients": [ + { + "item": "bloodmagic:item_demon_crystal", + "data": 2 + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + } + ], + "type": "forge:ore_shapeless" +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_extras_stone_raw.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_extras_stone_raw.json new file mode 100644 index 00000000..aeb276b6 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_extras_stone_raw.json @@ -0,0 +1,38 @@ +{ + "result": { + "item": "bloodmagic:demon_extras", + "data": 0, + "count": 16 + }, + "ingredients": [ + { + "item": "bloodmagic:item_demon_crystal", + "data": 0 + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + } + ], + "type": "forge:ore_shapeless" +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_extras_stone_steadfast.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_extras_stone_steadfast.json new file mode 100644 index 00000000..a03834f8 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_extras_stone_steadfast.json @@ -0,0 +1,38 @@ +{ + "result": { + "item": "bloodmagic:demon_extras", + "data": 4, + "count": 16 + }, + "ingredients": [ + { + "item": "bloodmagic:item_demon_crystal", + "data": 4 + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + } + ], + "type": "forge:ore_shapeless" +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_extras_stone_vengeful.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_extras_stone_vengeful.json new file mode 100644 index 00000000..86e63596 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_extras_stone_vengeful.json @@ -0,0 +1,38 @@ +{ + "result": { + "item": "bloodmagic:demon_extras", + "data": 3, + "count": 16 + }, + "ingredients": [ + { + "item": "bloodmagic:item_demon_crystal", + "data": 3 + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + } + ], + "type": "forge:ore_shapeless" +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_light_corrosive.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_light_corrosive.json new file mode 100644 index 00000000..6396fc8f --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_light_corrosive.json @@ -0,0 +1,22 @@ +{ + "result": { + "item": "bloodmagic:demon_light", + "data": 1, + "count": 5 + }, + "pattern": [ + "sgs", + "ggg", + "sgs" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 6 + }, + "g": { + "item": "minecraft:glowstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_light_destructive.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_light_destructive.json new file mode 100644 index 00000000..d7d99aa5 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_light_destructive.json @@ -0,0 +1,22 @@ +{ + "result": { + "item": "bloodmagic:demon_light", + "data": 2, + "count": 5 + }, + "pattern": [ + "sgs", + "ggg", + "sgs" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 7 + }, + "g": { + "item": "minecraft:glowstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_light_raw.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_light_raw.json new file mode 100644 index 00000000..8817d3ad --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_light_raw.json @@ -0,0 +1,22 @@ +{ + "result": { + "item": "bloodmagic:demon_light", + "data": 0, + "count": 5 + }, + "pattern": [ + "sgs", + "ggg", + "sgs" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 5 + }, + "g": { + "item": "minecraft:glowstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_light_steadfast.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_light_steadfast.json new file mode 100644 index 00000000..cf27ceb3 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_light_steadfast.json @@ -0,0 +1,22 @@ +{ + "result": { + "item": "bloodmagic:demon_light", + "data": 4, + "count": 5 + }, + "pattern": [ + "sgs", + "ggg", + "sgs" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 9 + }, + "g": { + "item": "minecraft:glowstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_light_vengeful.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_light_vengeful.json new file mode 100644 index 00000000..dfcf5d75 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_light_vengeful.json @@ -0,0 +1,22 @@ +{ + "result": { + "item": "bloodmagic:demon_light", + "data": 3, + "count": 5 + }, + "pattern": [ + "sgs", + "ggg", + "sgs" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 8 + }, + "g": { + "item": "minecraft:glowstone" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_1_corrosive.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_1_corrosive.json new file mode 100644 index 00000000..4448dbfe --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_1_corrosive.json @@ -0,0 +1,19 @@ +{ + "result": { + "item": "bloodmagic:demon_pillar_1", + "data": 1, + "count": 6 + }, + "pattern": [ + "ss", + "ss", + "ss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 6 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_1_destructive.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_1_destructive.json new file mode 100644 index 00000000..c7ae8aed --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_1_destructive.json @@ -0,0 +1,19 @@ +{ + "result": { + "item": "bloodmagic:demon_pillar_1", + "data": 2, + "count": 6 + }, + "pattern": [ + "ss", + "ss", + "ss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 7 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_1_raw.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_1_raw.json new file mode 100644 index 00000000..afee6a8d --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_1_raw.json @@ -0,0 +1,19 @@ +{ + "result": { + "item": "bloodmagic:demon_pillar_1", + "data": 0, + "count": 6 + }, + "pattern": [ + "ss", + "ss", + "ss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 5 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_1_steadfast.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_1_steadfast.json new file mode 100644 index 00000000..fbf5d7e0 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_1_steadfast.json @@ -0,0 +1,19 @@ +{ + "result": { + "item": "bloodmagic:demon_pillar_1", + "data": 4, + "count": 6 + }, + "pattern": [ + "ss", + "ss", + "ss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 9 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_1_vengeful.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_1_vengeful.json new file mode 100644 index 00000000..f9f079d6 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_1_vengeful.json @@ -0,0 +1,19 @@ +{ + "result": { + "item": "bloodmagic:demon_pillar_1", + "data": 3, + "count": 6 + }, + "pattern": [ + "ss", + "ss", + "ss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 8 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_2_corrosive.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_2_corrosive.json new file mode 100644 index 00000000..e74a80a8 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_2_corrosive.json @@ -0,0 +1,23 @@ +{ + "result": { + "item": "bloodmagic:demon_pillar_2", + "data": 1, + "count": 8 + }, + "pattern": [ + "ppp", + "pcp", + "ppp" + ], + "type": "minecraft:crafting_shaped", + "key": { + "p": { + "item": "bloodmagic:demon_pillar_1", + "data": 1 + }, + "c": { + "item": "bloodmagic:item_demon_crystal", + "data": 1 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_2_destructive.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_2_destructive.json new file mode 100644 index 00000000..8869bc5f --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_2_destructive.json @@ -0,0 +1,23 @@ +{ + "result": { + "item": "bloodmagic:demon_pillar_2", + "data": 2, + "count": 8 + }, + "pattern": [ + "ppp", + "pcp", + "ppp" + ], + "type": "minecraft:crafting_shaped", + "key": { + "p": { + "item": "bloodmagic:demon_pillar_1", + "data": 2 + }, + "c": { + "item": "bloodmagic:item_demon_crystal", + "data": 2 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_2_raw.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_2_raw.json new file mode 100644 index 00000000..cdc818ac --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_2_raw.json @@ -0,0 +1,23 @@ +{ + "result": { + "item": "bloodmagic:demon_pillar_2", + "data": 0, + "count": 8 + }, + "pattern": [ + "ppp", + "pcp", + "ppp" + ], + "type": "minecraft:crafting_shaped", + "key": { + "p": { + "item": "bloodmagic:demon_pillar_1", + "data": 0 + }, + "c": { + "item": "bloodmagic:item_demon_crystal", + "data": 0 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_2_steadfast.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_2_steadfast.json new file mode 100644 index 00000000..fab79b32 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_2_steadfast.json @@ -0,0 +1,23 @@ +{ + "result": { + "item": "bloodmagic:demon_pillar_2", + "data": 4, + "count": 8 + }, + "pattern": [ + "ppp", + "pcp", + "ppp" + ], + "type": "minecraft:crafting_shaped", + "key": { + "p": { + "item": "bloodmagic:demon_pillar_1", + "data": 4 + }, + "c": { + "item": "bloodmagic:item_demon_crystal", + "data": 4 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_2_vengeful.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_2_vengeful.json new file mode 100644 index 00000000..2b65e834 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_2_vengeful.json @@ -0,0 +1,23 @@ +{ + "result": { + "item": "bloodmagic:demon_pillar_2", + "data": 3, + "count": 8 + }, + "pattern": [ + "ppp", + "pcp", + "ppp" + ], + "type": "minecraft:crafting_shaped", + "key": { + "p": { + "item": "bloodmagic:demon_pillar_1", + "data": 3 + }, + "c": { + "item": "bloodmagic:item_demon_crystal", + "data": 3 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_cap_1_corrosive.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_cap_1_corrosive.json new file mode 100644 index 00000000..7f711d0c --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_cap_1_corrosive.json @@ -0,0 +1,18 @@ +{ + "result": { + "item": "bloodmagic:demon_pillar_cap_1", + "data": 1, + "count": 6 + }, + "pattern": [ + "sss", + "sss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_pillar_1", + "data": 1 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_cap_1_raw.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_cap_1_raw.json new file mode 100644 index 00000000..ba1305d5 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_cap_1_raw.json @@ -0,0 +1,18 @@ +{ + "result": { + "item": "bloodmagic:demon_pillar_cap_1", + "data": 0, + "count": 6 + }, + "pattern": [ + "sss", + "sss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_pillar_1", + "data": 0 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_cap_2_destructive.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_cap_2_destructive.json new file mode 100644 index 00000000..4b1f890a --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_cap_2_destructive.json @@ -0,0 +1,18 @@ +{ + "result": { + "item": "bloodmagic:demon_pillar_cap_2", + "data": 0, + "count": 6 + }, + "pattern": [ + "sss", + "sss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_pillar_1", + "data": 2 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_cap_2_vengeful.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_cap_2_vengeful.json new file mode 100644 index 00000000..7a19d3cf --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_cap_2_vengeful.json @@ -0,0 +1,18 @@ +{ + "result": { + "item": "bloodmagic:demon_pillar_cap_2", + "data": 1, + "count": 6 + }, + "pattern": [ + "sss", + "sss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_pillar_1", + "data": 3 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_cap_3_steadfast.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_cap_3_steadfast.json new file mode 100644 index 00000000..a0f4f58e --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_pillar_cap_3_steadfast.json @@ -0,0 +1,17 @@ +{ + "result": { + "item": "bloodmagic:demon_pillar_cap_3", + "count": 6 + }, + "pattern": [ + "sss", + "sss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_pillar_1", + "data": 4 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_stairs_1_corrosive.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_stairs_1_corrosive.json new file mode 100644 index 00000000..0d2824b6 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_stairs_1_corrosive.json @@ -0,0 +1,19 @@ +{ + "result": { + "item": "bloodmagic:demon_stairs_1", + "data": 1, + "count": 8 + }, + "pattern": [ + "s ", + "ss ", + "sss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 6 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_stairs_1_raw.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_stairs_1_raw.json new file mode 100644 index 00000000..3e4ff319 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_stairs_1_raw.json @@ -0,0 +1,19 @@ +{ + "result": { + "item": "bloodmagic:demon_stairs_1", + "data": 0, + "count": 8 + }, + "pattern": [ + "s ", + "ss ", + "sss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 5 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_stairs_2_destructive.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_stairs_2_destructive.json new file mode 100644 index 00000000..6d6a96f5 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_stairs_2_destructive.json @@ -0,0 +1,19 @@ +{ + "result": { + "item": "bloodmagic:demon_stairs_2", + "data": 0, + "count": 8 + }, + "pattern": [ + "s ", + "ss ", + "sss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 7 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_stairs_2_vengeful.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_stairs_2_vengeful.json new file mode 100644 index 00000000..77527b86 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_stairs_2_vengeful.json @@ -0,0 +1,19 @@ +{ + "result": { + "item": "bloodmagic:demon_stairs_2", + "data": 1, + "count": 8 + }, + "pattern": [ + "s ", + "ss ", + "sss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 8 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_stairs_3_steadfast.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_stairs_3_steadfast.json new file mode 100644 index 00000000..9fcdcbf9 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_stairs_3_steadfast.json @@ -0,0 +1,18 @@ +{ + "result": { + "item": "bloodmagic:demon_stairs_3", + "count": 8 + }, + "pattern": [ + "s ", + "ss ", + "sss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 9 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_brick_corrosive.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_brick_corrosive.json new file mode 100644 index 00000000..7b48b030 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_brick_corrosive.json @@ -0,0 +1,18 @@ +{ + "result": { + "item": "bloodmagic:demon_wall_1", + "data": 1, + "count": 6 + }, + "pattern": [ + "sss", + "sss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_brick_1", + "data": 1 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_brick_destructive.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_brick_destructive.json new file mode 100644 index 00000000..e1b23e21 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_brick_destructive.json @@ -0,0 +1,18 @@ +{ + "result": { + "item": "bloodmagic:demon_wall_1", + "data": 2, + "count": 6 + }, + "pattern": [ + "sss", + "sss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_brick_1", + "data": 2 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_brick_raw.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_brick_raw.json new file mode 100644 index 00000000..25b47dec --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_brick_raw.json @@ -0,0 +1,18 @@ +{ + "result": { + "item": "bloodmagic:demon_wall_1", + "data": 0, + "count": 6 + }, + "pattern": [ + "sss", + "sss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_brick_1", + "data": 0 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_brick_steadfast.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_brick_steadfast.json new file mode 100644 index 00000000..e7967dfa --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_brick_steadfast.json @@ -0,0 +1,18 @@ +{ + "result": { + "item": "bloodmagic:demon_wall_1", + "data": 4, + "count": 6 + }, + "pattern": [ + "sss", + "sss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_brick_1", + "data": 4 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_brick_vengeful.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_brick_vengeful.json new file mode 100644 index 00000000..98d5ec24 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_brick_vengeful.json @@ -0,0 +1,18 @@ +{ + "result": { + "item": "bloodmagic:demon_wall_1", + "data": 3, + "count": 6 + }, + "pattern": [ + "sss", + "sss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_brick_1", + "data": 3 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_large_corrosive.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_large_corrosive.json new file mode 100644 index 00000000..62ea247b --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_large_corrosive.json @@ -0,0 +1,18 @@ +{ + "result": { + "item": "bloodmagic:demon_wall_1", + "data": 11, + "count": 6 + }, + "pattern": [ + "sss", + "sss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 6 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_large_destructive.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_large_destructive.json new file mode 100644 index 00000000..e00e4198 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_large_destructive.json @@ -0,0 +1,18 @@ +{ + "result": { + "item": "bloodmagic:demon_wall_1", + "data": 12, + "count": 6 + }, + "pattern": [ + "sss", + "sss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 7 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_large_raw.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_large_raw.json new file mode 100644 index 00000000..791bdb5c --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_large_raw.json @@ -0,0 +1,18 @@ +{ + "result": { + "item": "bloodmagic:demon_wall_1", + "data": 10, + "count": 6 + }, + "pattern": [ + "sss", + "sss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 5 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_large_steadfast.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_large_steadfast.json new file mode 100644 index 00000000..16a07805 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_large_steadfast.json @@ -0,0 +1,18 @@ +{ + "result": { + "item": "bloodmagic:demon_wall_1", + "data": 14, + "count": 6 + }, + "pattern": [ + "sss", + "sss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 9 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_large_vengeful.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_large_vengeful.json new file mode 100644 index 00000000..33031c4d --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_large_vengeful.json @@ -0,0 +1,18 @@ +{ + "result": { + "item": "bloodmagic:demon_wall_1", + "data": 13, + "count": 6 + }, + "pattern": [ + "sss", + "sss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_extras", + "data": 8 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_smallbrick_corrosive.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_smallbrick_corrosive.json new file mode 100644 index 00000000..32bc21f7 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_smallbrick_corrosive.json @@ -0,0 +1,18 @@ +{ + "result": { + "item": "bloodmagic:demon_wall_1", + "data": 6, + "count": 6 + }, + "pattern": [ + "sss", + "sss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_brick_2", + "data": 1 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_smallbrick_destructive.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_smallbrick_destructive.json new file mode 100644 index 00000000..2f4fbf18 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_smallbrick_destructive.json @@ -0,0 +1,18 @@ +{ + "result": { + "item": "bloodmagic:demon_wall_1", + "data": 7, + "count": 6 + }, + "pattern": [ + "sss", + "sss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_brick_2", + "data": 2 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_smallbrick_raw.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_smallbrick_raw.json new file mode 100644 index 00000000..8c42b8c9 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_smallbrick_raw.json @@ -0,0 +1,18 @@ +{ + "result": { + "item": "bloodmagic:demon_wall_1", + "data": 5, + "count": 6 + }, + "pattern": [ + "sss", + "sss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_brick_2", + "data": 0 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_smallbrick_steadfast.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_smallbrick_steadfast.json new file mode 100644 index 00000000..b94df87c --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_smallbrick_steadfast.json @@ -0,0 +1,18 @@ +{ + "result": { + "item": "bloodmagic:demon_wall_1", + "data": 9, + "count": 6 + }, + "pattern": [ + "sss", + "sss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_brick_2", + "data": 4 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_smallbrick_vengeful.json b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_smallbrick_vengeful.json new file mode 100644 index 00000000..15ecb860 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/demon_decor/demon_wall_1_smallbrick_vengeful.json @@ -0,0 +1,18 @@ +{ + "result": { + "item": "bloodmagic:demon_wall_1", + "data": 8, + "count": 6 + }, + "pattern": [ + "sss", + "sss" + ], + "type": "minecraft:crafting_shaped", + "key": { + "s": { + "item": "bloodmagic:demon_brick_2", + "data": 3 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/experience_tome.json b/src/main/resources/assets/bloodmagic/recipes/experience_tome.json new file mode 100644 index 00000000..12dbe103 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/experience_tome.json @@ -0,0 +1,33 @@ +{ + "result": { + "item": "bloodmagic:experience_tome" + }, + "pattern": [ + "ses", + "lbl", + "gog" + ], + "type": "forge:ore_shaped", + "key": { + "b": { + "item": "minecraft:enchanted_book" + }, + "s": { + "item": "#STRING" + }, + "e": { + "item": "minecraft:lapis_block" + }, + "g": { + "item": "#INGOTGOLD" + }, + "l": { + "item": "bloodmagic:slate", + "data": 2 + }, + "o": { + "type": "bloodmagic:orb", + "orb": "bloodmagic:magician" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/incense_altar.json b/src/main/resources/assets/bloodmagic/recipes/incense_altar.json new file mode 100644 index 00000000..4748c205 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/incense_altar.json @@ -0,0 +1,27 @@ +{ + "result": { + "item": "bloodmagic:incense_altar" + }, + "pattern": [ + "s s", + "shs", + "coc" + ], + "type": "forge:ore_shaped", + "key": { + "s": { + "item": "#STONE" + }, + "c": { + "item": "#COBBLESTONE" + }, + "h": { + "item": "minecraft:coal", + "data": 1 + }, + "o": { + "type": "bloodmagic:orb", + "orb": "bloodmagic:weak" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/lava_crystal.json b/src/main/resources/assets/bloodmagic/recipes/lava_crystal.json new file mode 100644 index 00000000..e0311e8f --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/lava_crystal.json @@ -0,0 +1,29 @@ +{ + "result": { + "item": "bloodmagic:lava_crystal" + }, + "pattern": [ + "aba", + "bcb", + "ded" + ], + "type": "forge:ore_shaped", + "key": { + "a": { + "item": "#BLOCKGLASS" + }, + "b": { + "item": "minecraft:lava_bucket" + }, + "c": { + "type": "bloodmagic:orb", + "orb": "bloodmagic:weak" + }, + "d": { + "item": "minecraft:obsidian" + }, + "e": { + "item": "#GEMDIAMOND" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/mimic_nohitbox.json b/src/main/resources/assets/bloodmagic/recipes/mimic_nohitbox.json new file mode 100644 index 00000000..361f9ed3 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/mimic_nohitbox.json @@ -0,0 +1,27 @@ +{ + "result": { + "item": "bloodmagic:mimic", + "data": 0, + "count": 4 + }, + "pattern": [ + "b b", + " r ", + "bob" + ], + "type": "minecraft:crafting_shaped", + "key": { + "b": { + "item": "bloodmagic:decorative_brick", + "data": 0 + }, + "r": { + "item": "bloodmagic:blood_rune", + "data": 0 + }, + "o": { + "type": "bloodmagic:orb", + "orb": "bloodmagic:magician" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/mimic_solidclear.json b/src/main/resources/assets/bloodmagic/recipes/mimic_solidclear.json new file mode 100644 index 00000000..a14fa6e0 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/mimic_solidclear.json @@ -0,0 +1,30 @@ +{ + "result": { + "item": "bloodmagic:mimic", + "data": 2, + "count": 4 + }, + "pattern": [ + "bsb", + "srs", + "bob" + ], + "type": "forge:ore_shaped", + "key": { + "b": { + "item": "bloodmagic:decorative_brick", + "data": 0 + }, + "r": { + "item": "bloodmagic:blood_rune", + "data": 0 + }, + "s": { + "item": "#BLOCKGLASS" + }, + "o": { + "type": "bloodmagic:orb", + "orb": "bloodmagic:magician" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/mimic_solidlight.json b/src/main/resources/assets/bloodmagic/recipes/mimic_solidlight.json new file mode 100644 index 00000000..7db4b442 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/mimic_solidlight.json @@ -0,0 +1,33 @@ +{ + "result": { + "item": "bloodmagic:mimic", + "data": 3, + "count": 2 + }, + "pattern": [ + "bnb", + "trt", + "bob" + ], + "type": "forge:ore_shaped", + "key": { + "b": { + "item": "bloodmagic:decorative_brick", + "data": 0 + }, + "r": { + "item": "bloodmagic:blood_rune", + "data": 0 + }, + "t": { + "item": "#TORCH" + }, + "n": { + "item": "#GLOWSTONE" + }, + "o": { + "type": "bloodmagic:orb", + "orb": "bloodmagic:magician" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/mimic_solidopaque.json b/src/main/resources/assets/bloodmagic/recipes/mimic_solidopaque.json new file mode 100644 index 00000000..4c281089 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/mimic_solidopaque.json @@ -0,0 +1,30 @@ +{ + "result": { + "item": "bloodmagic:mimic", + "data": 1, + "count": 4 + }, + "pattern": [ + "bsb", + "srs", + "bob" + ], + "type": "forge:ore_shaped", + "key": { + "b": { + "item": "bloodmagic:decorative_brick", + "data": 0 + }, + "r": { + "item": "bloodmagic:blood_rune", + "data": 0 + }, + "s": { + "item": "#STONE" + }, + "o": { + "type": "bloodmagic:orb", + "orb": "bloodmagic:magician" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/pack_sacrifice.json b/src/main/resources/assets/bloodmagic/recipes/pack_sacrifice.json new file mode 100644 index 00000000..e82cd67e --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/pack_sacrifice.json @@ -0,0 +1,29 @@ +{ + "result": { + "item": "bloodmagic:pack_sacrifice" + }, + "pattern": [ + "aba", + "cdc", + "aea" + ], + "type": "forge:ore_shaped", + "key": { + "a": { + "item": "#BLOCKGLASS" + }, + "b": { + "item": "minecraft:bucket" + }, + "c": { + "item": "#INGOTIRON" + }, + "d": { + "item": "minecraft:leather_chestplate" + }, + "e": { + "item": "bloodmagic:slate", + "data": 0 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/pack_self_sacrifice.json b/src/main/resources/assets/bloodmagic/recipes/pack_self_sacrifice.json new file mode 100644 index 00000000..138ba293 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/pack_self_sacrifice.json @@ -0,0 +1,29 @@ +{ + "result": { + "item": "bloodmagic:pack_self_sacrifice" + }, + "pattern": [ + "aba", + "cdc", + "aea" + ], + "type": "forge:ore_shaped", + "key": { + "a": { + "item": "#BLOCKGLASS" + }, + "b": { + "item": "minecraft:bucket" + }, + "c": { + "item": "minecraft:flint" + }, + "d": { + "item": "minecraft:leather_chestplate" + }, + "e": { + "item": "bloodmagic:slate", + "data": 0 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/path/path_obsidian.json b/src/main/resources/assets/bloodmagic/recipes/path/path_obsidian.json new file mode 100644 index 00000000..2898208a --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/path/path_obsidian.json @@ -0,0 +1,26 @@ +{ + "result": { + "item": "bloodmagic:path", + "data": 6, + "count": 4 + }, + "ingredients": [ + { + "item": "minecraft:obsidian" + }, + { + "item": "minecraft:obsidian" + }, + { + "item": "minecraft:obsidian" + }, + { + "item": "minecraft:obsidian" + }, + { + "type": "bloodmagic:orb", + "orb": "bloodmagic:archmage" + } + ], + "type": "minecraft:crafting_shapeless" +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/path/path_obsidiantile.json b/src/main/resources/assets/bloodmagic/recipes/path/path_obsidiantile.json new file mode 100644 index 00000000..e235db72 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/path/path_obsidiantile.json @@ -0,0 +1,26 @@ +{ + "result": { + "item": "bloodmagic:path", + "data": 7, + "count": 4 + }, + "ingredients": [ + { + "item": "bloodmagic:path", + "data": 6 + }, + { + "item": "bloodmagic:path", + "data": 6 + }, + { + "item": "bloodmagic:path", + "data": 6 + }, + { + "item": "bloodmagic:path", + "data": 6 + } + ], + "type": "minecraft:crafting_shapeless" +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/path/path_stone.json b/src/main/resources/assets/bloodmagic/recipes/path/path_stone.json new file mode 100644 index 00000000..0503ed1c --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/path/path_stone.json @@ -0,0 +1,26 @@ +{ + "result": { + "item": "bloodmagic:path", + "data": 2, + "count": 4 + }, + "ingredients": [ + { + "item": "#STONE" + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + }, + { + "item": "#STONE" + }, + { + "type": "bloodmagic:orb", + "orb": "bloodmagic:magician" + } + ], + "type": "forge:ore_shapeless" +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/path/path_stonetile.json b/src/main/resources/assets/bloodmagic/recipes/path/path_stonetile.json new file mode 100644 index 00000000..5cf9c223 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/path/path_stonetile.json @@ -0,0 +1,26 @@ +{ + "result": { + "item": "bloodmagic:path", + "data": 3, + "count": 4 + }, + "ingredients": [ + { + "item": "bloodmagic:path", + "data": 2 + }, + { + "item": "bloodmagic:path", + "data": 2 + }, + { + "item": "bloodmagic:path", + "data": 2 + }, + { + "item": "bloodmagic:path", + "data": 2 + } + ], + "type": "minecraft:crafting_shapeless" +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/path/path_wood.json b/src/main/resources/assets/bloodmagic/recipes/path/path_wood.json new file mode 100644 index 00000000..fcb33fd3 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/path/path_wood.json @@ -0,0 +1,26 @@ +{ + "result": { + "item": "bloodmagic:path", + "data": 0, + "count": 4 + }, + "ingredients": [ + { + "item": "#PLANKWOOD" + }, + { + "item": "#PLANKWOOD" + }, + { + "item": "#PLANKWOOD" + }, + { + "item": "#PLANKWOOD" + }, + { + "type": "bloodmagic:orb", + "orb": "bloodmagic:apprentice" + } + ], + "type": "forge:ore_shapeless" +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/path/path_woodtile.json b/src/main/resources/assets/bloodmagic/recipes/path/path_woodtile.json new file mode 100644 index 00000000..90b26af1 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/path/path_woodtile.json @@ -0,0 +1,26 @@ +{ + "result": { + "item": "bloodmagic:path", + "data": 1, + "count": 4 + }, + "ingredients": [ + { + "item": "bloodmagic:path", + "data": 0 + }, + { + "item": "bloodmagic:path", + "data": 0 + }, + { + "item": "bloodmagic:path", + "data": 0 + }, + { + "item": "bloodmagic:path", + "data": 0 + } + ], + "type": "minecraft:crafting_shapeless" +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/path/path_wornstone.json b/src/main/resources/assets/bloodmagic/recipes/path/path_wornstone.json new file mode 100644 index 00000000..86e114b7 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/path/path_wornstone.json @@ -0,0 +1,30 @@ +{ + "result": { + "item": "bloodmagic:path", + "data": 4, + "count": 4 + }, + "ingredients": [ + { + "item": "bloodmagic:path", + "data": 2 + }, + { + "item": "bloodmagic:path", + "data": 2 + }, + { + "item": "bloodmagic:path", + "data": 2 + }, + { + "item": "bloodmagic:path", + "data": 2 + }, + { + "type": "bloodmagic:orb", + "orb": "bloodmagic:master" + } + ], + "type": "minecraft:crafting_shapeless" +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/path/path_wornstonetile.json b/src/main/resources/assets/bloodmagic/recipes/path/path_wornstonetile.json new file mode 100644 index 00000000..2b66ed18 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/path/path_wornstonetile.json @@ -0,0 +1,26 @@ +{ + "result": { + "item": "bloodmagic:path", + "data": 5, + "count": 4 + }, + "ingredients": [ + { + "item": "bloodmagic:path", + "data": 4 + }, + { + "item": "bloodmagic:path", + "data": 4 + }, + { + "item": "bloodmagic:path", + "data": 4 + }, + { + "item": "bloodmagic:path", + "data": 4 + } + ], + "type": "minecraft:crafting_shapeless" +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/ritual_controller_imperfect.json b/src/main/resources/assets/bloodmagic/recipes/ritual_controller_imperfect.json new file mode 100644 index 00000000..17bfdac9 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/ritual_controller_imperfect.json @@ -0,0 +1,24 @@ +{ + "result": { + "item": "bloodmagic:ritual_controller", + "data": 1 + }, + "pattern": [ + "aba", + "bcb", + "aba" + ], + "type": "forge:ore_shaped", + "key": { + "a": { + "item": "minecraft:obsidian" + }, + "b": { + "item": "#STONE" + }, + "c": { + "type": "bloodmagic:orb", + "orb": "bloodmagic:weak" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/ritual_controller_inverted.json b/src/main/resources/assets/bloodmagic/recipes/ritual_controller_inverted.json new file mode 100644 index 00000000..d712efbe --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/ritual_controller_inverted.json @@ -0,0 +1,20 @@ +{ + "result": { + "item": "bloodmagic:ritual_controller", + "data": 2 + }, + "ingredients": [ + { + "item": "bloodmagic:ritual_controller", + "data": 0 + }, + { + "item": "minecraft:redstone_torch" + }, + { + "item": "bloodmagic:slate", + "data": 0 + } + ], + "type": "minecraft:crafting_shapeless" +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/ritual_controller_master.json b/src/main/resources/assets/bloodmagic/recipes/ritual_controller_master.json new file mode 100644 index 00000000..74e1458c --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/ritual_controller_master.json @@ -0,0 +1,25 @@ +{ + "result": { + "item": "bloodmagic:ritual_controller", + "data": 0 + }, + "pattern": [ + "aba", + "bcb", + "aba" + ], + "type": "minecraft:crafting_shaped", + "key": { + "a": { + "item": "minecraft:obsidian" + }, + "b": { + "item": "bloodmagic:ritual_stone", + "data": 0 + }, + "c": { + "type": "bloodmagic:orb", + "orb": "bloodmagic:magician" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/ritual_controller_master_alt.json b/src/main/resources/assets/bloodmagic/recipes/ritual_controller_master_alt.json new file mode 100644 index 00000000..5b55815a --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/ritual_controller_master_alt.json @@ -0,0 +1,13 @@ +{ + "result": { + "item": "bloodmagic:ritual_controller", + "data": 0 + }, + "ingredients": [ + { + "item": "bloodmagic:ritual_controller", + "data": 2 + } + ], + "type": "minecraft:crafting_shapeless" +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/ritual_diviner_0.json b/src/main/resources/assets/bloodmagic/recipes/ritual_diviner_0.json new file mode 100644 index 00000000..9b48c652 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/ritual_diviner_0.json @@ -0,0 +1,36 @@ +{ + "result": { + "item": "bloodmagic:ritual_diviner", + "data": 0 + }, + "pattern": [ + "dfd", + "ase", + "dwd" + ], + "type": "forge:ore_shaped", + "key": { + "a": { + "item": "bloodmagic:inscription_tool", + "data": 4 + }, + "s": { + "item": "#STICKWOOD" + }, + "d": { + "item": "#GEMDIAMOND" + }, + "e": { + "item": "bloodmagic:inscription_tool", + "data": 3 + }, + "f": { + "item": "bloodmagic:inscription_tool", + "data": 2 + }, + "w": { + "item": "bloodmagic:inscription_tool", + "data": 1 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/ritual_diviner_1.json b/src/main/resources/assets/bloodmagic/recipes/ritual_diviner_1.json new file mode 100644 index 00000000..ca45383a --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/ritual_diviner_1.json @@ -0,0 +1,26 @@ +{ + "result": { + "item": "bloodmagic:ritual_diviner", + "data": 1 + }, + "pattern": [ + " S ", + "tdt", + " S " + ], + "type": "minecraft:crafting_shaped", + "key": { + "S": { + "item": "bloodmagic:slate", + "data": 3 + }, + "t": { + "item": "bloodmagic:inscription_tool", + "data": 5 + }, + "d": { + "item": "bloodmagic:ritual_diviner", + "data": 0 + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/ritual_reader.json b/src/main/resources/assets/bloodmagic/recipes/ritual_reader.json new file mode 100644 index 00000000..cbf3f52a --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/ritual_reader.json @@ -0,0 +1,27 @@ +{ + "result": { + "item": "bloodmagic:ritual_reader" + }, + "pattern": [ + "gog", + "isi", + " s " + ], + "type": "forge:ore_shaped", + "key": { + "s": { + "item": "bloodmagic:slate", + "data": 3 + }, + "g": { + "item": "#BLOCKGLASS" + }, + "i": { + "item": "#INGOTGOLD" + }, + "o": { + "type": "bloodmagic:orb", + "orb": "bloodmagic:master" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/ritual_stone_blank.json b/src/main/resources/assets/bloodmagic/recipes/ritual_stone_blank.json new file mode 100644 index 00000000..7e321bb2 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/ritual_stone_blank.json @@ -0,0 +1,26 @@ +{ + "result": { + "item": "bloodmagic:ritual_stone", + "data": 0, + "count": 4 + }, + "pattern": [ + "aba", + "bcb", + "aba" + ], + "type": "minecraft:crafting_shaped", + "key": { + "a": { + "item": "minecraft:obsidian" + }, + "b": { + "item": "bloodmagic:slate", + "data": 1 + }, + "c": { + "type": "bloodmagic:orb", + "orb": "bloodmagic:apprentice" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/ritual_stone_reset.json b/src/main/resources/assets/bloodmagic/recipes/ritual_stone_reset.json new file mode 100644 index 00000000..439ad7d2 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/ritual_stone_reset.json @@ -0,0 +1,13 @@ +{ + "result": { + "item": "bloodmagic:ritual_stone", + "data": 0 + }, + "ingredients": [ + { + "item": "bloodmagic:ritual_stone", + "data": 32767 + } + ], + "type": "minecraft:crafting_shapeless" +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/sacrificial_dagger.json b/src/main/resources/assets/bloodmagic/recipes/sacrificial_dagger.json new file mode 100644 index 00000000..f622ef14 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/sacrificial_dagger.json @@ -0,0 +1,23 @@ +{ + "result": { + "item": "bloodmagic:sacrificial_dagger", + "data": 0 + }, + "pattern": [ + "aaa", + " ba", + "c a" + ], + "type": "forge:ore_shaped", + "key": { + "a": { + "item": "#BLOCKGLASS" + }, + "b": { + "item": "#INGOTGOLD" + }, + "c": { + "item": "#INGOTIRON" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/soul_forge.json b/src/main/resources/assets/bloodmagic/recipes/soul_forge.json new file mode 100644 index 00000000..7dfd9961 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/soul_forge.json @@ -0,0 +1,25 @@ +{ + "result": { + "item": "bloodmagic:soul_forge" + }, + "pattern": [ + "i i", + "sgs", + "sos" + ], + "type": "forge:ore_shaped", + "key": { + "s": { + "item": "#STONE" + }, + "g": { + "item": "#INGOTGOLD" + }, + "i": { + "item": "#INGOTIRON" + }, + "o": { + "item": "#BLOCKIRON" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/soul_snare.json b/src/main/resources/assets/bloodmagic/recipes/soul_snare.json new file mode 100644 index 00000000..20a518c5 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/soul_snare.json @@ -0,0 +1,24 @@ +{ + "result": { + "item": "bloodmagic:soul_snare", + "data": 0, + "count": 4 + }, + "pattern": [ + "sis", + "iri", + "sis" + ], + "type": "forge:ore_shaped", + "key": { + "r": { + "item": "#DUSTREDSTONE" + }, + "s": { + "item": "#STRING" + }, + "i": { + "item": "#INGOTIRON" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/teleposer.json b/src/main/resources/assets/bloodmagic/recipes/teleposer.json new file mode 100644 index 00000000..388d0153 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/teleposer.json @@ -0,0 +1,23 @@ +{ + "result": { + "item": "bloodmagic:teleposer" + }, + "pattern": [ + "ggg", + "efe", + "ggg" + ], + "type": "forge:ore_shaped", + "key": { + "e": { + "item": "minecraft:ender_pearl" + }, + "f": { + "item": "bloodmagic:teleposition_focus", + "data": 0 + }, + "g": { + "item": "#INGOTGOLD" + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/teleposition_focus_2.json b/src/main/resources/assets/bloodmagic/recipes/teleposition_focus_2.json new file mode 100644 index 00000000..16212c4f --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/teleposition_focus_2.json @@ -0,0 +1,17 @@ +{ + "result": { + "item": "bloodmagic:teleposition_focus", + "data": 2 + }, + "ingredients": [ + { + "item": "bloodmagic:teleposition_focus", + "data": 1 + }, + { + "item": "bloodmagic:blood_shard", + "data": 0 + } + ], + "type": "minecraft:crafting_shapeless" +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/teleposition_focus_3.json b/src/main/resources/assets/bloodmagic/recipes/teleposition_focus_3.json new file mode 100644 index 00000000..9be6ba08 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/teleposition_focus_3.json @@ -0,0 +1,17 @@ +{ + "result": { + "item": "bloodmagic:teleposition_focus", + "data": 3 + }, + "ingredients": [ + { + "item": "bloodmagic:teleposition_focus", + "data": 2 + }, + { + "item": "bloodmagic:blood_shard", + "data": 1 + } + ], + "type": "minecraft:crafting_shapeless" +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/recipes/upgrade_trainer.json b/src/main/resources/assets/bloodmagic/recipes/upgrade_trainer.json new file mode 100644 index 00000000..d540e3e4 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/recipes/upgrade_trainer.json @@ -0,0 +1,27 @@ +{ + "result": { + "item": "bloodmagic:upgrade_trainer", + "data": 0 + }, + "pattern": [ + "ngn", + "ioi", + "ngn" + ], + "type": "forge:ore_shaped", + "key": { + "g": { + "item": "#INGOTGOLD" + }, + "i": { + "item": "#INGOTIRON" + }, + "n": { + "item": "#NUGGETGOLD" + }, + "o": { + "type": "bloodmagic:orb", + "orb": "bloodmagic:master" + } + } +} \ No newline at end of file From c00affa4aa56fe0b8bb5ff60192b4fc4c3df06ba Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Sun, 20 Aug 2017 15:09:27 -0700 Subject: [PATCH 05/27] Update tile entity mappings --- .../core/RegistrarBloodMagicBlocks.java | 49 +++++++++---------- 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicBlocks.java b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicBlocks.java index 92544f16..54cad50a 100644 --- a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicBlocks.java +++ b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicBlocks.java @@ -124,7 +124,7 @@ public class RegistrarBloodMagicBlocks { event.getRegistry().registerAll(blocks.toArray(new Block[0])); - registerTiles(); + registerTileEntities(); } @SubscribeEvent @@ -137,29 +137,28 @@ public class RegistrarBloodMagicBlocks { }); } - private static void registerTiles() { - GameRegistry.registerTileEntity(TileAltar.class, BloodMagic.MODID + ":" + TileAltar.class.getSimpleName()); - GameRegistry.registerTileEntity(TileImperfectRitualStone.class, BloodMagic.MODID + ":" + TileImperfectRitualStone.class.getSimpleName()); - GameRegistry.registerTileEntity(TileMasterRitualStone.class, BloodMagic.MODID + ":" + TileMasterRitualStone.class.getSimpleName()); - GameRegistry.registerTileEntity(TileAlchemyArray.class, BloodMagic.MODID + ":" + TileAlchemyArray.class.getSimpleName()); - GameRegistry.registerTileEntity(TileSpectralBlock.class, BloodMagic.MODID + ":" + TileSpectralBlock.class.getSimpleName()); - GameRegistry.registerTileEntity(TilePhantomBlock.class, BloodMagic.MODID + ":" + TilePhantomBlock.class.getSimpleName()); - GameRegistry.registerTileEntity(TileTeleposer.class, BloodMagic.MODID + ":" + TileTeleposer.class.getSimpleName()); - GameRegistry.registerTileEntity(TileSoulForge.class, BloodMagic.MODID + ":" + TileSoulForge.class.getSimpleName()); - GameRegistry.registerTileEntity(TileMasterRoutingNode.class, BloodMagic.MODID + ":" + TileMasterRoutingNode.class.getSimpleName()); - GameRegistry.registerTileEntity(TileInputRoutingNode.class, BloodMagic.MODID + ":" + TileInputRoutingNode.class.getSimpleName()); - GameRegistry.registerTileEntity(TileOutputRoutingNode.class, BloodMagic.MODID + ":" + TileOutputRoutingNode.class.getSimpleName()); - GameRegistry.registerTileEntity(TileItemRoutingNode.class, BloodMagic.MODID + ":" + TileItemRoutingNode.class.getSimpleName()); - GameRegistry.registerTileEntity(TileIncenseAltar.class, BloodMagic.MODID + ":" + TileIncenseAltar.class.getSimpleName()); - GameRegistry.registerTileEntity(TileDemonCrucible.class, BloodMagic.MODID + ":" + TileDemonCrucible.class.getSimpleName()); - GameRegistry.registerTileEntity(TileDemonPylon.class, BloodMagic.MODID + ":" + TileDemonPylon.class.getSimpleName()); - GameRegistry.registerTileEntity(TileDemonCrystallizer.class, BloodMagic.MODID + ":" + TileDemonCrystallizer.class.getSimpleName()); - GameRegistry.registerTileEntity(TileDemonCrystal.class, BloodMagic.MODID + ":" + TileDemonCrystal.class.getSimpleName()); - GameRegistry.registerTileEntity(TileAlchemyTable.class, BloodMagic.MODID + ":" + TileAlchemyTable.class.getSimpleName()); - - GameRegistry.registerTileEntity(TileDimensionalPortal.class, BloodMagic.MODID + ":" + TileDimensionalPortal.class.getSimpleName()); - GameRegistry.registerTileEntity(TileBloodTank.class, BloodMagic.MODID + ":" + TileBloodTank.class.getSimpleName()); - GameRegistry.registerTileEntity(TileMimic.class, BloodMagic.MODID + ":" + TileMimic.class.getSimpleName()); - GameRegistry.registerTileEntity(TileInversionPillar.class, BloodMagic.MODID + ":" + TileInversionPillar.class.getSimpleName()); + private static void registerTileEntities() { + GameRegistry.registerTileEntity(TileAltar.class, BloodMagic.MODID + ":altar"); + GameRegistry.registerTileEntity(TileImperfectRitualStone.class, BloodMagic.MODID + ":imperfect_ritual_stone"); + GameRegistry.registerTileEntity(TileMasterRitualStone.class, BloodMagic.MODID + ":master_ritual_stone"); + GameRegistry.registerTileEntity(TileAlchemyArray.class, BloodMagic.MODID + ":alchemy_array"); + GameRegistry.registerTileEntity(TileSpectralBlock.class, BloodMagic.MODID + ":spectral_block"); + GameRegistry.registerTileEntity(TilePhantomBlock.class, BloodMagic.MODID + ":phantom_block"); + GameRegistry.registerTileEntity(TileTeleposer.class, BloodMagic.MODID + ":teleposer"); + GameRegistry.registerTileEntity(TileSoulForge.class, BloodMagic.MODID + ":soul_forge"); + GameRegistry.registerTileEntity(TileMasterRoutingNode.class, BloodMagic.MODID + ":master_routing_node"); + GameRegistry.registerTileEntity(TileInputRoutingNode.class, BloodMagic.MODID + ":input_routing_node"); + GameRegistry.registerTileEntity(TileOutputRoutingNode.class, BloodMagic.MODID + ":output_routing_node"); + GameRegistry.registerTileEntity(TileItemRoutingNode.class, BloodMagic.MODID + ":item_routing_node"); + GameRegistry.registerTileEntity(TileIncenseAltar.class, BloodMagic.MODID + ":incense_altar"); + GameRegistry.registerTileEntity(TileDemonCrucible.class, BloodMagic.MODID + ":demon_crucible"); + GameRegistry.registerTileEntity(TileDemonPylon.class, BloodMagic.MODID + ":demon_pylon"); + GameRegistry.registerTileEntity(TileDemonCrystallizer.class, BloodMagic.MODID + ":demon_crystallizer"); + GameRegistry.registerTileEntity(TileDemonCrystal.class, BloodMagic.MODID + ":demon_crystal"); + GameRegistry.registerTileEntity(TileAlchemyTable.class, BloodMagic.MODID + ":alchemy_table"); + GameRegistry.registerTileEntity(TileDimensionalPortal.class, BloodMagic.MODID + ":dimensional_portal"); + GameRegistry.registerTileEntity(TileBloodTank.class, BloodMagic.MODID + ":blood_tank"); + GameRegistry.registerTileEntity(TileMimic.class, BloodMagic.MODID + ":mimic"); + GameRegistry.registerTileEntity(TileInversionPillar.class, BloodMagic.MODID + ":inversion_pillar"); } } From 36ce215b6bc849204d0ee1753e2c83b20931dcd3 Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Sun, 20 Aug 2017 16:12:50 -0700 Subject: [PATCH 06/27] Precondition the rest of the new API --- .../bloodmagic/api_impl/BloodMagicAPI.java | 7 +++++++ .../api_impl/BloodMagicBlacklist.java | 17 +++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicAPI.java b/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicAPI.java index e7dc13d6..f3698004 100644 --- a/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicAPI.java +++ b/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicAPI.java @@ -2,6 +2,7 @@ package WayofTime.bloodmagic.api_impl; import WayofTime.bloodmagic.api.altar.EnumAltarComponent; import WayofTime.bloodmagic.apiv2.IBloodMagicAPI; +import com.google.common.base.Preconditions; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Maps; @@ -43,11 +44,17 @@ public class BloodMagicAPI implements IBloodMagicAPI { @Override public void setSacrificialValue(@Nonnull ResourceLocation entityId, @Nonnegative int value) { + Preconditions.checkNotNull(entityId, "entityId cannot be null."); + Preconditions.checkArgument(value >= 0, "value cannot be negative."); + sacrificialValues.put(entityId, value); } @Override public void registerAltarComponent(@Nonnull IBlockState state, @Nonnull String componentType) { + Preconditions.checkNotNull(state, "state cannot be null."); + Preconditions.checkNotNull(componentType, "componentType cannot be null."); + EnumAltarComponent component = EnumAltarComponent.NOTAIR; for (EnumAltarComponent type : EnumAltarComponent.VALUES) { if (type.name().equalsIgnoreCase(componentType)) { diff --git a/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicBlacklist.java b/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicBlacklist.java index b88d64b6..86022491 100644 --- a/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicBlacklist.java +++ b/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicBlacklist.java @@ -1,6 +1,7 @@ package WayofTime.bloodmagic.api_impl; import WayofTime.bloodmagic.apiv2.IBloodMagicBlacklist; +import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; import net.minecraft.block.Block; @@ -28,48 +29,64 @@ public class BloodMagicBlacklist implements IBloodMagicBlacklist { @Override public void addTeleposer(@Nonnull IBlockState state) { + Preconditions.checkNotNull(state, "state cannot be null."); + if (!teleposer.contains(state)) teleposer.add(state); } @Override public void addTeleposer(@Nonnull Block block) { + Preconditions.checkNotNull(block, "block cannot be null."); + for (IBlockState state : block.getBlockState().getValidStates()) addTeleposer(state); } @Override public void addTeleposer(@Nonnull ResourceLocation entityId) { + Preconditions.checkNotNull(entityId, "entityId cannot be null."); + if (!teleposerEntities.contains(entityId)) teleposerEntities.add(entityId); } @Override public void addTransposition(@Nonnull IBlockState state) { + Preconditions.checkNotNull(state, "state cannot be null."); + if (!transposition.contains(state)) transposition.add(state); } @Override public void addTransposition(@Nonnull Block block) { + Preconditions.checkNotNull(block, "block cannot be null."); + for (IBlockState state : block.getBlockState().getValidStates()) addTransposition(state); } @Override public void addGreenGrove(@Nonnull IBlockState state) { + Preconditions.checkNotNull(state, "state cannot be null."); + if (!greenGrove.contains(state)) greenGrove.add(state); } @Override public void addGreenGrove(@Nonnull Block block) { + Preconditions.checkNotNull(block, "block cannot be null."); + for (IBlockState state : block.getBlockState().getValidStates()) addGreenGrove(state); } @Override public void addWellOfSuffering(@Nonnull ResourceLocation entityId) { + Preconditions.checkNotNull(entityId, "entityId cannot be null."); + if (!sacrifice.contains(entityId)) sacrifice.add(entityId); } From acc0acb80645b866be6249a98fd3518d7fab5328 Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Sun, 20 Aug 2017 16:16:13 -0700 Subject: [PATCH 07/27] Switch main content to a proper logger Need to figure out what to keep from old API and move that over as well. --- src/main/java/WayofTime/bloodmagic/BloodMagic.java | 8 +++++--- .../bloodmagic/compress/StorageBlockCraftingManager.java | 2 +- .../WayofTime/bloodmagic/meteor/MeteorConfigHandler.java | 2 +- src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java | 5 ++--- .../java/WayofTime/bloodmagic/registry/ModRecipes.java | 2 +- .../ritual/harvest/HarvestHandlerPlantable.java | 6 +++--- src/main/java/WayofTime/bloodmagic/util/Utils.java | 2 +- .../bloodmagic/util/handler/event/ClientHandler.java | 8 ++++---- 8 files changed, 18 insertions(+), 17 deletions(-) diff --git a/src/main/java/WayofTime/bloodmagic/BloodMagic.java b/src/main/java/WayofTime/bloodmagic/BloodMagic.java index 8ab9b602..561b76fa 100644 --- a/src/main/java/WayofTime/bloodmagic/BloodMagic.java +++ b/src/main/java/WayofTime/bloodmagic/BloodMagic.java @@ -29,6 +29,8 @@ import net.minecraftforge.fml.common.SidedProxy; import net.minecraftforge.fml.common.event.*; import net.minecraftforge.fml.common.network.NetworkRegistry; import org.apache.commons.lang3.tuple.Pair; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import java.io.File; import java.util.List; @@ -39,14 +41,15 @@ public class BloodMagic { public static final String NAME = "Blood Magic: Alchemical Wizardry"; public static final String VERSION = "@VERSION@"; public static final String DEPEND = "required-after:guideapi;"; + public static final Logger LOGGER = LogManager.getLogger(NAME.substring(0, NAME.indexOf(":"))); + public static final boolean IS_DEV = (Boolean) Launch.blackboard.get("fml.deobfuscatedEnvironment"); + public static final List> PLUGINS = Lists.newArrayList(); public static final CreativeTabs TAB_BM = new CreativeTabs(MODID + ".creativeTab") { @Override public ItemStack getTabIconItem() { return OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_WEAK); } }; - public static final boolean IS_DEV = (Boolean) Launch.blackboard.get("fml.deobfuscatedEnvironment"); - public static final List> PLUGINS = Lists.newArrayList(); public static CreativeTabs TAB_TOMES = new CreativeTabs(MODID + ".creativeTabTome") { @Override public ItemStack getTabIconItem() { @@ -68,7 +71,6 @@ public class BloodMagic { FluidRegistry.enableUniversalBucket(); } - public LogHelper logger = new LogHelper(MODID); private File configDir; @Mod.EventHandler diff --git a/src/main/java/WayofTime/bloodmagic/compress/StorageBlockCraftingManager.java b/src/main/java/WayofTime/bloodmagic/compress/StorageBlockCraftingManager.java index 093dbff0..ef1638a9 100644 --- a/src/main/java/WayofTime/bloodmagic/compress/StorageBlockCraftingManager.java +++ b/src/main/java/WayofTime/bloodmagic/compress/StorageBlockCraftingManager.java @@ -20,7 +20,7 @@ public class StorageBlockCraftingManager { public void addStorageBlockRecipes() { // this.recipes = new StorageBlockCraftingRecipeAssimilator().getPackingRecipes(); - BloodMagic.instance.logger.info("Total number of compression recipes: " + this.recipes.size()); + BloodMagic.LOGGER.info("Total number of compression recipes: {}", this.recipes.size()); } public ItemStack findMatchingRecipe(InventoryCrafting craftingInventory, World world) { diff --git a/src/main/java/WayofTime/bloodmagic/meteor/MeteorConfigHandler.java b/src/main/java/WayofTime/bloodmagic/meteor/MeteorConfigHandler.java index c608e061..5a24233f 100644 --- a/src/main/java/WayofTime/bloodmagic/meteor/MeteorConfigHandler.java +++ b/src/main/java/WayofTime/bloodmagic/meteor/MeteorConfigHandler.java @@ -29,7 +29,7 @@ public class MeteorConfigHandler { public static void handleMeteors(boolean checkNewVersion) { if (meteorDir == null) { - BloodMagic.instance.logger.error("Attempted to handle meteor config but the folder has not been initialized. Was this run too early?"); + BloodMagic.LOGGER.error("Attempted to handle meteor config but the folder has not been initialized. Was this run too early?"); return; } diff --git a/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java b/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java index 3d9d0233..f414bb72 100644 --- a/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java +++ b/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java @@ -152,10 +152,9 @@ public class ClientProxy extends CommonProxy { Map skinMap = ObfuscationReflectionHelper.getPrivateValue(RenderManager.class, renderManager, "skinMap", "field_178636_l"); skinMap.get("default").addLayer(new LayerBloodElytra(skinMap.get("default"))); skinMap.get("slim").addLayer(new LayerBloodElytra(skinMap.get("slim"))); - BloodMagic.instance.logger.info("Elytra layer added"); + BloodMagic.LOGGER.info("Elytra layer added"); } catch (Exception e) { - BloodMagic.instance.logger.error("Failed to set custom Elytra Layer for Elytra Living Armour Upgrade."); - BloodMagic.instance.logger.error(e.getLocalizedMessage()); + BloodMagic.LOGGER.error("Failed to set custom Elytra Layer for Elytra Living Armour Upgrade."); } } diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java b/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java index 85cfb7a8..e02c1d54 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java @@ -123,7 +123,7 @@ public class ModRecipes { CompressionRegistry.registerItemThreshold(new ItemStack(Blocks.COBBLESTONE), 64); stopwatch.stop(); - BloodMagic.instance.logger.info("Added compression recipes in {}", stopwatch); + BloodMagic.LOGGER.info("Added compression recipes in {}", stopwatch); } public static void addSoulForgeRecipes() { diff --git a/src/main/java/WayofTime/bloodmagic/ritual/harvest/HarvestHandlerPlantable.java b/src/main/java/WayofTime/bloodmagic/ritual/harvest/HarvestHandlerPlantable.java index 55512361..7218dfc1 100644 --- a/src/main/java/WayofTime/bloodmagic/ritual/harvest/HarvestHandlerPlantable.java +++ b/src/main/java/WayofTime/bloodmagic/ritual/harvest/HarvestHandlerPlantable.java @@ -120,11 +120,11 @@ public class HarvestHandlerPlantable implements IHarvestHandler { HarvestRegistry.registerStandardCrop(crop, crop.getMaxAge()); } } catch (NoSuchMethodException e) { - BloodMagic.instance.logger.error("HarvestCraft integration cancelled; unable to find crop name mapper"); + BloodMagic.LOGGER.error("HarvestCraft integration cancelled; unable to find crop name mapper"); } catch (IllegalAccessException e) { - BloodMagic.instance.logger.error("HarvestCraft integration cancelled; crop name lookup broke"); + BloodMagic.LOGGER.error("HarvestCraft integration cancelled; crop name lookup broke"); } catch (InvocationTargetException e) { - BloodMagic.instance.logger.error("HarvestCraft integration cancelled; crop name lookup broke"); + BloodMagic.LOGGER.error("HarvestCraft integration cancelled; crop name lookup broke"); } } } diff --git a/src/main/java/WayofTime/bloodmagic/util/Utils.java b/src/main/java/WayofTime/bloodmagic/util/Utils.java index b30a0ab0..fdfcb6a4 100644 --- a/src/main/java/WayofTime/bloodmagic/util/Utils.java +++ b/src/main/java/WayofTime/bloodmagic/util/Utils.java @@ -928,7 +928,7 @@ public class Utils { Class handlerClass = Class.forName(data.getClassName()); Object handlerImpl = handlerClass.newInstance(); MinecraftForge.EVENT_BUS.register(handlerImpl); - BloodMagic.instance.logger.debug("Registering event handler for class {}", data.getClassName()); + BloodMagic.LOGGER.debug("Registering event handler for class {}", data.getClassName()); } catch (Exception e) { // No-op } diff --git a/src/main/java/WayofTime/bloodmagic/util/handler/event/ClientHandler.java b/src/main/java/WayofTime/bloodmagic/util/handler/event/ClientHandler.java index 8c9aa9ee..7103ab7f 100644 --- a/src/main/java/WayofTime/bloodmagic/util/handler/event/ClientHandler.java +++ b/src/main/java/WayofTime/bloodmagic/util/handler/event/ClientHandler.java @@ -210,10 +210,10 @@ public class ClientHandler { missingVariants.removeAll(missing); if (errored.size() > 0) - BloodMagic.instance.logger.info("Suppressed {} model errors from Blood Magic.", errored.size()); + BloodMagic.LOGGER.info("Suppressed {} model errors from Blood Magic.", errored.size()); if (missing.size() > 0) - BloodMagic.instance.logger.info("Suppressed {} variant errors from Blood Magic.", missing.size()); - BloodMagic.instance.logger.debug("Suppressed discovered model/variant errors in {}", stopwatch.stop()); + BloodMagic.LOGGER.info("Suppressed {} variant errors from Blood Magic.", missing.size()); + BloodMagic.LOGGER.debug("Suppressed discovered model/variant errors in {}", stopwatch.stop()); } // For some reason, we need some bad textures to be listed in the Crystal and Node models. This will hide that from the end user. @@ -246,7 +246,7 @@ public class ClientHandler { missingTextures.keySet().remove(mc); badTextureDomains.remove(mc); } - BloodMagic.instance.logger.debug("Suppressed required texture errors in {}", stopwatch.stop()); + BloodMagic.LOGGER.debug("Suppressed required texture errors in {}", stopwatch.stop()); } private void renderRitualStones(EntityPlayerSP player, float partialTicks) { From 9004bccba1e648ccccafc68644b74ada95e44f6f Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Sun, 20 Aug 2017 16:17:00 -0700 Subject: [PATCH 08/27] Rename compat plugins to be standardized --- .../{GuideBloodMagic.java => BloodMagicGuideAPIPlugin.java} | 2 +- .../jei/{BloodMagicPlugin.java => BloodMagicJEIPlugin.java} | 2 +- .../jei/alchemyArray/AlchemyArrayCraftingCategory.java | 4 ++-- .../compat/jei/alchemyTable/AlchemyTableRecipeCategory.java | 6 +++--- .../compat/jei/alchemyTable/AlchemyTableRecipeJEI.java | 4 ++-- .../bloodmagic/compat/jei/altar/AltarRecipeCategory.java | 4 ++-- .../jei/armourDowngrade/ArmourDowngradeRecipeCategory.java | 6 +++--- .../jei/armourDowngrade/ArmourDowngradeRecipeJEI.java | 4 ++-- .../compat/jei/binding/BindingRecipeCategory.java | 4 ++-- .../compat/jei/forge/TartaricForgeRecipeCategory.java | 6 +++--- .../bloodmagic/compat/jei/forge/TartaricForgeRecipeJEI.java | 4 ++-- ...ailaPluginBloodMagic.java => BloodMagicHwylaPlugin.java} | 2 +- 12 files changed, 24 insertions(+), 24 deletions(-) rename src/main/java/WayofTime/bloodmagic/compat/guideapi/{GuideBloodMagic.java => BloodMagicGuideAPIPlugin.java} (97%) rename src/main/java/WayofTime/bloodmagic/compat/jei/{BloodMagicPlugin.java => BloodMagicJEIPlugin.java} (99%) rename src/main/java/WayofTime/bloodmagic/compat/waila/{WailaPluginBloodMagic.java => BloodMagicHwylaPlugin.java} (96%) diff --git a/src/main/java/WayofTime/bloodmagic/compat/guideapi/GuideBloodMagic.java b/src/main/java/WayofTime/bloodmagic/compat/guideapi/BloodMagicGuideAPIPlugin.java similarity index 97% rename from src/main/java/WayofTime/bloodmagic/compat/guideapi/GuideBloodMagic.java rename to src/main/java/WayofTime/bloodmagic/compat/guideapi/BloodMagicGuideAPIPlugin.java index 39319de7..b21f5281 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/guideapi/GuideBloodMagic.java +++ b/src/main/java/WayofTime/bloodmagic/compat/guideapi/BloodMagicGuideAPIPlugin.java @@ -24,7 +24,7 @@ import javax.annotation.Nullable; import java.awt.Color; @GuideBook(priority = EventPriority.HIGHEST) -public class GuideBloodMagic implements IGuideBook { +public class BloodMagicGuideAPIPlugin implements IGuideBook { public static final Book GUIDE_BOOK = new Book(); diff --git a/src/main/java/WayofTime/bloodmagic/compat/jei/BloodMagicPlugin.java b/src/main/java/WayofTime/bloodmagic/compat/jei/BloodMagicJEIPlugin.java similarity index 99% rename from src/main/java/WayofTime/bloodmagic/compat/jei/BloodMagicPlugin.java rename to src/main/java/WayofTime/bloodmagic/compat/jei/BloodMagicJEIPlugin.java index ab7ed560..e5d2b153 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/jei/BloodMagicPlugin.java +++ b/src/main/java/WayofTime/bloodmagic/compat/jei/BloodMagicJEIPlugin.java @@ -33,7 +33,7 @@ import javax.annotation.Nonnull; import java.util.Map; @JEIPlugin -public class BloodMagicPlugin implements IModPlugin { +public class BloodMagicJEIPlugin implements IModPlugin { public static IJeiHelpers jeiHelper; @Override diff --git a/src/main/java/WayofTime/bloodmagic/compat/jei/alchemyArray/AlchemyArrayCraftingCategory.java b/src/main/java/WayofTime/bloodmagic/compat/jei/alchemyArray/AlchemyArrayCraftingCategory.java index 5b9b8e22..5e51760a 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/jei/alchemyArray/AlchemyArrayCraftingCategory.java +++ b/src/main/java/WayofTime/bloodmagic/compat/jei/alchemyArray/AlchemyArrayCraftingCategory.java @@ -2,7 +2,7 @@ package WayofTime.bloodmagic.compat.jei.alchemyArray; import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.api.Constants; -import WayofTime.bloodmagic.compat.jei.BloodMagicPlugin; +import WayofTime.bloodmagic.compat.jei.BloodMagicJEIPlugin; import WayofTime.bloodmagic.util.helper.TextHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IRecipeLayout; @@ -22,7 +22,7 @@ public class AlchemyArrayCraftingCategory implements IRecipeCategory { private static final int OUTPUT_SLOT = 2; @Nonnull - private final IDrawable background = BloodMagicPlugin.jeiHelper.getGuiHelper().createDrawable(new ResourceLocation(Constants.Mod.DOMAIN + "gui/jei/binding.png"), 0, 0, 100, 30); + private final IDrawable background = BloodMagicJEIPlugin.jeiHelper.getGuiHelper().createDrawable(new ResourceLocation(Constants.Mod.DOMAIN + "gui/jei/binding.png"), 0, 0, 100, 30); @Nonnull private final String localizedName = TextHelper.localize("jei.bloodmagic.recipe.alchemyArrayCrafting"); diff --git a/src/main/java/WayofTime/bloodmagic/compat/jei/alchemyTable/AlchemyTableRecipeCategory.java b/src/main/java/WayofTime/bloodmagic/compat/jei/alchemyTable/AlchemyTableRecipeCategory.java index a6b38e9c..2e938c83 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/jei/alchemyTable/AlchemyTableRecipeCategory.java +++ b/src/main/java/WayofTime/bloodmagic/compat/jei/alchemyTable/AlchemyTableRecipeCategory.java @@ -3,7 +3,7 @@ package WayofTime.bloodmagic.compat.jei.alchemyTable; import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.api.Constants; import WayofTime.bloodmagic.api.registry.OrbRegistry; -import WayofTime.bloodmagic.compat.jei.BloodMagicPlugin; +import WayofTime.bloodmagic.compat.jei.BloodMagicJEIPlugin; import WayofTime.bloodmagic.util.helper.TextHelper; import mezz.jei.api.gui.ICraftingGridHelper; import mezz.jei.api.gui.IDrawable; @@ -22,14 +22,14 @@ public class AlchemyTableRecipeCategory implements IRecipeCategory> expanded = BloodMagicPlugin.jeiHelper.getStackHelper().expandRecipeItemStackInputs(recipe.getInput()); + List> expanded = BloodMagicJEIPlugin.jeiHelper.getStackHelper().expandRecipeItemStackInputs(recipe.getInput()); ingredients.setInputLists(ItemStack.class, expanded); ingredients.setOutput(ItemStack.class, recipe.getOutput()); } diff --git a/src/main/java/WayofTime/bloodmagic/compat/jei/altar/AltarRecipeCategory.java b/src/main/java/WayofTime/bloodmagic/compat/jei/altar/AltarRecipeCategory.java index 32f955c8..dea74887 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/jei/altar/AltarRecipeCategory.java +++ b/src/main/java/WayofTime/bloodmagic/compat/jei/altar/AltarRecipeCategory.java @@ -2,7 +2,7 @@ package WayofTime.bloodmagic.compat.jei.altar; import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.api.Constants; -import WayofTime.bloodmagic.compat.jei.BloodMagicPlugin; +import WayofTime.bloodmagic.compat.jei.BloodMagicJEIPlugin; import WayofTime.bloodmagic.util.helper.TextHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IRecipeLayout; @@ -20,7 +20,7 @@ public class AltarRecipeCategory implements IRecipeCategory { private static final int OUTPUT_SLOT = 1; @Nonnull - private final IDrawable background = BloodMagicPlugin.jeiHelper.getGuiHelper().createDrawable(new ResourceLocation(Constants.Mod.DOMAIN + "gui/jei/altar.png"), 3, 4, 155, 65); + private final IDrawable background = BloodMagicJEIPlugin.jeiHelper.getGuiHelper().createDrawable(new ResourceLocation(Constants.Mod.DOMAIN + "gui/jei/altar.png"), 3, 4, 155, 65); @Nonnull private final String localizedName = TextHelper.localize("jei.bloodmagic.recipe.altar"); diff --git a/src/main/java/WayofTime/bloodmagic/compat/jei/armourDowngrade/ArmourDowngradeRecipeCategory.java b/src/main/java/WayofTime/bloodmagic/compat/jei/armourDowngrade/ArmourDowngradeRecipeCategory.java index f8a93172..ccde0d58 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/jei/armourDowngrade/ArmourDowngradeRecipeCategory.java +++ b/src/main/java/WayofTime/bloodmagic/compat/jei/armourDowngrade/ArmourDowngradeRecipeCategory.java @@ -2,7 +2,7 @@ package WayofTime.bloodmagic.compat.jei.armourDowngrade; import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.api.Constants; -import WayofTime.bloodmagic.compat.jei.BloodMagicPlugin; +import WayofTime.bloodmagic.compat.jei.BloodMagicJEIPlugin; import WayofTime.bloodmagic.util.helper.TextHelper; import mezz.jei.api.gui.ICraftingGridHelper; import mezz.jei.api.gui.IDrawable; @@ -24,14 +24,14 @@ public class ArmourDowngradeRecipeCategory implements IRecipeCategory { private static final int INPUT_SLOT = 2; @Nonnull - private final IDrawable background = BloodMagicPlugin.jeiHelper.getGuiHelper().createDrawable(new ResourceLocation(Constants.Mod.DOMAIN + "gui/jei/alchemyTable.png"), 0, 0, 118, 40); + private final IDrawable background = BloodMagicJEIPlugin.jeiHelper.getGuiHelper().createDrawable(new ResourceLocation(Constants.Mod.DOMAIN + "gui/jei/alchemyTable.png"), 0, 0, 118, 40); @Nonnull private final String localizedName = TextHelper.localize("jei.bloodmagic.recipe.armourDowngrade"); @Nonnull private final ICraftingGridHelper craftingGridHelper; public ArmourDowngradeRecipeCategory() { - craftingGridHelper = BloodMagicPlugin.jeiHelper.getGuiHelper().createCraftingGridHelper(INPUT_SLOT, OUTPUT_SLOT); + craftingGridHelper = BloodMagicJEIPlugin.jeiHelper.getGuiHelper().createCraftingGridHelper(INPUT_SLOT, OUTPUT_SLOT); } @Nonnull diff --git a/src/main/java/WayofTime/bloodmagic/compat/jei/armourDowngrade/ArmourDowngradeRecipeJEI.java b/src/main/java/WayofTime/bloodmagic/compat/jei/armourDowngrade/ArmourDowngradeRecipeJEI.java index d8155ace..c7a2c037 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/jei/armourDowngrade/ArmourDowngradeRecipeJEI.java +++ b/src/main/java/WayofTime/bloodmagic/compat/jei/armourDowngrade/ArmourDowngradeRecipeJEI.java @@ -2,7 +2,7 @@ package WayofTime.bloodmagic.compat.jei.armourDowngrade; import WayofTime.bloodmagic.api.recipe.LivingArmourDowngradeRecipe; import WayofTime.bloodmagic.api.util.helper.ItemHelper.LivingUpgrades; -import WayofTime.bloodmagic.compat.jei.BloodMagicPlugin; +import WayofTime.bloodmagic.compat.jei.BloodMagicJEIPlugin; import WayofTime.bloodmagic.core.RegistrarBloodMagicItems; import com.google.common.collect.Lists; import mezz.jei.api.ingredients.IIngredients; @@ -20,7 +20,7 @@ public class ArmourDowngradeRecipeJEI extends BlankRecipeWrapper { @Override public void getIngredients(IIngredients ingredients) { - List> expanded = BloodMagicPlugin.jeiHelper.getStackHelper().expandRecipeItemStackInputs(recipe.getInput()); + List> expanded = BloodMagicJEIPlugin.jeiHelper.getStackHelper().expandRecipeItemStackInputs(recipe.getInput()); expanded.add(Lists.newArrayList(recipe.getKey())); ingredients.setInputLists(ItemStack.class, expanded); ItemStack upgradeStack = new ItemStack(RegistrarBloodMagicItems.UPGRADE_TOME); diff --git a/src/main/java/WayofTime/bloodmagic/compat/jei/binding/BindingRecipeCategory.java b/src/main/java/WayofTime/bloodmagic/compat/jei/binding/BindingRecipeCategory.java index c511fa04..dad5481a 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/jei/binding/BindingRecipeCategory.java +++ b/src/main/java/WayofTime/bloodmagic/compat/jei/binding/BindingRecipeCategory.java @@ -2,7 +2,7 @@ package WayofTime.bloodmagic.compat.jei.binding; import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.api.Constants; -import WayofTime.bloodmagic.compat.jei.BloodMagicPlugin; +import WayofTime.bloodmagic.compat.jei.BloodMagicJEIPlugin; import WayofTime.bloodmagic.util.helper.TextHelper; import mezz.jei.api.gui.IDrawable; import mezz.jei.api.gui.IRecipeLayout; @@ -22,7 +22,7 @@ public class BindingRecipeCategory implements IRecipeCategory { private static final int OUTPUT_SLOT = 2; @Nonnull - private final IDrawable background = BloodMagicPlugin.jeiHelper.getGuiHelper().createDrawable(new ResourceLocation(Constants.Mod.DOMAIN + "gui/jei/binding.png"), 0, 0, 100, 30); + private final IDrawable background = BloodMagicJEIPlugin.jeiHelper.getGuiHelper().createDrawable(new ResourceLocation(Constants.Mod.DOMAIN + "gui/jei/binding.png"), 0, 0, 100, 30); @Nonnull private final String localizedName = TextHelper.localize("jei.bloodmagic.recipe.binding"); diff --git a/src/main/java/WayofTime/bloodmagic/compat/jei/forge/TartaricForgeRecipeCategory.java b/src/main/java/WayofTime/bloodmagic/compat/jei/forge/TartaricForgeRecipeCategory.java index 3e03d2f7..9e2ae73c 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/jei/forge/TartaricForgeRecipeCategory.java +++ b/src/main/java/WayofTime/bloodmagic/compat/jei/forge/TartaricForgeRecipeCategory.java @@ -2,7 +2,7 @@ package WayofTime.bloodmagic.compat.jei.forge; import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.api.Constants; -import WayofTime.bloodmagic.compat.jei.BloodMagicPlugin; +import WayofTime.bloodmagic.compat.jei.BloodMagicJEIPlugin; import WayofTime.bloodmagic.util.helper.TextHelper; import mezz.jei.api.gui.ICraftingGridHelper; import mezz.jei.api.gui.IDrawable; @@ -24,14 +24,14 @@ public class TartaricForgeRecipeCategory implements IRecipeCategory> expandedInputs = BloodMagicPlugin.jeiHelper.getStackHelper().expandRecipeItemStackInputs(recipe.getInput()); + List> expandedInputs = BloodMagicJEIPlugin.jeiHelper.getStackHelper().expandRecipeItemStackInputs(recipe.getInput()); expandedInputs.add(validGems); ingredients.setInputLists(ItemStack.class, expandedInputs); ingredients.setOutput(ItemStack.class, recipe.getOutput()); diff --git a/src/main/java/WayofTime/bloodmagic/compat/waila/WailaPluginBloodMagic.java b/src/main/java/WayofTime/bloodmagic/compat/waila/BloodMagicHwylaPlugin.java similarity index 96% rename from src/main/java/WayofTime/bloodmagic/compat/waila/WailaPluginBloodMagic.java rename to src/main/java/WayofTime/bloodmagic/compat/waila/BloodMagicHwylaPlugin.java index 5cfd9622..7ec1536f 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/waila/WailaPluginBloodMagic.java +++ b/src/main/java/WayofTime/bloodmagic/compat/waila/BloodMagicHwylaPlugin.java @@ -9,7 +9,7 @@ import mcp.mobius.waila.api.IWailaRegistrar; import mcp.mobius.waila.api.WailaPlugin; @WailaPlugin -public class WailaPluginBloodMagic implements IWailaPlugin { +public class BloodMagicHwylaPlugin implements IWailaPlugin { @Override public void register(IWailaRegistrar registrar) { registrar.registerBodyProvider(new DataProviderBloodAltar(), BlockAltar.class); From dc5bfac313668071e5842e23596bcae45b1f91bc Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Mon, 21 Aug 2017 20:21:30 -0700 Subject: [PATCH 09/27] Fix JEI not seeing orbs as different items --- .../WayofTime/bloodmagic/compat/jei/BloodMagicJEIPlugin.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/WayofTime/bloodmagic/compat/jei/BloodMagicJEIPlugin.java b/src/main/java/WayofTime/bloodmagic/compat/jei/BloodMagicJEIPlugin.java index e5d2b153..1ac3520d 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/jei/BloodMagicJEIPlugin.java +++ b/src/main/java/WayofTime/bloodmagic/compat/jei/BloodMagicJEIPlugin.java @@ -85,6 +85,7 @@ public class BloodMagicJEIPlugin implements IModPlugin { @Override public void registerItemSubtypes(ISubtypeRegistry subtypeRegistry) { subtypeRegistry.useNbtForSubtypes(RegistrarBloodMagicItems.UPGRADE_TOME); + subtypeRegistry.useNbtForSubtypes(RegistrarBloodMagicItems.BLOOD_ORB); } @Override From fb2ea2a4fef7f5e5af516c6f520111acedf1b828 Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Mon, 21 Aug 2017 20:58:24 -0700 Subject: [PATCH 10/27] *Begin* moving GAPI compat to prettier system --- gradle.properties | 2 +- .../guideapi/BloodMagicGuideAPIPlugin.java | 11 +- .../bloodmagic/compat/guideapi/BookUtils.java | 30 +- .../compat/guideapi/book/CategoryAlchemy.java | 104 +++---- .../guideapi/book/CategoryArchitect.java | 265 +++++------------- .../compat/guideapi/entry/EntryText.java | 13 +- .../compat/guideapi/page/PageAltarRecipe.java | 76 +++-- .../page/PageTartaricForgeRecipe.java | 112 ++++---- .../bloodmagic/util/helper/RecipeHelper.java | 54 +--- 9 files changed, 254 insertions(+), 413 deletions(-) diff --git a/gradle.properties b/gradle.properties index bcf9d97a..d4229007 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,4 +9,4 @@ mappings_version=snapshot_20170814 jei_version=4.7.5.85 waila_version=1.8.20-B35 -guideapi_version=2.1.4-56 \ No newline at end of file +guideapi_version=2.1.4-57 \ No newline at end of file diff --git a/src/main/java/WayofTime/bloodmagic/compat/guideapi/BloodMagicGuideAPIPlugin.java b/src/main/java/WayofTime/bloodmagic/compat/guideapi/BloodMagicGuideAPIPlugin.java index b21f5281..33b8a2dc 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/guideapi/BloodMagicGuideAPIPlugin.java +++ b/src/main/java/WayofTime/bloodmagic/compat/guideapi/BloodMagicGuideAPIPlugin.java @@ -38,16 +38,17 @@ public class BloodMagicGuideAPIPlugin implements IGuideBook { GUIDE_BOOK.setRegistryName(new ResourceLocation(BloodMagic.MODID, "guide")); GUIDE_BOOK.setColor(Color.RED); + CategoryAlchemy.buildCategory(GUIDE_BOOK); + CategoryArchitect.buildCategory(GUIDE_BOOK); + GUIDE_BOOK.addCategory(new CategoryItemStack(CategoryDemon.buildCategory(), "guide.bloodmagic.category.demon", new ItemStack(RegistrarBloodMagicItems.BLOOD_SHARD))); + GUIDE_BOOK.addCategory(new CategoryItemStack(CategoryRitual.buildCategory(), "guide.bloodmagic.category.ritual", new ItemStack(RegistrarBloodMagicBlocks.RITUAL_CONTROLLER))); +// GUIDE_BOOK.addCategory(new CategoryItemStack(CategorySpell.buildCategory(), "guide.bloodmagic.category.spell", new ItemStack(ModItems.ritualDiviner))); + return GUIDE_BOOK; } @Override public void handlePost(ItemStack bookStack) { - GUIDE_BOOK.addCategory(new CategoryItemStack(CategoryAlchemy.buildCategory(), "guide.bloodmagic.category.alchemy", new ItemStack(RegistrarBloodMagicItems.ARCANE_ASHES))); - GUIDE_BOOK.addCategory(new CategoryItemStack(CategoryArchitect.buildCategory(), "guide.bloodmagic.category.architect", new ItemStack(RegistrarBloodMagicItems.SIGIL_DIVINATION))); - GUIDE_BOOK.addCategory(new CategoryItemStack(CategoryDemon.buildCategory(), "guide.bloodmagic.category.demon", new ItemStack(RegistrarBloodMagicItems.BLOOD_SHARD))); - GUIDE_BOOK.addCategory(new CategoryItemStack(CategoryRitual.buildCategory(), "guide.bloodmagic.category.ritual", new ItemStack(RegistrarBloodMagicBlocks.RITUAL_CONTROLLER))); -// guideBook.addCategory(new CategoryItemStack(CategorySpell.buildCategory(), "guide.bloodmagic.category.spell", new ItemStack(ModItems.ritualDiviner))); } @Nullable diff --git a/src/main/java/WayofTime/bloodmagic/compat/guideapi/BookUtils.java b/src/main/java/WayofTime/bloodmagic/compat/guideapi/BookUtils.java index 0c70656d..a2cb6a10 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/guideapi/BookUtils.java +++ b/src/main/java/WayofTime/bloodmagic/compat/guideapi/BookUtils.java @@ -2,18 +2,40 @@ package WayofTime.bloodmagic.compat.guideapi; import WayofTime.bloodmagic.api.alchemyCrafting.AlchemyCircleRenderer; import WayofTime.bloodmagic.api.registry.AlchemyArrayRecipeRegistry; +import WayofTime.bloodmagic.api_impl.BloodMagicAPI; +import WayofTime.bloodmagic.api_impl.recipe.RecipeBloodAltar; +import WayofTime.bloodmagic.api_impl.recipe.RecipeTartaricForge; import WayofTime.bloodmagic.client.render.alchemyArray.DualAlchemyCircleRenderer; import WayofTime.bloodmagic.compat.guideapi.page.PageAlchemyArray; -import amerifrance.guideapi.page.PageIRecipe; +import WayofTime.bloodmagic.compat.guideapi.page.PageAltarRecipe; +import WayofTime.bloodmagic.compat.guideapi.page.PageTartaricForgeRecipe; import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; import net.minecraft.util.ResourceLocation; +import javax.annotation.Nullable; import java.util.ArrayList; import java.util.List; public class BookUtils { + @Nullable + public static PageAltarRecipe getAltarPage(ItemStack output) { + for (RecipeBloodAltar recipe : BloodMagicAPI.INSTANCE.getRecipeRegistrar().getAltarRecipes().values()) + if (ItemStack.areItemStacksEqualUsingNBTShareTag(output, recipe.getOutput())) + return new PageAltarRecipe(recipe); + + return null; + } + + @Nullable + public static PageTartaricForgeRecipe getForgeRecipe(ItemStack output) { + for (RecipeTartaricForge recipe : BloodMagicAPI.INSTANCE.getRecipeRegistrar().getTartaricForgeRecipes().values()) + if (ItemStack.areItemStacksEqualUsingNBTShareTag(output, recipe.getOutput())) + return new PageTartaricForgeRecipe(recipe); + + return null; + } + public static PageAlchemyArray getAlchemyPage(String key) { ItemStack[] recipe = AlchemyArrayRecipeRegistry.getRecipeForArrayEffect(key); if (recipe[0] != null) { @@ -55,8 +77,4 @@ public class BookUtils { return null; } - - public static PageIRecipe getPageForRecipe(IRecipe recipe) { - return new PageIRecipe(recipe); - } } diff --git a/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryAlchemy.java b/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryAlchemy.java index a161cb2c..2db144b0 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryAlchemy.java +++ b/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryAlchemy.java @@ -1,103 +1,65 @@ package WayofTime.bloodmagic.compat.guideapi.book; import WayofTime.bloodmagic.BloodMagic; -import WayofTime.bloodmagic.api.recipe.TartaricForgeRecipe; import WayofTime.bloodmagic.compat.guideapi.BookUtils; import WayofTime.bloodmagic.compat.guideapi.entry.EntryText; -import WayofTime.bloodmagic.compat.guideapi.page.PageAlchemyArray; -import WayofTime.bloodmagic.compat.guideapi.page.PageTartaricForgeRecipe; import WayofTime.bloodmagic.core.RegistrarBloodMagicItems; -import WayofTime.bloodmagic.util.helper.RecipeHelper; -import WayofTime.bloodmagic.util.helper.TextHelper; import amerifrance.guideapi.api.IPage; +import amerifrance.guideapi.api.impl.Book; import amerifrance.guideapi.api.impl.abstraction.EntryAbstract; import amerifrance.guideapi.api.util.PageHelper; +import amerifrance.guideapi.category.CategoryItemStack; import amerifrance.guideapi.page.PageText; +import net.minecraft.client.resources.I18n; import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; - -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; public class CategoryAlchemy { - public static Map buildCategory() { - Map entries = new LinkedHashMap(); - String keyBase = "guide." + BloodMagic.MODID + ".entry.alchemy."; - List introPages = new ArrayList(); - introPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "intro" + ".info"), 370)); - entries.put(new ResourceLocation(keyBase + "intro"), new EntryText(introPages, TextHelper.localize(keyBase + "intro"), true)); + public static void buildCategory(Book book) { + final String keyBase = "guide." + BloodMagic.MODID + ".entry.alchemy."; - List ashPages = new ArrayList(); + CategoryItemStack category = new CategoryItemStack(keyBase + "alchemy", new ItemStack(RegistrarBloodMagicItems.ARCANE_ASHES)); + category.withKeyBase(BloodMagic.MODID); - TartaricForgeRecipe ashRecipe = RecipeHelper.getForgeRecipeForOutput(new ItemStack(RegistrarBloodMagicItems.ARCANE_ASHES)); - if (ashRecipe != null) { - ashPages.add(new PageTartaricForgeRecipe(ashRecipe)); - } - ashPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "ash" + ".info"), 370)); - entries.put(new ResourceLocation(keyBase + "ash"), new EntryText(ashPages, TextHelper.localize(keyBase + "ash"), true)); + category.addEntry("intro", new EntryText(keyBase + "intro", true)); + category.getEntry("intro").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "intro.info"), 370)); - List speedPages = new ArrayList(); + category.addEntry("ash", new EntryText(keyBase + "ash", true)); + category.getEntry("ash").addPage(BookUtils.getForgeRecipe(new ItemStack(RegistrarBloodMagicItems.ARCANE_ASHES))); + category.getEntry("ash").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "ash.info"), 370)); - PageAlchemyArray speedRecipePage = BookUtils.getAlchemyPage("movement"); - if (speedRecipePage != null) { - speedPages.add(speedRecipePage); - } - speedPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "speed" + ".info"), 370)); - entries.put(new ResourceLocation(keyBase + "speed"), new EntryText(speedPages, TextHelper.localize(keyBase + "speed"), true)); + category.addEntry("speed", new EntryText(keyBase + "speed", true)); + category.getEntry("speed").addPage(BookUtils.getAlchemyPage("movement")); + category.getEntry("speed").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "speed.info"), 370)); - List updraftPages = new ArrayList(); + category.addEntry("updraft", new EntryText(keyBase + "updraft", true)); + category.getEntry("updraft").addPage(BookUtils.getAlchemyPage("updraft")); + category.getEntry("updraft").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "updraft.info"), 370)); - PageAlchemyArray updraftRecipePage = BookUtils.getAlchemyPage("updraft"); - if (updraftRecipePage != null) { - updraftPages.add(updraftRecipePage); - } - updraftPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "updraft" + ".info"), 370)); - entries.put(new ResourceLocation(keyBase + "updraft"), new EntryText(updraftPages, TextHelper.localize(keyBase + "updraft"), true)); + category.addEntry("turret", new EntryText(keyBase + "turret", true)); + category.getEntry("turret").addPage(BookUtils.getAlchemyPage("skeletonTurret")); + category.getEntry("turret").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "turret.info"), 370)); - List turretPages = new ArrayList(); + category.addEntry("bounce", new EntryText(keyBase + "bounce", true)); + category.getEntry("bounce").addPage(BookUtils.getAlchemyPage("bounce")); + category.getEntry("bounce").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "bounce.info"), 370)); - PageAlchemyArray turretRecipePage = BookUtils.getAlchemyPage("skeletonTurret"); - if (turretRecipePage != null) { - turretPages.add(turretRecipePage); - } - turretPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "turret" + ".info"), 370)); - entries.put(new ResourceLocation(keyBase + "turret"), new EntryText(turretPages, TextHelper.localize(keyBase + "turret"), true)); + category.addEntry("buff", new EntryText(keyBase + "buff", true)); + category.getEntry("buff").addPage(BookUtils.getAlchemyPage("buff")); + category.getEntry("buff").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "buff.info"), 370)); - List bouncePages = new ArrayList(); + category.addEntry("fastMiner", new EntryText(keyBase + "fastMiner", true)); + category.getEntry("fastMiner").addPage(BookUtils.getAlchemyPage("fastMiner")); + category.getEntry("fastMiner").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "fastMiner.info"), 370)); - PageAlchemyArray bounceRecipePage = BookUtils.getAlchemyPage("bounce"); - if (bounceRecipePage != null) { - bouncePages.add(bounceRecipePage); - } - bouncePages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "bounce" + ".info"), 370)); - entries.put(new ResourceLocation(keyBase + "bounce"), new EntryText(bouncePages, TextHelper.localize(keyBase + "bounce"), true)); + book.addCategory(category); - List buffPages = new ArrayList(); - - buffPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "buff" + ".info"), 370)); - entries.put(new ResourceLocation(keyBase + "buff"), new EntryText(buffPages, TextHelper.localize(keyBase + "buff"), true)); - - List fastMinerPages = new ArrayList(); - - PageAlchemyArray fastMinerRecipePage = BookUtils.getAlchemyPage("fastMiner"); - if (fastMinerRecipePage != null) { - fastMinerPages.add(fastMinerRecipePage); - } - fastMinerPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "fastMiner" + ".info"), 370)); - entries.put(new ResourceLocation(keyBase + "fastMiner"), new EntryText(fastMinerPages, TextHelper.localize(keyBase + "fastMiner"), true)); - - for (Entry entry : entries.entrySet()) { - for (IPage page : entry.getValue().pageList) { + for (EntryAbstract entry : category.entries.values()) { + for (IPage page : entry.pageList) { if (page instanceof PageText) { ((PageText) page).setUnicodeFlag(true); } } } - - return entries; } } diff --git a/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryArchitect.java b/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryArchitect.java index ba1b8d31..1c415701 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryArchitect.java +++ b/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryArchitect.java @@ -16,222 +16,103 @@ import WayofTime.bloodmagic.item.ItemComponent; import WayofTime.bloodmagic.util.helper.RecipeHelper; import WayofTime.bloodmagic.util.helper.TextHelper; import amerifrance.guideapi.api.IPage; -import amerifrance.guideapi.api.impl.abstraction.EntryAbstract; +import amerifrance.guideapi.api.impl.Book; import amerifrance.guideapi.api.util.PageHelper; +import amerifrance.guideapi.category.CategoryItemStack; +import amerifrance.guideapi.page.PageJsonRecipe; import amerifrance.guideapi.page.PageText; +import net.minecraft.client.resources.I18n; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.IRecipe; import net.minecraft.util.ResourceLocation; import java.util.ArrayList; -import java.util.LinkedHashMap; import java.util.List; -import java.util.Map; -import java.util.Map.Entry; public class CategoryArchitect { - public static Map buildCategory() { - Map entries = new LinkedHashMap(); - String keyBase = "guide." + BloodMagic.MODID + ".entry.architect."; - List introPages = new ArrayList(); - introPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "intro" + ".info"), 370)); -// introPages.add(new PageImage(new ResourceLocation("bloodmagicguide", "textures/guide/" + ritual.getName() + ".png"))); - entries.put(new ResourceLocation(keyBase + "intro"), new EntryText(introPages, TextHelper.localize(keyBase + "intro"), true)); + public static void buildCategory(Book book) { + final String keyBase = "guide." + BloodMagic.MODID + ".entry.architect."; + CategoryItemStack category = new CategoryItemStack(keyBase + "architect", new ItemStack(RegistrarBloodMagicItems.SIGIL_DIVINATION)); + category.withKeyBase(BloodMagic.MODID); - List altarPages = new ArrayList(); + category.addEntry("intro", new EntryText(keyBase + "intro", true)); + category.getEntry("intro").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "intro.info"), 370)); - IRecipe altarRecipe = RecipeHelper.getRecipeForOutput(new ItemStack(RegistrarBloodMagicBlocks.ALTAR)); - if (altarRecipe != null) { - altarPages.add(BookUtils.getPageForRecipe(altarRecipe)); - } + category.addEntry("bloodaltar", new EntryText(keyBase + "bloodaltar", true)); + category.getEntry("bloodaltar").addPage(new PageJsonRecipe(new ResourceLocation(BloodMagic.MODID, "altar"))); + category.getEntry("bloodaltar").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "bloodaltar.info.1"), 370)); + category.getEntry("bloodaltar").addPage(new PageJsonRecipe(new ResourceLocation(BloodMagic.MODID, "sacrificial_dagger"))); + category.getEntry("bloodaltar").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "bloodaltar.info.2"), 370)); - altarPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "bloodaltar" + ".info.1"), 370)); + category.addEntry("ash", new EntryText(keyBase + "ash", true)); + category.getEntry("ash").addPage(BookUtils.getForgeRecipe(new ItemStack(RegistrarBloodMagicItems.ARCANE_ASHES))); + category.getEntry("ash").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "ash.info"), 370)); - IRecipe daggerRecipe = RecipeHelper.getRecipeForOutput(new ItemStack(RegistrarBloodMagicItems.SACRIFICIAL_DAGGER)); - if (daggerRecipe != null) { - altarPages.add(BookUtils.getPageForRecipe(daggerRecipe)); - } + category.addEntry("divination", new EntryText(keyBase + "divination", true)); + category.getEntry("divination").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_DIVINATION))); + category.getEntry("divination").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "divination.info"))); - altarPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "bloodaltar" + ".info.2"), 370)); - entries.put(new ResourceLocation(keyBase + "bloodaltar"), new EntryText(altarPages, TextHelper.localize(keyBase + "bloodaltar"), true)); + category.addEntry("soulnetwork", new EntryText(keyBase + "soulnetwork", true)); + category.getEntry("soulnetwork").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "soulnetwork.info"))); - List ashPages = new ArrayList(); + category.addEntry("weakorb", new EntryText(keyBase + "weakorb", true)); + category.getEntry("weakorb").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "weakorb.info1"), 370)); + category.getEntry("weakorb").addPage(BookUtils.getAltarPage(OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_WEAK))); + category.getEntry("weakorb").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "weakorb.info2"), 370)); - TartaricForgeRecipe ashRecipe = RecipeHelper.getForgeRecipeForOutput(new ItemStack(RegistrarBloodMagicItems.ARCANE_ASHES)); - if (ashRecipe != null) { - ashPages.add(new PageTartaricForgeRecipe(ashRecipe)); - } - ashPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "ash" + ".info"), 370)); - entries.put(new ResourceLocation(keyBase + "ash"), new EntryText(ashPages, TextHelper.localize(keyBase + "ash"), true)); + category.addEntry("incense", new EntryText(keyBase + "incense", true)); + category.getEntry("incense").addPage(new PageJsonRecipe(new ResourceLocation(BloodMagic.MODID, "incense_altar"))); + category.getEntry("incense").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "incense.info.1"), 370)); + category.getEntry("incense").addPage(new PageJsonRecipe(new ResourceLocation(BloodMagic.MODID, "path_wood"))); + category.getEntry("incense").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "incense.info.2"), 370)); - List divinationPages = new ArrayList(); + category.addEntry("bloodrune", new EntryText(keyBase + "bloodrune", true)); + category.getEntry("bloodrune").addPage(new PageJsonRecipe(new ResourceLocation(BloodMagic.MODID, "blood_rune_blank"))); + category.getEntry("bloodrune").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "bloodrune.info.1"), 370)); - PageAlchemyArray divinationRecipePage = BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_DIVINATION)); - if (divinationRecipePage != null) { - divinationPages.add(divinationRecipePage); - } + category.addEntry("inspectoris", new EntryText(keyBase + "inspectoris", true)); + category.getEntry("inspectoris").addPage(BookUtils.getAltarPage(new ItemStack(RegistrarBloodMagicItems.SANGUINE_BOOK))); + category.getEntry("inspectoris").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "inspectoris.info.1"), 370)); - divinationPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "divination" + ".info"), 370)); - entries.put(new ResourceLocation(keyBase + "divination"), new EntryText(divinationPages, TextHelper.localize(keyBase + "divination"), true)); + category.addEntry("runeSpeed", new EntryText(keyBase + "runeSpeed", true)); + category.getEntry("runeSpeed").addPage(BookUtils.getAltarPage(new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE, 1, 1))); + category.getEntry("runeSpeed").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "runeSpeed.info.1"), 370)); - List soulnetworkPages = new ArrayList(); + category.addEntry("water", new EntryText(keyBase + "water", true)); + category.getEntry("water").addPage(BookUtils.getForgeRecipe(ItemComponent.getStack(ItemComponent.REAGENT_WATER))); + category.getEntry("water").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_WATER))); + category.getEntry("water").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "water.info.1"), 370)); - soulnetworkPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "soulnetwork" + ".info"), 370)); - entries.put(new ResourceLocation(keyBase + "soulnetwork"), new EntryText(soulnetworkPages, TextHelper.localize(keyBase + "soulnetwork"), true)); + category.addEntry("lava", new EntryText(keyBase + "lava", true)); + category.getEntry("lava").addPage(BookUtils.getForgeRecipe(ItemComponent.getStack(ItemComponent.REAGENT_LAVA))); + category.getEntry("lava").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_LAVA))); + category.getEntry("lava").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "lava.info.1"), 370)); - List weakorbPages = new ArrayList(); - weakorbPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "weakorb" + ".info.1"), 370)); + category.addEntry("lavaCrystal", new EntryText(keyBase + "lavaCrystal", true)); + category.getEntry("lavaCrystal").addPage(new PageJsonRecipe(new ResourceLocation(BloodMagic.MODID, "lava_crystal"))); + category.getEntry("lavaCrystal").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "lavaCrystal.info.1"), 370)); - AltarRecipe weakorbRecipe = RecipeHelper.getAltarRecipeForOutput(OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_WEAK)); - if (weakorbRecipe != null) { - weakorbPages.add(new PageAltarRecipe(weakorbRecipe)); - } + category.addEntry("apprenticeorb", new EntryText(keyBase + "apprenticeorb", true)); + category.getEntry("apprenticeorb").addPage(BookUtils.getAltarPage(OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_APPRENTICE))); + category.getEntry("apprenticeorb").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "apprenticeorb.info.1"), 370)); - weakorbPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "weakorb" + ".info.2"), 370)); - entries.put(new ResourceLocation(keyBase + "weakorb"), new EntryText(weakorbPages, TextHelper.localize(keyBase + "weakorb"), true)); + category.addEntry("dagger", new EntryText(keyBase + "dagger", true)); + category.getEntry("dagger").addPage(BookUtils.getAltarPage(new ItemStack(RegistrarBloodMagicItems.DAGGER_OF_SACRIFICE))); + category.getEntry("dagger").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "dagger.info.1"), 370)); - List incensePages = new ArrayList(); + category.addEntry("runeSacrifice", new EntryText(keyBase + "runeSacrifice", true)); + category.getEntry("runeSacrifice").addPage(new PageJsonRecipe(new ResourceLocation(BloodMagic.MODID, "blood_rune_sacrifice"))); + category.getEntry("runeSacrifice").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "runeSacrifice.info.1"), 370)); - IRecipe incenseRecipe = RecipeHelper.getRecipeForOutput(new ItemStack(RegistrarBloodMagicBlocks.INCENSE_ALTAR)); - if (incenseRecipe != null) { - incensePages.add(BookUtils.getPageForRecipe(incenseRecipe)); - } + category.addEntry("runeSelfSacrifice", new EntryText(keyBase + "runeSelfSacrifice", true)); + category.getEntry("runeSelfSacrifice").addPage(new PageJsonRecipe(new ResourceLocation(BloodMagic.MODID, "blood_rune_selfsacrifice"))); + category.getEntry("runeSelfSacrifice").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "runeSelfSacrifice.info.1"), 370)); - incensePages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "incense" + ".info.1"), 370)); - - IRecipe woodPathRecipe = RecipeHelper.getRecipeForOutput(new ItemStack(RegistrarBloodMagicBlocks.PATH, 1, 0)); - if (woodPathRecipe != null) { - incensePages.add(BookUtils.getPageForRecipe(woodPathRecipe)); - } - - incensePages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "incense" + ".info.2"), 370)); - entries.put(new ResourceLocation(keyBase + "incense"), new EntryText(incensePages, TextHelper.localize(keyBase + "incense"), true)); - - List runePages = new ArrayList(); - - IRecipe runeRecipe = RecipeHelper.getRecipeForOutput(new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE, 1, 0)); - if (runeRecipe != null) { - runePages.add(BookUtils.getPageForRecipe(runeRecipe)); - } - - runePages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "bloodrune" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "bloodrune"), new EntryText(runePages, TextHelper.localize(keyBase + "bloodrune"), true)); - - List inspectPages = new ArrayList(); - - AltarRecipe inspectRecipe = RecipeHelper.getAltarRecipeForOutput(new ItemStack(RegistrarBloodMagicItems.SANGUINE_BOOK)); - if (inspectRecipe != null) { - inspectPages.add(new PageAltarRecipe(inspectRecipe)); - } - - inspectPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "inspectoris" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "inspectoris"), new EntryText(inspectPages, TextHelper.localize(keyBase + "inspectoris"), true)); - - List speedRunePages = new ArrayList(); - - IRecipe speedRecipe = RecipeHelper.getRecipeForOutput(new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE, 1, 1)); - if (speedRecipe != null) { - speedRunePages.add(BookUtils.getPageForRecipe(speedRecipe)); - } - - speedRunePages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "runeSpeed" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "runeSpeed"), new EntryText(speedRunePages, TextHelper.localize(keyBase + "runeSpeed"), true)); - - List waterPages = new ArrayList(); - - TartaricForgeRecipe waterRecipe = RecipeHelper.getForgeRecipeForOutput(ItemComponent.getStack(ItemComponent.REAGENT_WATER)); - if (waterRecipe != null) { - waterPages.add(new PageTartaricForgeRecipe(waterRecipe)); - } - - PageAlchemyArray waterRecipePage = BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_WATER)); - if (waterRecipePage != null) { - waterPages.add(waterRecipePage); - } - - waterPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "water" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "water"), new EntryText(waterPages, TextHelper.localize(keyBase + "water"), true)); - - List lavaPages = new ArrayList(); - - TartaricForgeRecipe lavaRecipe = RecipeHelper.getForgeRecipeForOutput(ItemComponent.getStack(ItemComponent.REAGENT_LAVA)); - if (lavaRecipe != null) { - lavaPages.add(new PageTartaricForgeRecipe(lavaRecipe)); - } - - PageAlchemyArray lavaRecipePage = BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_LAVA)); - if (lavaRecipePage != null) { - lavaPages.add(lavaRecipePage); - } - - lavaPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "lava" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "lava"), new EntryText(lavaPages, TextHelper.localize(keyBase + "lava"), true)); - - List lavaCrystalPages = new ArrayList(); - - IRecipe lavaCrystalRecipe = RecipeHelper.getRecipeForOutput(new ItemStack(RegistrarBloodMagicItems.LAVA_CRYSTAL)); - if (lavaCrystalRecipe != null) { - lavaCrystalPages.add(BookUtils.getPageForRecipe(lavaCrystalRecipe)); - } - - lavaCrystalPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "lavaCrystal" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "lavaCrystal"), new EntryText(lavaCrystalPages, TextHelper.localize(keyBase + "lavaCrystal"), true)); - - List apprenticeorbPages = new ArrayList(); - - AltarRecipe apprenticeorbRecipe = RecipeHelper.getAltarRecipeForOutput(OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_APPRENTICE)); - if (apprenticeorbRecipe != null) { - apprenticeorbPages.add(new PageAltarRecipe(apprenticeorbRecipe)); - } - - apprenticeorbPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "apprenticeorb" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "apprenticeorb"), new EntryText(apprenticeorbPages, TextHelper.localize(keyBase + "apprenticeorb"), true)); - - List daggerPages = new ArrayList(); - - AltarRecipe daggerOfSacrificeRecipe = RecipeHelper.getAltarRecipeForOutput(new ItemStack(RegistrarBloodMagicItems.DAGGER_OF_SACRIFICE)); - if (daggerOfSacrificeRecipe != null) { - daggerPages.add(new PageAltarRecipe(daggerOfSacrificeRecipe)); - } - - daggerPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "dagger" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "dagger"), new EntryText(daggerPages, TextHelper.localize(keyBase + "dagger"), true)); - - List runeSacrificePages = new ArrayList(); - - IRecipe runeSacrificeRecipe = RecipeHelper.getRecipeForOutput(new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE, 1, 3)); - if (runeSacrificeRecipe != null) { - runeSacrificePages.add(BookUtils.getPageForRecipe(runeSacrificeRecipe)); - } - - runeSacrificePages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "runeSacrifice" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "runeSacrifice"), new EntryText(runeSacrificePages, TextHelper.localize(keyBase + "runeSacrifice"), true)); - - List runeSelfSacrificePages = new ArrayList(); - - IRecipe runeSelfSacrificeRecipe = RecipeHelper.getRecipeForOutput(new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE, 1, 4)); - if (runeSelfSacrificeRecipe != null) { - runeSelfSacrificePages.add(BookUtils.getPageForRecipe(runeSelfSacrificeRecipe)); - } - - runeSelfSacrificePages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "runeSelfSacrifice" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "runeSelfSacrifice"), new EntryText(runeSelfSacrificePages, TextHelper.localize(keyBase + "runeSelfSacrifice"), true)); - - List holdingPages = new ArrayList(); - - TartaricForgeRecipe holdingRecipe = RecipeHelper.getForgeRecipeForOutput(ItemComponent.getStack(ItemComponent.REAGENT_HOLDING)); - if (holdingRecipe != null) { - holdingPages.add(new PageTartaricForgeRecipe(holdingRecipe)); - } - - PageAlchemyArray holdingRecipePage = BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_HOLDING)); - if (holdingRecipePage != null) { - holdingPages.add(holdingRecipePage); - } - - holdingPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "holding" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "holding"), new EntryText(holdingPages, TextHelper.localize(keyBase + "holding"), true)); + category.addEntry("holding", new EntryText(keyBase + "holding", true)); + category.getEntry("holding").addPage(BookUtils.getForgeRecipe(ItemComponent.getStack(ItemComponent.REAGENT_HOLDING))); + category.getEntry("holding").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_HOLDING))); + category.getEntry("holding").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "holding.info.1"), 370)); List airPages = new ArrayList(); @@ -633,14 +514,8 @@ public class CategoryArchitect { mimicPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "mimic" + ".info.1"), 370)); entries.put(new ResourceLocation(keyBase + "mimic"), new EntryText(mimicPages, TextHelper.localize(keyBase + "mimic"), true)); - for (Entry entry : entries.entrySet()) { - for (IPage page : entry.getValue().pageList) { - if (page instanceof PageText) { - ((PageText) page).setUnicodeFlag(true); - } - } - } + category.entries.values().forEach(e -> e.pageList.stream().filter(p -> p instanceof PageText).forEach(p -> ((PageText) p).setUnicodeFlag(true))); - return entries; + book.addCategory(category); } } diff --git a/src/main/java/WayofTime/bloodmagic/compat/guideapi/entry/EntryText.java b/src/main/java/WayofTime/bloodmagic/compat/guideapi/entry/EntryText.java index 577e4f85..34de49c2 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/guideapi/entry/EntryText.java +++ b/src/main/java/WayofTime/bloodmagic/compat/guideapi/entry/EntryText.java @@ -6,6 +6,7 @@ import amerifrance.guideapi.api.impl.abstraction.CategoryAbstract; import amerifrance.guideapi.api.util.GuiHelper; import amerifrance.guideapi.entry.EntryResourceLocation; import amerifrance.guideapi.gui.GuiBase; +import com.google.common.collect.Lists; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; import net.minecraft.util.ResourceLocation; @@ -17,12 +18,16 @@ import java.util.List; public class EntryText extends EntryResourceLocation { - public EntryText(List pageList, String unlocEntryName, boolean unicode) { - super(pageList, unlocEntryName, new ResourceLocation("bloodmagicguide", "textures/gui/bullet_point.png"), unicode); + public EntryText(List pageList, String name, boolean unicode) { + super(pageList, name, new ResourceLocation("bloodmagicguide", "textures/gui/bullet_point.png"), unicode); } - public EntryText(List pageList, String unlocEntryName) { - this(pageList, unlocEntryName, false); + public EntryText(List pageList, String name) { + this(pageList, name, false); + } + + public EntryText(String name, boolean unicode) { + this(Lists.newArrayList(), name, unicode); } @Override diff --git a/src/main/java/WayofTime/bloodmagic/compat/guideapi/page/PageAltarRecipe.java b/src/main/java/WayofTime/bloodmagic/compat/guideapi/page/PageAltarRecipe.java index 6117a981..b93f7cf6 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/guideapi/page/PageAltarRecipe.java +++ b/src/main/java/WayofTime/bloodmagic/compat/guideapi/page/PageAltarRecipe.java @@ -1,7 +1,6 @@ package WayofTime.bloodmagic.compat.guideapi.page; -import WayofTime.bloodmagic.api.ItemStackWrapper; -import WayofTime.bloodmagic.api.registry.AltarRecipeRegistry; +import WayofTime.bloodmagic.api_impl.recipe.RecipeBloodAltar; import WayofTime.bloodmagic.util.helper.TextHelper; import amerifrance.guideapi.api.impl.Book; import amerifrance.guideapi.api.impl.Page; @@ -11,60 +10,91 @@ import amerifrance.guideapi.api.util.GuiHelper; import amerifrance.guideapi.gui.GuiBase; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; +import net.minecraft.creativetab.CreativeTabs; import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.util.NonNullList; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; -import java.util.List; +import java.util.Random; public class PageAltarRecipe extends Page { - public List input; - public ItemStack output; - public int tier; - public int bloodRequired; + public final ItemStack[] input; + public final ItemStack output; + public final int tier; + public final int bloodRequired; - public PageAltarRecipe(AltarRecipeRegistry.AltarRecipe recipe) { - this.input = ItemStackWrapper.toStackList(recipe.getInput()); + private long lastCycle = -1; + private int cycleIdx = 0; + private Random random = new Random(); + + public PageAltarRecipe(RecipeBloodAltar recipe) { + this.input = recipe.getInput().getMatchingStacks(); this.output = recipe.getOutput(); - this.tier = recipe.getMinTier().toInt(); + this.tier = recipe.getMinimumTier().toInt(); this.bloodRequired = recipe.getSyphon(); } @Override @SideOnly(Side.CLIENT) public void draw(Book book, CategoryAbstract category, EntryAbstract entry, int guiLeft, int guiTop, int mouseX, int mouseY, GuiBase guiBase, FontRenderer fontRenderer) { - Minecraft.getMinecraft().getTextureManager().bindTexture(new ResourceLocation("bloodmagicguide" + ":textures/gui/altar.png")); + Minecraft mc = Minecraft.getMinecraft(); + mc.getTextureManager().bindTexture(new ResourceLocation("bloodmagicguide", "textures/gui/altar.png")); + + long time = mc.world.getTotalWorldTime(); + if (lastCycle < 0 || lastCycle < time - 20) { + if (lastCycle > 0) { + cycleIdx++; + cycleIdx = Math.max(0, cycleIdx); + } + lastCycle = mc.world.getTotalWorldTime(); + } + guiBase.drawTexturedModalRect(guiLeft + 42, guiTop + 53, 0, 0, 146, 104); guiBase.drawCenteredString(fontRenderer, TextHelper.localize("guide.bloodmagic.page.bloodAltar"), guiLeft + guiBase.xSize / 2, guiTop + 12, 0); int inputX = (1 + 1) * 20 + (guiLeft + guiBase.xSize / 7) + 1; int inputY = (20) + (guiTop + guiBase.ySize / 5) - 1; //1 * 20 - GuiHelper.drawItemStack(input.get(0), inputX, inputY); - if (GuiHelper.isMouseBetween(mouseX, mouseY, inputX, inputY, 15, 15)) { - guiBase.renderToolTip(input.get(0), mouseX, mouseY); - } + ItemStack inputStack = input[getRandomizedCycle(0, input.length)]; + GuiHelper.drawItemStack(inputStack, inputX, inputY); + if (GuiHelper.isMouseBetween(mouseX, mouseY, inputX, inputY, 15, 15)) + guiBase.renderToolTip(inputStack, mouseX, mouseY); + + ItemStack outputStack = output; + if (output.isEmpty()) + outputStack = new ItemStack(Blocks.BARRIER); - if (output.isEmpty()) { - output = new ItemStack(Blocks.BARRIER); - } int outputX = (5 * 20) + (guiLeft + guiBase.xSize / 7) + 1; int outputY = (20) + (guiTop + guiBase.xSize / 5) - 1; // 1 * 20 - GuiHelper.drawItemStack(output, outputX, outputY); - if (GuiHelper.isMouseBetween(mouseX, mouseY, outputX, outputY, 15, 15)) { - guiBase.renderToolTip(output, outputX, outputY); - } + GuiHelper.drawItemStack(outputStack, outputX, outputY); + if (GuiHelper.isMouseBetween(mouseX, mouseY, outputX, outputY, 15, 15)) + guiBase.renderToolTip(outputStack, outputX, outputY); - if (output.getItem() == Item.getItemFromBlock(Blocks.BARRIER)) { + if (outputStack.getItem() == Item.getItemFromBlock(Blocks.BARRIER)) { guiBase.drawCenteredString(fontRenderer, TextHelper.localize("text.furnace.error"), guiLeft + guiBase.xSize / 2, guiTop + 4 * guiBase.ySize / 6, 0xED073D); guiBase.drawCenteredString(fontRenderer, TextHelper.localize("bm.string.tier") + ": " + String.valueOf(tier), guiLeft + guiBase.xSize / 2, guiTop + 4 * guiBase.ySize / 6 + 15, 0); guiBase.drawCenteredString(fontRenderer, "LP: " + String.valueOf(bloodRequired), guiLeft + guiBase.xSize / 2, guiTop + 4 * guiBase.ySize / 6 + 30, 0); } + guiBase.drawCenteredString(fontRenderer, TextHelper.localize("guide.bloodmagic.page.tier", String.valueOf(tier)), guiLeft + guiBase.xSize / 2, guiTop + 4 * guiBase.ySize / 6, 0); guiBase.drawCenteredString(fontRenderer, TextHelper.localize("guide.bloodmagic.page.lp", String.valueOf(bloodRequired)), guiLeft + guiBase.xSize / 2, guiTop + 4 * guiBase.ySize / 6 + 15, 0); } + + protected ItemStack getNextItem(ItemStack stack, int position) { + NonNullList subItems = NonNullList.create(); + Item item = stack.getItem(); + + item.getSubItems(CreativeTabs.SEARCH, subItems); + return subItems.get(getRandomizedCycle(position, subItems.size())); + } + + protected int getRandomizedCycle(int index, int max) { + random.setSeed(index); + return (index + random.nextInt(max) + cycleIdx) % max; + } } diff --git a/src/main/java/WayofTime/bloodmagic/compat/guideapi/page/PageTartaricForgeRecipe.java b/src/main/java/WayofTime/bloodmagic/compat/guideapi/page/PageTartaricForgeRecipe.java index 7f52af4a..0daf740c 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/guideapi/page/PageTartaricForgeRecipe.java +++ b/src/main/java/WayofTime/bloodmagic/compat/guideapi/page/PageTartaricForgeRecipe.java @@ -1,7 +1,7 @@ package WayofTime.bloodmagic.compat.guideapi.page; -import WayofTime.bloodmagic.api.recipe.TartaricForgeRecipe; import WayofTime.bloodmagic.api.registry.OrbRegistry; +import WayofTime.bloodmagic.api_impl.recipe.RecipeTartaricForge; import WayofTime.bloodmagic.util.helper.TextHelper; import amerifrance.guideapi.api.impl.Book; import amerifrance.guideapi.api.impl.Page; @@ -9,11 +9,14 @@ import amerifrance.guideapi.api.impl.abstraction.CategoryAbstract; import amerifrance.guideapi.api.impl.abstraction.EntryAbstract; import amerifrance.guideapi.api.util.GuiHelper; import amerifrance.guideapi.gui.GuiBase; +import com.google.common.collect.Lists; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.FontRenderer; import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.Ingredient; +import net.minecraft.util.NonNullList; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @@ -23,93 +26,72 @@ import java.util.List; import java.util.Random; public class PageTartaricForgeRecipe extends Page { - public List input; - public ItemStack output; - public int tier; - public double minimumWill; - public double drainedWill; + public final List input; + public final ItemStack output; + public final int tier; + public final double minimumWill; + public final double drainedWill; + private long lastCycle = -1; private int cycleIdx = 0; - private Random rand = new Random(); + private Random random = new Random(); - public PageTartaricForgeRecipe(TartaricForgeRecipe recipe) { - this.input = recipe.getInput(); - this.output = recipe.getRecipeOutput(); + public PageTartaricForgeRecipe(RecipeTartaricForge recipe) { + input = Lists.newArrayList(); + for (Ingredient ingredient : recipe.getInput()) + input.add(ingredient.getMatchingStacks()); + + this.output = recipe.getOutput(); this.tier = 0; this.minimumWill = recipe.getMinimumSouls(); - this.drainedWill = recipe.getSoulsDrained(); + this.drainedWill = recipe.getSoulDrain(); } @SuppressWarnings("unchecked") @Override @SideOnly(Side.CLIENT) public void draw(Book book, CategoryAbstract category, EntryAbstract entry, int guiLeft, int guiTop, int mouseX, int mouseY, GuiBase guiBase, FontRenderer fontRenderer) { - Minecraft.getMinecraft().getTextureManager().bindTexture(new ResourceLocation("bloodmagicguide" + ":textures/gui/soulForge.png")); + Minecraft mc = Minecraft.getMinecraft(); + mc.getTextureManager().bindTexture(new ResourceLocation("bloodmagicguide", "textures/gui/soulForge.png")); + + long time = mc.world.getTotalWorldTime(); + if (lastCycle < 0 || lastCycle < time - 20) { + if (lastCycle > 0) { + cycleIdx++; + cycleIdx = Math.max(0, cycleIdx); + } + lastCycle = mc.world.getTotalWorldTime(); + } + guiBase.drawTexturedModalRect(guiLeft + 42, guiTop + 53, 0, 0, 146, 104); - guiBase.drawCenteredString(fontRenderer, TextHelper.localize("guide.bloodmagic.page.soulForge"), guiLeft + guiBase.xSize / 2, guiTop + 12, 0); -// int inputX = (1 + 1) * 20 + (guiLeft + guiBase.xSize / 7) + 1; -// int inputY = (20) + (guiTop + guiBase.ySize / 5) - 1; //1 * 20 - for (int y = 0; y < 2; y++) { for (int x = 0; x < 2; x++) { int stackX = (x + 1) * 20 + (guiLeft + guiBase.xSize / 7) + 1; int stackY = (y + 1) * 20 + (guiTop + guiBase.ySize / 5) - 1; - Object component = input.size() > y * 2 + x ? input.get(y * 2 + x) : null;//recipe.getInput()[y * 2 + x]; + ItemStack[] component = input.size() > y * 2 + x ? input.get(y * 2 + x) : null;//recipe.getInput()[y * 2 + x]; if (component != null) { - if (component instanceof ItemStack) { - ItemStack input = (ItemStack) component; - if (input.getItemDamage() == OreDictionary.WILDCARD_VALUE) - input.setItemDamage(0); - - GuiHelper.drawItemStack((ItemStack) component, stackX, stackY); - if (GuiHelper.isMouseBetween(mouseX, mouseY, stackX, stackY, 15, 15)) { -// tooltips = GuiHelper.getTooltip((ItemStack) component); - guiBase.renderToolTip((ItemStack) component, mouseX, mouseY); - } - } else if (component instanceof Integer) { - List list = OrbRegistry.getOrbsDownToTier((Integer) component); - if (!list.isEmpty()) { - ItemStack stack = list.get(getRandomizedCycle(x + (y * 2), list.size())); - GuiHelper.drawItemStack(stack, stackX, stackY); - if (GuiHelper.isMouseBetween(mouseX, mouseY, stackX, stackY, 15, 15)) { -// tooltips = GuiHelper.getTooltip(stack); - guiBase.renderToolTip(stack, mouseX, mouseY); - } - } - } else { - List list = (List) component; - if (!list.isEmpty()) { - ItemStack stack = list.get(getRandomizedCycle(x + (y * 2), list.size())); - GuiHelper.drawItemStack(stack, stackX, stackY); - if (GuiHelper.isMouseBetween(mouseX, mouseY, stackX, stackY, 15, 15)) { -// tooltips = GuiHelper.getTooltip(stack); - guiBase.renderToolTip(stack, mouseX, mouseY); - } - } - } + ItemStack drawStack = component[getRandomizedCycle(x + (y * 2), component.length)]; + GuiHelper.drawItemStack(drawStack, stackX, stackY); + if (GuiHelper.isMouseBetween(mouseX, mouseY, stackX, stackY, 15, 15)) + guiBase.renderToolTip(drawStack, mouseX, mouseY); } } } -// GuiHelper.drawItemStack(input.get(0), inputX, inputY); -// if (GuiHelper.isMouseBetween(mouseX, mouseY, inputX, inputY, 15, 15)) -// { -// guiBase.renderToolTip(input.get(0), mouseX, mouseY); -// } + ItemStack outputStack = output; + if (outputStack.isEmpty()) + outputStack = new ItemStack(Blocks.BARRIER); - if (output == null) { - output = new ItemStack(Blocks.BARRIER); - } int outputX = (5 * 20) + (guiLeft + guiBase.xSize / 7) + 1; int outputY = (20) + (guiTop + guiBase.xSize / 5) + 10; // 1 * 20 - GuiHelper.drawItemStack(output, outputX, outputY); + GuiHelper.drawItemStack(outputStack, outputX, outputY); if (GuiHelper.isMouseBetween(mouseX, mouseY, outputX, outputY, 15, 15)) { - guiBase.renderToolTip(output, outputX, outputY); + guiBase.renderToolTip(outputStack, outputX, outputY); } - if (output.getItem() == Item.getItemFromBlock(Blocks.BARRIER)) { + if (outputStack.getItem() == Item.getItemFromBlock(Blocks.BARRIER)) { guiBase.drawCenteredString(fontRenderer, TextHelper.localize("text.furnace.error"), guiLeft + guiBase.xSize / 2, guiTop + 4 * guiBase.ySize / 6, 0xED073D); guiBase.drawCenteredString(fontRenderer, TextHelper.localize("bm.string.tier") + ": " + String.valueOf(tier), guiLeft + guiBase.xSize / 2, guiTop + 4 * guiBase.ySize / 6 + 15, 0); // guiBase.drawCenteredString(fontRenderer, "LP: " + String.valueOf(bloodRequired), guiLeft + guiBase.xSize / 2, guiTop + 4 * guiBase.ySize / 6 + 30, 0); @@ -118,8 +100,16 @@ public class PageTartaricForgeRecipe extends Page { guiBase.drawCenteredString(fontRenderer, TextHelper.localize("guide.bloodmagic.page.drainedWill", String.valueOf(drainedWill)), guiLeft + guiBase.xSize / 2, guiTop + 4 * guiBase.ySize / 6, 0); } + protected ItemStack getNextItem(ItemStack stack, int position) { + NonNullList subItems = NonNullList.create(); + Item item = stack.getItem(); + + item.getSubItems(item.getCreativeTab(), subItems); + return subItems.get(getRandomizedCycle(position, subItems.size())); + } + protected int getRandomizedCycle(int index, int max) { - rand.setSeed(index); - return (index + rand.nextInt(max) + cycleIdx) % max; + random.setSeed(index); + return (index + random.nextInt(max) + cycleIdx) % max; } } diff --git a/src/main/java/WayofTime/bloodmagic/util/helper/RecipeHelper.java b/src/main/java/WayofTime/bloodmagic/util/helper/RecipeHelper.java index 069246a9..9e4fd5b7 100644 --- a/src/main/java/WayofTime/bloodmagic/util/helper/RecipeHelper.java +++ b/src/main/java/WayofTime/bloodmagic/util/helper/RecipeHelper.java @@ -1,55 +1,15 @@ package WayofTime.bloodmagic.util.helper; -import WayofTime.bloodmagic.api.recipe.TartaricForgeRecipe; -import WayofTime.bloodmagic.api.registry.AltarRecipeRegistry; -import WayofTime.bloodmagic.api.registry.TartaricForgeRecipeRegistry; +import WayofTime.bloodmagic.api_impl.BloodMagicAPI; +import WayofTime.bloodmagic.api_impl.recipe.RecipeBloodAltar; +import WayofTime.bloodmagic.api_impl.recipe.RecipeTartaricForge; +import WayofTime.bloodmagic.compat.guideapi.page.PageAltarRecipe; +import WayofTime.bloodmagic.compat.guideapi.page.PageTartaricForgeRecipe; import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; -import net.minecraftforge.fml.common.registry.ForgeRegistries; + +import javax.annotation.Nullable; public class RecipeHelper { - public static IRecipe getRecipeForOutput(ItemStack stack) { - for (IRecipe recipe : ForgeRegistries.RECIPES.getValues()) { - if (recipe != null) { - ItemStack resultStack = recipe.getRecipeOutput(); - if (!resultStack.isEmpty()) { - if (resultStack.getItem() == stack.getItem() && resultStack.getItemDamage() == stack.getItemDamage()) { - return recipe; - } - } - } - } - return null; - } - public static AltarRecipeRegistry.AltarRecipe getAltarRecipeForOutput(ItemStack stack) { - for (AltarRecipeRegistry.AltarRecipe recipe : AltarRecipeRegistry.getRecipes().values()) { - if (recipe != null && !recipe.isFillable()) { - ItemStack resultStack = recipe.getOutput(); - if (!resultStack.isEmpty()) { - if (resultStack.getItem() == stack.getItem() && resultStack.getItemDamage() == stack.getItemDamage()) { - return recipe; - } - } - } - } - - return null; - } - - public static TartaricForgeRecipe getForgeRecipeForOutput(ItemStack stack) { - for (TartaricForgeRecipe recipe : TartaricForgeRecipeRegistry.getRecipeList()) { - if (recipe != null) { - ItemStack resultStack = recipe.getRecipeOutput(); - if (!resultStack.isEmpty()) { - if (resultStack.getItem() == stack.getItem() && resultStack.getItemDamage() == stack.getItemDamage()) { - return recipe; - } - } - } - } - - return null; - } } From 114b0c3edab0d8310d6d0a19d0ce939a4869aeb1 Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Tue, 22 Aug 2017 15:52:27 -0700 Subject: [PATCH 11/27] Move ItemComponent to an enum style item Much cleaner. Less prone to breakage. Less like Kit would have written it. --- .../java/WayofTime/bloodmagic/BloodMagic.java | 1 - .../render/entity/RenderEntityBloodLight.java | 4 +- .../guideapi/book/CategoryArchitect.java | 54 +++---- .../bloodmagic/core/RegistrarBloodMagic.java | 9 ++ .../core/RegistrarBloodMagicItems.java | 3 +- .../core/RegistrarBloodMagicRecipes.java | 48 +++--- .../bloodmagic/fuel/FuelHandler.java | 17 --- .../bloodmagic/item/ItemComponent.java | 137 ------------------ .../WayofTime/bloodmagic/item/ItemEnum.java | 59 ++++++++ .../item/armour/ItemLivingArmour.java | 4 +- .../bloodmagic/item/types/ComponentType.java | 64 ++++++++ .../bloodmagic/item/types/IEnumItem.java | 17 +++ .../bloodmagic/registry/ModRecipes.java | 112 +++++++------- 13 files changed, 257 insertions(+), 272 deletions(-) delete mode 100644 src/main/java/WayofTime/bloodmagic/fuel/FuelHandler.java delete mode 100644 src/main/java/WayofTime/bloodmagic/item/ItemComponent.java create mode 100644 src/main/java/WayofTime/bloodmagic/item/ItemEnum.java create mode 100644 src/main/java/WayofTime/bloodmagic/item/types/ComponentType.java create mode 100644 src/main/java/WayofTime/bloodmagic/item/types/IEnumItem.java diff --git a/src/main/java/WayofTime/bloodmagic/BloodMagic.java b/src/main/java/WayofTime/bloodmagic/BloodMagic.java index 561b76fa..12176ba6 100644 --- a/src/main/java/WayofTime/bloodmagic/BloodMagic.java +++ b/src/main/java/WayofTime/bloodmagic/BloodMagic.java @@ -3,7 +3,6 @@ package WayofTime.bloodmagic; import WayofTime.bloodmagic.annot.Handler; import WayofTime.bloodmagic.api.registry.OrbRegistry; import WayofTime.bloodmagic.api.registry.RitualRegistry; -import WayofTime.bloodmagic.api.util.helper.LogHelper; import WayofTime.bloodmagic.api_impl.BloodMagicAPI; import WayofTime.bloodmagic.apiv2.BloodMagicPlugin; import WayofTime.bloodmagic.apiv2.IBloodMagicPlugin; diff --git a/src/main/java/WayofTime/bloodmagic/client/render/entity/RenderEntityBloodLight.java b/src/main/java/WayofTime/bloodmagic/client/render/entity/RenderEntityBloodLight.java index 5d74c644..8075b2ae 100644 --- a/src/main/java/WayofTime/bloodmagic/client/render/entity/RenderEntityBloodLight.java +++ b/src/main/java/WayofTime/bloodmagic/client/render/entity/RenderEntityBloodLight.java @@ -1,7 +1,7 @@ package WayofTime.bloodmagic.client.render.entity; import WayofTime.bloodmagic.entity.projectile.EntityBloodLight; -import WayofTime.bloodmagic.item.ItemComponent; +import WayofTime.bloodmagic.item.types.ComponentType; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.RenderItem; @@ -26,7 +26,7 @@ public class RenderEntityBloodLight extends Render { GlStateManager.rotate(-this.renderManager.playerViewY, 0.0F, 1.0F, 0.0F); GlStateManager.rotate(this.renderManager.playerViewX, 1.0F, 0.0F, 0.0F); this.bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE); - this.renderItem.renderItem(ItemComponent.getStack(ItemComponent.REAGENT_BLOODLIGHT), ItemCameraTransforms.TransformType.GROUND); + this.renderItem.renderItem(ComponentType.REAGENT_BLOODLIGHT.getStack(), ItemCameraTransforms.TransformType.GROUND); GlStateManager.disableRescaleNormal(); GlStateManager.popMatrix(); super.doRender(entity, x, y, z, entityYaw, partialTicks); diff --git a/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryArchitect.java b/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryArchitect.java index 1c415701..ceb9d94b 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryArchitect.java +++ b/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryArchitect.java @@ -12,7 +12,7 @@ import WayofTime.bloodmagic.compat.guideapi.page.PageTartaricForgeRecipe; import WayofTime.bloodmagic.core.RegistrarBloodMagic; import WayofTime.bloodmagic.core.RegistrarBloodMagicBlocks; import WayofTime.bloodmagic.core.RegistrarBloodMagicItems; -import WayofTime.bloodmagic.item.ItemComponent; +import WayofTime.bloodmagic.item.types.ComponentType; import WayofTime.bloodmagic.util.helper.RecipeHelper; import WayofTime.bloodmagic.util.helper.TextHelper; import amerifrance.guideapi.api.IPage; @@ -80,12 +80,12 @@ public class CategoryArchitect { category.getEntry("runeSpeed").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "runeSpeed.info.1"), 370)); category.addEntry("water", new EntryText(keyBase + "water", true)); - category.getEntry("water").addPage(BookUtils.getForgeRecipe(ItemComponent.getStack(ItemComponent.REAGENT_WATER))); + category.getEntry("water").addPage(BookUtils.getForgeRecipe(ComponentType.REAGENT_WATER.getStack())); category.getEntry("water").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_WATER))); category.getEntry("water").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "water.info.1"), 370)); category.addEntry("lava", new EntryText(keyBase + "lava", true)); - category.getEntry("lava").addPage(BookUtils.getForgeRecipe(ItemComponent.getStack(ItemComponent.REAGENT_LAVA))); + category.getEntry("lava").addPage(BookUtils.getForgeRecipe(ComponentType.REAGENT_LAVA.getStack())); category.getEntry("lava").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_LAVA))); category.getEntry("lava").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "lava.info.1"), 370)); @@ -110,28 +110,18 @@ public class CategoryArchitect { category.getEntry("runeSelfSacrifice").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "runeSelfSacrifice.info.1"), 370)); category.addEntry("holding", new EntryText(keyBase + "holding", true)); - category.getEntry("holding").addPage(BookUtils.getForgeRecipe(ItemComponent.getStack(ItemComponent.REAGENT_HOLDING))); + category.getEntry("holding").addPage(BookUtils.getForgeRecipe(ComponentType.REAGENT_HOLDING.getStack())); category.getEntry("holding").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_HOLDING))); category.getEntry("holding").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "holding.info.1"), 370)); - List airPages = new ArrayList(); - - TartaricForgeRecipe airRecipe = RecipeHelper.getForgeRecipeForOutput(ItemComponent.getStack(ItemComponent.REAGENT_AIR)); - if (airRecipe != null) { - airPages.add(new PageTartaricForgeRecipe(airRecipe)); - } - - PageAlchemyArray airRecipePage = BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_AIR)); - if (airRecipePage != null) { - airPages.add(airRecipePage); - } - - airPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "air" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "air"), new EntryText(airPages, TextHelper.localize(keyBase + "air"), true)); + category.addEntry("air", new EntryText(keyBase + "air", true)); + category.getEntry("air").addPage(BookUtils.getForgeRecipe(ComponentType.REAGENT_AIR.getStack())); + category.getEntry("air").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_AIR))); + category.getEntry("air").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "air.info.1"), 370)); List voidPages = new ArrayList(); - TartaricForgeRecipe voidRecipe = RecipeHelper.getForgeRecipeForOutput(ItemComponent.getStack(ItemComponent.REAGENT_VOID)); + TartaricForgeRecipe voidRecipe = RecipeHelper.getForgeRecipeForOutput(ComponentType.REAGENT_VOID.getStack()); if (voidRecipe != null) { voidPages.add(new PageTartaricForgeRecipe(voidRecipe)); } @@ -146,7 +136,7 @@ public class CategoryArchitect { List greenGrovePages = new ArrayList(); - TartaricForgeRecipe greenGroveRecipe = RecipeHelper.getForgeRecipeForOutput(ItemComponent.getStack(ItemComponent.REAGENT_GROWTH)); + TartaricForgeRecipe greenGroveRecipe = RecipeHelper.getForgeRecipeForOutput(ComponentType.REAGENT_GROWTH.getStack()); if (greenGroveRecipe != null) { greenGrovePages.add(new PageTartaricForgeRecipe(greenGroveRecipe)); } @@ -161,7 +151,7 @@ public class CategoryArchitect { List fastMinerPages = new ArrayList(); - TartaricForgeRecipe fastMinerRecipe = RecipeHelper.getForgeRecipeForOutput(ItemComponent.getStack(ItemComponent.REAGENT_FASTMINER)); + TartaricForgeRecipe fastMinerRecipe = RecipeHelper.getForgeRecipeForOutput(ComponentType.REAGENT_FASTMINER.getStack()); if (fastMinerRecipe != null) { fastMinerPages.add(new PageTartaricForgeRecipe(fastMinerRecipe)); } @@ -176,7 +166,7 @@ public class CategoryArchitect { List seerPages = new ArrayList(); - TartaricForgeRecipe seerRecipe = RecipeHelper.getForgeRecipeForOutput(ItemComponent.getStack(ItemComponent.REAGENT_SIGHT)); + TartaricForgeRecipe seerRecipe = RecipeHelper.getForgeRecipeForOutput(ComponentType.REAGENT_SIGHT.getStack()); if (seerRecipe != null) { seerPages.add(new PageTartaricForgeRecipe(seerRecipe)); } @@ -221,7 +211,7 @@ public class CategoryArchitect { List affinityPages = new ArrayList(); - TartaricForgeRecipe affinityRecipe = RecipeHelper.getForgeRecipeForOutput(ItemComponent.getStack(ItemComponent.REAGENT_AFFINITY)); + TartaricForgeRecipe affinityRecipe = RecipeHelper.getForgeRecipeForOutput(ComponentType.REAGENT_AFFINITY.getStack()); if (affinityRecipe != null) { affinityPages.add(new PageTartaricForgeRecipe(affinityRecipe)); } @@ -236,7 +226,7 @@ public class CategoryArchitect { List lampPages = new ArrayList(); - TartaricForgeRecipe lampRecipe = RecipeHelper.getForgeRecipeForOutput(ItemComponent.getStack(ItemComponent.REAGENT_BLOODLIGHT)); + TartaricForgeRecipe lampRecipe = RecipeHelper.getForgeRecipeForOutput(ComponentType.REAGENT_BLOODLIGHT.getStack()); if (lampRecipe != null) { lampPages.add(new PageTartaricForgeRecipe(lampRecipe)); } @@ -251,7 +241,7 @@ public class CategoryArchitect { List magnetismPages = new ArrayList(); - TartaricForgeRecipe magnetismRecipe = RecipeHelper.getForgeRecipeForOutput(ItemComponent.getStack(ItemComponent.REAGENT_MAGNETISM)); + TartaricForgeRecipe magnetismRecipe = RecipeHelper.getForgeRecipeForOutput(ComponentType.REAGENT_MAGNETISM.getStack()); if (magnetismRecipe != null) { magnetismPages.add(new PageTartaricForgeRecipe(magnetismRecipe)); } @@ -276,7 +266,7 @@ public class CategoryArchitect { List livingArmourPages = new ArrayList(); - TartaricForgeRecipe bindingRecipe = RecipeHelper.getForgeRecipeForOutput(ItemComponent.getStack(ItemComponent.REAGENT_BINDING)); + TartaricForgeRecipe bindingRecipe = RecipeHelper.getForgeRecipeForOutput(ComponentType.REAGENT_BINDING.getStack()); if (bindingRecipe != null) { livingArmourPages.add(new PageTartaricForgeRecipe(bindingRecipe)); } @@ -416,7 +406,7 @@ public class CategoryArchitect { List suppressionPages = new ArrayList(); - TartaricForgeRecipe suppressionRecipe = RecipeHelper.getForgeRecipeForOutput(ItemComponent.getStack(ItemComponent.REAGENT_SUPPRESSION)); + TartaricForgeRecipe suppressionRecipe = RecipeHelper.getForgeRecipeForOutput(ComponentType.REAGENT_SUPPRESSION.getStack()); if (suppressionRecipe != null) { suppressionPages.add(new PageTartaricForgeRecipe(suppressionRecipe)); } @@ -431,7 +421,7 @@ public class CategoryArchitect { List hastePages = new ArrayList(); - TartaricForgeRecipe hasteRecipe = RecipeHelper.getForgeRecipeForOutput(ItemComponent.getStack(ItemComponent.REAGENT_HASTE)); + TartaricForgeRecipe hasteRecipe = RecipeHelper.getForgeRecipeForOutput(ComponentType.REAGENT_HASTE.getStack()); if (hasteRecipe != null) { hastePages.add(new PageTartaricForgeRecipe(hasteRecipe)); } @@ -446,7 +436,7 @@ public class CategoryArchitect { List severancePages = new ArrayList(); - TartaricForgeRecipe severanceRecipe = RecipeHelper.getForgeRecipeForOutput(ItemComponent.getStack(ItemComponent.REAGENT_SEVERANCE)); + TartaricForgeRecipe severanceRecipe = RecipeHelper.getForgeRecipeForOutput(ComponentType.REAGENT_SEVERANCE.getStack()); if (severanceRecipe != null) { severancePages.add(new PageTartaricForgeRecipe(severanceRecipe)); } @@ -461,7 +451,7 @@ public class CategoryArchitect { List telepositionPages = new ArrayList(); - TartaricForgeRecipe telepositionRecipe = RecipeHelper.getForgeRecipeForOutput(ItemComponent.getStack(ItemComponent.REAGENT_TELEPOSITION)); + TartaricForgeRecipe telepositionRecipe = RecipeHelper.getForgeRecipeForOutput(ComponentType.REAGENT_TELEPOSITION.getStack()); if (telepositionRecipe != null) { telepositionPages.add(new PageTartaricForgeRecipe(telepositionRecipe)); } @@ -476,7 +466,7 @@ public class CategoryArchitect { List compressionPages = new ArrayList(); - TartaricForgeRecipe compressionRecipe = RecipeHelper.getForgeRecipeForOutput(ItemComponent.getStack(ItemComponent.REAGENT_COMPRESSION)); + TartaricForgeRecipe compressionRecipe = RecipeHelper.getForgeRecipeForOutput(ComponentType.REAGENT_COMPRESSION.getStack()); if (compressionRecipe != null) { compressionPages.add(new PageTartaricForgeRecipe(compressionRecipe)); } @@ -491,7 +481,7 @@ public class CategoryArchitect { List bridgePages = new ArrayList(); - TartaricForgeRecipe bridgeRecipe = RecipeHelper.getForgeRecipeForOutput(ItemComponent.getStack(ItemComponent.REAGENT_BRIDGE)); + TartaricForgeRecipe bridgeRecipe = RecipeHelper.getForgeRecipeForOutput(ComponentType.REAGENT_BRIDGE.getStack()); if (bridgeRecipe != null) { bridgePages.add(new PageTartaricForgeRecipe(bridgeRecipe)); } diff --git a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagic.java b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagic.java index 80b2cf1f..688c627c 100644 --- a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagic.java +++ b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagic.java @@ -8,14 +8,17 @@ import WayofTime.bloodmagic.entity.projectile.EntityBloodLight; import WayofTime.bloodmagic.entity.projectile.EntityMeteor; import WayofTime.bloodmagic.entity.projectile.EntitySentientArrow; import WayofTime.bloodmagic.entity.projectile.EntitySoulSnare; +import WayofTime.bloodmagic.item.types.ComponentType; import WayofTime.bloodmagic.potion.PotionBloodMagic; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.init.MobEffects; +import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.event.ModelRegistryEvent; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.event.RegistryEvent; +import net.minecraftforge.event.furnace.FurnaceFuelBurnTimeEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.registry.EntityEntry; @@ -135,4 +138,10 @@ public class RegistrarBloodMagic { return orb.getModelLocation(); }); } + + @SubscribeEvent + public static void handleBurnTime(FurnaceFuelBurnTimeEvent event) { + if (ItemStack.areItemsEqual(event.getItemStack(), ComponentType.SAND_COAL.getStack())) + event.setBurnTime(1600); + } } diff --git a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicItems.java b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicItems.java index d12b7bce..da72b025 100644 --- a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicItems.java +++ b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicItems.java @@ -16,6 +16,7 @@ import WayofTime.bloodmagic.item.routing.ItemNodeRouter; import WayofTime.bloodmagic.item.routing.ItemRouterFilter; import WayofTime.bloodmagic.item.sigil.*; import WayofTime.bloodmagic.item.soul.*; +import WayofTime.bloodmagic.item.types.ComponentType; import com.google.common.collect.Lists; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.init.Items; @@ -165,7 +166,7 @@ public class RegistrarBloodMagicItems { new ItemSigilClaw().setRegistryName("sigil_claw"), new ItemSigilBounce().setRegistryName("sigil_bounce"), new ItemSigilFrost().setRegistryName("sigil_frost"), - new ItemComponent().setRegistryName("component"), + new ItemEnum<>(ComponentType.class, "baseComponent").setRegistryName("component"), new ItemDemonCrystal().setRegistryName("item_demon_crystal"), new ItemTelepositionFocus().setRegistryName("teleposition_focus"), new ItemExperienceBook().setRegistryName("experience_tome"), diff --git a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicRecipes.java b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicRecipes.java index 49660987..66f231cf 100644 --- a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicRecipes.java +++ b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicRecipes.java @@ -8,10 +8,10 @@ import WayofTime.bloodmagic.api.soul.EnumDemonWillType; import WayofTime.bloodmagic.api_impl.BloodMagicRecipeRegistrar; import WayofTime.bloodmagic.apiv2.IBloodMagicRecipeRegistrar; import WayofTime.bloodmagic.block.BlockLifeEssence; -import WayofTime.bloodmagic.item.ItemComponent; import WayofTime.bloodmagic.item.ItemDemonCrystal; import WayofTime.bloodmagic.item.alchemy.ItemCuttingFluid; import WayofTime.bloodmagic.item.soul.ItemSoulGem; +import WayofTime.bloodmagic.item.types.ComponentType; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; @@ -100,32 +100,32 @@ public class RegistrarBloodMagicRecipes { registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicItems.SENTIENT_SHOVEL), 0, 0, new ItemStack(RegistrarBloodMagicItems.SOUL_GEM), new ItemStack(Items.IRON_SHOVEL)); registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicItems.SENTIENT_BOW), 70, 0, new ItemStack(Items.BOW), new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 1), "string", "string"); registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicItems.ARCANE_ASHES), 0, 0, "dustRedstone", "dyeWhite", "gunpowder", Items.COAL); - registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_WATER), 10, 3, new ItemStack(Items.SUGAR), new ItemStack(Items.WATER_BUCKET), new ItemStack(Items.WATER_BUCKET)); - registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_LAVA), 32, 10, Items.LAVA_BUCKET, "dustRedstone", "cobblestone", "blockCoal"); - registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_VOID), 64, 10, Items.BUCKET, "string", "string", "gunpowder"); - registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_GROWTH), 128, 20, "treeSapling", "treeSapling", "sugarcane", Items.SUGAR); - registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_AIR), 128, 20, Items.GHAST_TEAR, "feather", "feather"); - registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_SIGHT), 64, 0, RegistrarBloodMagicItems.SIGIL_DIVINATION, "blockGlass", "blockGlass", "dustGlowstone"); - registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_HOLDING), 64, 20, "chestWood", "leather", "string", "string"); - registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_FASTMINER), 128, 10, Items.IRON_PICKAXE, Items.IRON_AXE, Items.IRON_SHOVEL, Items.GUNPOWDER); - registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_AFFINITY), 300, 30, RegistrarBloodMagicItems.SIGIL_WATER, RegistrarBloodMagicItems.SIGIL_AIR, RegistrarBloodMagicItems.SIGIL_LAVA, Blocks.OBSIDIAN); - registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_SUPPRESSION), 500, 50, RegistrarBloodMagicBlocks.TELEPOSER, Items.WATER_BUCKET, Items.LAVA_BUCKET, Items.BLAZE_ROD); - registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_BINDING), 400, 10, "dustGlowstone", "dustRedstone", "nuggetGold", Items.GUNPOWDER); - registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_BLOODLIGHT), 300, 10, "glowstone", Blocks.TORCH, "dustRedstone", "dustRedstone"); - registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_MAGNETISM), 600, 10, "string", "ingotGold", "blockIron", "ingotGold"); - registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_HASTE), 1400, 100, Items.COOKIE, Items.SUGAR, Items.COOKIE, "stone"); - registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_BRIDGE), 600, 50, Blocks.SOUL_SAND, Blocks.SOUL_SAND, "stone", Blocks.OBSIDIAN); - registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_SEVERANCE), 800, 70, Items.ENDER_EYE, Items.ENDER_PEARL, "ingotGold", "ingotGold"); - registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_COMPRESSION), 2000, 200, "blockIron", "blockGold", Blocks.OBSIDIAN, "cobblestone"); - registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_TELEPOSITION), 1500, 200, RegistrarBloodMagicBlocks.TELEPOSER, "glowstone", "blockRedstone", "ingotGold"); - registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_TRANSPOSITION), 1500, 200, RegistrarBloodMagicBlocks.TELEPOSER, "gemDiamond", Items.ENDER_PEARL, Blocks.OBSIDIAN); - registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_CLAW), 800, 120, Items.FLINT, Items.FLINT, ItemCuttingFluid.getStack(ItemCuttingFluid.BASIC)); - registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_BOUNCE), 200, 20, Blocks.SLIME_BLOCK, Blocks.SLIME_BLOCK, Items.LEATHER, "string"); - registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.REAGENT_FROST), 80, 10, Blocks.ICE, Items.SNOWBALL, Items.SNOWBALL, "dustRedstone"); + registrar.addTartaricForge(ComponentType.REAGENT_WATER.getStack(), 10, 3, new ItemStack(Items.SUGAR), new ItemStack(Items.WATER_BUCKET), new ItemStack(Items.WATER_BUCKET)); + registrar.addTartaricForge(ComponentType.REAGENT_LAVA.getStack(), 32, 10, Items.LAVA_BUCKET, "dustRedstone", "cobblestone", "blockCoal"); + registrar.addTartaricForge(ComponentType.REAGENT_VOID.getStack(), 64, 10, Items.BUCKET, "string", "string", "gunpowder"); + registrar.addTartaricForge(ComponentType.REAGENT_GROWTH.getStack(), 128, 20, "treeSapling", "treeSapling", "sugarcane", Items.SUGAR); + registrar.addTartaricForge(ComponentType.REAGENT_AIR.getStack(), 128, 20, Items.GHAST_TEAR, "feather", "feather"); + registrar.addTartaricForge(ComponentType.REAGENT_SIGHT.getStack(), 64, 0, RegistrarBloodMagicItems.SIGIL_DIVINATION, "blockGlass", "blockGlass", "dustGlowstone"); + registrar.addTartaricForge(ComponentType.REAGENT_HOLDING.getStack(), 64, 20, "chestWood", "leather", "string", "string"); + registrar.addTartaricForge(ComponentType.REAGENT_FASTMINER.getStack(), 128, 10, Items.IRON_PICKAXE, Items.IRON_AXE, Items.IRON_SHOVEL, Items.GUNPOWDER); + registrar.addTartaricForge(ComponentType.REAGENT_AFFINITY.getStack(), 300, 30, RegistrarBloodMagicItems.SIGIL_WATER, RegistrarBloodMagicItems.SIGIL_AIR, RegistrarBloodMagicItems.SIGIL_LAVA, Blocks.OBSIDIAN); + registrar.addTartaricForge(ComponentType.REAGENT_SUPPRESSION.getStack(), 500, 50, RegistrarBloodMagicBlocks.TELEPOSER, Items.WATER_BUCKET, Items.LAVA_BUCKET, Items.BLAZE_ROD); + registrar.addTartaricForge(ComponentType.REAGENT_BINDING.getStack(), 400, 10, "dustGlowstone", "dustRedstone", "nuggetGold", Items.GUNPOWDER); + registrar.addTartaricForge(ComponentType.REAGENT_BLOODLIGHT.getStack(), 300, 10, "glowstone", Blocks.TORCH, "dustRedstone", "dustRedstone"); + registrar.addTartaricForge(ComponentType.REAGENT_MAGNETISM.getStack(), 600, 10, "string", "ingotGold", "blockIron", "ingotGold"); + registrar.addTartaricForge(ComponentType.REAGENT_HASTE.getStack(), 1400, 100, Items.COOKIE, Items.SUGAR, Items.COOKIE, "stone"); + registrar.addTartaricForge(ComponentType.REAGENT_BRIDGE.getStack(), 600, 50, Blocks.SOUL_SAND, Blocks.SOUL_SAND, "stone", Blocks.OBSIDIAN); + registrar.addTartaricForge(ComponentType.REAGENT_SEVERANCE.getStack(), 800, 70, Items.ENDER_EYE, Items.ENDER_PEARL, "ingotGold", "ingotGold"); + registrar.addTartaricForge(ComponentType.REAGENT_COMPRESSION.getStack(), 2000, 200, "blockIron", "blockGold", Blocks.OBSIDIAN, "cobblestone"); + registrar.addTartaricForge(ComponentType.REAGENT_TELEPOSITION.getStack(), 1500, 200, RegistrarBloodMagicBlocks.TELEPOSER, "glowstone", "blockRedstone", "ingotGold"); + registrar.addTartaricForge(ComponentType.REAGENT_TRANSPOSITION.getStack(), 1500, 200, RegistrarBloodMagicBlocks.TELEPOSER, "gemDiamond", Items.ENDER_PEARL, Blocks.OBSIDIAN); + registrar.addTartaricForge(ComponentType.REAGENT_CLAW.getStack(), 800, 120, Items.FLINT, Items.FLINT, ItemCuttingFluid.getStack(ItemCuttingFluid.BASIC)); + registrar.addTartaricForge(ComponentType.REAGENT_BOUNCE.getStack(), 200, 20, Blocks.SLIME_BLOCK, Blocks.SLIME_BLOCK, Items.LEATHER, "string"); + registrar.addTartaricForge(ComponentType.REAGENT_FROST.getStack(), 80, 10, Blocks.ICE, Items.SNOWBALL, Items.SNOWBALL, "dustRedstone"); registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicItems.SENTIENT_ARMOUR_GEM), 240, 150, Items.DIAMOND_CHESTPLATE, new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 1), Blocks.IRON_BLOCK, Blocks.OBSIDIAN); - registrar.addTartaricForge(ItemComponent.getStack(ItemComponent.COMPONENT_FRAME_PART), 400, 10, "blockGlass", "stone", new ItemStack(RegistrarBloodMagicItems.SLATE)); + registrar.addTartaricForge(ComponentType.COMPONENT_FRAME_PART.getStack(), 400, 10, "blockGlass", "stone", new ItemStack(RegistrarBloodMagicItems.SLATE)); registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicItems.NODE_ROUTER), 400, 5, "stickWood", new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), "gemLapis", "gemLapis"); registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicBlocks.ITEM_ROUTING_NODE), 400, 5, "dustGlowstone", "dustRedstone", "blockGlass", "stone"); registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicBlocks.OUTPUT_ROUTING_NODE), 400, 25, "dustGlowstone", "dustRedstone", "ingotIron", new ItemStack(RegistrarBloodMagicBlocks.ITEM_ROUTING_NODE)); diff --git a/src/main/java/WayofTime/bloodmagic/fuel/FuelHandler.java b/src/main/java/WayofTime/bloodmagic/fuel/FuelHandler.java deleted file mode 100644 index aae512d7..00000000 --- a/src/main/java/WayofTime/bloodmagic/fuel/FuelHandler.java +++ /dev/null @@ -1,17 +0,0 @@ -package WayofTime.bloodmagic.fuel; - -import WayofTime.bloodmagic.core.RegistrarBloodMagicItems; -import WayofTime.bloodmagic.item.ItemComponent; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fml.common.IFuelHandler; - -public class FuelHandler implements IFuelHandler { - @Override - public int getBurnTime(ItemStack fuel) { - if (fuel != null && fuel.getItem() == RegistrarBloodMagicItems.COMPONENT && fuel.getMetadata() == ItemComponent.getStack(ItemComponent.SAND_COAL).getMetadata()) { - return 1600; - } - - return 0; - } -} diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemComponent.java b/src/main/java/WayofTime/bloodmagic/item/ItemComponent.java deleted file mode 100644 index 4363715e..00000000 --- a/src/main/java/WayofTime/bloodmagic/item/ItemComponent.java +++ /dev/null @@ -1,137 +0,0 @@ -package WayofTime.bloodmagic.item; - -import WayofTime.bloodmagic.BloodMagic; -import WayofTime.bloodmagic.client.IVariantProvider; -import WayofTime.bloodmagic.core.RegistrarBloodMagicItems; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.NonNullList; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; -import org.apache.commons.lang3.tuple.ImmutablePair; -import org.apache.commons.lang3.tuple.Pair; - -import java.util.ArrayList; -import java.util.List; - -public class ItemComponent extends Item implements IVariantProvider { - public static final String REAGENT_WATER = "reagentWater"; - public static final String REAGENT_LAVA = "reagentLava"; - public static final String REAGENT_AIR = "reagentAir"; - public static final String REAGENT_FASTMINER = "reagentFastMiner"; - public static final String REAGENT_VOID = "reagentVoid"; - public static final String REAGENT_GROWTH = "reagentGrowth"; - public static final String REAGENT_AFFINITY = "reagentAffinity"; - public static final String REAGENT_SIGHT = "reagentSight"; - public static final String REAGENT_BINDING = "reagentBinding"; - public static final String REAGENT_SUPPRESSION = "reagentSuppression"; - public static final String COMPONENT_FRAME_PART = "frameParts"; - public static final String REAGENT_BLOODLIGHT = "reagentBloodLight"; - public static final String REAGENT_MAGNETISM = "reagentMagnetism"; - public static final String REAGENT_HASTE = "reagentHaste"; - public static final String REAGENT_COMPRESSION = "reagentCompression"; - public static final String REAGENT_BRIDGE = "reagentBridge"; - public static final String REAGENT_SEVERANCE = "reagentSeverance"; - public static final String REAGENT_TELEPOSITION = "reagentTeleposition"; - public static final String REAGENT_TRANSPOSITION = "reagentTransposition"; - public static final String SAND_IRON = "ironSand"; - public static final String SAND_GOLD = "goldSand"; - public static final String SAND_COAL = "coalSand"; - public static final String PLANT_OIL = "plantOil"; - public static final String SULFUR = "sulfur"; - public static final String SALTPETER = "saltpeter"; - public static final String NEURO_TOXIN = "neurotoxin"; - public static final String ANTISEPTIC = "antiseptic"; - public static final String REAGENT_HOLDING = "reagentHolding"; - public static final String CATALYST_LENGTH_1 = "mundaneLength"; - public static final String CATALYST_POWER_1 = "mundanePower"; - public static final String REAGENT_CLAW = "reagentClaw"; - public static final String REAGENT_BOUNCE = "reagentBounce"; - public static final String REAGENT_FROST = "reagentFrost"; - private static ArrayList names = new ArrayList(); - - public ItemComponent() { - super(); - - setUnlocalizedName(BloodMagic.MODID + ".baseComponent."); - setHasSubtypes(true); - setCreativeTab(BloodMagic.TAB_BM); - - buildItemList(); - } - - private void buildItemList() { - names.add(0, REAGENT_WATER); - names.add(1, REAGENT_LAVA); - names.add(2, REAGENT_AIR); - names.add(3, REAGENT_FASTMINER); - names.add(4, REAGENT_VOID); - names.add(5, REAGENT_GROWTH); - names.add(6, REAGENT_AFFINITY); - names.add(7, REAGENT_SIGHT); - names.add(8, REAGENT_BINDING); - names.add(9, REAGENT_SUPPRESSION); - names.add(10, COMPONENT_FRAME_PART); - names.add(11, REAGENT_BLOODLIGHT); - names.add(12, REAGENT_MAGNETISM); - names.add(13, REAGENT_HASTE); - names.add(14, REAGENT_COMPRESSION); - names.add(15, REAGENT_BRIDGE); - names.add(16, REAGENT_SEVERANCE); - names.add(17, REAGENT_TELEPOSITION); - names.add(18, REAGENT_TRANSPOSITION); - names.add(19, SAND_IRON); - names.add(20, SAND_GOLD); - names.add(21, SAND_COAL); - names.add(22, PLANT_OIL); - names.add(23, SULFUR); - names.add(24, SALTPETER); - names.add(25, NEURO_TOXIN); - names.add(26, ANTISEPTIC); - names.add(27, REAGENT_HOLDING); - names.add(28, CATALYST_LENGTH_1); - names.add(29, CATALYST_POWER_1); - names.add(30, REAGENT_CLAW); - names.add(31, REAGENT_BOUNCE); - names.add(32, REAGENT_FROST); - } - - @Override - public String getUnlocalizedName(ItemStack stack) { - return super.getUnlocalizedName(stack) + names.get(stack.getItemDamage()); - } - - @Override - @SideOnly(Side.CLIENT) - public void getSubItems(CreativeTabs creativeTab, NonNullList list) { - if (!isInCreativeTab(creativeTab)) - return; - - for (int i = 0; i < names.size(); i++) - list.add(new ItemStack(this, 1, i)); - } - - @Override - public List> getVariants() { - List> ret = new ArrayList>(); - for (String name : names) - ret.add(new ImmutablePair(names.indexOf(name), "type=" + name)); - return ret; - } - - public static ItemStack getStack(String name) { - return new ItemStack(RegistrarBloodMagicItems.COMPONENT, 1, names.indexOf(name)); - } - - public static ItemStack getStack(String key, int stackSize) { - ItemStack stack = getStack(key); - stack.setCount(stackSize); - - return stack; - } - - public static ArrayList getNames() { - return names; - } -} diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemEnum.java b/src/main/java/WayofTime/bloodmagic/item/ItemEnum.java new file mode 100644 index 00000000..077149c1 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/item/ItemEnum.java @@ -0,0 +1,59 @@ +package WayofTime.bloodmagic.item; + +import WayofTime.bloodmagic.BloodMagic; +import WayofTime.bloodmagic.client.IVariantProvider; +import WayofTime.bloodmagic.item.types.IEnumItem; +import com.google.common.collect.Lists; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.NonNullList; +import net.minecraft.util.math.MathHelper; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; +import org.apache.commons.lang3.tuple.Pair; + +import java.util.List; + +public class ItemEnum & IEnumItem> extends Item implements IVariantProvider { + + protected final T[] types; + + public ItemEnum(Class enumClass, String baseName) { + super(); + + this.types = enumClass.getEnumConstants(); + + setUnlocalizedName(BloodMagic.MODID + "." + baseName); + setHasSubtypes(types.length > 1); + setCreativeTab(BloodMagic.TAB_BM); + } + + @Override + public String getUnlocalizedName(ItemStack stack) { + return super.getUnlocalizedName(stack) + "." + getItemType(stack).getInternalName(); + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubItems(CreativeTabs tab, NonNullList subItems) { + if (!isInCreativeTab(tab)) + return; + + for (T type : types) + subItems.add(new ItemStack(this, 1, type.ordinal())); + } + + public T getItemType(ItemStack stack) { + return types[MathHelper.clamp(stack.getItemDamage(), 0, types.length)]; + } + + @Override + public List> getVariants() { + List> variants = Lists.newArrayList(); + for (int i = 0; i < types.length; i++) + variants.add(Pair.of(i, "type=" + types[i].getInternalName())); + + return variants; + } +} \ No newline at end of file diff --git a/src/main/java/WayofTime/bloodmagic/item/armour/ItemLivingArmour.java b/src/main/java/WayofTime/bloodmagic/item/armour/ItemLivingArmour.java index bfd67b55..a17cff21 100644 --- a/src/main/java/WayofTime/bloodmagic/item/armour/ItemLivingArmour.java +++ b/src/main/java/WayofTime/bloodmagic/item/armour/ItemLivingArmour.java @@ -9,7 +9,7 @@ import WayofTime.bloodmagic.api.util.helper.NBTHelper; import WayofTime.bloodmagic.api.util.helper.NetworkHelper; import WayofTime.bloodmagic.client.IMeshProvider; import WayofTime.bloodmagic.core.RegistrarBloodMagicItems; -import WayofTime.bloodmagic.item.ItemComponent; +import WayofTime.bloodmagic.item.types.ComponentType; import WayofTime.bloodmagic.livingArmour.LivingArmour; import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerRepairing; import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeElytra; @@ -97,7 +97,7 @@ public class ItemLivingArmour extends ItemArmor implements ISpecialArmor, IMeshP @Override public boolean getIsRepairable(ItemStack toRepair, ItemStack repair) { - return ItemStack.areItemsEqual(repair, ItemComponent.getStack(ItemComponent.REAGENT_BINDING)); + return ItemStack.areItemsEqual(repair, ComponentType.REAGENT_BINDING.getStack()); } @Override diff --git a/src/main/java/WayofTime/bloodmagic/item/types/ComponentType.java b/src/main/java/WayofTime/bloodmagic/item/types/ComponentType.java new file mode 100644 index 00000000..ab7fe88a --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/item/types/ComponentType.java @@ -0,0 +1,64 @@ +package WayofTime.bloodmagic.item.types; + +import WayofTime.bloodmagic.core.RegistrarBloodMagicItems; +import net.minecraft.item.ItemStack; + +import javax.annotation.Nonnull; +import java.util.Locale; + +public enum ComponentType implements IEnumItem { + + REAGENT_WATER, + REAGENT_LAVA, + REAGENT_AIR, + REAGENT_FASTMINER, + REAGENT_VOID, + REAGENT_GROWTH, + REAGENT_AFFINITY, + REAGENT_SIGHT, + REAGENT_BINDING, + REAGENT_SUPPRESSION, + COMPONENT_FRAME_PART, + REAGENT_BLOODLIGHT, + REAGENT_MAGNETISM, + REAGENT_HASTE, + REAGENT_COMPRESSION, + REAGENT_BRIDGE, + REAGENT_SEVERANCE, + REAGENT_TELEPOSITION, + REAGENT_TRANSPOSITION, + SAND_IRON, + SAND_GOLD, + SAND_COAL, + PLANT_OIL, + SULFUR, + SALTPETER, + NEURO_TOXIN, + ANTISEPTIC, + REAGENT_HOLDING, + CATALYST_LENGTH_1, + CATALYST_POWER_1, + REAGENT_CLAW, + REAGENT_BOUNCE, + REAGENT_FROST, + ; + + + @Nonnull + @Override + public String getInternalName() { + return name().toLowerCase(Locale.ROOT); + } + + @Nonnull + @Override + public ItemStack getStack() { + return getStack(1); + } + + @Nonnull + @Override + public ItemStack getStack(int count) { + return new ItemStack(RegistrarBloodMagicItems.COMPONENT, count, ordinal()); + } +} diff --git a/src/main/java/WayofTime/bloodmagic/item/types/IEnumItem.java b/src/main/java/WayofTime/bloodmagic/item/types/IEnumItem.java new file mode 100644 index 00000000..d7be59b7 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/item/types/IEnumItem.java @@ -0,0 +1,17 @@ +package WayofTime.bloodmagic.item.types; + +import net.minecraft.item.ItemStack; + +import javax.annotation.Nonnull; + +public interface IEnumItem { + + @Nonnull + String getInternalName(); + + @Nonnull + ItemStack getStack(); + + @Nonnull + ItemStack getStack(int count); +} diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java b/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java index e02c1d54..253aba93 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java @@ -13,9 +13,9 @@ import WayofTime.bloodmagic.compress.BaseCompressionHandler; import WayofTime.bloodmagic.compress.StorageBlockCraftingManager; import WayofTime.bloodmagic.core.RegistrarBloodMagic; import WayofTime.bloodmagic.core.RegistrarBloodMagicItems; -import WayofTime.bloodmagic.item.ItemComponent; import WayofTime.bloodmagic.item.alchemy.ItemCuttingFluid; import WayofTime.bloodmagic.item.alchemy.ItemLivingArmourPointsUpgrade; +import WayofTime.bloodmagic.item.types.ComponentType; import WayofTime.bloodmagic.livingArmour.downgrade.*; import WayofTime.bloodmagic.potion.BMPotionUtils; import WayofTime.bloodmagic.recipe.alchemyTable.AlchemyTableDyeableRecipe; @@ -39,8 +39,8 @@ import java.util.Map.Entry; public class ModRecipes { public static ArrayList addedOreRecipeList = new ArrayList(); - static ItemStack mundaneLengtheningStack = ItemComponent.getStack(ItemComponent.CATALYST_LENGTH_1); - static ItemStack mundanePowerStack = ItemComponent.getStack(ItemComponent.CATALYST_POWER_1); + static final ItemStack MUNDANE_LENGTHENING_STACK = ComponentType.CATALYST_LENGTH_1.getStack(); + static final ItemStack MUNDANE_POWER_STACK = ComponentType.CATALYST_POWER_1.getStack(); public static void init() { initOreDict(); @@ -55,52 +55,52 @@ public class ModRecipes { } public static void initOreDict() { - OreDictionary.registerOre("dustIron", ItemComponent.getStack(ItemComponent.SAND_IRON)); - OreDictionary.registerOre("dustGold", ItemComponent.getStack(ItemComponent.SAND_GOLD)); - OreDictionary.registerOre("dustCoal", ItemComponent.getStack(ItemComponent.SAND_COAL)); + OreDictionary.registerOre("dustIron", ComponentType.SAND_IRON.getStack()); + OreDictionary.registerOre("dustGold", ComponentType.SAND_GOLD.getStack()); + OreDictionary.registerOre("dustCoal", ComponentType.SAND_COAL.getStack()); } public static void addFurnaceRecipes() { - FurnaceRecipes.instance().addSmeltingRecipe(ItemComponent.getStack(ItemComponent.SAND_IRON), new ItemStack(Items.IRON_INGOT), (float) 0.15); - FurnaceRecipes.instance().addSmeltingRecipe(ItemComponent.getStack(ItemComponent.SAND_GOLD), new ItemStack(Items.GOLD_INGOT), (float) 0.15); + FurnaceRecipes.instance().addSmeltingRecipe(ComponentType.SAND_IRON.getStack(), new ItemStack(Items.IRON_INGOT), (float) 0.15); + FurnaceRecipes.instance().addSmeltingRecipe(ComponentType.SAND_GOLD.getStack(), new ItemStack(Items.GOLD_INGOT), (float) 0.15); } public static void addAltarRecipes() { } public static void addAlchemyArrayRecipes() { - AlchemyArrayRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_BINDING), new ItemStack(Items.DIAMOND_SWORD), new AlchemyArrayEffectBinding("boundSword", Utils.setUnbreakable(new ItemStack(RegistrarBloodMagicItems.BOUND_SWORD))), new BindingAlchemyCircleRenderer()); - AlchemyArrayRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_BINDING), new ItemStack(Items.DIAMOND_AXE), new AlchemyArrayEffectBinding("boundAxe", Utils.setUnbreakable(new ItemStack(RegistrarBloodMagicItems.BOUND_AXE)))); - AlchemyArrayRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_BINDING), new ItemStack(Items.DIAMOND_PICKAXE), new AlchemyArrayEffectBinding("boundPickaxe", Utils.setUnbreakable(new ItemStack(RegistrarBloodMagicItems.BOUND_PICKAXE)))); - AlchemyArrayRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_BINDING), new ItemStack(Items.DIAMOND_SHOVEL), new AlchemyArrayEffectBinding("boundShovel", Utils.setUnbreakable(new ItemStack(RegistrarBloodMagicItems.BOUND_SHOVEL)))); - AlchemyArrayRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_BINDING), new ItemStack(Items.IRON_HELMET), new AlchemyArrayEffectBinding("livingHelmet", new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_HELMET))); - AlchemyArrayRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_BINDING), new ItemStack(Items.IRON_CHESTPLATE), new AlchemyArrayEffectBinding("livingChest", new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_CHEST))); - AlchemyArrayRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_BINDING), new ItemStack(Items.IRON_LEGGINGS), new AlchemyArrayEffectBinding("livingLegs", new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_LEGGINGS))); - AlchemyArrayRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_BINDING), new ItemStack(Items.IRON_BOOTS), new AlchemyArrayEffectBinding("livingBoots", new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_BOOTS))); + AlchemyArrayRecipeRegistry.registerRecipe(ComponentType.REAGENT_BINDING.getStack(), new ItemStack(Items.DIAMOND_SWORD), new AlchemyArrayEffectBinding("boundSword", Utils.setUnbreakable(new ItemStack(RegistrarBloodMagicItems.BOUND_SWORD))), new BindingAlchemyCircleRenderer()); + AlchemyArrayRecipeRegistry.registerRecipe(ComponentType.REAGENT_BINDING.getStack(), new ItemStack(Items.DIAMOND_AXE), new AlchemyArrayEffectBinding("boundAxe", Utils.setUnbreakable(new ItemStack(RegistrarBloodMagicItems.BOUND_AXE)))); + AlchemyArrayRecipeRegistry.registerRecipe(ComponentType.REAGENT_BINDING.getStack(), new ItemStack(Items.DIAMOND_PICKAXE), new AlchemyArrayEffectBinding("boundPickaxe", Utils.setUnbreakable(new ItemStack(RegistrarBloodMagicItems.BOUND_PICKAXE)))); + AlchemyArrayRecipeRegistry.registerRecipe(ComponentType.REAGENT_BINDING.getStack(), new ItemStack(Items.DIAMOND_SHOVEL), new AlchemyArrayEffectBinding("boundShovel", Utils.setUnbreakable(new ItemStack(RegistrarBloodMagicItems.BOUND_SHOVEL)))); + AlchemyArrayRecipeRegistry.registerRecipe(ComponentType.REAGENT_BINDING.getStack(), new ItemStack(Items.IRON_HELMET), new AlchemyArrayEffectBinding("livingHelmet", new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_HELMET))); + AlchemyArrayRecipeRegistry.registerRecipe(ComponentType.REAGENT_BINDING.getStack(), new ItemStack(Items.IRON_CHESTPLATE), new AlchemyArrayEffectBinding("livingChest", new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_CHEST))); + AlchemyArrayRecipeRegistry.registerRecipe(ComponentType.REAGENT_BINDING.getStack(), new ItemStack(Items.IRON_LEGGINGS), new AlchemyArrayEffectBinding("livingLegs", new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_LEGGINGS))); + AlchemyArrayRecipeRegistry.registerRecipe(ComponentType.REAGENT_BINDING.getStack(), new ItemStack(Items.IRON_BOOTS), new AlchemyArrayEffectBinding("livingBoots", new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_BOOTS))); AlchemyArrayRecipeRegistry.registerCraftingRecipe(new ItemStack(Items.REDSTONE), new ItemStack(RegistrarBloodMagicItems.SLATE), new ItemStack(RegistrarBloodMagicItems.SIGIL_DIVINATION), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/DivinationSigil.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ItemComponent.getStack(ItemComponent.REAGENT_WATER), new ItemStack(RegistrarBloodMagicItems.SLATE), new ItemStack(RegistrarBloodMagicItems.SIGIL_WATER), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WaterSigil.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ItemComponent.getStack(ItemComponent.REAGENT_LAVA), new ItemStack(RegistrarBloodMagicItems.SLATE), new ItemStack(RegistrarBloodMagicItems.SIGIL_LAVA), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/LavaSigil.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ItemComponent.getStack(ItemComponent.REAGENT_AIR), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), new ItemStack(RegistrarBloodMagicItems.SIGIL_AIR), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/AirSigil.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ItemComponent.getStack(ItemComponent.REAGENT_FASTMINER), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), new ItemStack(RegistrarBloodMagicItems.SIGIL_FAST_MINER), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/FastMinerSigil.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ItemComponent.getStack(ItemComponent.REAGENT_VOID), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), new ItemStack(RegistrarBloodMagicItems.SIGIL_VOID), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/VoidSigil.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ItemComponent.getStack(ItemComponent.REAGENT_GROWTH), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), new ItemStack(RegistrarBloodMagicItems.SIGIL_GREEN_GROVE), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/GrowthSigil.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ItemComponent.getStack(ItemComponent.REAGENT_AFFINITY), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2), new ItemStack(RegistrarBloodMagicItems.SIGIL_ELEMENTAL_AFFINITY), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/ElementalAffinitySigil.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ItemComponent.getStack(ItemComponent.REAGENT_SIGHT), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), new ItemStack(RegistrarBloodMagicItems.SIGIL_SEER), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/SightSigil.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ItemComponent.getStack(ItemComponent.REAGENT_HOLDING), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2), new ItemStack(RegistrarBloodMagicItems.SIGIL_HOLDING), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ItemComponent.getStack(ItemComponent.REAGENT_BLOODLIGHT), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2), new ItemStack(RegistrarBloodMagicItems.SIGIL_BLOOD_LIGHT), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/LightSigil.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ItemComponent.getStack(ItemComponent.REAGENT_MAGNETISM), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2), new ItemStack(RegistrarBloodMagicItems.SIGIL_MAGNETISM), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/MagnetismSigil.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ItemComponent.getStack(ItemComponent.REAGENT_SUPPRESSION), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.SIGIL_SUPPRESSION), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/SuppressionSigil.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ItemComponent.getStack(ItemComponent.REAGENT_HASTE), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.SIGIL_HASTE), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ItemComponent.getStack(ItemComponent.REAGENT_BRIDGE), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.SIGIL_PHANTOM_BRIDGE), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ItemComponent.getStack(ItemComponent.REAGENT_COMPRESSION), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.SIGIL_COMPRESSION), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ItemComponent.getStack(ItemComponent.REAGENT_SEVERANCE), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.SIGIL_ENDER_SEVERANCE), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ItemComponent.getStack(ItemComponent.REAGENT_TELEPOSITION), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.SIGIL_TELEPOSITION), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ItemComponent.getStack(ItemComponent.REAGENT_TRANSPOSITION), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.SIGIL_TRANSPOSITION), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ItemComponent.getStack(ItemComponent.REAGENT_CLAW), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2), new ItemStack(RegistrarBloodMagicItems.SIGIL_CLAW), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ItemComponent.getStack(ItemComponent.REAGENT_BOUNCE), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), new ItemStack(RegistrarBloodMagicItems.SIGIL_BOUNCE), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ItemComponent.getStack(ItemComponent.REAGENT_FROST), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), new ItemStack(RegistrarBloodMagicItems.SIGIL_FROST), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_WATER.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE), new ItemStack(RegistrarBloodMagicItems.SIGIL_WATER), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WaterSigil.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_LAVA.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE), new ItemStack(RegistrarBloodMagicItems.SIGIL_LAVA), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/LavaSigil.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_AIR.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), new ItemStack(RegistrarBloodMagicItems.SIGIL_AIR), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/AirSigil.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_FASTMINER.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), new ItemStack(RegistrarBloodMagicItems.SIGIL_FAST_MINER), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/FastMinerSigil.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_VOID.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), new ItemStack(RegistrarBloodMagicItems.SIGIL_VOID), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/VoidSigil.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_GROWTH.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), new ItemStack(RegistrarBloodMagicItems.SIGIL_GREEN_GROVE), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/GrowthSigil.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_AFFINITY.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2), new ItemStack(RegistrarBloodMagicItems.SIGIL_ELEMENTAL_AFFINITY), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/ElementalAffinitySigil.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_SIGHT.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), new ItemStack(RegistrarBloodMagicItems.SIGIL_SEER), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/SightSigil.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_HOLDING.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2), new ItemStack(RegistrarBloodMagicItems.SIGIL_HOLDING), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_BLOODLIGHT.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2), new ItemStack(RegistrarBloodMagicItems.SIGIL_BLOOD_LIGHT), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/LightSigil.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_MAGNETISM.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2), new ItemStack(RegistrarBloodMagicItems.SIGIL_MAGNETISM), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/MagnetismSigil.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_SUPPRESSION.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.SIGIL_SUPPRESSION), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/SuppressionSigil.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_HASTE.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.SIGIL_HASTE), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_BRIDGE.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.SIGIL_PHANTOM_BRIDGE), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_COMPRESSION.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.SIGIL_COMPRESSION), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_SEVERANCE.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.SIGIL_ENDER_SEVERANCE), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_TELEPOSITION.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.SIGIL_TELEPOSITION), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_TRANSPOSITION.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.SIGIL_TRANSPOSITION), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_CLAW.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2), new ItemStack(RegistrarBloodMagicItems.SIGIL_CLAW), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_BOUNCE.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), new ItemStack(RegistrarBloodMagicItems.SIGIL_BOUNCE), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_FROST.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), new ItemStack(RegistrarBloodMagicItems.SIGIL_FROST), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); AlchemyArrayRecipeRegistry.registerRecipe(new ItemStack(Items.ROTTEN_FLESH), new ItemStack(Items.ROTTEN_FLESH), new AlchemyArrayEffectAttractor("attractor"), new AttractorAlchemyCircleRenderer()); AlchemyArrayRecipeRegistry.registerRecipe(new ItemStack(Items.FEATHER), new ItemStack(Items.REDSTONE), new AlchemyArrayEffectMovement("movement"), new StaticAlchemyCircleRenderer(new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/MovementArray.png"))); @@ -109,7 +109,7 @@ public class ModRecipes { AlchemyArrayRecipeRegistry.registerRecipe(new ItemStack(Items.ARROW), new ItemStack(Items.FEATHER), new AlchemyArrayEffectSkeletonTurret("skeletonTurret"), new DualAlchemyCircleRenderer(new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/SkeletonTurret1.png"), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/SkeletonTurret2.png"))); - AlchemyArrayRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_FASTMINER), new ItemStack(Items.IRON_PICKAXE), new AlchemyArrayEffectSigil("fastMiner", (ISigil) RegistrarBloodMagicItems.SIGIL_FAST_MINER), new SingleAlchemyCircleRenderer(new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/FastMinerSigil.png"))); + AlchemyArrayRecipeRegistry.registerRecipe(ComponentType.REAGENT_FASTMINER.getStack(), new ItemStack(Items.IRON_PICKAXE), new AlchemyArrayEffectSigil("fastMiner", (ISigil) RegistrarBloodMagicItems.SIGIL_FAST_MINER), new SingleAlchemyCircleRenderer(new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/FastMinerSigil.png"))); } @@ -142,16 +142,16 @@ public class ModRecipes { AlchemyTableRecipeRegistry.registerRecipe(new ItemStack(Blocks.CLAY, 5), 200, 200, 1, Items.WATER_BUCKET, Blocks.HARDENED_CLAY, Blocks.HARDENED_CLAY, Blocks.HARDENED_CLAY, Blocks.HARDENED_CLAY, Blocks.HARDENED_CLAY); AlchemyTableRecipeRegistry.registerRecipe(new ItemStack(Blocks.OBSIDIAN), 50, 50, 1, Items.WATER_BUCKET, Items.LAVA_BUCKET); - AlchemyTableRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.SULFUR, 8), 0, 100, 0, Items.LAVA_BUCKET); - AlchemyTableRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.SALTPETER, 4), 0, 100, 0, ItemComponent.getStack(ItemComponent.PLANT_OIL), ItemComponent.getStack(ItemComponent.PLANT_OIL), "dustCoal"); - AlchemyTableRecipeRegistry.registerRecipe(new ItemStack(Items.GUNPOWDER, 3), 0, 100, 0, ItemComponent.getStack(ItemComponent.SALTPETER), ItemComponent.getStack(ItemComponent.SULFUR), new ItemStack(Items.COAL, 1, 1)); + AlchemyTableRecipeRegistry.registerRecipe(ComponentType.SULFUR.getStack(8), 0, 100, 0, Items.LAVA_BUCKET); + AlchemyTableRecipeRegistry.registerRecipe(ComponentType.SALTPETER.getStack(4), 0, 100, 0, ComponentType.PLANT_OIL.getStack(), ComponentType.PLANT_OIL.getStack(), "dustCoal"); + AlchemyTableRecipeRegistry.registerRecipe(new ItemStack(Items.GUNPOWDER, 3), 0, 100, 0, ComponentType.SALTPETER.getStack(), ComponentType.SULFUR.getStack(), new ItemStack(Items.COAL, 1, 1)); - AlchemyTableRecipeRegistry.registerRecipe(new AlchemyTableCustomRecipe(ItemComponent.getStack(ItemComponent.SAND_COAL, 4), 100, 100, 1, new ItemStack(Items.COAL, 1, 0), new ItemStack(Items.COAL, 1, 0), Items.FLINT)); + AlchemyTableRecipeRegistry.registerRecipe(new AlchemyTableCustomRecipe(ComponentType.SAND_COAL.getStack(4), 100, 100, 1, new ItemStack(Items.COAL, 1, 0), new ItemStack(Items.COAL, 1, 0), Items.FLINT)); - AlchemyTableRecipeRegistry.registerRecipe(ItemCuttingFluid.getStack(ItemCuttingFluid.BASIC), 1000, 400, 1, "dustCoal", "gunpowder", Items.REDSTONE, Items.SUGAR, ItemComponent.getStack(ItemComponent.PLANT_OIL), new ItemStack(Items.POTIONITEM)); + AlchemyTableRecipeRegistry.registerRecipe(ItemCuttingFluid.getStack(ItemCuttingFluid.BASIC), 1000, 400, 1, "dustCoal", "gunpowder", Items.REDSTONE, Items.SUGAR, ComponentType.PLANT_OIL.getStack(), new ItemStack(Items.POTIONITEM)); - AlchemyTableRecipeRegistry.registerRecipe(new AlchemyTableCustomRecipe(ItemComponent.getStack(ItemComponent.SAND_IRON, 2), 400, 200, 1, "oreIron", ItemCuttingFluid.getStack(ItemCuttingFluid.BASIC))); - AlchemyTableRecipeRegistry.registerRecipe(new AlchemyTableCustomRecipe(ItemComponent.getStack(ItemComponent.SAND_GOLD, 2), 400, 200, 1, "oreGold", ItemCuttingFluid.getStack(ItemCuttingFluid.BASIC))); + AlchemyTableRecipeRegistry.registerRecipe(new AlchemyTableCustomRecipe(ComponentType.SAND_IRON.getStack(2), 400, 200, 1, "oreIron", ItemCuttingFluid.getStack(ItemCuttingFluid.BASIC))); + AlchemyTableRecipeRegistry.registerRecipe(new AlchemyTableCustomRecipe(ComponentType.SAND_GOLD.getStack(2), 400, 200, 1, "oreGold", ItemCuttingFluid.getStack(ItemCuttingFluid.BASIC))); AlchemyTableRecipeRegistry.registerRecipe(new AlchemyTableCustomRecipe(new ItemStack(Items.REDSTONE, 8), 400, 200, 1, "oreRedstone", ItemCuttingFluid.getStack(ItemCuttingFluid.BASIC))); @@ -163,21 +163,21 @@ public class ModRecipes { AlchemyTableRecipeRegistry.registerRecipe(new AlchemyTableCustomRecipe(new ItemStack(Blocks.GRAVEL), 50, 50, 1, "cobblestone", ItemCuttingFluid.getStack(ItemCuttingFluid.EXPLOSIVE))); AlchemyTableRecipeRegistry.registerRecipe(new AlchemyTableCustomRecipe(new ItemStack(Blocks.SAND), 50, 50, 1, Blocks.GRAVEL, ItemCuttingFluid.getStack(ItemCuttingFluid.EXPLOSIVE))); - AlchemyTableRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.PLANT_OIL), 100, 100, 1, "cropCarrot", "cropCarrot", "cropCarrot", new ItemStack(Items.DYE, 1, 15)); - AlchemyTableRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.PLANT_OIL), 100, 100, 1, "cropPotato", "cropPotato", new ItemStack(Items.DYE, 1, 15)); - AlchemyTableRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.PLANT_OIL), 100, 100, 1, "cropWheat", "cropWheat", new ItemStack(Items.DYE, 1, 15)); - AlchemyTableRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.PLANT_OIL), 100, 100, 1, Items.BEETROOT, Items.BEETROOT, Items.BEETROOT, new ItemStack(Items.DYE, 1, 15)); + AlchemyTableRecipeRegistry.registerRecipe(ComponentType.PLANT_OIL.getStack(), 100, 100, 1, "cropCarrot", "cropCarrot", "cropCarrot", new ItemStack(Items.DYE, 1, 15)); + AlchemyTableRecipeRegistry.registerRecipe(ComponentType.PLANT_OIL.getStack(), 100, 100, 1, "cropPotato", "cropPotato", new ItemStack(Items.DYE, 1, 15)); + AlchemyTableRecipeRegistry.registerRecipe(ComponentType.PLANT_OIL.getStack(), 100, 100, 1, "cropWheat", "cropWheat", new ItemStack(Items.DYE, 1, 15)); + AlchemyTableRecipeRegistry.registerRecipe(ComponentType.PLANT_OIL.getStack(), 100, 100, 1, Items.BEETROOT, Items.BEETROOT, Items.BEETROOT, new ItemStack(Items.DYE, 1, 15)); - AlchemyTableRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.NEURO_TOXIN), 1000, 100, 2, new ItemStack(Items.FISH, 1, 3)); - AlchemyTableRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.ANTISEPTIC, 2), 1000, 200, 2, ItemComponent.getStack(ItemComponent.PLANT_OIL), "nuggetGold", "cropWheat", Items.SUGAR, Blocks.BROWN_MUSHROOM, Blocks.RED_MUSHROOM); + AlchemyTableRecipeRegistry.registerRecipe(ComponentType.NEURO_TOXIN.getStack(), 1000, 100, 2, new ItemStack(Items.FISH, 1, 3)); + AlchemyTableRecipeRegistry.registerRecipe(ComponentType.ANTISEPTIC.getStack(2), 1000, 200, 2, ComponentType.PLANT_OIL.getStack(), "nuggetGold", "cropWheat", Items.SUGAR, Blocks.BROWN_MUSHROOM, Blocks.RED_MUSHROOM); - AlchemyTableRecipeRegistry.registerRecipe(ItemLivingArmourPointsUpgrade.getStack(ItemLivingArmourPointsUpgrade.DRAFT_ANGELUS), 20000, 400, 3, ItemComponent.getStack(ItemComponent.NEURO_TOXIN), ItemComponent.getStack(ItemComponent.ANTISEPTIC), "dustGold", Items.FERMENTED_SPIDER_EYE, new ItemStack(RegistrarBloodMagicItems.BLOOD_SHARD, 1, 0), Items.GHAST_TEAR); + AlchemyTableRecipeRegistry.registerRecipe(ItemLivingArmourPointsUpgrade.getStack(ItemLivingArmourPointsUpgrade.DRAFT_ANGELUS), 20000, 400, 3, ComponentType.NEURO_TOXIN.getStack(), ComponentType.ANTISEPTIC.getStack(), "dustGold", Items.FERMENTED_SPIDER_EYE, new ItemStack(RegistrarBloodMagicItems.BLOOD_SHARD, 1, 0), Items.GHAST_TEAR); AlchemyTableRecipeRegistry.registerRecipe(new AlchemyTableDyeableRecipe(0, 100, 0, new ItemStack(RegistrarBloodMagicItems.SIGIL_HOLDING))); AlchemyTableRecipeRegistry.registerRecipe(new ItemStack(RegistrarBloodMagicItems.POTION_FLASK), 1000, 200, 2, new ItemStack(Items.POTIONITEM), "cropNetherWart", "dustRedstone", "dustGlowstone"); - AlchemyTableRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.CATALYST_LENGTH_1), 1000, 100, 2, "gunpowder", "cropNetherWart", "gemLapis"); - AlchemyTableRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.CATALYST_POWER_1), 1000, 100, 2, "gunpowder", "cropNetherWart", "dustRedstone"); + AlchemyTableRecipeRegistry.registerRecipe(ComponentType.CATALYST_LENGTH_1.getStack(), 1000, 100, 2, "gunpowder", "cropNetherWart", "gemLapis"); + AlchemyTableRecipeRegistry.registerRecipe(ComponentType.CATALYST_POWER_1.getStack(), 1000, 100, 2, "gunpowder", "cropNetherWart", "dustRedstone"); } public static void addOreDoublingAlchemyRecipes() { @@ -229,12 +229,12 @@ public class ModRecipes { List lengtheningList = new ArrayList(); lengtheningList.add(inputStack); - lengtheningList.add(mundaneLengtheningStack); + lengtheningList.add(MUNDANE_LENGTHENING_STACK); AlchemyTableRecipeRegistry.registerRecipe(BMPotionUtils.getLengthAugmentRecipe(lpDrained, 100, tier, lengtheningList, baseEffect, 1)); List powerList = new ArrayList(); powerList.add(inputStack); - powerList.add(mundanePowerStack); + powerList.add(MUNDANE_POWER_STACK); AlchemyTableRecipeRegistry.registerRecipe(BMPotionUtils.getPowerAugmentRecipe(lpDrained, 100, tier, powerList, baseEffect, 1)); } From e4384dcec40bdbdaf148a4003fc03c1a875923b0 Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Tue, 22 Aug 2017 17:15:52 -0700 Subject: [PATCH 12/27] Stahp. --- src/main/java/WayofTime/bloodmagic/BloodMagic.java | 4 ++++ .../bloodmagic/ritual/RitualCobblestone.java | 4 ++-- ...eItAndJustWaitForMeToFinishPleaseAndThankYou.java | 12 ++++++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 src/main/java/WayofTime/bloodmagic/util/BloodMagicIsntReadyYetStopTryingToUseItAndJustWaitForMeToFinishPleaseAndThankYou.java diff --git a/src/main/java/WayofTime/bloodmagic/BloodMagic.java b/src/main/java/WayofTime/bloodmagic/BloodMagic.java index 12176ba6..05c86535 100644 --- a/src/main/java/WayofTime/bloodmagic/BloodMagic.java +++ b/src/main/java/WayofTime/bloodmagic/BloodMagic.java @@ -15,6 +15,7 @@ import WayofTime.bloodmagic.network.BloodMagicPacketHandler; import WayofTime.bloodmagic.proxy.CommonProxy; import WayofTime.bloodmagic.registry.*; import WayofTime.bloodmagic.structures.ModDungeons; +import WayofTime.bloodmagic.util.BloodMagicIsntReadyYetStopTryingToUseItAndJustWaitForMeToFinishPleaseAndThankYou; import WayofTime.bloodmagic.util.PluginUtil; import WayofTime.bloodmagic.util.Utils; import WayofTime.bloodmagic.util.handler.IMCHandler; @@ -74,6 +75,9 @@ public class BloodMagic { @Mod.EventHandler public void preInit(FMLPreInitializationEvent event) { + if (!IS_DEV) + throw new BloodMagicIsntReadyYetStopTryingToUseItAndJustWaitForMeToFinishPleaseAndThankYou(); + configDir = new File(event.getModConfigurationDirectory(), "bloodmagic"); PLUGINS.addAll(PluginUtil.getPlugins(event.getAsmData())); diff --git a/src/main/java/WayofTime/bloodmagic/ritual/RitualCobblestone.java b/src/main/java/WayofTime/bloodmagic/ritual/RitualCobblestone.java index 2a8be8aa..d5a01382 100644 --- a/src/main/java/WayofTime/bloodmagic/ritual/RitualCobblestone.java +++ b/src/main/java/WayofTime/bloodmagic/ritual/RitualCobblestone.java @@ -2,7 +2,7 @@ package WayofTime.bloodmagic.ritual; import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.api.ritual.*; -import WayofTime.bloodmagic.item.ItemComponent; +import WayofTime.bloodmagic.core.RegistrarBloodMagicItems; import WayofTime.bloodmagic.tile.TileAlchemyArray; import net.minecraft.block.Block; import net.minecraft.init.Blocks; @@ -40,7 +40,7 @@ public class RitualCobblestone extends Ritual { if (tileEntity != null && tileEntity instanceof TileAlchemyArray) { TileAlchemyArray alchemyArray = (TileAlchemyArray) tileEntity; - if (!alchemyArray.getStackInSlot(0).isEmpty() && alchemyArray.getStackInSlot(0).getItem() instanceof ItemComponent) { + if (!alchemyArray.getStackInSlot(0).isEmpty() && alchemyArray.getStackInSlot(0).getItem() == RegistrarBloodMagicItems.COMPONENT) { switch (alchemyArray.getStackInSlot(0).getItemDamage()) { case 0: block = Blocks.OBSIDIAN; diff --git a/src/main/java/WayofTime/bloodmagic/util/BloodMagicIsntReadyYetStopTryingToUseItAndJustWaitForMeToFinishPleaseAndThankYou.java b/src/main/java/WayofTime/bloodmagic/util/BloodMagicIsntReadyYetStopTryingToUseItAndJustWaitForMeToFinishPleaseAndThankYou.java new file mode 100644 index 00000000..70cc23f0 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/util/BloodMagicIsntReadyYetStopTryingToUseItAndJustWaitForMeToFinishPleaseAndThankYou.java @@ -0,0 +1,12 @@ +package WayofTime.bloodmagic.util; + +public class BloodMagicIsntReadyYetStopTryingToUseItAndJustWaitForMeToFinishPleaseAndThankYou extends Error { + public BloodMagicIsntReadyYetStopTryingToUseItAndJustWaitForMeToFinishPleaseAndThankYou() { + super("Blood Magic isn't ready yet. Stop trying to use it and just wait for me to finish. Please and thank you."); + } + + @Override + public synchronized Throwable fillInStackTrace() { + return this; + } +} From 9133fdc167d447dbe20231f21f87ac35de3fedd2 Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Tue, 22 Aug 2017 18:17:20 -0700 Subject: [PATCH 13/27] More effort moving forward with GAPI compat --- .../guideapi/book/CategoryArchitect.java | 240 ++++-------------- 1 file changed, 55 insertions(+), 185 deletions(-) diff --git a/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryArchitect.java b/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryArchitect.java index ceb9d94b..52e9cce4 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryArchitect.java +++ b/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryArchitect.java @@ -119,205 +119,75 @@ public class CategoryArchitect { category.getEntry("air").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_AIR))); category.getEntry("air").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "air.info.1"), 370)); - List voidPages = new ArrayList(); + category.addEntry("void", new EntryText(keyBase + "void", true)); + category.getEntry("void").addPage(BookUtils.getForgeRecipe(ComponentType.REAGENT_VOID.getStack())); + category.getEntry("void").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_VOID))); + category.getEntry("void").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "void.info.1"), 370)); - TartaricForgeRecipe voidRecipe = RecipeHelper.getForgeRecipeForOutput(ComponentType.REAGENT_VOID.getStack()); - if (voidRecipe != null) { - voidPages.add(new PageTartaricForgeRecipe(voidRecipe)); - } + category.addEntry("greenGrove", new EntryText(keyBase + "greenGrove", true)); + category.getEntry("greenGrove").addPage(BookUtils.getForgeRecipe(ComponentType.REAGENT_GROWTH.getStack())); + category.getEntry("greenGrove").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_GREEN_GROVE))); + category.getEntry("greenGrove").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "greenGrove.info.1"), 370)); - PageAlchemyArray voidRecipePage = BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_VOID)); - if (voidRecipePage != null) { - voidPages.add(voidRecipePage); - } + category.addEntry("fastMiner", new EntryText(keyBase + "fastMiner", true)); + category.getEntry("fastMiner").addPage(BookUtils.getForgeRecipe(ComponentType.REAGENT_FASTMINER.getStack())); + category.getEntry("fastMiner").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_FAST_MINER))); + category.getEntry("fastMiner").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "fastMiner.info.1"), 370)); - voidPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "void" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "void"), new EntryText(voidPages, TextHelper.localize(keyBase + "void"), true)); + category.addEntry("seer", new EntryText(keyBase + "seer", true)); + category.getEntry("seer").addPage(BookUtils.getForgeRecipe(ComponentType.REAGENT_SIGHT.getStack())); + category.getEntry("seer").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_SEER))); + category.getEntry("seer").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "seer.info.1"), 370)); - List greenGrovePages = new ArrayList(); + category.addEntry("magicianOrb", new EntryText(keyBase + "magicianOrb", true)); + category.getEntry("magicianOrb").addPage(BookUtils.getAltarPage(OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_MAGICIAN))); + category.getEntry("magicianOrb").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "magicianOrb.info.1"), 370)); - TartaricForgeRecipe greenGroveRecipe = RecipeHelper.getForgeRecipeForOutput(ComponentType.REAGENT_GROWTH.getStack()); - if (greenGroveRecipe != null) { - greenGrovePages.add(new PageTartaricForgeRecipe(greenGroveRecipe)); - } + category.addEntry("capacity", new EntryText(keyBase + "capacity", true)); + category.getEntry("capacity").addPage(new PageJsonRecipe(new ResourceLocation(BloodMagic.MODID, "blood_rune_capacity"))); + category.getEntry("capacity").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "capacity.info.1"), 370)); - PageAlchemyArray greenGroveRecipePage = BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_GREEN_GROVE)); - if (greenGroveRecipePage != null) { - greenGrovePages.add(greenGroveRecipePage); - } + category.addEntry("displacement", new EntryText(keyBase + "displacement", true)); + category.getEntry("displacement").addPage(new PageJsonRecipe(new ResourceLocation(BloodMagic.MODID, "blood_rune_displacement"))); + category.getEntry("displacement").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "displacement.info.1"), 370)); - greenGrovePages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "greenGrove" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "greenGrove"), new EntryText(greenGrovePages, TextHelper.localize(keyBase + "greenGrove"), true)); + category.addEntry("affinity", new EntryText(keyBase + "affinity", true)); + category.getEntry("affinity").addPage(BookUtils.getForgeRecipe(ComponentType.REAGENT_AFFINITY.getStack())); + category.getEntry("affinity").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_ELEMENTAL_AFFINITY))); + category.getEntry("affinity").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "affinity.info"), 370)); - List fastMinerPages = new ArrayList(); + category.addEntry("lamp", new EntryText(keyBase + "lamp", true)); + category.getEntry("lamp").addPage(BookUtils.getForgeRecipe(ComponentType.REAGENT_BLOODLIGHT.getStack())); + category.getEntry("lamp").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_BLOOD_LIGHT))); + category.getEntry("lamp").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "lamp.info.1"), 370)); - TartaricForgeRecipe fastMinerRecipe = RecipeHelper.getForgeRecipeForOutput(ComponentType.REAGENT_FASTMINER.getStack()); - if (fastMinerRecipe != null) { - fastMinerPages.add(new PageTartaricForgeRecipe(fastMinerRecipe)); - } + category.addEntry("magnetism", new EntryText(keyBase + "magnetism", true)); + category.getEntry("magnetism").addPage(BookUtils.getForgeRecipe(ComponentType.REAGENT_MAGNETISM.getStack())); + category.getEntry("magnetism").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_MAGNETISM))); + category.getEntry("magnetism").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "magnetism.info.1"), 370)); - PageAlchemyArray fastMinerRecipePage = BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_FAST_MINER)); - if (fastMinerRecipePage != null) { - fastMinerPages.add(fastMinerRecipePage); - } + category.addEntry("peritia", new EntryText(keyBase + "peritia", true)); + category.getEntry("peritia").addPage(new PageJsonRecipe(new ResourceLocation(BloodMagic.MODID, "experience_tome"))); + category.getEntry("peritia").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "peritia.info.1"), 370)); - fastMinerPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "fastMiner" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "fastMiner"), new EntryText(fastMinerPages, TextHelper.localize(keyBase + "fastMiner"), true)); + category.addEntry("livingArmour", new EntryText(keyBase + "livingArmour", true)); + category.getEntry("livingArmour").addPage(BookUtils.getForgeRecipe(ComponentType.REAGENT_BINDING.getStack())); + category.getEntry("livingArmour").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_CHEST))); + category.getEntry("livingArmour").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_HELMET))); + category.getEntry("livingArmour").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_LEGGINGS))); + category.getEntry("livingArmour").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_BOOTS))); + category.getEntry("livingArmour").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "livingArmour.info.1"), 370)); - List seerPages = new ArrayList(); + category.addEntry("upgradeTome", new EntryText(keyBase + "upgradeTome", true)); + category.getEntry("upgradeTome").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "upgradeTome.info.1"))); - TartaricForgeRecipe seerRecipe = RecipeHelper.getForgeRecipeForOutput(ComponentType.REAGENT_SIGHT.getStack()); - if (seerRecipe != null) { - seerPages.add(new PageTartaricForgeRecipe(seerRecipe)); - } + category.addEntry("downgrade", new EntryText(keyBase + "downgrade", true)); + category.getEntry("downgrade").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "downgrade.info.1"))); - PageAlchemyArray seerRecipePage = BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_SEER)); - if (seerRecipePage != null) { - seerPages.add(seerRecipePage); - } - - seerPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "seer" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "seer"), new EntryText(seerPages, TextHelper.localize(keyBase + "seer"), true)); - - List magicianOrbPages = new ArrayList(); - - AltarRecipe magicianOrbRecipe = RecipeHelper.getAltarRecipeForOutput(OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_MAGICIAN)); - if (magicianOrbRecipe != null) { - magicianOrbPages.add(new PageAltarRecipe(magicianOrbRecipe)); - } - - magicianOrbPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "magicianOrb" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "magicianOrb"), new EntryText(magicianOrbPages, TextHelper.localize(keyBase + "magicianOrb"), true)); - - List capacityPages = new ArrayList(); - - IRecipe capacityRecipe = RecipeHelper.getRecipeForOutput(new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE, 1, 4)); - if (capacityRecipe != null) { - capacityPages.add(BookUtils.getPageForRecipe(capacityRecipe)); - } - - capacityPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "capacity" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "capacity"), new EntryText(capacityPages, TextHelper.localize(keyBase + "capacity"), true)); - - List displacementPages = new ArrayList(); - - IRecipe displacementRecipe = RecipeHelper.getRecipeForOutput(new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE, 1, 4)); - if (displacementRecipe != null) { - displacementPages.add(BookUtils.getPageForRecipe(displacementRecipe)); - } - - displacementPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "displacement" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "displacement"), new EntryText(displacementPages, TextHelper.localize(keyBase + "displacement"), true)); - - List affinityPages = new ArrayList(); - - TartaricForgeRecipe affinityRecipe = RecipeHelper.getForgeRecipeForOutput(ComponentType.REAGENT_AFFINITY.getStack()); - if (affinityRecipe != null) { - affinityPages.add(new PageTartaricForgeRecipe(affinityRecipe)); - } - - PageAlchemyArray affinityRecipePage = BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_ELEMENTAL_AFFINITY)); - if (affinityRecipePage != null) { - affinityPages.add(affinityRecipePage); - } - - affinityPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "affinity" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "affinity"), new EntryText(affinityPages, TextHelper.localize(keyBase + "affinity"), true)); - - List lampPages = new ArrayList(); - - TartaricForgeRecipe lampRecipe = RecipeHelper.getForgeRecipeForOutput(ComponentType.REAGENT_BLOODLIGHT.getStack()); - if (lampRecipe != null) { - lampPages.add(new PageTartaricForgeRecipe(lampRecipe)); - } - - PageAlchemyArray lampRecipePage = BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_BLOOD_LIGHT)); - if (lampRecipePage != null) { - lampPages.add(lampRecipePage); - } - - lampPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "lamp" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "lamp"), new EntryText(lampPages, TextHelper.localize(keyBase + "lamp"), true)); - - List magnetismPages = new ArrayList(); - - TartaricForgeRecipe magnetismRecipe = RecipeHelper.getForgeRecipeForOutput(ComponentType.REAGENT_MAGNETISM.getStack()); - if (magnetismRecipe != null) { - magnetismPages.add(new PageTartaricForgeRecipe(magnetismRecipe)); - } - - PageAlchemyArray magnetismRecipePage = BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_MAGNETISM)); - if (magnetismRecipePage != null) { - magnetismPages.add(magnetismRecipePage); - } - - magnetismPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "magnetism" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "magnetism"), new EntryText(magnetismPages, TextHelper.localize(keyBase + "magnetism"), true)); - - List peritiaPages = new ArrayList(); - - IRecipe peritiaRecipe = RecipeHelper.getRecipeForOutput(new ItemStack(RegistrarBloodMagicItems.EXPERIENCE_TOME)); - if (peritiaRecipe != null) { - peritiaPages.add(BookUtils.getPageForRecipe(peritiaRecipe)); - } - - peritiaPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "peritia" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "peritia"), new EntryText(peritiaPages, TextHelper.localize(keyBase + "peritia"), true)); - - List livingArmourPages = new ArrayList(); - - TartaricForgeRecipe bindingRecipe = RecipeHelper.getForgeRecipeForOutput(ComponentType.REAGENT_BINDING.getStack()); - if (bindingRecipe != null) { - livingArmourPages.add(new PageTartaricForgeRecipe(bindingRecipe)); - } - - PageAlchemyArray bindingRecipePage = BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_CHEST)); - if (bindingRecipePage != null) { - livingArmourPages.add(bindingRecipePage); - } - - bindingRecipePage = BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_HELMET)); - if (bindingRecipePage != null) { - livingArmourPages.add(bindingRecipePage); - } - - bindingRecipePage = BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_LEGGINGS)); - if (bindingRecipePage != null) { - livingArmourPages.add(bindingRecipePage); - } - - bindingRecipePage = BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_BOOTS)); - if (bindingRecipePage != null) { - livingArmourPages.add(bindingRecipePage); - } - - livingArmourPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "livingArmour" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "livingArmour"), new EntryText(livingArmourPages, TextHelper.localize(keyBase + "livingArmour"), true)); - - List upgradePages = new ArrayList(); - - upgradePages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "upgradeTome" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "upgradeTome"), new EntryText(upgradePages, TextHelper.localize(keyBase + "upgradeTome"), true)); - - List downgradePages = new ArrayList(); - - downgradePages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "downgrade" + ".info"), 370)); - entries.put(new ResourceLocation(keyBase + "downgrade"), new EntryText(downgradePages, TextHelper.localize(keyBase + "downgrade"), true)); - - List teleposerPages = new ArrayList(); - - AltarRecipe teleposerFocusRecipe = RecipeHelper.getAltarRecipeForOutput(new ItemStack(RegistrarBloodMagicItems.TELEPOSITION_FOCUS)); - if (teleposerFocusRecipe != null) { - teleposerPages.add(new PageAltarRecipe(teleposerFocusRecipe)); - } - - IRecipe teleposerRecipe = RecipeHelper.getRecipeForOutput(new ItemStack(RegistrarBloodMagicBlocks.TELEPOSER)); - if (teleposerRecipe != null) { - teleposerPages.add(BookUtils.getPageForRecipe(teleposerRecipe)); - } - - teleposerPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "teleposer" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "teleposer"), new EntryText(teleposerPages, TextHelper.localize(keyBase + "teleposer"), true)); + category.addEntry("teleposer", new EntryText(keyBase + "teleposer", true)); + category.getEntry("teleposer").addPage(BookUtils.getAltarPage(new ItemStack(RegistrarBloodMagicItems.TELEPOSITION_FOCUS))); + category.getEntry("teleposer").addPage(new PageJsonRecipe(new ResourceLocation(BloodMagic.MODID, "teleposer"))); + category.getEntry("teleposer").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "teleposer.info.1"), 370)); List boundBladePages = new ArrayList(); From 4a47f5cbdcc2ea9825aa7644cbd680f539183f0a Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Wed, 23 Aug 2017 19:43:17 -0700 Subject: [PATCH 14/27] Finish moving guide over Some entries crash, others don't. I don't know why right now. It makes no sense. --- .../guideapi/BloodMagicGuideAPIPlugin.java | 5 +- .../bloodmagic/compat/guideapi/BookUtils.java | 8 +- .../compat/guideapi/book/CategoryAlchemy.java | 11 +- .../guideapi/book/CategoryArchitect.java | 313 ++++++------------ .../compat/guideapi/book/CategoryDemon.java | 220 ++++-------- .../compat/guideapi/book/CategoryRitual.java | 166 +++++----- .../compat/guideapi/book/CategorySpell.java | 17 - .../bloodmagic/proxy/CommonProxy.java | 3 - .../bloodmagic/util/helper/RecipeHelper.java | 15 - 9 files changed, 244 insertions(+), 514 deletions(-) delete mode 100644 src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategorySpell.java delete mode 100644 src/main/java/WayofTime/bloodmagic/util/helper/RecipeHelper.java diff --git a/src/main/java/WayofTime/bloodmagic/compat/guideapi/BloodMagicGuideAPIPlugin.java b/src/main/java/WayofTime/bloodmagic/compat/guideapi/BloodMagicGuideAPIPlugin.java index 33b8a2dc..505b88ea 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/guideapi/BloodMagicGuideAPIPlugin.java +++ b/src/main/java/WayofTime/bloodmagic/compat/guideapi/BloodMagicGuideAPIPlugin.java @@ -40,9 +40,8 @@ public class BloodMagicGuideAPIPlugin implements IGuideBook { CategoryAlchemy.buildCategory(GUIDE_BOOK); CategoryArchitect.buildCategory(GUIDE_BOOK); - GUIDE_BOOK.addCategory(new CategoryItemStack(CategoryDemon.buildCategory(), "guide.bloodmagic.category.demon", new ItemStack(RegistrarBloodMagicItems.BLOOD_SHARD))); - GUIDE_BOOK.addCategory(new CategoryItemStack(CategoryRitual.buildCategory(), "guide.bloodmagic.category.ritual", new ItemStack(RegistrarBloodMagicBlocks.RITUAL_CONTROLLER))); -// GUIDE_BOOK.addCategory(new CategoryItemStack(CategorySpell.buildCategory(), "guide.bloodmagic.category.spell", new ItemStack(ModItems.ritualDiviner))); + CategoryDemon.buildCategory(GUIDE_BOOK); + CategoryRitual.buildCategory(GUIDE_BOOK); return GUIDE_BOOK; } diff --git a/src/main/java/WayofTime/bloodmagic/compat/guideapi/BookUtils.java b/src/main/java/WayofTime/bloodmagic/compat/guideapi/BookUtils.java index a2cb6a10..1d0c2873 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/guideapi/BookUtils.java +++ b/src/main/java/WayofTime/bloodmagic/compat/guideapi/BookUtils.java @@ -1,5 +1,6 @@ package WayofTime.bloodmagic.compat.guideapi; +import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.api.alchemyCrafting.AlchemyCircleRenderer; import WayofTime.bloodmagic.api.registry.AlchemyArrayRecipeRegistry; import WayofTime.bloodmagic.api_impl.BloodMagicAPI; @@ -9,6 +10,7 @@ import WayofTime.bloodmagic.client.render.alchemyArray.DualAlchemyCircleRenderer import WayofTime.bloodmagic.compat.guideapi.page.PageAlchemyArray; import WayofTime.bloodmagic.compat.guideapi.page.PageAltarRecipe; import WayofTime.bloodmagic.compat.guideapi.page.PageTartaricForgeRecipe; +import amerifrance.guideapi.page.PageJsonRecipe; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; @@ -28,7 +30,7 @@ public class BookUtils { } @Nullable - public static PageTartaricForgeRecipe getForgeRecipe(ItemStack output) { + public static PageTartaricForgeRecipe getForgePage(ItemStack output) { for (RecipeTartaricForge recipe : BloodMagicAPI.INSTANCE.getRecipeRegistrar().getTartaricForgeRecipes().values()) if (ItemStack.areItemStacksEqualUsingNBTShareTag(output, recipe.getOutput())) return new PageTartaricForgeRecipe(recipe); @@ -36,6 +38,10 @@ public class BookUtils { return null; } + public static PageJsonRecipe getCraftingPage(String name) { + return new PageJsonRecipe(new ResourceLocation(BloodMagic.MODID, name)); + } + public static PageAlchemyArray getAlchemyPage(String key) { ItemStack[] recipe = AlchemyArrayRecipeRegistry.getRecipeForArrayEffect(key); if (recipe[0] != null) { diff --git a/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryAlchemy.java b/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryAlchemy.java index 2db144b0..e0f1d390 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryAlchemy.java +++ b/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryAlchemy.java @@ -25,7 +25,7 @@ public class CategoryAlchemy { category.getEntry("intro").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "intro.info"), 370)); category.addEntry("ash", new EntryText(keyBase + "ash", true)); - category.getEntry("ash").addPage(BookUtils.getForgeRecipe(new ItemStack(RegistrarBloodMagicItems.ARCANE_ASHES))); + category.getEntry("ash").addPage(BookUtils.getForgePage(new ItemStack(RegistrarBloodMagicItems.ARCANE_ASHES))); category.getEntry("ash").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "ash.info"), 370)); category.addEntry("speed", new EntryText(keyBase + "speed", true)); @@ -52,14 +52,7 @@ public class CategoryAlchemy { category.getEntry("fastMiner").addPage(BookUtils.getAlchemyPage("fastMiner")); category.getEntry("fastMiner").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "fastMiner.info"), 370)); + category.entries.values().forEach(e -> e.pageList.stream().filter(p -> p instanceof PageText).forEach(p -> ((PageText) p).setUnicodeFlag(true))); book.addCategory(category); - - for (EntryAbstract entry : category.entries.values()) { - for (IPage page : entry.pageList) { - if (page instanceof PageText) { - ((PageText) page).setUnicodeFlag(true); - } - } - } } } diff --git a/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryArchitect.java b/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryArchitect.java index 52e9cce4..1392936e 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryArchitect.java +++ b/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryArchitect.java @@ -1,38 +1,26 @@ package WayofTime.bloodmagic.compat.guideapi.book; import WayofTime.bloodmagic.BloodMagic; -import WayofTime.bloodmagic.api.recipe.TartaricForgeRecipe; -import WayofTime.bloodmagic.api.registry.AltarRecipeRegistry.AltarRecipe; -import WayofTime.bloodmagic.api.registry.OrbRegistry; +import WayofTime.bloodmagic.api.orb.BloodOrb; import WayofTime.bloodmagic.compat.guideapi.BookUtils; import WayofTime.bloodmagic.compat.guideapi.entry.EntryText; -import WayofTime.bloodmagic.compat.guideapi.page.PageAlchemyArray; -import WayofTime.bloodmagic.compat.guideapi.page.PageAltarRecipe; -import WayofTime.bloodmagic.compat.guideapi.page.PageTartaricForgeRecipe; import WayofTime.bloodmagic.core.RegistrarBloodMagic; import WayofTime.bloodmagic.core.RegistrarBloodMagicBlocks; import WayofTime.bloodmagic.core.RegistrarBloodMagicItems; import WayofTime.bloodmagic.item.types.ComponentType; -import WayofTime.bloodmagic.util.helper.RecipeHelper; -import WayofTime.bloodmagic.util.helper.TextHelper; -import amerifrance.guideapi.api.IPage; import amerifrance.guideapi.api.impl.Book; import amerifrance.guideapi.api.util.PageHelper; import amerifrance.guideapi.category.CategoryItemStack; -import amerifrance.guideapi.page.PageJsonRecipe; import amerifrance.guideapi.page.PageText; import net.minecraft.client.resources.I18n; import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.util.ResourceLocation; - -import java.util.ArrayList; -import java.util.List; +import net.minecraft.nbt.NBTTagCompound; public class CategoryArchitect { public static void buildCategory(Book book) { final String keyBase = "guide." + BloodMagic.MODID + ".entry.architect."; + CategoryItemStack category = new CategoryItemStack(keyBase + "architect", new ItemStack(RegistrarBloodMagicItems.SIGIL_DIVINATION)); category.withKeyBase(BloodMagic.MODID); @@ -40,13 +28,13 @@ public class CategoryArchitect { category.getEntry("intro").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "intro.info"), 370)); category.addEntry("bloodaltar", new EntryText(keyBase + "bloodaltar", true)); - category.getEntry("bloodaltar").addPage(new PageJsonRecipe(new ResourceLocation(BloodMagic.MODID, "altar"))); + category.getEntry("bloodaltar").addPage(BookUtils.getCraftingPage("altar")); category.getEntry("bloodaltar").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "bloodaltar.info.1"), 370)); - category.getEntry("bloodaltar").addPage(new PageJsonRecipe(new ResourceLocation(BloodMagic.MODID, "sacrificial_dagger"))); + category.getEntry("bloodaltar").addPage(BookUtils.getCraftingPage("sacrificial_dagger")); category.getEntry("bloodaltar").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "bloodaltar.info.2"), 370)); category.addEntry("ash", new EntryText(keyBase + "ash", true)); - category.getEntry("ash").addPage(BookUtils.getForgeRecipe(new ItemStack(RegistrarBloodMagicItems.ARCANE_ASHES))); + category.getEntry("ash").addPage(BookUtils.getForgePage(new ItemStack(RegistrarBloodMagicItems.ARCANE_ASHES))); category.getEntry("ash").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "ash.info"), 370)); category.addEntry("divination", new EntryText(keyBase + "divination", true)); @@ -58,17 +46,17 @@ public class CategoryArchitect { category.addEntry("weakorb", new EntryText(keyBase + "weakorb", true)); category.getEntry("weakorb").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "weakorb.info1"), 370)); - category.getEntry("weakorb").addPage(BookUtils.getAltarPage(OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_WEAK))); + category.getEntry("weakorb").addPage(BookUtils.getAltarPage(getOrbStack(RegistrarBloodMagic.ORB_WEAK))); category.getEntry("weakorb").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "weakorb.info2"), 370)); category.addEntry("incense", new EntryText(keyBase + "incense", true)); - category.getEntry("incense").addPage(new PageJsonRecipe(new ResourceLocation(BloodMagic.MODID, "incense_altar"))); + category.getEntry("incense").addPage(BookUtils.getCraftingPage("incense_altar")); category.getEntry("incense").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "incense.info.1"), 370)); - category.getEntry("incense").addPage(new PageJsonRecipe(new ResourceLocation(BloodMagic.MODID, "path_wood"))); + category.getEntry("incense").addPage(BookUtils.getCraftingPage("path_wood")); category.getEntry("incense").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "incense.info.2"), 370)); category.addEntry("bloodrune", new EntryText(keyBase + "bloodrune", true)); - category.getEntry("bloodrune").addPage(new PageJsonRecipe(new ResourceLocation(BloodMagic.MODID, "blood_rune_blank"))); + category.getEntry("bloodrune").addPage(BookUtils.getCraftingPage("blood_rune_blank")); category.getEntry("bloodrune").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "bloodrune.info.1"), 370)); category.addEntry("inspectoris", new EntryText(keyBase + "inspectoris", true)); @@ -80,21 +68,21 @@ public class CategoryArchitect { category.getEntry("runeSpeed").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "runeSpeed.info.1"), 370)); category.addEntry("water", new EntryText(keyBase + "water", true)); - category.getEntry("water").addPage(BookUtils.getForgeRecipe(ComponentType.REAGENT_WATER.getStack())); + category.getEntry("water").addPage(BookUtils.getForgePage(ComponentType.REAGENT_WATER.getStack())); category.getEntry("water").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_WATER))); category.getEntry("water").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "water.info.1"), 370)); category.addEntry("lava", new EntryText(keyBase + "lava", true)); - category.getEntry("lava").addPage(BookUtils.getForgeRecipe(ComponentType.REAGENT_LAVA.getStack())); + category.getEntry("lava").addPage(BookUtils.getForgePage(ComponentType.REAGENT_LAVA.getStack())); category.getEntry("lava").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_LAVA))); category.getEntry("lava").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "lava.info.1"), 370)); category.addEntry("lavaCrystal", new EntryText(keyBase + "lavaCrystal", true)); - category.getEntry("lavaCrystal").addPage(new PageJsonRecipe(new ResourceLocation(BloodMagic.MODID, "lava_crystal"))); + category.getEntry("lavaCrystal").addPage(BookUtils.getCraftingPage("lava_crystal")); category.getEntry("lavaCrystal").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "lavaCrystal.info.1"), 370)); category.addEntry("apprenticeorb", new EntryText(keyBase + "apprenticeorb", true)); - category.getEntry("apprenticeorb").addPage(BookUtils.getAltarPage(OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_APPRENTICE))); + category.getEntry("apprenticeorb").addPage(BookUtils.getAltarPage(getOrbStack(RegistrarBloodMagic.ORB_APPRENTICE))); category.getEntry("apprenticeorb").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "apprenticeorb.info.1"), 370)); category.addEntry("dagger", new EntryText(keyBase + "dagger", true)); @@ -102,76 +90,76 @@ public class CategoryArchitect { category.getEntry("dagger").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "dagger.info.1"), 370)); category.addEntry("runeSacrifice", new EntryText(keyBase + "runeSacrifice", true)); - category.getEntry("runeSacrifice").addPage(new PageJsonRecipe(new ResourceLocation(BloodMagic.MODID, "blood_rune_sacrifice"))); + category.getEntry("runeSacrifice").addPage(BookUtils.getCraftingPage("blood_rune_sacrifice")); category.getEntry("runeSacrifice").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "runeSacrifice.info.1"), 370)); category.addEntry("runeSelfSacrifice", new EntryText(keyBase + "runeSelfSacrifice", true)); - category.getEntry("runeSelfSacrifice").addPage(new PageJsonRecipe(new ResourceLocation(BloodMagic.MODID, "blood_rune_selfsacrifice"))); + category.getEntry("runeSelfSacrifice").addPage(BookUtils.getCraftingPage("blood_rune_selfsacrifice")); category.getEntry("runeSelfSacrifice").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "runeSelfSacrifice.info.1"), 370)); category.addEntry("holding", new EntryText(keyBase + "holding", true)); - category.getEntry("holding").addPage(BookUtils.getForgeRecipe(ComponentType.REAGENT_HOLDING.getStack())); + category.getEntry("holding").addPage(BookUtils.getForgePage(ComponentType.REAGENT_HOLDING.getStack())); category.getEntry("holding").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_HOLDING))); category.getEntry("holding").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "holding.info.1"), 370)); category.addEntry("air", new EntryText(keyBase + "air", true)); - category.getEntry("air").addPage(BookUtils.getForgeRecipe(ComponentType.REAGENT_AIR.getStack())); + category.getEntry("air").addPage(BookUtils.getForgePage(ComponentType.REAGENT_AIR.getStack())); category.getEntry("air").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_AIR))); category.getEntry("air").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "air.info.1"), 370)); category.addEntry("void", new EntryText(keyBase + "void", true)); - category.getEntry("void").addPage(BookUtils.getForgeRecipe(ComponentType.REAGENT_VOID.getStack())); + category.getEntry("void").addPage(BookUtils.getForgePage(ComponentType.REAGENT_VOID.getStack())); category.getEntry("void").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_VOID))); category.getEntry("void").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "void.info.1"), 370)); category.addEntry("greenGrove", new EntryText(keyBase + "greenGrove", true)); - category.getEntry("greenGrove").addPage(BookUtils.getForgeRecipe(ComponentType.REAGENT_GROWTH.getStack())); + category.getEntry("greenGrove").addPage(BookUtils.getForgePage(ComponentType.REAGENT_GROWTH.getStack())); category.getEntry("greenGrove").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_GREEN_GROVE))); category.getEntry("greenGrove").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "greenGrove.info.1"), 370)); category.addEntry("fastMiner", new EntryText(keyBase + "fastMiner", true)); - category.getEntry("fastMiner").addPage(BookUtils.getForgeRecipe(ComponentType.REAGENT_FASTMINER.getStack())); + category.getEntry("fastMiner").addPage(BookUtils.getForgePage(ComponentType.REAGENT_FASTMINER.getStack())); category.getEntry("fastMiner").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_FAST_MINER))); category.getEntry("fastMiner").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "fastMiner.info.1"), 370)); category.addEntry("seer", new EntryText(keyBase + "seer", true)); - category.getEntry("seer").addPage(BookUtils.getForgeRecipe(ComponentType.REAGENT_SIGHT.getStack())); + category.getEntry("seer").addPage(BookUtils.getForgePage(ComponentType.REAGENT_SIGHT.getStack())); category.getEntry("seer").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_SEER))); category.getEntry("seer").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "seer.info.1"), 370)); category.addEntry("magicianOrb", new EntryText(keyBase + "magicianOrb", true)); - category.getEntry("magicianOrb").addPage(BookUtils.getAltarPage(OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_MAGICIAN))); + category.getEntry("magicianOrb").addPage(BookUtils.getAltarPage(getOrbStack(RegistrarBloodMagic.ORB_MAGICIAN))); category.getEntry("magicianOrb").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "magicianOrb.info.1"), 370)); category.addEntry("capacity", new EntryText(keyBase + "capacity", true)); - category.getEntry("capacity").addPage(new PageJsonRecipe(new ResourceLocation(BloodMagic.MODID, "blood_rune_capacity"))); + category.getEntry("capacity").addPage(BookUtils.getCraftingPage("blood_rune_capacity")); category.getEntry("capacity").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "capacity.info.1"), 370)); category.addEntry("displacement", new EntryText(keyBase + "displacement", true)); - category.getEntry("displacement").addPage(new PageJsonRecipe(new ResourceLocation(BloodMagic.MODID, "blood_rune_displacement"))); + category.getEntry("displacement").addPage(BookUtils.getCraftingPage("blood_rune_displacement")); category.getEntry("displacement").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "displacement.info.1"), 370)); category.addEntry("affinity", new EntryText(keyBase + "affinity", true)); - category.getEntry("affinity").addPage(BookUtils.getForgeRecipe(ComponentType.REAGENT_AFFINITY.getStack())); + category.getEntry("affinity").addPage(BookUtils.getForgePage(ComponentType.REAGENT_AFFINITY.getStack())); category.getEntry("affinity").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_ELEMENTAL_AFFINITY))); category.getEntry("affinity").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "affinity.info"), 370)); category.addEntry("lamp", new EntryText(keyBase + "lamp", true)); - category.getEntry("lamp").addPage(BookUtils.getForgeRecipe(ComponentType.REAGENT_BLOODLIGHT.getStack())); + category.getEntry("lamp").addPage(BookUtils.getForgePage(ComponentType.REAGENT_BLOODLIGHT.getStack())); category.getEntry("lamp").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_BLOOD_LIGHT))); category.getEntry("lamp").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "lamp.info.1"), 370)); category.addEntry("magnetism", new EntryText(keyBase + "magnetism", true)); - category.getEntry("magnetism").addPage(BookUtils.getForgeRecipe(ComponentType.REAGENT_MAGNETISM.getStack())); + category.getEntry("magnetism").addPage(BookUtils.getForgePage(ComponentType.REAGENT_MAGNETISM.getStack())); category.getEntry("magnetism").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_MAGNETISM))); category.getEntry("magnetism").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "magnetism.info.1"), 370)); category.addEntry("peritia", new EntryText(keyBase + "peritia", true)); - category.getEntry("peritia").addPage(new PageJsonRecipe(new ResourceLocation(BloodMagic.MODID, "experience_tome"))); + category.getEntry("peritia").addPage(BookUtils.getCraftingPage("experience_tome")); category.getEntry("peritia").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "peritia.info.1"), 370)); category.addEntry("livingArmour", new EntryText(keyBase + "livingArmour", true)); - category.getEntry("livingArmour").addPage(BookUtils.getForgeRecipe(ComponentType.REAGENT_BINDING.getStack())); + category.getEntry("livingArmour").addPage(BookUtils.getForgePage(ComponentType.REAGENT_BINDING.getStack())); category.getEntry("livingArmour").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_CHEST))); category.getEntry("livingArmour").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_HELMET))); category.getEntry("livingArmour").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_LEGGINGS))); @@ -186,196 +174,85 @@ public class CategoryArchitect { category.addEntry("teleposer", new EntryText(keyBase + "teleposer", true)); category.getEntry("teleposer").addPage(BookUtils.getAltarPage(new ItemStack(RegistrarBloodMagicItems.TELEPOSITION_FOCUS))); - category.getEntry("teleposer").addPage(new PageJsonRecipe(new ResourceLocation(BloodMagic.MODID, "teleposer"))); + category.getEntry("teleposer").addPage(BookUtils.getCraftingPage("teleposer")); category.getEntry("teleposer").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "teleposer.info.1"), 370)); - List boundBladePages = new ArrayList(); + category.addEntry("boundBlade", new EntryText(keyBase + "boundBlade", true)); + category.getEntry("boundBlade").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.BOUND_SWORD))); + category.getEntry("boundBlade").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "boundBlade.info.1"), 370)); - PageAlchemyArray boundBladePage = BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.BOUND_SWORD)); - if (boundBladePage != null) { - boundBladePages.add(boundBladePage); - } + category.addEntry("boundTool", new EntryText(keyBase + "boundTool", true)); + category.getEntry("boundTool").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.BOUND_PICKAXE))); + category.getEntry("boundTool").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.BOUND_AXE))); + category.getEntry("boundTool").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.BOUND_SHOVEL))); + category.getEntry("boundTool").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "boundTool.info.1"), 370)); + + category.addEntry("weakShard", new EntryText(keyBase + "weakShard", true)); + category.getEntry("weakShard").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "weakShard.info.1"), 370)); + + category.addEntry("masterOrb", new EntryText(keyBase + "masterOrb", true)); + category.getEntry("masterOrb").addPage(BookUtils.getAltarPage(getOrbStack(RegistrarBloodMagic.ORB_MASTER))); + category.getEntry("masterOrb").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "masterOrb.info.1"), 370)); + + category.addEntry("runeOrb", new EntryText(keyBase + "runeOrb", true)); + category.getEntry("runeOrb").addPage(BookUtils.getCraftingPage("blood_rune_orb")); + category.getEntry("runeOrb").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "runeOrb.info.1"), 370)); + + category.addEntry("augmentedCapacity", new EntryText(keyBase + "augmentedCapacity", true)); + category.getEntry("augmentedCapacity").addPage(BookUtils.getCraftingPage("blood_rune_augcapacity")); + category.getEntry("augmentedCapacity").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "augmentedCapacity.info.1"), 370)); - boundBladePages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "boundBlade" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "boundBlade"), new EntryText(boundBladePages, TextHelper.localize(keyBase + "boundBlade"), true)); + category.addEntry("charging", new EntryText(keyBase + "charging", true)); + category.getEntry("charging").addPage(BookUtils.getCraftingPage("blood_rune_charging")); + category.getEntry("charging").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "charging.info.1"), 370)); - List boundToolPages = new ArrayList(); + category.addEntry("acceleration", new EntryText(keyBase + "acceleration", true)); + category.getEntry("acceleration").addPage(BookUtils.getCraftingPage("blood_rune_acceleration")); + category.getEntry("acceleration").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "acceleration.info.1"), 370)); - PageAlchemyArray boundToolPage = BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.BOUND_PICKAXE)); - if (boundToolPage != null) { - boundToolPages.add(boundToolPage); - } + category.addEntry("suppression", new EntryText(keyBase + "suppression", true)); + category.getEntry("suppression").addPage(BookUtils.getForgePage(ComponentType.REAGENT_SUPPRESSION.getStack())); + category.getEntry("suppression").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_SUPPRESSION))); + category.getEntry("suppression").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "suppression.info.1"), 370)); - boundToolPage = BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.BOUND_AXE)); - if (boundToolPage != null) { - boundToolPages.add(boundToolPage); - } + category.addEntry("haste", new EntryText(keyBase + "haste", true)); + category.getEntry("haste").addPage(BookUtils.getForgePage(ComponentType.REAGENT_HASTE.getStack())); + category.getEntry("haste").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_HASTE))); + category.getEntry("haste").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "haste.info.1"), 370)); - boundToolPage = BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.BOUND_SHOVEL)); - if (boundToolPage != null) { - boundToolPages.add(boundToolPage); - } + category.addEntry("severance", new EntryText(keyBase + "severance", true)); + category.getEntry("severance").addPage(BookUtils.getForgePage(ComponentType.REAGENT_SEVERANCE.getStack())); + category.getEntry("severance").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_ENDER_SEVERANCE))); + category.getEntry("severance").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "severance.info.1"), 370)); - boundToolPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "boundTool" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "boundTool"), new EntryText(boundToolPages, TextHelper.localize(keyBase + "boundTool"), true)); + category.addEntry("teleposition", new EntryText(keyBase + "teleposition", true)); + category.getEntry("teleposition").addPage(BookUtils.getForgePage(ComponentType.REAGENT_TELEPOSITION.getStack())); + category.getEntry("teleposition").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_TELEPOSITION))); + category.getEntry("teleposition").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "teleposition.info.1"), 370)); - List weakShardPages = new ArrayList(); + category.addEntry("compression", new EntryText(keyBase + "compression", true)); + category.getEntry("compression").addPage(BookUtils.getForgePage(ComponentType.REAGENT_COMPRESSION.getStack())); + category.getEntry("compression").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_COMPRESSION))); + category.getEntry("compression").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "compression.info.1"), 370)); - weakShardPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "weakShard" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "weakShard"), new EntryText(weakShardPages, TextHelper.localize(keyBase + "weakShard"), true)); + category.addEntry("bridge", new EntryText(keyBase + "bridge", true)); + category.getEntry("bridge").addPage(BookUtils.getForgePage(ComponentType.REAGENT_BRIDGE.getStack())); + category.getEntry("bridge").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_PHANTOM_BRIDGE))); + category.getEntry("bridge").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "bridge.info.1"), 370)); - List masterOrbPages = new ArrayList(); - - AltarRecipe masterOrbRecipe = RecipeHelper.getAltarRecipeForOutput(OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_MASTER)); - if (magicianOrbRecipe != null) { - masterOrbPages.add(new PageAltarRecipe(masterOrbRecipe)); - } - - masterOrbPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "masterOrb" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "masterOrb"), new EntryText(masterOrbPages, TextHelper.localize(keyBase + "masterOrb"), true)); - - List orbRunePages = new ArrayList(); - - IRecipe orbRuneRecipe = RecipeHelper.getRecipeForOutput(new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE, 1, 8)); - if (orbRuneRecipe != null) { - orbRunePages.add(BookUtils.getPageForRecipe(orbRuneRecipe)); - } - - orbRunePages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "runeOrb" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "runeOrb"), new EntryText(orbRunePages, TextHelper.localize(keyBase + "runeOrb"), true)); - - List augmentedCapacityPages = new ArrayList(); - - IRecipe augmentedCapacityRecipe = RecipeHelper.getRecipeForOutput(new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE, 1, 7)); - if (orbRuneRecipe != null) { - augmentedCapacityPages.add(BookUtils.getPageForRecipe(augmentedCapacityRecipe)); - } - - augmentedCapacityPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "augmentedCapacity" + ".info"), 370)); - entries.put(new ResourceLocation(keyBase + "augmentedCapacity"), new EntryText(augmentedCapacityPages, TextHelper.localize(keyBase + "augmentedCapacity"), true)); - - List chargingPages = new ArrayList(); - - IRecipe chargingRecipe = RecipeHelper.getRecipeForOutput(new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE, 1, 10)); - if (orbRuneRecipe != null) { - chargingPages.add(BookUtils.getPageForRecipe(chargingRecipe)); - } - - chargingPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "charging" + ".info"), 370)); - entries.put(new ResourceLocation(keyBase + "charging"), new EntryText(chargingPages, TextHelper.localize(keyBase + "charging"), true)); - - List accelerationPages = new ArrayList(); - - IRecipe accelerationRecipe = RecipeHelper.getRecipeForOutput(new ItemStack(RegistrarBloodMagicBlocks.BLOOD_RUNE, 1, 9)); - if (orbRuneRecipe != null) { - accelerationPages.add(BookUtils.getPageForRecipe(accelerationRecipe)); - } - - accelerationPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "acceleration" + ".info"), 370)); - entries.put(new ResourceLocation(keyBase + "acceleration"), new EntryText(accelerationPages, TextHelper.localize(keyBase + "acceleration"), true)); - - List suppressionPages = new ArrayList(); - - TartaricForgeRecipe suppressionRecipe = RecipeHelper.getForgeRecipeForOutput(ComponentType.REAGENT_SUPPRESSION.getStack()); - if (suppressionRecipe != null) { - suppressionPages.add(new PageTartaricForgeRecipe(suppressionRecipe)); - } - - PageAlchemyArray suppressionRecipePage = BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_SUPPRESSION)); - if (suppressionRecipePage != null) { - suppressionPages.add(suppressionRecipePage); - } - - suppressionPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "suppression" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "suppression"), new EntryText(suppressionPages, TextHelper.localize(keyBase + "suppression"), true)); - - List hastePages = new ArrayList(); - - TartaricForgeRecipe hasteRecipe = RecipeHelper.getForgeRecipeForOutput(ComponentType.REAGENT_HASTE.getStack()); - if (hasteRecipe != null) { - hastePages.add(new PageTartaricForgeRecipe(hasteRecipe)); - } - - PageAlchemyArray hasteRecipePage = BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_HASTE)); - if (hasteRecipePage != null) { - hastePages.add(hasteRecipePage); - } - - hastePages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "haste" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "haste"), new EntryText(hastePages, TextHelper.localize(keyBase + "haste"), true)); - - List severancePages = new ArrayList(); - - TartaricForgeRecipe severanceRecipe = RecipeHelper.getForgeRecipeForOutput(ComponentType.REAGENT_SEVERANCE.getStack()); - if (severanceRecipe != null) { - severancePages.add(new PageTartaricForgeRecipe(severanceRecipe)); - } - - PageAlchemyArray severanceRecipePage = BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_ENDER_SEVERANCE)); - if (severanceRecipePage != null) { - severancePages.add(severanceRecipePage); - } - - severancePages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "severance" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "severance"), new EntryText(severancePages, TextHelper.localize(keyBase + "severance"), true)); - - List telepositionPages = new ArrayList(); - - TartaricForgeRecipe telepositionRecipe = RecipeHelper.getForgeRecipeForOutput(ComponentType.REAGENT_TELEPOSITION.getStack()); - if (telepositionRecipe != null) { - telepositionPages.add(new PageTartaricForgeRecipe(telepositionRecipe)); - } - - PageAlchemyArray telepositionRecipePage = BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_TELEPOSITION)); - if (telepositionRecipePage != null) { - telepositionPages.add(telepositionRecipePage); - } - - telepositionPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "teleposition" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "teleposition"), new EntryText(telepositionPages, TextHelper.localize(keyBase + "teleposition"), true)); - - List compressionPages = new ArrayList(); - - TartaricForgeRecipe compressionRecipe = RecipeHelper.getForgeRecipeForOutput(ComponentType.REAGENT_COMPRESSION.getStack()); - if (compressionRecipe != null) { - compressionPages.add(new PageTartaricForgeRecipe(compressionRecipe)); - } - - PageAlchemyArray compressionRecipePage = BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_COMPRESSION)); - if (compressionRecipePage != null) { - compressionPages.add(compressionRecipePage); - } - - compressionPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "compression" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "compression"), new EntryText(compressionPages, TextHelper.localize(keyBase + "compression"), true)); - - List bridgePages = new ArrayList(); - - TartaricForgeRecipe bridgeRecipe = RecipeHelper.getForgeRecipeForOutput(ComponentType.REAGENT_BRIDGE.getStack()); - if (bridgeRecipe != null) { - bridgePages.add(new PageTartaricForgeRecipe(bridgeRecipe)); - } - - PageAlchemyArray bridgeRecipePage = BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_PHANTOM_BRIDGE)); - if (bridgeRecipePage != null) { - bridgePages.add(bridgeRecipePage); - } - - bridgePages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "bridge" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "bridge"), new EntryText(bridgePages, TextHelper.localize(keyBase + "bridge"), true)); - - List mimicPages = new ArrayList(); - - IRecipe mimicRecipe = RecipeHelper.getRecipeForOutput(new ItemStack(RegistrarBloodMagicBlocks.MIMIC, 1, 1)); - if (mimicRecipe != null) { - mimicPages.add(BookUtils.getPageForRecipe(mimicRecipe)); - } - - mimicPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "mimic" + ".info.1"), 370)); - entries.put(new ResourceLocation(keyBase + "mimic"), new EntryText(mimicPages, TextHelper.localize(keyBase + "mimic"), true)); + category.addEntry("mimic", new EntryText(keyBase + "mimic", true)); + category.getEntry("mimic").addPage(BookUtils.getCraftingPage("mimic_solidopaque")); + category.getEntry("mimic").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "mimic.info.1"), 370)); category.entries.values().forEach(e -> e.pageList.stream().filter(p -> p instanceof PageText).forEach(p -> ((PageText) p).setUnicodeFlag(true))); - book.addCategory(category); } + + private static ItemStack getOrbStack(BloodOrb orb) { + ItemStack ret = new ItemStack(RegistrarBloodMagicItems.BLOOD_ORB); + NBTTagCompound tag = new NBTTagCompound(); + tag.setString("orb", BloodMagic.MODID + ":" + orb.getName()); + ret.setTagCompound(tag); + return ret; + } } diff --git a/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryDemon.java b/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryDemon.java index 3c5c338d..debc1cb2 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryDemon.java +++ b/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryDemon.java @@ -1,191 +1,95 @@ package WayofTime.bloodmagic.compat.guideapi.book; import WayofTime.bloodmagic.BloodMagic; -import WayofTime.bloodmagic.api.recipe.TartaricForgeRecipe; import WayofTime.bloodmagic.compat.guideapi.BookUtils; import WayofTime.bloodmagic.compat.guideapi.entry.EntryText; -import WayofTime.bloodmagic.compat.guideapi.page.PageTartaricForgeRecipe; import WayofTime.bloodmagic.core.RegistrarBloodMagicBlocks; import WayofTime.bloodmagic.core.RegistrarBloodMagicItems; -import WayofTime.bloodmagic.util.helper.RecipeHelper; -import WayofTime.bloodmagic.util.helper.TextHelper; -import amerifrance.guideapi.api.IPage; -import amerifrance.guideapi.api.impl.abstraction.EntryAbstract; +import amerifrance.guideapi.api.impl.Book; import amerifrance.guideapi.api.util.PageHelper; +import amerifrance.guideapi.category.CategoryItemStack; import amerifrance.guideapi.page.PageText; +import net.minecraft.client.resources.I18n; import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.util.ResourceLocation; - -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; public class CategoryDemon { - //TODO: Add Forge recipe pages - public static Map buildCategory() { - Map entries = new LinkedHashMap(); - String keyBase = "guide." + BloodMagic.MODID + ".entry.demon."; - List introPages = new ArrayList(); - introPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "intro" + ".info"), 370)); -// introPages.add(new PageImage(new ResourceLocation("bloodmagicguide", "textures/guide/" + ritual.getName() + ".png"))); - entries.put(new ResourceLocation(keyBase + "intro"), new EntryText(introPages, TextHelper.localize(keyBase + "intro"), true)); + public static void buildCategory(Book book) { + final String keyBase = "guide." + BloodMagic.MODID + ".entry.demon."; - List snarePages = new ArrayList(); - snarePages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "snare" + ".info.1"), 370)); + CategoryItemStack category = new CategoryItemStack(keyBase + "demon", new ItemStack(RegistrarBloodMagicItems.BLOOD_SHARD)); + category.withKeyBase(BloodMagic.MODID); - IRecipe snareRecipe = RecipeHelper.getRecipeForOutput(new ItemStack(RegistrarBloodMagicItems.SOUL_SNARE)); - if (snareRecipe != null) { - snarePages.add(BookUtils.getPageForRecipe(snareRecipe)); - } + category.addEntry("intro", new EntryText(keyBase + "intro", true)); + category.getEntry("intro").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "intro.info"), 370)); - snarePages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "snare" + ".info.2"), 370)); - entries.put(new ResourceLocation(keyBase + "snare"), new EntryText(snarePages, TextHelper.localize(keyBase + "snare"), true)); + category.addEntry("snare", new EntryText(keyBase + "snare", true)); + category.getEntry("snare").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "snare.info.1"), 370)); + category.getEntry("snare").addPage(BookUtils.getCraftingPage("soul_snare")); + category.getEntry("snare").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "snare.info.2"), 370)); - List forgePages = new ArrayList(); - forgePages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "forge" + ".info.1"), 370)); + category.addEntry("forge", new EntryText(keyBase + "forge", true)); + category.getEntry("forge").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "forge.info.1"), 370)); + category.getEntry("forge").addPage(BookUtils.getCraftingPage("soul_forge")); + category.getEntry("forge").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "forge.info.2"), 370)); - IRecipe forgeRecipe = RecipeHelper.getRecipeForOutput(new ItemStack(RegistrarBloodMagicBlocks.SOUL_FORGE)); - if (forgeRecipe != null) { - forgePages.add(BookUtils.getPageForRecipe(forgeRecipe)); - } + category.addEntry("petty", new EntryText(keyBase + "petty", true)); + category.getEntry("petty").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "petty.info.1"), 370)); + category.getEntry("petty").addPage(BookUtils.getForgePage(new ItemStack(RegistrarBloodMagicItems.SOUL_GEM))); + category.getEntry("petty").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "petty.info.2"), 370)); - forgePages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "forge" + ".info.2"), 370)); - entries.put(new ResourceLocation(keyBase + "forge"), new EntryText(forgePages, TextHelper.localize(keyBase + "forge"), true)); + category.addEntry("sword", new EntryText(keyBase + "sword", true)); + category.getEntry("sword").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "sword.info.1"), 370)); + category.getEntry("sword").addPage(BookUtils.getForgePage(new ItemStack(RegistrarBloodMagicItems.SENTIENT_SWORD))); + category.getEntry("sword").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "sword.info.2"), 370)); - List pettyPages = new ArrayList(); - pettyPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "petty" + ".info.1"), 370)); - TartaricForgeRecipe pettyRecipe = RecipeHelper.getForgeRecipeForOutput(new ItemStack(RegistrarBloodMagicItems.SOUL_GEM)); - if (pettyRecipe != null) { - pettyPages.add(new PageTartaricForgeRecipe(pettyRecipe)); - } - pettyPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "petty" + ".info.2"), 370)); - entries.put(new ResourceLocation(keyBase + "petty"), new EntryText(pettyPages, TextHelper.localize(keyBase + "petty"), true)); + category.addEntry("lesser", new EntryText(keyBase + "lesser", true)); + category.getEntry("lesser").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "lesser.info.1"), 370)); + category.getEntry("lesser").addPage(BookUtils.getForgePage(new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 1))); + category.getEntry("lesser").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "lesser.info.2"), 370)); - List swordPages = new ArrayList(); - swordPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "sword" + ".info.1"), 370)); - TartaricForgeRecipe swordRecipe = RecipeHelper.getForgeRecipeForOutput(new ItemStack(RegistrarBloodMagicItems.SENTIENT_SWORD)); - if (swordRecipe != null) { - swordPages.add(new PageTartaricForgeRecipe(swordRecipe)); - } - swordPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "sword" + ".info.2"), 370)); - entries.put(new ResourceLocation(keyBase + "sword"), new EntryText(swordPages, TextHelper.localize(keyBase + "sword"), true)); + category.addEntry("reactions", new EntryText(keyBase + "reactions", true)); + category.getEntry("reactions").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "reactions.info"), 370)); - List lesserPages = new ArrayList(); - lesserPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "lesser" + ".info.1"), 370)); - TartaricForgeRecipe lesserRecipe = RecipeHelper.getForgeRecipeForOutput(new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 1)); - if (lesserRecipe != null) { - lesserPages.add(new PageTartaricForgeRecipe(lesserRecipe)); - } - lesserPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "lesser" + ".info.2"), 370)); - entries.put(new ResourceLocation(keyBase + "lesser"), new EntryText(lesserPages, TextHelper.localize(keyBase + "lesser"), true)); + category.addEntry("sentientGem", new EntryText(keyBase + "sentientGem", true)); + category.getEntry("sentientGem").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "sentientGem.info.1"), 370)); + category.getEntry("sentientGem").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "sentientGem.info.2"), 370)); - List reactionsPages = new ArrayList(); - reactionsPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "reactions" + ".info"), 370)); - entries.put(new ResourceLocation(keyBase + "reactions"), new EntryText(reactionsPages, TextHelper.localize(keyBase + "reactions"), true)); + category.addEntry("routing", new EntryText(keyBase + "routing", true)); + category.getEntry("routing").addPage(BookUtils.getForgePage(new ItemStack(RegistrarBloodMagicBlocks.ITEM_ROUTING_NODE))); + category.getEntry("routing").addPage(BookUtils.getForgePage(new ItemStack(RegistrarBloodMagicBlocks.INPUT_ROUTING_NODE))); + category.getEntry("routing").addPage(BookUtils.getForgePage(new ItemStack(RegistrarBloodMagicBlocks.OUTPUT_ROUTING_NODE))); + category.getEntry("routing").addPage(BookUtils.getForgePage(new ItemStack(RegistrarBloodMagicBlocks.MASTER_ROUTING_NODE))); + category.getEntry("routing").addPage(BookUtils.getForgePage(new ItemStack(RegistrarBloodMagicItems.NODE_ROUTER))); + category.getEntry("routing").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "routing.info"), 370)); - List sentientGemPages = new ArrayList(); - sentientGemPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "sentientGem" + ".info.1"), 370)); - sentientGemPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "sentientGem" + ".info.2"), 370)); - entries.put(new ResourceLocation(keyBase + "sentientGem"), new EntryText(sentientGemPages, TextHelper.localize(keyBase + "sentientGem"), true)); + category.addEntry("aura", new EntryText(keyBase + "aura", true)); + category.getEntry("aura").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "aura.info"), 370)); - List routingPages = new ArrayList(); - TartaricForgeRecipe nodeRecipe = RecipeHelper.getForgeRecipeForOutput(new ItemStack(RegistrarBloodMagicBlocks.ITEM_ROUTING_NODE)); - if (nodeRecipe != null) { - routingPages.add(new PageTartaricForgeRecipe(nodeRecipe)); - } - TartaricForgeRecipe inputNodeRecipe = RecipeHelper.getForgeRecipeForOutput(new ItemStack(RegistrarBloodMagicBlocks.INPUT_ROUTING_NODE)); - if (inputNodeRecipe != null) { - routingPages.add(new PageTartaricForgeRecipe(inputNodeRecipe)); - } - TartaricForgeRecipe outputNodeRecipe = RecipeHelper.getForgeRecipeForOutput(new ItemStack(RegistrarBloodMagicBlocks.OUTPUT_ROUTING_NODE)); - if (outputNodeRecipe != null) { - routingPages.add(new PageTartaricForgeRecipe(outputNodeRecipe)); - } - TartaricForgeRecipe masterNodeRecipe = RecipeHelper.getForgeRecipeForOutput(new ItemStack(RegistrarBloodMagicBlocks.MASTER_ROUTING_NODE)); - if (masterNodeRecipe != null) { - routingPages.add(new PageTartaricForgeRecipe(masterNodeRecipe)); - } + category.addEntry("types", new EntryText(keyBase + "types", true)); + category.getEntry("types").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "types.info"), 370)); - TartaricForgeRecipe nodeRouterRecipe = RecipeHelper.getForgeRecipeForOutput(new ItemStack(RegistrarBloodMagicItems.NODE_ROUTER)); - if (nodeRouterRecipe != null) { - routingPages.add(new PageTartaricForgeRecipe(nodeRouterRecipe)); - } + category.addEntry("crucible", new EntryText(keyBase + "crucible", true)); + category.getEntry("crucible").addPage(BookUtils.getForgePage(new ItemStack(RegistrarBloodMagicBlocks.DEMON_CRUCIBLE))); + category.getEntry("crucible").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "crucible.info"), 370)); - routingPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "routing" + ".info"), 370)); - entries.put(new ResourceLocation(keyBase + "routing"), new EntryText(routingPages, TextHelper.localize(keyBase + "routing"), true)); + category.addEntry("crystallizer", new EntryText(keyBase + "crystallizer", true)); + category.getEntry("crystallizer").addPage(BookUtils.getForgePage(new ItemStack(RegistrarBloodMagicBlocks.DEMON_CRYSTALLIZER))); + category.getEntry("crystallizer").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "crystallizer.info"), 370)); - List auraPages = new ArrayList(); + category.addEntry("cluster", new EntryText(keyBase + "cluster", true)); + category.getEntry("cluster").addPage(BookUtils.getForgePage(new ItemStack(RegistrarBloodMagicBlocks.DEMON_CRYSTAL))); + category.getEntry("cluster").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "cluster.info"), 370)); - auraPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "aura" + ".info"), 370)); - entries.put(new ResourceLocation(keyBase + "aura"), new EntryText(auraPages, TextHelper.localize(keyBase + "aura"), true)); + category.addEntry("pylon", new EntryText(keyBase + "pylon", true)); + category.getEntry("pylon").addPage(BookUtils.getForgePage(new ItemStack(RegistrarBloodMagicBlocks.DEMON_PYLON))); + category.getEntry("pylon").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "pylon.info"), 370)); - List typesPages = new ArrayList(); + category.addEntry("gauge", new EntryText(keyBase + "gauge", true)); + category.getEntry("gauge").addPage(BookUtils.getForgePage(new ItemStack(RegistrarBloodMagicItems.DEMON_WILL_GAUGE))); + category.getEntry("gauge").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "gauge.info"), 370)); - typesPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "types" + ".info"), 370)); - entries.put(new ResourceLocation(keyBase + "types"), new EntryText(typesPages, TextHelper.localize(keyBase + "types"), true)); - - List cruciblePages = new ArrayList(); - - TartaricForgeRecipe crucibleRecipe = RecipeHelper.getForgeRecipeForOutput(new ItemStack(RegistrarBloodMagicBlocks.DEMON_CRUCIBLE)); - if (crucibleRecipe != null) { - cruciblePages.add(new PageTartaricForgeRecipe(crucibleRecipe)); - } - - cruciblePages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "crucible" + ".info"), 370)); - entries.put(new ResourceLocation(keyBase + "crucible"), new EntryText(cruciblePages, TextHelper.localize(keyBase + "crucible"), true)); - - List crystallizerPages = new ArrayList(); - - TartaricForgeRecipe crystallizerRecipe = RecipeHelper.getForgeRecipeForOutput(new ItemStack(RegistrarBloodMagicBlocks.DEMON_CRYSTALLIZER)); - if (crystallizerRecipe != null) { - crystallizerPages.add(new PageTartaricForgeRecipe(crystallizerRecipe)); - } - - crystallizerPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "crystallizer" + ".info"), 370)); - entries.put(new ResourceLocation(keyBase + "crystallizer"), new EntryText(crystallizerPages, TextHelper.localize(keyBase + "crystallizer"), true)); - - List clusterPages = new ArrayList(); - - TartaricForgeRecipe clusterRecipe = RecipeHelper.getForgeRecipeForOutput(new ItemStack(RegistrarBloodMagicBlocks.DEMON_CRYSTAL)); - if (clusterRecipe != null) { - clusterPages.add(new PageTartaricForgeRecipe(clusterRecipe)); - } - - clusterPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "cluster" + ".info"), 370)); - entries.put(new ResourceLocation(keyBase + "cluster"), new EntryText(clusterPages, TextHelper.localize(keyBase + "cluster"), true)); - - List pylonPages = new ArrayList(); - - TartaricForgeRecipe pylonRecipe = RecipeHelper.getForgeRecipeForOutput(new ItemStack(RegistrarBloodMagicBlocks.DEMON_PYLON)); - if (pylonRecipe != null) { - pylonPages.add(new PageTartaricForgeRecipe(pylonRecipe)); - } - - pylonPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "pylon" + ".info"), 370)); - entries.put(new ResourceLocation(keyBase + "pylon"), new EntryText(pylonPages, TextHelper.localize(keyBase + "pylon"), true)); - - List gaugePages = new ArrayList(); - - TartaricForgeRecipe gaugeRecipe = RecipeHelper.getForgeRecipeForOutput(new ItemStack(RegistrarBloodMagicItems.DEMON_WILL_GAUGE)); - if (gaugeRecipe != null) { - gaugePages.add(new PageTartaricForgeRecipe(gaugeRecipe)); - } - - gaugePages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "gauge" + ".info"), 370)); - entries.put(new ResourceLocation(keyBase + "gauge"), new EntryText(gaugePages, TextHelper.localize(keyBase + "gauge"), true)); - - for (Entry entry : entries.entrySet()) { - for (IPage page : entry.getValue().pageList) { - if (page instanceof PageText) { - ((PageText) page).setUnicodeFlag(true); - } - } - } - - return entries; + category.entries.values().forEach(e -> e.pageList.stream().filter(p -> p instanceof PageText).forEach(p -> ((PageText) p).setUnicodeFlag(true))); + book.addCategory(category); } } diff --git a/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryRitual.java b/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryRitual.java index a294a615..cb3f4e70 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryRitual.java +++ b/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryRitual.java @@ -1,127 +1,113 @@ package WayofTime.bloodmagic.compat.guideapi.book; import WayofTime.bloodmagic.BloodMagic; -import WayofTime.bloodmagic.api.registry.AltarRecipeRegistry.AltarRecipe; import WayofTime.bloodmagic.api.ritual.EnumRuneType; import WayofTime.bloodmagic.compat.guideapi.BookUtils; import WayofTime.bloodmagic.compat.guideapi.entry.EntryText; -import WayofTime.bloodmagic.compat.guideapi.page.PageAltarRecipe; import WayofTime.bloodmagic.core.RegistrarBloodMagicBlocks; import WayofTime.bloodmagic.core.RegistrarBloodMagicItems; -import WayofTime.bloodmagic.util.helper.RecipeHelper; -import WayofTime.bloodmagic.util.helper.TextHelper; -import amerifrance.guideapi.api.IPage; -import amerifrance.guideapi.api.impl.abstraction.EntryAbstract; +import amerifrance.guideapi.api.impl.Book; import amerifrance.guideapi.api.util.PageHelper; +import amerifrance.guideapi.category.CategoryItemStack; import amerifrance.guideapi.page.PageText; +import net.minecraft.client.resources.I18n; import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.util.ResourceLocation; - -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; public class CategoryRitual { - static String keyBase = "guide." + BloodMagic.MODID + ".entry.ritual."; + static final String keyBase = "guide." + BloodMagic.MODID + ".entry.ritual."; - public static Map buildCategory() { - Map entries = new LinkedHashMap(); + public static void buildCategory(Book book) { + CategoryItemStack category = new CategoryItemStack(keyBase + "ritual", new ItemStack(RegistrarBloodMagicBlocks.RITUAL_CONTROLLER)); + category.withKeyBase(BloodMagic.MODID); - addRitualPagesToEntries("intro", entries); - addRitualPagesToEntries("basics", entries); + category.addEntry("intro", new EntryText(keyBase + "intro", true)); + category.getEntry("intro").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "intro.info"))); - List ritualStonePages = new ArrayList(); + category.addEntry("basics", new EntryText(keyBase + "basics", true)); + category.getEntry("basics").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "basics.info"))); - IRecipe ritualStoneRecipe = RecipeHelper.getRecipeForOutput(new ItemStack(RegistrarBloodMagicBlocks.RITUAL_STONE)); - if (ritualStoneRecipe != null) { - ritualStonePages.add(BookUtils.getPageForRecipe(ritualStoneRecipe)); - } + category.addEntry("ritualStone", new EntryText(keyBase + "ritualStone", true)); + category.getEntry("ritualStone").addPage(BookUtils.getCraftingPage("ritual_stone_blank")); + category.getEntry("ritualStone").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "ritualStone.info.1"), 370)); + for (EnumRuneType type : EnumRuneType.values()) + category.getEntry("ritualStone").addPage(BookUtils.getAltarPage(type.getScribeStack())); + category.getEntry("ritualStone").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "ritualStone.info.2"), 370)); - ritualStonePages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "ritualStone" + ".info.1"), 370)); + category.addEntry("masterRitualStone", new EntryText(keyBase + "masterRitualStone", true)); + category.getEntry("masterRitualStone").addPage(BookUtils.getCraftingPage("ritual_controller_master")); + category.getEntry("masterRitualStone").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "masterRitualStone.info"), 370)); - for (int i = 1; i < 5; i++) { - EnumRuneType type = EnumRuneType.values()[i]; - AltarRecipe scribeRecipe = RecipeHelper.getAltarRecipeForOutput(type.getScribeStack()); - if (scribeRecipe != null) { - ritualStonePages.add(new PageAltarRecipe(scribeRecipe)); - } - } + category.addEntry("activationCrystal", new EntryText(keyBase + "activationCrystal", true)); + category.getEntry("activationCrystal").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "activationCrystal.info.1"), 370)); + category.getEntry("activationCrystal").addPage(BookUtils.getAltarPage(new ItemStack(RegistrarBloodMagicItems.ACTIVATION_CRYSTAL))); + category.getEntry("activationCrystal").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "activationCrystal.info.2"), 370)); - ritualStonePages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "ritualStone" + ".info.2"), 370)); - entries.put(new ResourceLocation(keyBase + "ritualStone"), new EntryText(ritualStonePages, TextHelper.localize(keyBase + "ritualStone"), true)); + category.addEntry("diviner", new EntryText(keyBase + "diviner", true)); + category.getEntry("diviner").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "diviner.info.1"), 370)); + category.getEntry("diviner").addPage(BookUtils.getCraftingPage("ritual_diviner_0")); + category.getEntry("diviner").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "diviner.info.2"), 370)); - List masterRitualStonePages = new ArrayList(); + category.addEntry("fullSpring", new EntryText(keyBase + "fullSpring", true)); + category.getEntry("fullSpring").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "fullSpring.info"))); - IRecipe masterRitualStoneRecipe = RecipeHelper.getRecipeForOutput(new ItemStack(RegistrarBloodMagicBlocks.RITUAL_CONTROLLER, 1, 0)); - if (masterRitualStoneRecipe != null) { - masterRitualStonePages.add(BookUtils.getPageForRecipe(masterRitualStoneRecipe)); - } + category.addEntry("lava", new EntryText(keyBase + "lava", true)); + category.getEntry("lava").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "lava.info"))); - masterRitualStonePages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "masterRitualStone" + ".info"), 370)); - entries.put(new ResourceLocation(keyBase + "masterRitualStone"), new EntryText(masterRitualStonePages, TextHelper.localize(keyBase + "masterRitualStone"), true)); + category.addEntry("greenGrove", new EntryText(keyBase + "greenGrove", true)); + category.getEntry("greenGrove").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "greenGrove.info"))); - List activationCrystalPages = new ArrayList(); + category.addEntry("magnetism", new EntryText(keyBase + "magnetism", true)); + category.getEntry("magnetism").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "magnetism.info"))); - activationCrystalPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "activationCrystal" + ".info.1"), 370)); + category.addEntry("crusher", new EntryText(keyBase + "crusher", true)); + category.getEntry("crusher").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "crusher.info"))); - AltarRecipe crystalRecipe = RecipeHelper.getAltarRecipeForOutput(new ItemStack(RegistrarBloodMagicItems.ACTIVATION_CRYSTAL)); - if (crystalRecipe != null) { - activationCrystalPages.add(new PageAltarRecipe(crystalRecipe)); - } + category.addEntry("highJump", new EntryText(keyBase + "highJump", true)); + category.getEntry("highJump").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "highJump.info"))); - activationCrystalPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "activationCrystal" + ".info.2"), 370)); - entries.put(new ResourceLocation(keyBase + "activationCrystal"), new EntryText(activationCrystalPages, TextHelper.localize(keyBase + "activationCrystal"), true)); + category.addEntry("speed", new EntryText(keyBase + "speed", true)); + category.getEntry("speed").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "speed.info"))); - List divinerPages = new ArrayList(); + category.addEntry("wellOfSuffering", new EntryText(keyBase + "wellOfSuffering", true)); + category.getEntry("wellOfSuffering").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "wellOfSuffering.info"))); - divinerPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "diviner" + ".info.1"), 370)); + category.addEntry("featheredKnife", new EntryText(keyBase + "featheredKnife", true)); + category.getEntry("featheredKnife").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "featheredKnife.info"))); - IRecipe divinerRecipe = RecipeHelper.getRecipeForOutput(new ItemStack(RegistrarBloodMagicItems.RITUAL_DIVINER)); - if (divinerRecipe != null) { - divinerPages.add(BookUtils.getPageForRecipe(divinerRecipe)); - } + category.addEntry("regen", new EntryText(keyBase + "regen", true)); + category.getEntry("regen").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "regen.info"))); - divinerPages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + "diviner" + ".info.2"), 370)); - entries.put(new ResourceLocation(keyBase + "diviner"), new EntryText(divinerPages, TextHelper.localize(keyBase + "diviner"), true)); + category.addEntry("harvest", new EntryText(keyBase + "harvest", true)); + category.getEntry("harvest").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "harvest.info"))); - addRitualPagesToEntries("fullSpring", entries); - addRitualPagesToEntries("lava", entries); - addRitualPagesToEntries("greenGrove", entries); - addRitualPagesToEntries("magnetism", entries); - addRitualPagesToEntries("crusher", entries); - addRitualPagesToEntries("highJump", entries); - addRitualPagesToEntries("speed", entries); - addRitualPagesToEntries("wellOfSuffering", entries); - addRitualPagesToEntries("featheredKnife", entries); - addRitualPagesToEntries("regen", entries); - addRitualPagesToEntries("harvest", entries); - addRitualPagesToEntries("interdiction", entries); - addRitualPagesToEntries("containment", entries); - addRitualPagesToEntries("suppression", entries); - addRitualPagesToEntries("expulsion", entries); - addRitualPagesToEntries("zephyr", entries); - addRitualPagesToEntries("laying", entries); - addRitualPagesToEntries("timberman", entries); - addRitualPagesToEntries("meteor", entries); - addRitualPagesToEntries("downgrade", entries); + category.addEntry("interdiction", new EntryText(keyBase + "interdiction", true)); + category.getEntry("interdiction").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "interdiction.info"))); - for (Entry entry : entries.entrySet()) { - for (IPage page : entry.getValue().pageList) { - if (page instanceof PageText) { - ((PageText) page).setUnicodeFlag(true); - } - } - } + category.addEntry("containment", new EntryText(keyBase + "containment", true)); + category.getEntry("containment").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "containment.info"))); - return entries; - } + category.addEntry("suppression", new EntryText(keyBase + "suppression", true)); + category.getEntry("suppression").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "suppression.info"))); - public static void addRitualPagesToEntries(String name, Map entries) { - List pages = new ArrayList(); - pages.addAll(PageHelper.pagesForLongText(TextHelper.localize(keyBase + name + ".info"), 370)); - entries.put(new ResourceLocation(keyBase + name), new EntryText(pages, TextHelper.localize(keyBase + name), true)); + category.addEntry("expulsion", new EntryText(keyBase + "expulsion", true)); + category.getEntry("expulsion").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "expulsion.info"))); + + category.addEntry("zephyr", new EntryText(keyBase + "zephyr", true)); + category.getEntry("zephyr").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "zephyr.info"))); + + category.addEntry("laying", new EntryText(keyBase + "laying", true)); + category.getEntry("laying").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "laying.info"))); + + category.addEntry("timberman", new EntryText(keyBase + "timberman", true)); + category.getEntry("timberman").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "timberman.info"))); + + category.addEntry("meteor", new EntryText(keyBase + "meteor", true)); + category.getEntry("meteor").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "meteor.info"))); + + category.addEntry("downgrade", new EntryText(keyBase + "downgrade", true)); + category.getEntry("downgrade").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "downgrade.info"))); + + category.entries.values().forEach(e -> e.pageList.stream().filter(p -> p instanceof PageText).forEach(p -> ((PageText) p).setUnicodeFlag(true))); + book.addCategory(category); } } diff --git a/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategorySpell.java b/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategorySpell.java deleted file mode 100644 index 765791a1..00000000 --- a/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategorySpell.java +++ /dev/null @@ -1,17 +0,0 @@ -package WayofTime.bloodmagic.compat.guideapi.book; - -import WayofTime.bloodmagic.api.Constants; -import amerifrance.guideapi.api.impl.abstraction.EntryAbstract; -import net.minecraft.util.ResourceLocation; - -import java.util.LinkedHashMap; -import java.util.Map; - -public class CategorySpell { - public static Map buildCategory() { - Map entries = new LinkedHashMap(); - String keyBase = Constants.Mod.DOMAIN + "spell_"; - - return entries; - } -} diff --git a/src/main/java/WayofTime/bloodmagic/proxy/CommonProxy.java b/src/main/java/WayofTime/bloodmagic/proxy/CommonProxy.java index 636310a4..ec248e4b 100644 --- a/src/main/java/WayofTime/bloodmagic/proxy/CommonProxy.java +++ b/src/main/java/WayofTime/bloodmagic/proxy/CommonProxy.java @@ -3,7 +3,6 @@ package WayofTime.bloodmagic.proxy; import WayofTime.bloodmagic.api.ritual.CapabilityRuneType; import WayofTime.bloodmagic.api.ritual.IRitualStone; import WayofTime.bloodmagic.api.teleport.TeleportQueue; -import WayofTime.bloodmagic.fuel.FuelHandler; import com.google.common.collect.ImmutableMap; import net.minecraft.block.Block; import net.minecraft.item.Item; @@ -13,12 +12,10 @@ import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.animation.ITimeValue; import net.minecraftforge.common.capabilities.CapabilityManager; import net.minecraftforge.common.model.animation.IAnimationStateMachine; -import net.minecraftforge.fml.common.registry.GameRegistry; public class CommonProxy { public void preInit() { MinecraftForge.EVENT_BUS.register(TeleportQueue.getInstance()); - GameRegistry.registerFuelHandler(new FuelHandler()); registerRenderers(); } diff --git a/src/main/java/WayofTime/bloodmagic/util/helper/RecipeHelper.java b/src/main/java/WayofTime/bloodmagic/util/helper/RecipeHelper.java deleted file mode 100644 index 9e4fd5b7..00000000 --- a/src/main/java/WayofTime/bloodmagic/util/helper/RecipeHelper.java +++ /dev/null @@ -1,15 +0,0 @@ -package WayofTime.bloodmagic.util.helper; - -import WayofTime.bloodmagic.api_impl.BloodMagicAPI; -import WayofTime.bloodmagic.api_impl.recipe.RecipeBloodAltar; -import WayofTime.bloodmagic.api_impl.recipe.RecipeTartaricForge; -import WayofTime.bloodmagic.compat.guideapi.page.PageAltarRecipe; -import WayofTime.bloodmagic.compat.guideapi.page.PageTartaricForgeRecipe; -import net.minecraft.item.ItemStack; - -import javax.annotation.Nullable; - -public class RecipeHelper { - - -} From 4c44c871e70723042147e289e6ba779dfc067a8f Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Thu, 7 Sep 2017 22:31:59 -0700 Subject: [PATCH 15/27] No need for these to be maps --- .../api_impl/BloodMagicRecipeRegistrar.java | 67 ++++++++++--------- .../bloodmagic/compat/guideapi/BookUtils.java | 4 +- .../compat/jei/BloodMagicJEIPlugin.java | 6 +- 3 files changed, 41 insertions(+), 36 deletions(-) diff --git a/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicRecipeRegistrar.java b/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicRecipeRegistrar.java index 6e251afe..ca586faa 100644 --- a/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicRecipeRegistrar.java +++ b/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicRecipeRegistrar.java @@ -7,9 +7,7 @@ import WayofTime.bloodmagic.api_impl.recipe.RecipeTartaricForge; import WayofTime.bloodmagic.apiv2.IBloodMagicRecipeRegistrar; import WayofTime.bloodmagic.core.recipe.IngredientBloodOrb; import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; +import com.google.common.collect.*; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.Ingredient; import net.minecraft.util.NonNullList; @@ -20,17 +18,18 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.List; import java.util.Map; +import java.util.Set; public class BloodMagicRecipeRegistrar implements IBloodMagicRecipeRegistrar { - private final Map altarRecipes; - private final Map, RecipeAlchemyTable> alchemyRecipes; - private final Map, RecipeTartaricForge> tartaricForgeRecipes; + private final Set altarRecipes; + private final Set alchemyRecipes; + private final Set tartaricForgeRecipes; public BloodMagicRecipeRegistrar() { - this.altarRecipes = Maps.newHashMap(); - this.alchemyRecipes = Maps.newHashMap(); - this.tartaricForgeRecipes = Maps.newHashMap(); + this.altarRecipes = Sets.newHashSet(); + this.alchemyRecipes = Sets.newHashSet(); + this.tartaricForgeRecipes = Sets.newHashSet(); } @Override @@ -42,7 +41,7 @@ public class BloodMagicRecipeRegistrar implements IBloodMagicRecipeRegistrar { Preconditions.checkArgument(consumeRate >= 0, "consumeRate cannot be negative."); Preconditions.checkArgument(drainRate >= 0, "drainRate cannot be negative."); - altarRecipes.put(input, new RecipeBloodAltar(input, output, minimumTier, syphon, consumeRate, drainRate)); + altarRecipes.add(new RecipeBloodAltar(input, output, minimumTier, syphon, consumeRate, drainRate)); } @Override @@ -54,7 +53,7 @@ public class BloodMagicRecipeRegistrar implements IBloodMagicRecipeRegistrar { Preconditions.checkNotNull(input, "input cannot be null."); NonNullList inputs = NonNullList.from(Ingredient.EMPTY, input); - alchemyRecipes.put(inputs, new RecipeAlchemyTable(inputs, output, syphon, ticks, minimumTier)); + alchemyRecipes.add(new RecipeAlchemyTable(inputs, output, syphon, ticks, minimumTier)); } @Override @@ -65,7 +64,7 @@ public class BloodMagicRecipeRegistrar implements IBloodMagicRecipeRegistrar { Preconditions.checkNotNull(input, "input cannot be null."); NonNullList inputs = NonNullList.from(Ingredient.EMPTY, input); - tartaricForgeRecipes.put(inputs, new RecipeTartaricForge(inputs, output, minimumSouls, soulDrain)); + tartaricForgeRecipes.add(new RecipeTartaricForge(inputs, output, minimumSouls, soulDrain)); } public void addTartaricForge(@Nonnull ItemStack output, @Nonnegative double minimumSouls, @Nonnegative double soulDrain, @Nonnull Object... input) { @@ -90,10 +89,12 @@ public class BloodMagicRecipeRegistrar implements IBloodMagicRecipeRegistrar { @Nullable public RecipeBloodAltar getBloodAltar(@Nonnull ItemStack input) { Preconditions.checkNotNull(input, "input cannot be null."); + if (input.isEmpty()) + return null; - for (Map.Entry entry : altarRecipes.entrySet()) - if (entry.getKey().test(input)) - return entry.getValue(); + for (RecipeBloodAltar recipe : altarRecipes) + if (recipe.getInput().test(input)) + return recipe; return null; } @@ -101,19 +102,21 @@ public class BloodMagicRecipeRegistrar implements IBloodMagicRecipeRegistrar { @Nullable public RecipeAlchemyTable getAlchemyTable(@Nonnull List input) { Preconditions.checkNotNull(input, "input cannot be null."); + if (input.isEmpty()) + return null; mainLoop: - for (Map.Entry, RecipeAlchemyTable> entry : alchemyRecipes.entrySet()) { - if (entry.getKey().size() != input.size()) + for (RecipeAlchemyTable recipe : alchemyRecipes) { + if (recipe.getInput().size() != input.size()) continue; - for (int i = 0; i > input.size(); i++) { - Ingredient ingredient = entry.getKey().get(i); + for (int i = 0; i < input.size(); i++) { + Ingredient ingredient = recipe.getInput().get(i); if (!ingredient.apply(input.get(i))) continue mainLoop; } - return entry.getValue(); + return recipe; } return null; @@ -122,33 +125,35 @@ public class BloodMagicRecipeRegistrar implements IBloodMagicRecipeRegistrar { @Nullable public RecipeTartaricForge getTartaricForge(@Nonnull List input) { Preconditions.checkNotNull(input, "input cannot be null."); + if (input.isEmpty()) + return null; mainLoop: - for (Map.Entry, RecipeTartaricForge> entry : tartaricForgeRecipes.entrySet()) { - if (entry.getKey().size() != input.size()) + for (RecipeTartaricForge recipe : tartaricForgeRecipes) { + if (recipe.getInput().size() != input.size()) continue; - for (int i = 0; i > input.size(); i++) { - Ingredient ingredient = entry.getKey().get(i); + for (int i = 0; i < input.size(); i++) { + Ingredient ingredient = recipe.getInput().get(i); if (!ingredient.apply(input.get(i))) continue mainLoop; } - return entry.getValue(); + return recipe; } return null; } - public Map getAltarRecipes() { - return ImmutableMap.copyOf(altarRecipes); + public Set getAltarRecipes() { + return ImmutableSet.copyOf(altarRecipes); } - public Map, RecipeAlchemyTable> getAlchemyRecipes() { - return ImmutableMap.copyOf(alchemyRecipes); + public Set getAlchemyRecipes() { + return ImmutableSet.copyOf(alchemyRecipes); } - public Map, RecipeTartaricForge> getTartaricForgeRecipes() { - return ImmutableMap.copyOf(tartaricForgeRecipes); + public Set getTartaricForgeRecipes() { + return ImmutableSet.copyOf(tartaricForgeRecipes); } } diff --git a/src/main/java/WayofTime/bloodmagic/compat/guideapi/BookUtils.java b/src/main/java/WayofTime/bloodmagic/compat/guideapi/BookUtils.java index 1d0c2873..a532d149 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/guideapi/BookUtils.java +++ b/src/main/java/WayofTime/bloodmagic/compat/guideapi/BookUtils.java @@ -22,7 +22,7 @@ public class BookUtils { @Nullable public static PageAltarRecipe getAltarPage(ItemStack output) { - for (RecipeBloodAltar recipe : BloodMagicAPI.INSTANCE.getRecipeRegistrar().getAltarRecipes().values()) + for (RecipeBloodAltar recipe : BloodMagicAPI.INSTANCE.getRecipeRegistrar().getAltarRecipes()) if (ItemStack.areItemStacksEqualUsingNBTShareTag(output, recipe.getOutput())) return new PageAltarRecipe(recipe); @@ -31,7 +31,7 @@ public class BookUtils { @Nullable public static PageTartaricForgeRecipe getForgePage(ItemStack output) { - for (RecipeTartaricForge recipe : BloodMagicAPI.INSTANCE.getRecipeRegistrar().getTartaricForgeRecipes().values()) + for (RecipeTartaricForge recipe : BloodMagicAPI.INSTANCE.getRecipeRegistrar().getTartaricForgeRecipes()) if (ItemStack.areItemStacksEqualUsingNBTShareTag(output, recipe.getOutput())) return new PageTartaricForgeRecipe(recipe); diff --git a/src/main/java/WayofTime/bloodmagic/compat/jei/BloodMagicJEIPlugin.java b/src/main/java/WayofTime/bloodmagic/compat/jei/BloodMagicJEIPlugin.java index 1ac3520d..1536dc3b 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/jei/BloodMagicJEIPlugin.java +++ b/src/main/java/WayofTime/bloodmagic/compat/jei/BloodMagicJEIPlugin.java @@ -46,9 +46,9 @@ public class BloodMagicJEIPlugin implements IModPlugin { new ArmourDowngradeRecipeHandler() ); - registry.addRecipes(BloodMagicAPI.INSTANCE.getRecipeRegistrar().getAltarRecipes().values(), Constants.Compat.JEI_CATEGORY_ALTAR); - registry.addRecipes(BloodMagicAPI.INSTANCE.getRecipeRegistrar().getAlchemyRecipes().values(), Constants.Compat.JEI_CATEGORY_ALCHEMYTABLE); - registry.addRecipes(BloodMagicAPI.INSTANCE.getRecipeRegistrar().getTartaricForgeRecipes().values(), Constants.Compat.JEI_CATEGORY_SOULFORGE); + registry.addRecipes(BloodMagicAPI.INSTANCE.getRecipeRegistrar().getAltarRecipes(), Constants.Compat.JEI_CATEGORY_ALTAR); + registry.addRecipes(BloodMagicAPI.INSTANCE.getRecipeRegistrar().getAlchemyRecipes(), Constants.Compat.JEI_CATEGORY_ALCHEMYTABLE); + registry.addRecipes(BloodMagicAPI.INSTANCE.getRecipeRegistrar().getTartaricForgeRecipes(), Constants.Compat.JEI_CATEGORY_SOULFORGE); registry.handleRecipes(RecipeBloodAltar.class, AltarRecipeJEI::new, Constants.Compat.JEI_CATEGORY_ALTAR); registry.handleRecipes(RecipeAlchemyTable.class, AlchemyTableRecipeJEI::new, Constants.Compat.JEI_CATEGORY_ALCHEMYTABLE); From dd1dafe3dc12f080068fa4e791fa7540cec098e0 Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Thu, 7 Sep 2017 22:46:49 -0700 Subject: [PATCH 16/27] Allow removal of recipes For CraftTweaker and such --- .../api_impl/BloodMagicRecipeRegistrar.java | 18 ++++++++++ .../api_impl/recipe/IngredientTester.java | 34 +++++++++++++++++++ .../api_impl/recipe/RecipeAlchemyTable.java | 4 +-- .../api_impl/recipe/RecipeBloodAltar.java | 4 +-- .../api_impl/recipe/RecipeTartaricForge.java | 4 +-- 5 files changed, 58 insertions(+), 6 deletions(-) create mode 100644 src/main/java/WayofTime/bloodmagic/api_impl/recipe/IngredientTester.java diff --git a/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicRecipeRegistrar.java b/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicRecipeRegistrar.java index ca586faa..48c88896 100644 --- a/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicRecipeRegistrar.java +++ b/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicRecipeRegistrar.java @@ -86,6 +86,24 @@ public class BloodMagicRecipeRegistrar implements IBloodMagicRecipeRegistrar { addTartaricForge(output, minimumSouls, soulDrain, ingredients.toArray(new Ingredient[0])); } + public boolean removeBloodAltar(@Nonnull RecipeBloodAltar recipe) { + Preconditions.checkNotNull(recipe, "recipe cannot be null."); + + return altarRecipes.remove(recipe); + } + + public boolean removeAlchemyTable(@Nonnull RecipeAlchemyTable recipe) { + Preconditions.checkNotNull(recipe, "recipe cannot be null."); + + return alchemyRecipes.remove(recipe); + } + + public boolean removeTartaricForge(@Nonnull RecipeTartaricForge recipe) { + Preconditions.checkNotNull(recipe, "recipe cannot be null."); + + return tartaricForgeRecipes.remove(recipe); + } + @Nullable public RecipeBloodAltar getBloodAltar(@Nonnull ItemStack input) { Preconditions.checkNotNull(input, "input cannot be null."); diff --git a/src/main/java/WayofTime/bloodmagic/api_impl/recipe/IngredientTester.java b/src/main/java/WayofTime/bloodmagic/api_impl/recipe/IngredientTester.java new file mode 100644 index 00000000..b429142e --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/api_impl/recipe/IngredientTester.java @@ -0,0 +1,34 @@ +package WayofTime.bloodmagic.api_impl.recipe; + +import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.Ingredient; + +import java.util.List; + +public class IngredientTester { + + public static boolean compareIngredients(Ingredient ingredient1, Ingredient ingredient2) { + ItemStack[] stacks1 = ingredient1.getMatchingStacks(); + ItemStack[] stacks2 = ingredient2.getMatchingStacks(); + + if (stacks1.length != stacks2.length) + return false; + + for (int i = 0; i < stacks1.length; i++) + if (!ItemStack.areItemStacksEqualUsingNBTShareTag(stacks1[i], stacks2[i])) + return false; + + return true; + } + + public static boolean compareIngredients(List ingredients1, List ingredients2) { + if (ingredients1.size() != ingredients2.size()) + return false; + + for (int i = 0; i < ingredients1.size(); i++) + if (!compareIngredients(ingredients1.get(i), ingredients2.get(i))) + return false; + + return true; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeAlchemyTable.java b/src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeAlchemyTable.java index 736b33e2..e37909e4 100644 --- a/src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeAlchemyTable.java +++ b/src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeAlchemyTable.java @@ -67,8 +67,8 @@ public class RecipeAlchemyTable { if (syphon != that.syphon) return false; if (ticks != that.ticks) return false; if (minimumTier != that.minimumTier) return false; - if (!input.equals(that.input)) return false; - return ItemStack.areItemStacksEqual(output, that.output); + if (!IngredientTester.compareIngredients(input, that.input)) return false; + return ItemStack.areItemStacksEqualUsingNBTShareTag(output, that.output); } @Override diff --git a/src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeBloodAltar.java b/src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeBloodAltar.java index 9b47ed43..120c769a 100644 --- a/src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeBloodAltar.java +++ b/src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeBloodAltar.java @@ -80,8 +80,8 @@ public class RecipeBloodAltar { if (minimumTier != that.minimumTier) return false; if (syphon != that.syphon) return false; if (drainRate != that.drainRate) return false; - if (!input.equals(that.input)) return false; - return ItemStack.areItemStacksEqual(output, that.output); + if (!IngredientTester.compareIngredients(input, that.input)) return false; + return ItemStack.areItemStacksEqualUsingNBTShareTag(output, that.output); } @Override diff --git a/src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeTartaricForge.java b/src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeTartaricForge.java index 6acc46cd..6a7ca7b4 100644 --- a/src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeTartaricForge.java +++ b/src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeTartaricForge.java @@ -60,8 +60,8 @@ public class RecipeTartaricForge { if (minimumSouls != that.minimumSouls) return false; if (soulDrain != that.soulDrain) return false; - if (!input.equals(that.input)) return false; - return ItemStack.areItemStacksEqual(output, that.output); + if (!IngredientTester.compareIngredients(input, that.input)) return false; + return ItemStack.areItemStacksEqualUsingNBTShareTag(output, that.output); } @Override From c58e29eeeac18c54de50f7f4099d7f7c4c1793ff Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Mon, 11 Sep 2017 15:43:18 -0700 Subject: [PATCH 17/27] Better recipe removal No more weird Ingredient comparison --- .../java/WayofTime/bloodmagic/BloodMagic.java | 2 +- .../api_impl/BloodMagicRecipeRegistrar.java | 46 +++++++++++-------- .../api_impl/recipe/IngredientTester.java | 34 -------------- .../api_impl/recipe/RecipeAlchemyTable.java | 24 ---------- .../api_impl/recipe/RecipeBloodAltar.java | 26 +---------- .../api_impl/recipe/RecipeTartaricForge.java | 26 ----------- .../apiv2/IBloodMagicRecipeRegistrar.java | 6 +++ 7 files changed, 35 insertions(+), 129 deletions(-) delete mode 100644 src/main/java/WayofTime/bloodmagic/api_impl/recipe/IngredientTester.java diff --git a/src/main/java/WayofTime/bloodmagic/BloodMagic.java b/src/main/java/WayofTime/bloodmagic/BloodMagic.java index 05c86535..c24c358f 100644 --- a/src/main/java/WayofTime/bloodmagic/BloodMagic.java +++ b/src/main/java/WayofTime/bloodmagic/BloodMagic.java @@ -41,8 +41,8 @@ public class BloodMagic { public static final String NAME = "Blood Magic: Alchemical Wizardry"; public static final String VERSION = "@VERSION@"; public static final String DEPEND = "required-after:guideapi;"; - public static final Logger LOGGER = LogManager.getLogger(NAME.substring(0, NAME.indexOf(":"))); public static final boolean IS_DEV = (Boolean) Launch.blackboard.get("fml.deobfuscatedEnvironment"); + public static final Logger LOGGER = LogManager.getLogger(NAME.substring(0, NAME.indexOf(":"))); public static final List> PLUGINS = Lists.newArrayList(); public static final CreativeTabs TAB_BM = new CreativeTabs(MODID + ".creativeTab") { @Override diff --git a/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicRecipeRegistrar.java b/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicRecipeRegistrar.java index 48c88896..432d9b40 100644 --- a/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicRecipeRegistrar.java +++ b/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicRecipeRegistrar.java @@ -17,7 +17,6 @@ import javax.annotation.Nonnegative; import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.List; -import java.util.Map; import java.util.Set; public class BloodMagicRecipeRegistrar implements IBloodMagicRecipeRegistrar { @@ -44,6 +43,13 @@ public class BloodMagicRecipeRegistrar implements IBloodMagicRecipeRegistrar { altarRecipes.add(new RecipeBloodAltar(input, output, minimumTier, syphon, consumeRate, drainRate)); } + @Override + public boolean removeBloodAltar(@Nonnull ItemStack input) { + Preconditions.checkNotNull(input, "input cannot be null."); + + return altarRecipes.remove(getBloodAltar(input)); + } + @Override public void addAlchemyTable(@Nonnull ItemStack output, @Nonnegative int syphon, @Nonnegative int ticks, @Nonnegative int minimumTier, @Nonnull Ingredient... input) { Preconditions.checkNotNull(output, "output cannot be null."); @@ -56,6 +62,16 @@ public class BloodMagicRecipeRegistrar implements IBloodMagicRecipeRegistrar { alchemyRecipes.add(new RecipeAlchemyTable(inputs, output, syphon, ticks, minimumTier)); } + @Override + public boolean removeAlchemyTable(@Nonnull ItemStack... input) { + Preconditions.checkNotNull(input, "inputs cannot be null."); + + for (ItemStack stack : input) + Preconditions.checkNotNull(stack, "input cannot be null."); + + return alchemyRecipes.remove(getAlchemyTable(Lists.newArrayList(input))); + } + @Override public void addTartaricForge(@Nonnull ItemStack output, @Nonnegative double minimumSouls, @Nonnegative double soulDrain, @Nonnull Ingredient... input) { Preconditions.checkNotNull(output, "output cannot be null."); @@ -67,6 +83,16 @@ public class BloodMagicRecipeRegistrar implements IBloodMagicRecipeRegistrar { tartaricForgeRecipes.add(new RecipeTartaricForge(inputs, output, minimumSouls, soulDrain)); } + @Override + public boolean removeTartaricForge(@Nonnull ItemStack... input) { + Preconditions.checkNotNull(input, "inputs cannot be null."); + + for (ItemStack stack : input) + Preconditions.checkNotNull(stack, "input cannot be null."); + + return tartaricForgeRecipes.remove(getTartaricForge(Lists.newArrayList(input))); + } + public void addTartaricForge(@Nonnull ItemStack output, @Nonnegative double minimumSouls, @Nonnegative double soulDrain, @Nonnull Object... input) { Preconditions.checkNotNull(output, "output cannot be null."); Preconditions.checkArgument(minimumSouls >= 0, "minimumSouls cannot be negative."); @@ -86,24 +112,6 @@ public class BloodMagicRecipeRegistrar implements IBloodMagicRecipeRegistrar { addTartaricForge(output, minimumSouls, soulDrain, ingredients.toArray(new Ingredient[0])); } - public boolean removeBloodAltar(@Nonnull RecipeBloodAltar recipe) { - Preconditions.checkNotNull(recipe, "recipe cannot be null."); - - return altarRecipes.remove(recipe); - } - - public boolean removeAlchemyTable(@Nonnull RecipeAlchemyTable recipe) { - Preconditions.checkNotNull(recipe, "recipe cannot be null."); - - return alchemyRecipes.remove(recipe); - } - - public boolean removeTartaricForge(@Nonnull RecipeTartaricForge recipe) { - Preconditions.checkNotNull(recipe, "recipe cannot be null."); - - return tartaricForgeRecipes.remove(recipe); - } - @Nullable public RecipeBloodAltar getBloodAltar(@Nonnull ItemStack input) { Preconditions.checkNotNull(input, "input cannot be null."); diff --git a/src/main/java/WayofTime/bloodmagic/api_impl/recipe/IngredientTester.java b/src/main/java/WayofTime/bloodmagic/api_impl/recipe/IngredientTester.java deleted file mode 100644 index b429142e..00000000 --- a/src/main/java/WayofTime/bloodmagic/api_impl/recipe/IngredientTester.java +++ /dev/null @@ -1,34 +0,0 @@ -package WayofTime.bloodmagic.api_impl.recipe; - -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.Ingredient; - -import java.util.List; - -public class IngredientTester { - - public static boolean compareIngredients(Ingredient ingredient1, Ingredient ingredient2) { - ItemStack[] stacks1 = ingredient1.getMatchingStacks(); - ItemStack[] stacks2 = ingredient2.getMatchingStacks(); - - if (stacks1.length != stacks2.length) - return false; - - for (int i = 0; i < stacks1.length; i++) - if (!ItemStack.areItemStacksEqualUsingNBTShareTag(stacks1[i], stacks2[i])) - return false; - - return true; - } - - public static boolean compareIngredients(List ingredients1, List ingredients2) { - if (ingredients1.size() != ingredients2.size()) - return false; - - for (int i = 0; i < ingredients1.size(); i++) - if (!compareIngredients(ingredients1.get(i), ingredients2.get(i))) - return false; - - return true; - } -} diff --git a/src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeAlchemyTable.java b/src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeAlchemyTable.java index e37909e4..817201e1 100644 --- a/src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeAlchemyTable.java +++ b/src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeAlchemyTable.java @@ -56,28 +56,4 @@ public class RecipeAlchemyTable { public final int getMinimumTier() { return minimumTier; } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (!(o instanceof RecipeAlchemyTable)) return false; - - RecipeAlchemyTable that = (RecipeAlchemyTable) o; - - if (syphon != that.syphon) return false; - if (ticks != that.ticks) return false; - if (minimumTier != that.minimumTier) return false; - if (!IngredientTester.compareIngredients(input, that.input)) return false; - return ItemStack.areItemStacksEqualUsingNBTShareTag(output, that.output); - } - - @Override - public int hashCode() { - int result = input.hashCode(); - result = 31 * result + output.hashCode(); - result = 31 * result + syphon; - result = 31 * result + ticks; - result = 31 * result + minimumTier; - return result; - } } diff --git a/src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeBloodAltar.java b/src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeBloodAltar.java index 120c769a..02640377 100644 --- a/src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeBloodAltar.java +++ b/src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeBloodAltar.java @@ -26,7 +26,7 @@ public class RecipeBloodAltar { public RecipeBloodAltar(@Nonnull Ingredient input, @Nonnull ItemStack output, @Nonnegative int minimumTier, @Nonnegative int syphon, @Nonnegative int consumeRate, @Nonnegative int drainRate) { Preconditions.checkNotNull(input, "input cannot be null."); Preconditions.checkNotNull(output, "output cannot be null."); - Preconditions.checkNotNull(minimumTier, "minimumTier cannot be negative."); + Preconditions.checkArgument(minimumTier >= 0, "minimumTier cannot be negative."); Preconditions.checkArgument(minimumTier <= EnumAltarTier.MAXTIERS, "minimumTier cannot be higher than max tier"); Preconditions.checkArgument(syphon >= 0, "syphon cannot be negative."); Preconditions.checkArgument(consumeRate >= 0, "consumeRate cannot be negative."); @@ -69,28 +69,4 @@ public class RecipeBloodAltar { public final int getDrainRate() { return drainRate; } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (!(o instanceof RecipeBloodAltar)) return false; - - RecipeBloodAltar that = (RecipeBloodAltar) o; - - if (minimumTier != that.minimumTier) return false; - if (syphon != that.syphon) return false; - if (drainRate != that.drainRate) return false; - if (!IngredientTester.compareIngredients(input, that.input)) return false; - return ItemStack.areItemStacksEqualUsingNBTShareTag(output, that.output); - } - - @Override - public int hashCode() { - int result = input.hashCode(); - result = 31 * result + output.hashCode(); - result = 31 * result + minimumTier.ordinal(); - result = 31 * result + syphon; - result = 31 * result + drainRate; - return result; - } } diff --git a/src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeTartaricForge.java b/src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeTartaricForge.java index 6a7ca7b4..d1db42ae 100644 --- a/src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeTartaricForge.java +++ b/src/main/java/WayofTime/bloodmagic/api_impl/recipe/RecipeTartaricForge.java @@ -50,30 +50,4 @@ public class RecipeTartaricForge { public final double getSoulDrain() { return soulDrain; } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (!(o instanceof RecipeTartaricForge)) return false; - - RecipeTartaricForge that = (RecipeTartaricForge) o; - - if (minimumSouls != that.minimumSouls) return false; - if (soulDrain != that.soulDrain) return false; - if (!IngredientTester.compareIngredients(input, that.input)) return false; - return ItemStack.areItemStacksEqualUsingNBTShareTag(output, that.output); - } - - @Override - public int hashCode() { - int result; - long temp; - result = input.hashCode(); - result = 31 * result + output.hashCode(); - temp = Double.doubleToLongBits(minimumSouls); - result = 31 * result + (int) (temp ^ (temp >>> 32)); - temp = Double.doubleToLongBits(soulDrain); - result = 31 * result + (int) (temp ^ (temp >>> 32)); - return result; - } } diff --git a/src/main/java/WayofTime/bloodmagic/apiv2/IBloodMagicRecipeRegistrar.java b/src/main/java/WayofTime/bloodmagic/apiv2/IBloodMagicRecipeRegistrar.java index 92c7ea6c..eb915423 100644 --- a/src/main/java/WayofTime/bloodmagic/apiv2/IBloodMagicRecipeRegistrar.java +++ b/src/main/java/WayofTime/bloodmagic/apiv2/IBloodMagicRecipeRegistrar.java @@ -10,7 +10,13 @@ public interface IBloodMagicRecipeRegistrar { void addBloodAltar(@Nonnull Ingredient input, @Nonnull ItemStack output, @Nonnegative int minimumTier, @Nonnegative int syphon, @Nonnegative int consumeRate, @Nonnegative int drainRate); + boolean removeBloodAltar(@Nonnull ItemStack input); + void addAlchemyTable(@Nonnull ItemStack output, @Nonnegative int syphon, @Nonnegative int ticks, @Nonnegative int minimumTier, @Nonnull Ingredient... input); + boolean removeAlchemyTable(@Nonnull ItemStack... input); + void addTartaricForge(@Nonnull ItemStack output, @Nonnegative double minimumSouls, @Nonnegative double soulDrain, @Nonnull Ingredient... input); + + boolean removeTartaricForge(@Nonnull ItemStack... input); } From 59a9394f9910d1bed9d2bf9c85ae3aafd93c90e4 Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Mon, 11 Sep 2017 19:26:41 -0700 Subject: [PATCH 18/27] Move Reagents to their own items --- .../render/entity/RenderEntityBloodLight.java | 3 +- .../guideapi/book/CategoryArchitect.java | 37 ++--- .../core/RegistrarBloodMagicItems.java | 5 +- .../core/RegistrarBloodMagicRecipes.java | 47 +++---- .../WayofTime/bloodmagic/item/ItemEnum.java | 4 +- .../item/armour/ItemLivingArmour.java | 3 +- .../bloodmagic/item/types/ComponentType.java | 33 +---- .../types/{IEnumItem.java => ISubItem.java} | 6 +- .../bloodmagic/item/types/ReagentType.java | 46 +++++++ .../bloodmagic/registry/ModRecipes.java | 61 ++++----- .../bloodmagic/blockstates/component.json | 126 ++---------------- .../bloodmagic/blockstates/reagent.json | 121 +++++++++++++++++ .../assets/bloodmagic/lang/en_US.lang | 69 +++++----- 13 files changed, 298 insertions(+), 263 deletions(-) rename src/main/java/WayofTime/bloodmagic/item/types/{IEnumItem.java => ISubItem.java} (69%) create mode 100644 src/main/java/WayofTime/bloodmagic/item/types/ReagentType.java create mode 100644 src/main/resources/assets/bloodmagic/blockstates/reagent.json diff --git a/src/main/java/WayofTime/bloodmagic/client/render/entity/RenderEntityBloodLight.java b/src/main/java/WayofTime/bloodmagic/client/render/entity/RenderEntityBloodLight.java index 8075b2ae..dcf62cf9 100644 --- a/src/main/java/WayofTime/bloodmagic/client/render/entity/RenderEntityBloodLight.java +++ b/src/main/java/WayofTime/bloodmagic/client/render/entity/RenderEntityBloodLight.java @@ -2,6 +2,7 @@ package WayofTime.bloodmagic.client.render.entity; import WayofTime.bloodmagic.entity.projectile.EntityBloodLight; import WayofTime.bloodmagic.item.types.ComponentType; +import WayofTime.bloodmagic.item.types.ReagentType; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.RenderItem; @@ -26,7 +27,7 @@ public class RenderEntityBloodLight extends Render { GlStateManager.rotate(-this.renderManager.playerViewY, 0.0F, 1.0F, 0.0F); GlStateManager.rotate(this.renderManager.playerViewX, 1.0F, 0.0F, 0.0F); this.bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE); - this.renderItem.renderItem(ComponentType.REAGENT_BLOODLIGHT.getStack(), ItemCameraTransforms.TransformType.GROUND); + this.renderItem.renderItem(ReagentType.REAGENT_BLOODLIGHT.getStack(), ItemCameraTransforms.TransformType.GROUND); GlStateManager.disableRescaleNormal(); GlStateManager.popMatrix(); super.doRender(entity, x, y, z, entityYaw, partialTicks); diff --git a/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryArchitect.java b/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryArchitect.java index 1392936e..9501278b 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryArchitect.java +++ b/src/main/java/WayofTime/bloodmagic/compat/guideapi/book/CategoryArchitect.java @@ -8,6 +8,7 @@ import WayofTime.bloodmagic.core.RegistrarBloodMagic; import WayofTime.bloodmagic.core.RegistrarBloodMagicBlocks; import WayofTime.bloodmagic.core.RegistrarBloodMagicItems; import WayofTime.bloodmagic.item.types.ComponentType; +import WayofTime.bloodmagic.item.types.ReagentType; import amerifrance.guideapi.api.impl.Book; import amerifrance.guideapi.api.util.PageHelper; import amerifrance.guideapi.category.CategoryItemStack; @@ -68,12 +69,12 @@ public class CategoryArchitect { category.getEntry("runeSpeed").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "runeSpeed.info.1"), 370)); category.addEntry("water", new EntryText(keyBase + "water", true)); - category.getEntry("water").addPage(BookUtils.getForgePage(ComponentType.REAGENT_WATER.getStack())); + category.getEntry("water").addPage(BookUtils.getForgePage(ReagentType.REAGENT_WATER.getStack())); category.getEntry("water").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_WATER))); category.getEntry("water").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "water.info.1"), 370)); category.addEntry("lava", new EntryText(keyBase + "lava", true)); - category.getEntry("lava").addPage(BookUtils.getForgePage(ComponentType.REAGENT_LAVA.getStack())); + category.getEntry("lava").addPage(BookUtils.getForgePage(ReagentType.REAGENT_LAVA.getStack())); category.getEntry("lava").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_LAVA))); category.getEntry("lava").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "lava.info.1"), 370)); @@ -98,32 +99,32 @@ public class CategoryArchitect { category.getEntry("runeSelfSacrifice").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "runeSelfSacrifice.info.1"), 370)); category.addEntry("holding", new EntryText(keyBase + "holding", true)); - category.getEntry("holding").addPage(BookUtils.getForgePage(ComponentType.REAGENT_HOLDING.getStack())); + category.getEntry("holding").addPage(BookUtils.getForgePage(ReagentType.REAGENT_HOLDING.getStack())); category.getEntry("holding").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_HOLDING))); category.getEntry("holding").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "holding.info.1"), 370)); category.addEntry("air", new EntryText(keyBase + "air", true)); - category.getEntry("air").addPage(BookUtils.getForgePage(ComponentType.REAGENT_AIR.getStack())); + category.getEntry("air").addPage(BookUtils.getForgePage(ReagentType.REAGENT_AIR.getStack())); category.getEntry("air").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_AIR))); category.getEntry("air").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "air.info.1"), 370)); category.addEntry("void", new EntryText(keyBase + "void", true)); - category.getEntry("void").addPage(BookUtils.getForgePage(ComponentType.REAGENT_VOID.getStack())); + category.getEntry("void").addPage(BookUtils.getForgePage(ReagentType.REAGENT_VOID.getStack())); category.getEntry("void").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_VOID))); category.getEntry("void").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "void.info.1"), 370)); category.addEntry("greenGrove", new EntryText(keyBase + "greenGrove", true)); - category.getEntry("greenGrove").addPage(BookUtils.getForgePage(ComponentType.REAGENT_GROWTH.getStack())); + category.getEntry("greenGrove").addPage(BookUtils.getForgePage(ReagentType.REAGENT_GROWTH.getStack())); category.getEntry("greenGrove").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_GREEN_GROVE))); category.getEntry("greenGrove").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "greenGrove.info.1"), 370)); category.addEntry("fastMiner", new EntryText(keyBase + "fastMiner", true)); - category.getEntry("fastMiner").addPage(BookUtils.getForgePage(ComponentType.REAGENT_FASTMINER.getStack())); + category.getEntry("fastMiner").addPage(BookUtils.getForgePage(ReagentType.REAGENT_FASTMINER.getStack())); category.getEntry("fastMiner").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_FAST_MINER))); category.getEntry("fastMiner").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "fastMiner.info.1"), 370)); category.addEntry("seer", new EntryText(keyBase + "seer", true)); - category.getEntry("seer").addPage(BookUtils.getForgePage(ComponentType.REAGENT_SIGHT.getStack())); + category.getEntry("seer").addPage(BookUtils.getForgePage(ReagentType.REAGENT_SIGHT.getStack())); category.getEntry("seer").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_SEER))); category.getEntry("seer").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "seer.info.1"), 370)); @@ -140,17 +141,17 @@ public class CategoryArchitect { category.getEntry("displacement").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "displacement.info.1"), 370)); category.addEntry("affinity", new EntryText(keyBase + "affinity", true)); - category.getEntry("affinity").addPage(BookUtils.getForgePage(ComponentType.REAGENT_AFFINITY.getStack())); + category.getEntry("affinity").addPage(BookUtils.getForgePage(ReagentType.REAGENT_AFFINITY.getStack())); category.getEntry("affinity").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_ELEMENTAL_AFFINITY))); category.getEntry("affinity").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "affinity.info"), 370)); category.addEntry("lamp", new EntryText(keyBase + "lamp", true)); - category.getEntry("lamp").addPage(BookUtils.getForgePage(ComponentType.REAGENT_BLOODLIGHT.getStack())); + category.getEntry("lamp").addPage(BookUtils.getForgePage(ReagentType.REAGENT_BLOODLIGHT.getStack())); category.getEntry("lamp").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_BLOOD_LIGHT))); category.getEntry("lamp").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "lamp.info.1"), 370)); category.addEntry("magnetism", new EntryText(keyBase + "magnetism", true)); - category.getEntry("magnetism").addPage(BookUtils.getForgePage(ComponentType.REAGENT_MAGNETISM.getStack())); + category.getEntry("magnetism").addPage(BookUtils.getForgePage(ReagentType.REAGENT_MAGNETISM.getStack())); category.getEntry("magnetism").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_MAGNETISM))); category.getEntry("magnetism").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "magnetism.info.1"), 370)); @@ -159,7 +160,7 @@ public class CategoryArchitect { category.getEntry("peritia").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "peritia.info.1"), 370)); category.addEntry("livingArmour", new EntryText(keyBase + "livingArmour", true)); - category.getEntry("livingArmour").addPage(BookUtils.getForgePage(ComponentType.REAGENT_BINDING.getStack())); + category.getEntry("livingArmour").addPage(BookUtils.getForgePage(ReagentType.REAGENT_BINDING.getStack())); category.getEntry("livingArmour").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_CHEST))); category.getEntry("livingArmour").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_HELMET))); category.getEntry("livingArmour").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_LEGGINGS))); @@ -211,32 +212,32 @@ public class CategoryArchitect { category.getEntry("acceleration").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "acceleration.info.1"), 370)); category.addEntry("suppression", new EntryText(keyBase + "suppression", true)); - category.getEntry("suppression").addPage(BookUtils.getForgePage(ComponentType.REAGENT_SUPPRESSION.getStack())); + category.getEntry("suppression").addPage(BookUtils.getForgePage(ReagentType.REAGENT_SUPPRESSION.getStack())); category.getEntry("suppression").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_SUPPRESSION))); category.getEntry("suppression").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "suppression.info.1"), 370)); category.addEntry("haste", new EntryText(keyBase + "haste", true)); - category.getEntry("haste").addPage(BookUtils.getForgePage(ComponentType.REAGENT_HASTE.getStack())); + category.getEntry("haste").addPage(BookUtils.getForgePage(ReagentType.REAGENT_HASTE.getStack())); category.getEntry("haste").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_HASTE))); category.getEntry("haste").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "haste.info.1"), 370)); category.addEntry("severance", new EntryText(keyBase + "severance", true)); - category.getEntry("severance").addPage(BookUtils.getForgePage(ComponentType.REAGENT_SEVERANCE.getStack())); + category.getEntry("severance").addPage(BookUtils.getForgePage(ReagentType.REAGENT_SEVERANCE.getStack())); category.getEntry("severance").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_ENDER_SEVERANCE))); category.getEntry("severance").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "severance.info.1"), 370)); category.addEntry("teleposition", new EntryText(keyBase + "teleposition", true)); - category.getEntry("teleposition").addPage(BookUtils.getForgePage(ComponentType.REAGENT_TELEPOSITION.getStack())); + category.getEntry("teleposition").addPage(BookUtils.getForgePage(ReagentType.REAGENT_TELEPOSITION.getStack())); category.getEntry("teleposition").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_TELEPOSITION))); category.getEntry("teleposition").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "teleposition.info.1"), 370)); category.addEntry("compression", new EntryText(keyBase + "compression", true)); - category.getEntry("compression").addPage(BookUtils.getForgePage(ComponentType.REAGENT_COMPRESSION.getStack())); + category.getEntry("compression").addPage(BookUtils.getForgePage(ReagentType.REAGENT_COMPRESSION.getStack())); category.getEntry("compression").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_COMPRESSION))); category.getEntry("compression").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "compression.info.1"), 370)); category.addEntry("bridge", new EntryText(keyBase + "bridge", true)); - category.getEntry("bridge").addPage(BookUtils.getForgePage(ComponentType.REAGENT_BRIDGE.getStack())); + category.getEntry("bridge").addPage(BookUtils.getForgePage(ReagentType.REAGENT_BRIDGE.getStack())); category.getEntry("bridge").addPage(BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.SIGIL_PHANTOM_BRIDGE))); category.getEntry("bridge").addPageList(PageHelper.pagesForLongText(I18n.format(keyBase + "bridge.info.1"), 370)); diff --git a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicItems.java b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicItems.java index da72b025..8d046c24 100644 --- a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicItems.java +++ b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicItems.java @@ -17,6 +17,7 @@ import WayofTime.bloodmagic.item.routing.ItemRouterFilter; import WayofTime.bloodmagic.item.sigil.*; import WayofTime.bloodmagic.item.soul.*; import WayofTime.bloodmagic.item.types.ComponentType; +import WayofTime.bloodmagic.item.types.ReagentType; import com.google.common.collect.Lists; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.init.Items; @@ -79,6 +80,7 @@ public class RegistrarBloodMagicItems { public static final Item SIGIL_BOUNCE = Items.AIR; public static final Item SIGIL_FROST = Items.AIR; public static final Item COMPONENT = Items.AIR; + public static final Item REAGENT = Items.AIR; public static final Item ITEM_DEMON_CRYSTAL = Items.AIR; public static final Item TELEPOSITION_FOCUS = Items.AIR; public static final Item EXPERIENCE_TOME = Items.AIR; @@ -166,7 +168,8 @@ public class RegistrarBloodMagicItems { new ItemSigilClaw().setRegistryName("sigil_claw"), new ItemSigilBounce().setRegistryName("sigil_bounce"), new ItemSigilFrost().setRegistryName("sigil_frost"), - new ItemEnum<>(ComponentType.class, "baseComponent").setRegistryName("component"), + new ItemEnum<>(ComponentType.class, "component").setRegistryName("component"), + new ItemEnum<>(ReagentType.class, "reagent").setRegistryName("reagent"), new ItemDemonCrystal().setRegistryName("item_demon_crystal"), new ItemTelepositionFocus().setRegistryName("teleposition_focus"), new ItemExperienceBook().setRegistryName("experience_tome"), diff --git a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicRecipes.java b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicRecipes.java index 66f231cf..89ed8aa1 100644 --- a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicRecipes.java +++ b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicRecipes.java @@ -12,6 +12,7 @@ import WayofTime.bloodmagic.item.ItemDemonCrystal; import WayofTime.bloodmagic.item.alchemy.ItemCuttingFluid; import WayofTime.bloodmagic.item.soul.ItemSoulGem; import WayofTime.bloodmagic.item.types.ComponentType; +import WayofTime.bloodmagic.item.types.ReagentType; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; @@ -100,32 +101,32 @@ public class RegistrarBloodMagicRecipes { registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicItems.SENTIENT_SHOVEL), 0, 0, new ItemStack(RegistrarBloodMagicItems.SOUL_GEM), new ItemStack(Items.IRON_SHOVEL)); registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicItems.SENTIENT_BOW), 70, 0, new ItemStack(Items.BOW), new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 1), "string", "string"); registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicItems.ARCANE_ASHES), 0, 0, "dustRedstone", "dyeWhite", "gunpowder", Items.COAL); - registrar.addTartaricForge(ComponentType.REAGENT_WATER.getStack(), 10, 3, new ItemStack(Items.SUGAR), new ItemStack(Items.WATER_BUCKET), new ItemStack(Items.WATER_BUCKET)); - registrar.addTartaricForge(ComponentType.REAGENT_LAVA.getStack(), 32, 10, Items.LAVA_BUCKET, "dustRedstone", "cobblestone", "blockCoal"); - registrar.addTartaricForge(ComponentType.REAGENT_VOID.getStack(), 64, 10, Items.BUCKET, "string", "string", "gunpowder"); - registrar.addTartaricForge(ComponentType.REAGENT_GROWTH.getStack(), 128, 20, "treeSapling", "treeSapling", "sugarcane", Items.SUGAR); - registrar.addTartaricForge(ComponentType.REAGENT_AIR.getStack(), 128, 20, Items.GHAST_TEAR, "feather", "feather"); - registrar.addTartaricForge(ComponentType.REAGENT_SIGHT.getStack(), 64, 0, RegistrarBloodMagicItems.SIGIL_DIVINATION, "blockGlass", "blockGlass", "dustGlowstone"); - registrar.addTartaricForge(ComponentType.REAGENT_HOLDING.getStack(), 64, 20, "chestWood", "leather", "string", "string"); - registrar.addTartaricForge(ComponentType.REAGENT_FASTMINER.getStack(), 128, 10, Items.IRON_PICKAXE, Items.IRON_AXE, Items.IRON_SHOVEL, Items.GUNPOWDER); - registrar.addTartaricForge(ComponentType.REAGENT_AFFINITY.getStack(), 300, 30, RegistrarBloodMagicItems.SIGIL_WATER, RegistrarBloodMagicItems.SIGIL_AIR, RegistrarBloodMagicItems.SIGIL_LAVA, Blocks.OBSIDIAN); - registrar.addTartaricForge(ComponentType.REAGENT_SUPPRESSION.getStack(), 500, 50, RegistrarBloodMagicBlocks.TELEPOSER, Items.WATER_BUCKET, Items.LAVA_BUCKET, Items.BLAZE_ROD); - registrar.addTartaricForge(ComponentType.REAGENT_BINDING.getStack(), 400, 10, "dustGlowstone", "dustRedstone", "nuggetGold", Items.GUNPOWDER); - registrar.addTartaricForge(ComponentType.REAGENT_BLOODLIGHT.getStack(), 300, 10, "glowstone", Blocks.TORCH, "dustRedstone", "dustRedstone"); - registrar.addTartaricForge(ComponentType.REAGENT_MAGNETISM.getStack(), 600, 10, "string", "ingotGold", "blockIron", "ingotGold"); - registrar.addTartaricForge(ComponentType.REAGENT_HASTE.getStack(), 1400, 100, Items.COOKIE, Items.SUGAR, Items.COOKIE, "stone"); - registrar.addTartaricForge(ComponentType.REAGENT_BRIDGE.getStack(), 600, 50, Blocks.SOUL_SAND, Blocks.SOUL_SAND, "stone", Blocks.OBSIDIAN); - registrar.addTartaricForge(ComponentType.REAGENT_SEVERANCE.getStack(), 800, 70, Items.ENDER_EYE, Items.ENDER_PEARL, "ingotGold", "ingotGold"); - registrar.addTartaricForge(ComponentType.REAGENT_COMPRESSION.getStack(), 2000, 200, "blockIron", "blockGold", Blocks.OBSIDIAN, "cobblestone"); - registrar.addTartaricForge(ComponentType.REAGENT_TELEPOSITION.getStack(), 1500, 200, RegistrarBloodMagicBlocks.TELEPOSER, "glowstone", "blockRedstone", "ingotGold"); - registrar.addTartaricForge(ComponentType.REAGENT_TRANSPOSITION.getStack(), 1500, 200, RegistrarBloodMagicBlocks.TELEPOSER, "gemDiamond", Items.ENDER_PEARL, Blocks.OBSIDIAN); - registrar.addTartaricForge(ComponentType.REAGENT_CLAW.getStack(), 800, 120, Items.FLINT, Items.FLINT, ItemCuttingFluid.getStack(ItemCuttingFluid.BASIC)); - registrar.addTartaricForge(ComponentType.REAGENT_BOUNCE.getStack(), 200, 20, Blocks.SLIME_BLOCK, Blocks.SLIME_BLOCK, Items.LEATHER, "string"); - registrar.addTartaricForge(ComponentType.REAGENT_FROST.getStack(), 80, 10, Blocks.ICE, Items.SNOWBALL, Items.SNOWBALL, "dustRedstone"); + registrar.addTartaricForge(ReagentType.REAGENT_WATER.getStack(), 10, 3, new ItemStack(Items.SUGAR), new ItemStack(Items.WATER_BUCKET), new ItemStack(Items.WATER_BUCKET)); + registrar.addTartaricForge(ReagentType.REAGENT_LAVA.getStack(), 32, 10, Items.LAVA_BUCKET, "dustRedstone", "cobblestone", "blockCoal"); + registrar.addTartaricForge(ReagentType.REAGENT_VOID.getStack(), 64, 10, Items.BUCKET, "string", "string", "gunpowder"); + registrar.addTartaricForge(ReagentType.REAGENT_GROWTH.getStack(), 128, 20, "treeSapling", "treeSapling", "sugarcane", Items.SUGAR); + registrar.addTartaricForge(ReagentType.REAGENT_AIR.getStack(), 128, 20, Items.GHAST_TEAR, "feather", "feather"); + registrar.addTartaricForge(ReagentType.REAGENT_SIGHT.getStack(), 64, 0, RegistrarBloodMagicItems.SIGIL_DIVINATION, "blockGlass", "blockGlass", "dustGlowstone"); + registrar.addTartaricForge(ReagentType.REAGENT_HOLDING.getStack(), 64, 20, "chestWood", "leather", "string", "string"); + registrar.addTartaricForge(ReagentType.REAGENT_FASTMINER.getStack(), 128, 10, Items.IRON_PICKAXE, Items.IRON_AXE, Items.IRON_SHOVEL, Items.GUNPOWDER); + registrar.addTartaricForge(ReagentType.REAGENT_AFFINITY.getStack(), 300, 30, RegistrarBloodMagicItems.SIGIL_WATER, RegistrarBloodMagicItems.SIGIL_AIR, RegistrarBloodMagicItems.SIGIL_LAVA, Blocks.OBSIDIAN); + registrar.addTartaricForge(ReagentType.REAGENT_SUPPRESSION.getStack(), 500, 50, RegistrarBloodMagicBlocks.TELEPOSER, Items.WATER_BUCKET, Items.LAVA_BUCKET, Items.BLAZE_ROD); + registrar.addTartaricForge(ReagentType.REAGENT_BINDING.getStack(), 400, 10, "dustGlowstone", "dustRedstone", "nuggetGold", Items.GUNPOWDER); + registrar.addTartaricForge(ReagentType.REAGENT_BLOODLIGHT.getStack(), 300, 10, "glowstone", Blocks.TORCH, "dustRedstone", "dustRedstone"); + registrar.addTartaricForge(ReagentType.REAGENT_MAGNETISM.getStack(), 600, 10, "string", "ingotGold", "blockIron", "ingotGold"); + registrar.addTartaricForge(ReagentType.REAGENT_HASTE.getStack(), 1400, 100, Items.COOKIE, Items.SUGAR, Items.COOKIE, "stone"); + registrar.addTartaricForge(ReagentType.REAGENT_BRIDGE.getStack(), 600, 50, Blocks.SOUL_SAND, Blocks.SOUL_SAND, "stone", Blocks.OBSIDIAN); + registrar.addTartaricForge(ReagentType.REAGENT_SEVERANCE.getStack(), 800, 70, Items.ENDER_EYE, Items.ENDER_PEARL, "ingotGold", "ingotGold"); + registrar.addTartaricForge(ReagentType.REAGENT_COMPRESSION.getStack(), 2000, 200, "blockIron", "blockGold", Blocks.OBSIDIAN, "cobblestone"); + registrar.addTartaricForge(ReagentType.REAGENT_TELEPOSITION.getStack(), 1500, 200, RegistrarBloodMagicBlocks.TELEPOSER, "glowstone", "blockRedstone", "ingotGold"); + registrar.addTartaricForge(ReagentType.REAGENT_TRANSPOSITION.getStack(), 1500, 200, RegistrarBloodMagicBlocks.TELEPOSER, "gemDiamond", Items.ENDER_PEARL, Blocks.OBSIDIAN); + registrar.addTartaricForge(ReagentType.REAGENT_CLAW.getStack(), 800, 120, Items.FLINT, Items.FLINT, ItemCuttingFluid.getStack(ItemCuttingFluid.BASIC)); + registrar.addTartaricForge(ReagentType.REAGENT_BOUNCE.getStack(), 200, 20, Blocks.SLIME_BLOCK, Blocks.SLIME_BLOCK, Items.LEATHER, "string"); + registrar.addTartaricForge(ReagentType.REAGENT_FROST.getStack(), 80, 10, Blocks.ICE, Items.SNOWBALL, Items.SNOWBALL, "dustRedstone"); registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicItems.SENTIENT_ARMOUR_GEM), 240, 150, Items.DIAMOND_CHESTPLATE, new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 1), Blocks.IRON_BLOCK, Blocks.OBSIDIAN); - registrar.addTartaricForge(ComponentType.COMPONENT_FRAME_PART.getStack(), 400, 10, "blockGlass", "stone", new ItemStack(RegistrarBloodMagicItems.SLATE)); + registrar.addTartaricForge(ComponentType.FRAME_PART.getStack(), 400, 10, "blockGlass", "stone", new ItemStack(RegistrarBloodMagicItems.SLATE)); registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicItems.NODE_ROUTER), 400, 5, "stickWood", new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), "gemLapis", "gemLapis"); registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicBlocks.ITEM_ROUTING_NODE), 400, 5, "dustGlowstone", "dustRedstone", "blockGlass", "stone"); registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicBlocks.OUTPUT_ROUTING_NODE), 400, 25, "dustGlowstone", "dustRedstone", "ingotIron", new ItemStack(RegistrarBloodMagicBlocks.ITEM_ROUTING_NODE)); diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemEnum.java b/src/main/java/WayofTime/bloodmagic/item/ItemEnum.java index 077149c1..e3799a0f 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemEnum.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemEnum.java @@ -2,7 +2,7 @@ package WayofTime.bloodmagic.item; import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.client.IVariantProvider; -import WayofTime.bloodmagic.item.types.IEnumItem; +import WayofTime.bloodmagic.item.types.ISubItem; import com.google.common.collect.Lists; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; @@ -15,7 +15,7 @@ import org.apache.commons.lang3.tuple.Pair; import java.util.List; -public class ItemEnum & IEnumItem> extends Item implements IVariantProvider { +public class ItemEnum & ISubItem> extends Item implements IVariantProvider { protected final T[] types; diff --git a/src/main/java/WayofTime/bloodmagic/item/armour/ItemLivingArmour.java b/src/main/java/WayofTime/bloodmagic/item/armour/ItemLivingArmour.java index a17cff21..55f632f9 100644 --- a/src/main/java/WayofTime/bloodmagic/item/armour/ItemLivingArmour.java +++ b/src/main/java/WayofTime/bloodmagic/item/armour/ItemLivingArmour.java @@ -10,6 +10,7 @@ import WayofTime.bloodmagic.api.util.helper.NetworkHelper; import WayofTime.bloodmagic.client.IMeshProvider; import WayofTime.bloodmagic.core.RegistrarBloodMagicItems; import WayofTime.bloodmagic.item.types.ComponentType; +import WayofTime.bloodmagic.item.types.ReagentType; import WayofTime.bloodmagic.livingArmour.LivingArmour; import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerRepairing; import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeElytra; @@ -97,7 +98,7 @@ public class ItemLivingArmour extends ItemArmor implements ISpecialArmor, IMeshP @Override public boolean getIsRepairable(ItemStack toRepair, ItemStack repair) { - return ItemStack.areItemsEqual(repair, ComponentType.REAGENT_BINDING.getStack()); + return ItemStack.areItemsEqual(repair, ReagentType.REAGENT_BINDING.getStack()); } @Override diff --git a/src/main/java/WayofTime/bloodmagic/item/types/ComponentType.java b/src/main/java/WayofTime/bloodmagic/item/types/ComponentType.java index ab7fe88a..c7dc721f 100644 --- a/src/main/java/WayofTime/bloodmagic/item/types/ComponentType.java +++ b/src/main/java/WayofTime/bloodmagic/item/types/ComponentType.java @@ -6,27 +6,9 @@ import net.minecraft.item.ItemStack; import javax.annotation.Nonnull; import java.util.Locale; -public enum ComponentType implements IEnumItem { +public enum ComponentType implements ISubItem { - REAGENT_WATER, - REAGENT_LAVA, - REAGENT_AIR, - REAGENT_FASTMINER, - REAGENT_VOID, - REAGENT_GROWTH, - REAGENT_AFFINITY, - REAGENT_SIGHT, - REAGENT_BINDING, - REAGENT_SUPPRESSION, - COMPONENT_FRAME_PART, - REAGENT_BLOODLIGHT, - REAGENT_MAGNETISM, - REAGENT_HASTE, - REAGENT_COMPRESSION, - REAGENT_BRIDGE, - REAGENT_SEVERANCE, - REAGENT_TELEPOSITION, - REAGENT_TRANSPOSITION, + FRAME_PART, SAND_IRON, SAND_GOLD, SAND_COAL, @@ -35,27 +17,16 @@ public enum ComponentType implements IEnumItem { SALTPETER, NEURO_TOXIN, ANTISEPTIC, - REAGENT_HOLDING, CATALYST_LENGTH_1, CATALYST_POWER_1, - REAGENT_CLAW, - REAGENT_BOUNCE, - REAGENT_FROST, ; - @Nonnull @Override public String getInternalName() { return name().toLowerCase(Locale.ROOT); } - @Nonnull - @Override - public ItemStack getStack() { - return getStack(1); - } - @Nonnull @Override public ItemStack getStack(int count) { diff --git a/src/main/java/WayofTime/bloodmagic/item/types/IEnumItem.java b/src/main/java/WayofTime/bloodmagic/item/types/ISubItem.java similarity index 69% rename from src/main/java/WayofTime/bloodmagic/item/types/IEnumItem.java rename to src/main/java/WayofTime/bloodmagic/item/types/ISubItem.java index d7be59b7..27204050 100644 --- a/src/main/java/WayofTime/bloodmagic/item/types/IEnumItem.java +++ b/src/main/java/WayofTime/bloodmagic/item/types/ISubItem.java @@ -4,13 +4,15 @@ import net.minecraft.item.ItemStack; import javax.annotation.Nonnull; -public interface IEnumItem { +public interface ISubItem { @Nonnull String getInternalName(); @Nonnull - ItemStack getStack(); + default ItemStack getStack() { + return getStack(1); + } @Nonnull ItemStack getStack(int count); diff --git a/src/main/java/WayofTime/bloodmagic/item/types/ReagentType.java b/src/main/java/WayofTime/bloodmagic/item/types/ReagentType.java new file mode 100644 index 00000000..0691d87a --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/item/types/ReagentType.java @@ -0,0 +1,46 @@ +package WayofTime.bloodmagic.item.types; + +import WayofTime.bloodmagic.core.RegistrarBloodMagicItems; +import net.minecraft.item.ItemStack; + +import javax.annotation.Nonnull; +import java.util.Locale; + +public enum ReagentType implements ISubItem { + + REAGENT_WATER, + REAGENT_LAVA, + REAGENT_AIR, + REAGENT_FASTMINER, + REAGENT_VOID, + REAGENT_GROWTH, + REAGENT_AFFINITY, + REAGENT_SIGHT, + REAGENT_BINDING, + REAGENT_SUPPRESSION, + REAGENT_BLOODLIGHT, + REAGENT_MAGNETISM, + REAGENT_HASTE, + REAGENT_COMPRESSION, + REAGENT_BRIDGE, + REAGENT_SEVERANCE, + REAGENT_TELEPOSITION, + REAGENT_TRANSPOSITION, + REAGENT_CLAW, + REAGENT_BOUNCE, + REAGENT_FROST, + REAGENT_HOLDING, + ; + + @Nonnull + @Override + public String getInternalName() { + return name().toLowerCase(Locale.ROOT); + } + + @Nonnull + @Override + public ItemStack getStack(int count) { + return new ItemStack(RegistrarBloodMagicItems.COMPONENT, count, ordinal()); + } +} diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java b/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java index 253aba93..a1cd31a2 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java @@ -16,6 +16,7 @@ import WayofTime.bloodmagic.core.RegistrarBloodMagicItems; import WayofTime.bloodmagic.item.alchemy.ItemCuttingFluid; import WayofTime.bloodmagic.item.alchemy.ItemLivingArmourPointsUpgrade; import WayofTime.bloodmagic.item.types.ComponentType; +import WayofTime.bloodmagic.item.types.ReagentType; import WayofTime.bloodmagic.livingArmour.downgrade.*; import WayofTime.bloodmagic.potion.BMPotionUtils; import WayofTime.bloodmagic.recipe.alchemyTable.AlchemyTableDyeableRecipe; @@ -69,38 +70,38 @@ public class ModRecipes { } public static void addAlchemyArrayRecipes() { - AlchemyArrayRecipeRegistry.registerRecipe(ComponentType.REAGENT_BINDING.getStack(), new ItemStack(Items.DIAMOND_SWORD), new AlchemyArrayEffectBinding("boundSword", Utils.setUnbreakable(new ItemStack(RegistrarBloodMagicItems.BOUND_SWORD))), new BindingAlchemyCircleRenderer()); - AlchemyArrayRecipeRegistry.registerRecipe(ComponentType.REAGENT_BINDING.getStack(), new ItemStack(Items.DIAMOND_AXE), new AlchemyArrayEffectBinding("boundAxe", Utils.setUnbreakable(new ItemStack(RegistrarBloodMagicItems.BOUND_AXE)))); - AlchemyArrayRecipeRegistry.registerRecipe(ComponentType.REAGENT_BINDING.getStack(), new ItemStack(Items.DIAMOND_PICKAXE), new AlchemyArrayEffectBinding("boundPickaxe", Utils.setUnbreakable(new ItemStack(RegistrarBloodMagicItems.BOUND_PICKAXE)))); - AlchemyArrayRecipeRegistry.registerRecipe(ComponentType.REAGENT_BINDING.getStack(), new ItemStack(Items.DIAMOND_SHOVEL), new AlchemyArrayEffectBinding("boundShovel", Utils.setUnbreakable(new ItemStack(RegistrarBloodMagicItems.BOUND_SHOVEL)))); - AlchemyArrayRecipeRegistry.registerRecipe(ComponentType.REAGENT_BINDING.getStack(), new ItemStack(Items.IRON_HELMET), new AlchemyArrayEffectBinding("livingHelmet", new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_HELMET))); - AlchemyArrayRecipeRegistry.registerRecipe(ComponentType.REAGENT_BINDING.getStack(), new ItemStack(Items.IRON_CHESTPLATE), new AlchemyArrayEffectBinding("livingChest", new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_CHEST))); - AlchemyArrayRecipeRegistry.registerRecipe(ComponentType.REAGENT_BINDING.getStack(), new ItemStack(Items.IRON_LEGGINGS), new AlchemyArrayEffectBinding("livingLegs", new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_LEGGINGS))); - AlchemyArrayRecipeRegistry.registerRecipe(ComponentType.REAGENT_BINDING.getStack(), new ItemStack(Items.IRON_BOOTS), new AlchemyArrayEffectBinding("livingBoots", new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_BOOTS))); + AlchemyArrayRecipeRegistry.registerRecipe(ReagentType.REAGENT_BINDING.getStack(), new ItemStack(Items.DIAMOND_SWORD), new AlchemyArrayEffectBinding("boundSword", Utils.setUnbreakable(new ItemStack(RegistrarBloodMagicItems.BOUND_SWORD))), new BindingAlchemyCircleRenderer()); + AlchemyArrayRecipeRegistry.registerRecipe(ReagentType.REAGENT_BINDING.getStack(), new ItemStack(Items.DIAMOND_AXE), new AlchemyArrayEffectBinding("boundAxe", Utils.setUnbreakable(new ItemStack(RegistrarBloodMagicItems.BOUND_AXE)))); + AlchemyArrayRecipeRegistry.registerRecipe(ReagentType.REAGENT_BINDING.getStack(), new ItemStack(Items.DIAMOND_PICKAXE), new AlchemyArrayEffectBinding("boundPickaxe", Utils.setUnbreakable(new ItemStack(RegistrarBloodMagicItems.BOUND_PICKAXE)))); + AlchemyArrayRecipeRegistry.registerRecipe(ReagentType.REAGENT_BINDING.getStack(), new ItemStack(Items.DIAMOND_SHOVEL), new AlchemyArrayEffectBinding("boundShovel", Utils.setUnbreakable(new ItemStack(RegistrarBloodMagicItems.BOUND_SHOVEL)))); + AlchemyArrayRecipeRegistry.registerRecipe(ReagentType.REAGENT_BINDING.getStack(), new ItemStack(Items.IRON_HELMET), new AlchemyArrayEffectBinding("livingHelmet", new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_HELMET))); + AlchemyArrayRecipeRegistry.registerRecipe(ReagentType.REAGENT_BINDING.getStack(), new ItemStack(Items.IRON_CHESTPLATE), new AlchemyArrayEffectBinding("livingChest", new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_CHEST))); + AlchemyArrayRecipeRegistry.registerRecipe(ReagentType.REAGENT_BINDING.getStack(), new ItemStack(Items.IRON_LEGGINGS), new AlchemyArrayEffectBinding("livingLegs", new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_LEGGINGS))); + AlchemyArrayRecipeRegistry.registerRecipe(ReagentType.REAGENT_BINDING.getStack(), new ItemStack(Items.IRON_BOOTS), new AlchemyArrayEffectBinding("livingBoots", new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_BOOTS))); AlchemyArrayRecipeRegistry.registerCraftingRecipe(new ItemStack(Items.REDSTONE), new ItemStack(RegistrarBloodMagicItems.SLATE), new ItemStack(RegistrarBloodMagicItems.SIGIL_DIVINATION), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/DivinationSigil.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_WATER.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE), new ItemStack(RegistrarBloodMagicItems.SIGIL_WATER), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WaterSigil.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_LAVA.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE), new ItemStack(RegistrarBloodMagicItems.SIGIL_LAVA), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/LavaSigil.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_AIR.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), new ItemStack(RegistrarBloodMagicItems.SIGIL_AIR), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/AirSigil.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_FASTMINER.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), new ItemStack(RegistrarBloodMagicItems.SIGIL_FAST_MINER), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/FastMinerSigil.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_VOID.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), new ItemStack(RegistrarBloodMagicItems.SIGIL_VOID), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/VoidSigil.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_GROWTH.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), new ItemStack(RegistrarBloodMagicItems.SIGIL_GREEN_GROVE), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/GrowthSigil.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_AFFINITY.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2), new ItemStack(RegistrarBloodMagicItems.SIGIL_ELEMENTAL_AFFINITY), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/ElementalAffinitySigil.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_SIGHT.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), new ItemStack(RegistrarBloodMagicItems.SIGIL_SEER), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/SightSigil.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_HOLDING.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2), new ItemStack(RegistrarBloodMagicItems.SIGIL_HOLDING), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_BLOODLIGHT.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2), new ItemStack(RegistrarBloodMagicItems.SIGIL_BLOOD_LIGHT), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/LightSigil.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_MAGNETISM.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2), new ItemStack(RegistrarBloodMagicItems.SIGIL_MAGNETISM), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/MagnetismSigil.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_SUPPRESSION.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.SIGIL_SUPPRESSION), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/SuppressionSigil.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_HASTE.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.SIGIL_HASTE), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_BRIDGE.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.SIGIL_PHANTOM_BRIDGE), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_COMPRESSION.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.SIGIL_COMPRESSION), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_SEVERANCE.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.SIGIL_ENDER_SEVERANCE), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_TELEPOSITION.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.SIGIL_TELEPOSITION), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_TRANSPOSITION.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.SIGIL_TRANSPOSITION), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_CLAW.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2), new ItemStack(RegistrarBloodMagicItems.SIGIL_CLAW), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_BOUNCE.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), new ItemStack(RegistrarBloodMagicItems.SIGIL_BOUNCE), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); - AlchemyArrayRecipeRegistry.registerCraftingRecipe(ComponentType.REAGENT_FROST.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), new ItemStack(RegistrarBloodMagicItems.SIGIL_FROST), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ReagentType.REAGENT_WATER.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE), new ItemStack(RegistrarBloodMagicItems.SIGIL_WATER), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WaterSigil.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ReagentType.REAGENT_LAVA.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE), new ItemStack(RegistrarBloodMagicItems.SIGIL_LAVA), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/LavaSigil.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ReagentType.REAGENT_AIR.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), new ItemStack(RegistrarBloodMagicItems.SIGIL_AIR), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/AirSigil.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ReagentType.REAGENT_FASTMINER.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), new ItemStack(RegistrarBloodMagicItems.SIGIL_FAST_MINER), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/FastMinerSigil.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ReagentType.REAGENT_VOID.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), new ItemStack(RegistrarBloodMagicItems.SIGIL_VOID), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/VoidSigil.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ReagentType.REAGENT_GROWTH.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), new ItemStack(RegistrarBloodMagicItems.SIGIL_GREEN_GROVE), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/GrowthSigil.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ReagentType.REAGENT_AFFINITY.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2), new ItemStack(RegistrarBloodMagicItems.SIGIL_ELEMENTAL_AFFINITY), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/ElementalAffinitySigil.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ReagentType.REAGENT_SIGHT.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), new ItemStack(RegistrarBloodMagicItems.SIGIL_SEER), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/SightSigil.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ReagentType.REAGENT_HOLDING.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2), new ItemStack(RegistrarBloodMagicItems.SIGIL_HOLDING), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ReagentType.REAGENT_BLOODLIGHT.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2), new ItemStack(RegistrarBloodMagicItems.SIGIL_BLOOD_LIGHT), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/LightSigil.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ReagentType.REAGENT_MAGNETISM.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2), new ItemStack(RegistrarBloodMagicItems.SIGIL_MAGNETISM), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/MagnetismSigil.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ReagentType.REAGENT_SUPPRESSION.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.SIGIL_SUPPRESSION), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/SuppressionSigil.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ReagentType.REAGENT_HASTE.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.SIGIL_HASTE), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ReagentType.REAGENT_BRIDGE.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.SIGIL_PHANTOM_BRIDGE), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ReagentType.REAGENT_COMPRESSION.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.SIGIL_COMPRESSION), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ReagentType.REAGENT_SEVERANCE.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.SIGIL_ENDER_SEVERANCE), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ReagentType.REAGENT_TELEPOSITION.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.SIGIL_TELEPOSITION), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ReagentType.REAGENT_TRANSPOSITION.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.SIGIL_TRANSPOSITION), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ReagentType.REAGENT_CLAW.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2), new ItemStack(RegistrarBloodMagicItems.SIGIL_CLAW), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ReagentType.REAGENT_BOUNCE.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), new ItemStack(RegistrarBloodMagicItems.SIGIL_BOUNCE), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); + AlchemyArrayRecipeRegistry.registerCraftingRecipe(ReagentType.REAGENT_FROST.getStack(), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 1), new ItemStack(RegistrarBloodMagicItems.SIGIL_FROST), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/WIPArray.png")); AlchemyArrayRecipeRegistry.registerRecipe(new ItemStack(Items.ROTTEN_FLESH), new ItemStack(Items.ROTTEN_FLESH), new AlchemyArrayEffectAttractor("attractor"), new AttractorAlchemyCircleRenderer()); AlchemyArrayRecipeRegistry.registerRecipe(new ItemStack(Items.FEATHER), new ItemStack(Items.REDSTONE), new AlchemyArrayEffectMovement("movement"), new StaticAlchemyCircleRenderer(new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/MovementArray.png"))); @@ -109,7 +110,7 @@ public class ModRecipes { AlchemyArrayRecipeRegistry.registerRecipe(new ItemStack(Items.ARROW), new ItemStack(Items.FEATHER), new AlchemyArrayEffectSkeletonTurret("skeletonTurret"), new DualAlchemyCircleRenderer(new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/SkeletonTurret1.png"), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/SkeletonTurret2.png"))); - AlchemyArrayRecipeRegistry.registerRecipe(ComponentType.REAGENT_FASTMINER.getStack(), new ItemStack(Items.IRON_PICKAXE), new AlchemyArrayEffectSigil("fastMiner", (ISigil) RegistrarBloodMagicItems.SIGIL_FAST_MINER), new SingleAlchemyCircleRenderer(new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/FastMinerSigil.png"))); + AlchemyArrayRecipeRegistry.registerRecipe(ReagentType.REAGENT_FASTMINER.getStack(), new ItemStack(Items.IRON_PICKAXE), new AlchemyArrayEffectSigil("fastMiner", (ISigil) RegistrarBloodMagicItems.SIGIL_FAST_MINER), new SingleAlchemyCircleRenderer(new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/FastMinerSigil.png"))); } diff --git a/src/main/resources/assets/bloodmagic/blockstates/component.json b/src/main/resources/assets/bloodmagic/blockstates/component.json index eb690f3b..435f0f9a 100644 --- a/src/main/resources/assets/bloodmagic/blockstates/component.json +++ b/src/main/resources/assets/bloodmagic/blockstates/component.json @@ -6,117 +6,27 @@ }, "variants": { "type": { - "reagentwater": { - "textures": { - "layer0": "bloodmagic:items/ReagentWater" - } - }, - "reagentlava": { - "textures": { - "layer0": "bloodmagic:items/ReagentLava" - } - }, - "reagentair": { - "textures": { - "layer0": "bloodmagic:items/ReagentAir" - } - }, - "reagentfastminer": { - "textures": { - "layer0": "bloodmagic:items/ReagentFastMiner" - } - }, - "reagentvoid": { - "textures": { - "layer0": "bloodmagic:items/ReagentVoid" - } - }, - "reagentgrowth": { - "textures": { - "layer0": "bloodmagic:items/ReagentGrowth" - } - }, - "reagentaffinity": { - "textures": { - "layer0": "bloodmagic:items/ReagentAffinity" - } - }, - "reagentsight": { - "textures": { - "layer0": "bloodmagic:items/ReagentSight" - } - }, - "reagentbinding": { - "textures": { - "layer0": "bloodmagic:items/ReagentBinding" - } - }, - "reagentsuppression": { - "textures": { - "layer0": "bloodmagic:items/ReagentSuppression" - } - }, - "frameparts": { + "frame_part": { "textures": { "layer0": "bloodmagic:items/ComponentFrameParts" } }, - "reagentbloodlight": { - "textures": { - "layer0": "bloodmagic:items/ReagentBloodLight" - } - }, - "reagentmagnetism": { - "textures": { - "layer0": "bloodmagic:items/ReagentMagnetism" - } - }, - "reagenthaste": { - "textures": { - "layer0": "bloodmagic:items/ReagentHaste" - } - }, - "reagentcompression": { - "textures": { - "layer0": "bloodmagic:items/ReagentCompression" - } - }, - "reagentbridge": { - "textures": { - "layer0": "bloodmagic:items/ReagentBridge" - } - }, - "reagentseverance": { - "textures": { - "layer0": "bloodmagic:items/ReagentSeverance" - } - }, - "reagentteleposition": { - "textures": { - "layer0": "bloodmagic:items/ReagentTeleposition" - } - }, - "reagenttransposition": { - "textures": { - "layer0": "bloodmagic:items/ReagentTransposition" - } - }, - "ironsand": { + "sand_iron": { "textures": { "layer0": "bloodmagic:items/IronSand" } }, - "goldsand": { + "sand_gold": { "textures": { "layer0": "bloodmagic:items/GoldSand" } }, - "coalsand": { + "sand_coal": { "textures": { "layer0": "bloodmagic:items/CoalSand" } }, - "plantoil": { + "plant_oil": { "textures": { "layer0": "bloodmagic:items/PlantOil" } @@ -131,7 +41,7 @@ "layer0": "bloodmagic:items/Saltpeter" } }, - "neurotoxin": { + "neuro_toxin": { "textures": { "layer0": "bloodmagic:items/NeuroToxin" } @@ -141,35 +51,15 @@ "layer0": "bloodmagic:items/Antiseptic" } }, - "reagentholding": { - "textures": { - "layer0": "bloodmagic:items/ReagentHolding" - } - }, - "mundanelength": { + "catalyst_length_1": { "textures": { "layer0": "bloodmagic:items/MundaneLengtheningCatalyst" } }, - "mundanepower": { + "catalyst_power_1": { "textures": { "layer0": "bloodmagic:items/MundanePowerCatalyst" } - }, - "reagentclaw": { - "textures": { - "layer0": "bloodmagic:items/ReagentClaw" - } - }, - "reagentbounce": { - "textures": { - "layer0": "bloodmagic:items/ReagentBounce" - } - }, - "reagentfrost": { - "textures": { - "layer0": "bloodmagic:items/ReagentFrost" - } } } } diff --git a/src/main/resources/assets/bloodmagic/blockstates/reagent.json b/src/main/resources/assets/bloodmagic/blockstates/reagent.json new file mode 100644 index 00000000..ed82a929 --- /dev/null +++ b/src/main/resources/assets/bloodmagic/blockstates/reagent.json @@ -0,0 +1,121 @@ +{ + "forge_marker": 1, + "defaults": { + "model": "builtin/generated", + "transform": "forge:default-item" + }, + "variants": { + "type": { + "reagent_water": { + "textures": { + "layer0": "bloodmagic:items/ReagentWater" + } + }, + "reagent_lava": { + "textures": { + "layer0": "bloodmagic:items/ReagentLava" + } + }, + "reagent_air": { + "textures": { + "layer0": "bloodmagic:items/ReagentAir" + } + }, + "reagent_fastminer": { + "textures": { + "layer0": "bloodmagic:items/ReagentFastMiner" + } + }, + "reagent_void": { + "textures": { + "layer0": "bloodmagic:items/ReagentVoid" + } + }, + "reagent_growth": { + "textures": { + "layer0": "bloodmagic:items/ReagentGrowth" + } + }, + "reagent_affinity": { + "textures": { + "layer0": "bloodmagic:items/ReagentAffinity" + } + }, + "reagent_sight": { + "textures": { + "layer0": "bloodmagic:items/ReagentSight" + } + }, + "reagent_binding": { + "textures": { + "layer0": "bloodmagic:items/ReagentBinding" + } + }, + "reagent_suppression": { + "textures": { + "layer0": "bloodmagic:items/ReagentSuppression" + } + }, + "reagent_bloodlight": { + "textures": { + "layer0": "bloodmagic:items/ReagentBloodLight" + } + }, + "reagent_magnetism": { + "textures": { + "layer0": "bloodmagic:items/ReagentMagnetism" + } + }, + "reagent_haste": { + "textures": { + "layer0": "bloodmagic:items/ReagentHaste" + } + }, + "reagent_compression": { + "textures": { + "layer0": "bloodmagic:items/ReagentCompression" + } + }, + "reagent_bridge": { + "textures": { + "layer0": "bloodmagic:items/ReagentBridge" + } + }, + "reagent_severance": { + "textures": { + "layer0": "bloodmagic:items/ReagentSeverance" + } + }, + "reagent_teleposition": { + "textures": { + "layer0": "bloodmagic:items/ReagentTeleposition" + } + }, + "reagent_transposition": { + "textures": { + "layer0": "bloodmagic:items/ReagentTransposition" + } + }, + "reagent_holding": { + "textures": { + "layer0": "bloodmagic:items/ReagentHolding" + } + }, + "reagent_claw": { + "textures": { + "layer0": "bloodmagic:items/ReagentClaw" + } + }, + "reagent_bounce": { + "textures": { + "layer0": "bloodmagic:items/ReagentBounce" + } + }, + "reagent_frost": { + "textures": { + "layer0": "bloodmagic:items/ReagentFrost" + } + } + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/lang/en_US.lang b/src/main/resources/assets/bloodmagic/lang/en_US.lang index 1c8ac9bf..bc712392 100644 --- a/src/main/resources/assets/bloodmagic/lang/en_US.lang +++ b/src/main/resources/assets/bloodmagic/lang/en_US.lang @@ -66,47 +66,44 @@ item.bloodmagic.reagent.potentia.name=Potentia item.bloodmagic.bloodShard.weak.name=Weak Blood Shard item.bloodmagic.bloodShard.demon.name=Demon Blood Shard -item.bloodmagic.baseComponent.reagentWater.name=Water Reagent -item.bloodmagic.baseComponent.reagentLava.name=Lava Reagent -item.bloodmagic.baseComponent.reagentAir.name=Air Reagent -item.bloodmagic.baseComponent.reagentFastMiner.name=Mining Reagent -item.bloodmagic.baseComponent.reagentVoid.name=Void Reagent -item.bloodmagic.baseComponent.reagentGrowth.name=Growth Reagent -item.bloodmagic.baseComponent.reagentAffinity.name=Elemental Affinity Reagent -item.bloodmagic.baseComponent.reagentSight.name=Sight Reagent -item.bloodmagic.baseComponent.reagentBinding.name=Binding Reagent -item.bloodmagic.baseComponent.reagentSuppression.name=Suppression Reagent -item.bloodmagic.baseComponent.frameParts.name=Frame Parts -item.bloodmagic.baseComponent.reagentBloodLight.name=Blood Lamp Reagent -item.bloodmagic.baseComponent.reagentMagnetism.name=Magnetism Reagent -item.bloodmagic.baseComponent.reagentHaste.name=Haste Reagent -item.bloodmagic.baseComponent.reagentBridge.name=Phantom Bridge Reagent -item.bloodmagic.baseComponent.reagentCompression.name=Compression Reagent -item.bloodmagic.baseComponent.reagentSeverance.name=Severance Reagent -item.bloodmagic.baseComponent.reagentHolding.name=Holding Reagent -item.bloodmagic.baseComponent.reagentClaw.name=Claw Reagent -item.bloodmagic.baseComponent.reagentBounce.name=Elasticity Reagent -item.bloodmagic.baseComponent.reagentFrost.name=Frost Reagent +item.bloodmagic.reagent.reagent_water.name=Water Reagent +item.bloodmagic.reagent.reagent_lava.name=Lava Reagent +item.bloodmagic.reagent.reagent_air.name=Air Reagent +item.bloodmagic.reagent.reagent_fastMiner.name=Mining Reagent +item.bloodmagic.reagent.reagent_void.name=Void Reagent +item.bloodmagic.reagent.reagent_growth.name=Growth Reagent +item.bloodmagic.reagent.reagent_affinity.name=Elemental Affinity Reagent +item.bloodmagic.reagent.reagent_sight.name=Sight Reagent +item.bloodmagic.reagent.reagent_binding.name=Binding Reagent +item.bloodmagic.reagent.reagent_suppression.name=Suppression Reagent +item.bloodmagic.reagent.reagent_bloodlight.name=Blood Lamp Reagent +item.bloodmagic.reagent.reagent_magnetism.name=Magnetism Reagent +item.bloodmagic.reagent.reagent_haste.name=Haste Reagent +item.bloodmagic.reagent.reagent_bridge.name=Phantom Bridge Reagent +item.bloodmagic.reagent.reagent_compression.name=Compression Reagent +item.bloodmagic.reagent.reagent_severance.name=Severance Reagent +item.bloodmagic.reagent.reagent_holding.name=Holding Reagent +item.bloodmagic.reagent.reagent_claw.name=Claw Reagent +item.bloodmagic.reagent.reagent_bounce.name=Elasticity Reagent +item.bloodmagic.reagent.reagent_frost.name=Frost Reagent +item.bloodmagic.reagent.reagent_teleposition.name=Teleposition Reagent +item.bloodmagic.reagent.reagent_transposition.name=Transposition Reagent -item.bloodmagic.baseComponent.reagentTeleposition.name=Teleposition Reagent -item.bloodmagic.baseComponent.reagentTransposition.name=Transposition Reagent - -item.bloodmagic.baseComponent.ironSand.name=Iron Sand -item.bloodmagic.baseComponent.goldSand.name=Gold Sand -item.bloodmagic.baseComponent.coalSand.name=Coal Sand -item.bloodmagic.baseComponent.plantOil.name=Plant Oil -item.bloodmagic.baseComponent.sulfur.name=Sulfur -item.bloodmagic.baseComponent.saltpeter.name=Saltpeter -item.bloodmagic.baseComponent.neurotoxin.name=Neuro Toxin -item.bloodmagic.baseComponent.antiseptic.name=Antiseptic +item.bloodmagic.component.frame_part.name=Frame Parts +item.bloodmagic.component.sand_iron.name=Iron Sand +item.bloodmagic.component.sand_gold.name=Gold Sand +item.bloodmagic.component.sand_coal.name=Coal Sand +item.bloodmagic.component.plant_oil.name=Plant Oil +item.bloodmagic.component.sulfur.name=Sulfur +item.bloodmagic.component.saltpeter.name=Saltpeter +item.bloodmagic.component.neuro_toxin.name=Neuro Toxin +item.bloodmagic.component.antiseptic.name=Antiseptic +item.bloodmagic.component.catalyst_length_1.name=Simple Lengthening Catalyst +item.bloodmagic.component.catalyst_power_1.name=Simple Power Catalyst item.bloodmagic.cuttingFluid.basicCuttingFluid.name=Basic Cutting Fluid item.bloodmagic.cuttingFluid.explosive.name=Explosive Powder -item.bloodmagic.baseComponent.mundaneLength.name=Simple Lengthening Catalyst -item.bloodmagic.baseComponent.mundanePower.name=Simple Power Catalyst - - item.bloodmagic.demonCrystal.crystalDefault.name=Demon Will Crystal item.bloodmagic.demonCrystal.crystalCorrosive.name=Corrosive Will Crystal item.bloodmagic.demonCrystal.crystalDestructive.name=Destructive Will Crystal From 96c617886af921a927b83461c013935c700279b1 Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Mon, 11 Sep 2017 19:26:48 -0700 Subject: [PATCH 19/27] Fix Guide recipe --- .../bloodmagic/compat/guideapi/BloodMagicGuideAPIPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/WayofTime/bloodmagic/compat/guideapi/BloodMagicGuideAPIPlugin.java b/src/main/java/WayofTime/bloodmagic/compat/guideapi/BloodMagicGuideAPIPlugin.java index 505b88ea..8b6cff38 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/guideapi/BloodMagicGuideAPIPlugin.java +++ b/src/main/java/WayofTime/bloodmagic/compat/guideapi/BloodMagicGuideAPIPlugin.java @@ -53,6 +53,6 @@ public class BloodMagicGuideAPIPlugin implements IGuideBook { @Nullable @Override public IRecipe getRecipe(@Nonnull ItemStack bookStack) { - return new ShapelessOreRecipe(new ResourceLocation(BloodMagic.MODID, "guide"), GuideAPI.getStackFromBook(GUIDE_BOOK), new ItemStack(Items.BOOK), "glass", "feather").setRegistryName("guide"); + return new ShapelessOreRecipe(new ResourceLocation(BloodMagic.MODID, "guide"), GuideAPI.getStackFromBook(GUIDE_BOOK), new ItemStack(Items.BOOK), "blockGlass", "feather").setRegistryName("guide"); } } From a0cd54969b3f43c1d3c891a3335abf8a153c575f Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Sun, 8 Oct 2017 21:42:40 -0700 Subject: [PATCH 20/27] Begin Sigil migration --- .../WayofTime/bloodmagic/api/Constants.java | 5 +- .../bloodmagic/api/iface/IBindable.java | 16 +- .../bloodmagic/api/impl/ItemBindable.java | 4 +- .../provider/DataProviderBloodAltar.java | 2 +- .../core/RegistrarBloodMagicItems.java | 18 ++- .../bloodmagic/item/sigil/ItemSigilAir.java | 73 --------- .../item/sigil/ItemSigilBloodLight.java | 82 ---------- .../item/sigil/ItemSigilBounce.java | 22 --- .../bloodmagic/item/sigil/ItemSigilClaw.java | 22 --- .../item/sigil/ItemSigilDivination.java | 98 ------------ .../item/sigil/ItemSigilEnderSeverance.java | 30 ---- .../item/sigil/ItemSigilFastMiner.java | 52 ------ .../bloodmagic/item/sigil/ItemSigilFrost.java | 21 --- .../bloodmagic/item/sigil/sigil/ISigil.java | 51 ++++++ .../item/sigil/sigil/ItemSigil.java | 148 ++++++++++++++++++ .../item/sigil/sigil/ItemSigilDivination.java | 81 ++++++++++ .../bloodmagic/item/sigil/sigil/SigilAir.java | 52 ++++++ .../item/sigil/sigil/SigilBloodLight.java | 55 +++++++ .../item/sigil/sigil/SigilBounce.java | 22 +++ .../item/sigil/sigil/SigilClaw.java | 22 +++ .../SigilElementalAffinity.java} | 20 +-- .../item/sigil/sigil/SigilEnderSeverance.java | 26 +++ .../item/sigil/sigil/SigilFastMiner.java | 48 ++++++ .../item/sigil/sigil/SigilFrost.java | 21 +++ .../item/sigil/sigil/SigilHolding.java | 53 +++++++ .../java/WayofTime/bloodmagic/util/Utils.java | 25 ++- .../util/handler/event/GenericHandler.java | 9 ++ 27 files changed, 648 insertions(+), 430 deletions(-) delete mode 100644 src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilAir.java delete mode 100644 src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilBloodLight.java delete mode 100644 src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilBounce.java delete mode 100644 src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilClaw.java delete mode 100644 src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilDivination.java delete mode 100644 src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilEnderSeverance.java delete mode 100644 src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilFastMiner.java delete mode 100644 src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilFrost.java create mode 100644 src/main/java/WayofTime/bloodmagic/item/sigil/sigil/ISigil.java create mode 100644 src/main/java/WayofTime/bloodmagic/item/sigil/sigil/ItemSigil.java create mode 100644 src/main/java/WayofTime/bloodmagic/item/sigil/sigil/ItemSigilDivination.java create mode 100644 src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilAir.java create mode 100644 src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilBloodLight.java create mode 100644 src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilBounce.java create mode 100644 src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilClaw.java rename src/main/java/WayofTime/bloodmagic/item/sigil/{ItemSigilElementalAffinity.java => sigil/SigilElementalAffinity.java} (52%) create mode 100644 src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilEnderSeverance.java create mode 100644 src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilFastMiner.java create mode 100644 src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilFrost.java create mode 100644 src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilHolding.java diff --git a/src/main/java/WayofTime/bloodmagic/api/Constants.java b/src/main/java/WayofTime/bloodmagic/api/Constants.java index 4ead21b0..7a7640d7 100644 --- a/src/main/java/WayofTime/bloodmagic/api/Constants.java +++ b/src/main/java/WayofTime/bloodmagic/api/Constants.java @@ -7,10 +7,11 @@ import net.minecraftforge.fml.common.registry.ForgeRegistries; import java.util.Locale; +@Deprecated public class Constants { public static class NBT { - public static final String OWNER_UUID = "ownerUUID"; - public static final String OWNER_NAME = "ownerNAME"; + public static final String OWNER_UUID = "uuid"; + public static final String OWNER_NAME = "name"; public static final String USES = "uses"; public static final String ACTIVATED = "activated"; public static final String UNUSABLE = "unusable"; diff --git a/src/main/java/WayofTime/bloodmagic/api/iface/IBindable.java b/src/main/java/WayofTime/bloodmagic/api/iface/IBindable.java index 5b515342..dee1f4c6 100644 --- a/src/main/java/WayofTime/bloodmagic/api/iface/IBindable.java +++ b/src/main/java/WayofTime/bloodmagic/api/iface/IBindable.java @@ -3,6 +3,8 @@ package WayofTime.bloodmagic.api.iface; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import javax.annotation.Nullable; + /** * Implement this interface on any Item that can be bound to a player. */ @@ -16,7 +18,10 @@ public interface IBindable { * @param stack - The owned ItemStack * @return - The username of the Item's owner */ - String getOwnerName(ItemStack stack); + @Nullable + default String getOwnerName(ItemStack stack) { + return !stack.isEmpty() && stack.hasTagCompound() ? stack.getTagCompound().getString("name") : null; + } /** * Gets the UUID of the Item's owner. @@ -26,7 +31,10 @@ public interface IBindable { * @param stack - The owned ItemStack * @return - The UUID of the Item's owner */ - String getOwnerUUID(ItemStack stack); + @Nullable + default String getOwnerUUID(ItemStack stack) { + return !stack.isEmpty() && stack.hasTagCompound() ? stack.getTagCompound().getString("uuid") : null; + } /** * Called when the player attempts to bind the item. @@ -35,5 +43,7 @@ public interface IBindable { * @param stack - The ItemStack to attempt binding * @return If binding was successful. */ - boolean onBind(EntityPlayer player, ItemStack stack); + default boolean onBind(EntityPlayer player, ItemStack stack) { + return true; + } } diff --git a/src/main/java/WayofTime/bloodmagic/api/impl/ItemBindable.java b/src/main/java/WayofTime/bloodmagic/api/impl/ItemBindable.java index 11fe41a2..38a0b4c4 100644 --- a/src/main/java/WayofTime/bloodmagic/api/impl/ItemBindable.java +++ b/src/main/java/WayofTime/bloodmagic/api/impl/ItemBindable.java @@ -25,11 +25,11 @@ public class ItemBindable extends Item implements IBindable { @Override public String getOwnerName(ItemStack stack) { - return !stack.isEmpty() ? stack.getTagCompound().getString(Constants.NBT.OWNER_NAME) : null; + return !stack.isEmpty() && stack.hasTagCompound() ? stack.getTagCompound().getString(Constants.NBT.OWNER_NAME) : null; } @Override public String getOwnerUUID(ItemStack stack) { - return !stack.isEmpty() ? stack.getTagCompound().getString(Constants.NBT.OWNER_UUID) : null; + return !stack.isEmpty() && stack.hasTagCompound() ? stack.getTagCompound().getString(Constants.NBT.OWNER_UUID) : null; } } diff --git a/src/main/java/WayofTime/bloodmagic/compat/waila/provider/DataProviderBloodAltar.java b/src/main/java/WayofTime/bloodmagic/compat/waila/provider/DataProviderBloodAltar.java index 9e3ddf39..f7be07dc 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/waila/provider/DataProviderBloodAltar.java +++ b/src/main/java/WayofTime/bloodmagic/compat/waila/provider/DataProviderBloodAltar.java @@ -4,8 +4,8 @@ import WayofTime.bloodmagic.ConfigHandler; import WayofTime.bloodmagic.api.Constants; import WayofTime.bloodmagic.block.BlockAltar; import WayofTime.bloodmagic.core.RegistrarBloodMagicItems; -import WayofTime.bloodmagic.item.sigil.ItemSigilDivination; import WayofTime.bloodmagic.item.sigil.ItemSigilSeer; +import WayofTime.bloodmagic.item.sigil.sigil.ItemSigilDivination; import WayofTime.bloodmagic.tile.TileAltar; import WayofTime.bloodmagic.util.helper.TextHelper; import mcp.mobius.waila.api.IWailaConfigHandler; diff --git a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicItems.java b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicItems.java index 8d046c24..40dccbcb 100644 --- a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicItems.java +++ b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicItems.java @@ -15,6 +15,8 @@ import WayofTime.bloodmagic.item.routing.ItemFluidRouterFilter; import WayofTime.bloodmagic.item.routing.ItemNodeRouter; import WayofTime.bloodmagic.item.routing.ItemRouterFilter; import WayofTime.bloodmagic.item.sigil.*; +import WayofTime.bloodmagic.item.sigil.sigil.*; +import WayofTime.bloodmagic.item.sigil.sigil.ItemSigilDivination; import WayofTime.bloodmagic.item.soul.*; import WayofTime.bloodmagic.item.types.ComponentType; import WayofTime.bloodmagic.item.types.ReagentType; @@ -146,28 +148,28 @@ public class RegistrarBloodMagicItems { new ItemBoundAxe().setRegistryName("bound_axe"), new ItemBoundShovel().setRegistryName("bound_shovel"), new ItemSigilDivination().setRegistryName("sigil_divination"), - new ItemSigilAir().setRegistryName("sigil_air"), + new ItemSigil(new SigilAir(), "air").setRegistryName("sigil_air"), new ItemSigilWater().setRegistryName("sigil_water"), new ItemSigilLava().setRegistryName("sigil_lava"), new ItemSigilVoid().setRegistryName("sigil_void"), new ItemSigilGreenGrove().setRegistryName("sigil_green_grove"), - new ItemSigilBloodLight().setRegistryName("sigil_blood_light"), - new ItemSigilElementalAffinity().setRegistryName("sigil_elemental_affinity"), + new ItemSigil(new SigilBloodLight(), "blood_light").setRegistryName("sigil_blood_light"), + new ItemSigil(new SigilElementalAffinity(), "elemental_affinity").setRegistryName("sigil_elemental_affinity"), new ItemSigilMagnetism().setRegistryName("sigil_magnetism"), new ItemSigilSuppression().setRegistryName("sigil_suppression"), new ItemSigilHaste().setRegistryName("sigil_haste"), - new ItemSigilFastMiner().setRegistryName("sigil_fast_miner"), + new ItemSigil(new SigilFastMiner(), "fast_miner").setRegistryName("sigil_fast_miner"), new ItemSigilSeer().setRegistryName("sigil_seer"), new ItemSigilPhantomBridge().setRegistryName("sigil_phantom_bridge"), new ItemSigilWhirlwind().setRegistryName("sigil_whirlwind"), new ItemSigilCompression().setRegistryName("sigil_compression"), - new ItemSigilEnderSeverance().setRegistryName("sigil_ender_severance"), + new ItemSigil(new SigilEnderSeverance(), "ender_severance").setRegistryName("sigil_ender_severance"), new ItemSigilHolding().setRegistryName("sigil_holding"), new ItemSigilTeleposition().setRegistryName("sigil_teleposition"), new ItemSigilTransposition().setRegistryName("sigil_transposition"), - new ItemSigilClaw().setRegistryName("sigil_claw"), - new ItemSigilBounce().setRegistryName("sigil_bounce"), - new ItemSigilFrost().setRegistryName("sigil_frost"), + new ItemSigil(new SigilClaw(), "claw").setRegistryName("sigil_claw"), + new ItemSigil(new SigilBounce(), "bounce").setRegistryName("sigil_bounce"), + new ItemSigil(new SigilFrost(), "frost").setRegistryName("sigil_frost"), new ItemEnum<>(ComponentType.class, "component").setRegistryName("component"), new ItemEnum<>(ReagentType.class, "reagent").setRegistryName("reagent"), new ItemDemonCrystal().setRegistryName("item_demon_crystal"), diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilAir.java b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilAir.java deleted file mode 100644 index 885f02b5..00000000 --- a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilAir.java +++ /dev/null @@ -1,73 +0,0 @@ -package WayofTime.bloodmagic.item.sigil; - -import WayofTime.bloodmagic.api.iface.ISentientSwordEffectProvider; -import WayofTime.bloodmagic.api.iface.ISigil; -import WayofTime.bloodmagic.api.soul.EnumDemonWillType; -import WayofTime.bloodmagic.api.util.helper.NetworkHelper; -import WayofTime.bloodmagic.api.util.helper.PlayerHelper; -import WayofTime.bloodmagic.core.RegistrarBloodMagic; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.MobEffects; -import net.minecraft.init.SoundEvents; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.ActionResult; -import net.minecraft.util.EnumActionResult; -import net.minecraft.util.EnumHand; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.math.Vec3d; -import net.minecraft.world.World; - -public class ItemSigilAir extends ItemSigilBase implements ISentientSwordEffectProvider { - public ItemSigilAir() { - super("air", 50); - } - - @Override - public ActionResult onItemRightClick(World world, EntityPlayer player, EnumHand hand) { - ItemStack stack = player.getHeldItem(hand); - if (stack.getItem() instanceof ISigil.Holding) - stack = ((Holding) stack.getItem()).getHeldItem(stack, player); - if (PlayerHelper.isFakePlayer(player)) - return ActionResult.newResult(EnumActionResult.FAIL, stack); - - boolean unusable = isUnusable(stack); - if (world.isRemote && !unusable) { - Vec3d vec = player.getLookVec(); - double wantedVelocity = 1.7; - - // TODO - Revisit after potions - if (player.isPotionActive(RegistrarBloodMagic.BOOST)) { - int amplifier = player.getActivePotionEffect(RegistrarBloodMagic.BOOST).getAmplifier(); - wantedVelocity += (1 + amplifier) * (0.35); - } - - player.motionX = vec.x * wantedVelocity; - player.motionY = vec.y * wantedVelocity; - player.motionZ = vec.z * wantedVelocity; - world.playSound(null, player.posX, player.posY, player.posZ, SoundEvents.BLOCK_FIRE_EXTINGUISH, SoundCategory.BLOCKS, 0.5F, 2.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.8F); - } - - if (!world.isRemote) { - if (!player.capabilities.isCreativeMode) - this.setUnusable(stack, !NetworkHelper.getSoulNetwork(getOwnerUUID(stack)).syphonAndDamage(player, getLpUsed())); - - if (!unusable) - player.fallDistance = 0; - } - - return super.onItemRightClick(world, player, hand); - } - - @Override - public boolean applyOnHitEffect(EnumDemonWillType type, ItemStack swordStack, ItemStack providerStack, EntityLivingBase attacker, EntityLivingBase target) { - target.addPotionEffect(new PotionEffect(MobEffects.LEVITATION, 200, 0)); - return true; - } - - @Override - public boolean providesEffectForWill(EnumDemonWillType type) { - return false; - } -} diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilBloodLight.java b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilBloodLight.java deleted file mode 100644 index 5f9fd16a..00000000 --- a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilBloodLight.java +++ /dev/null @@ -1,82 +0,0 @@ -package WayofTime.bloodmagic.item.sigil; - -import WayofTime.bloodmagic.api.Constants; -import WayofTime.bloodmagic.api.iface.ISigil; -import WayofTime.bloodmagic.api.util.helper.NBTHelper; -import WayofTime.bloodmagic.api.util.helper.NetworkHelper; -import WayofTime.bloodmagic.api.util.helper.PlayerHelper; -import WayofTime.bloodmagic.core.RegistrarBloodMagicBlocks; -import WayofTime.bloodmagic.entity.projectile.EntityBloodLight; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ActionResult; -import net.minecraft.util.EnumActionResult; -import net.minecraft.util.EnumHand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.world.World; - -public class ItemSigilBloodLight extends ItemSigilBase { - public ItemSigilBloodLight() { - super("blood_light", 10); - } - - @Override - public void onUpdate(ItemStack stack, World worldIn, Entity entityIn, int itemSlot, boolean isSelected) { - if (getCooldownRemainder(stack) > 0) - reduceCooldown(stack); - } - - @Override - public ActionResult onItemRightClick(World world, EntityPlayer player, EnumHand hand) { - ItemStack stack = player.getHeldItem(hand); - if (stack.getItem() instanceof ISigil.Holding) - stack = ((Holding) stack.getItem()).getHeldItem(stack, player); - if (PlayerHelper.isFakePlayer(player)) - return ActionResult.newResult(EnumActionResult.FAIL, stack); - - RayTraceResult mop = this.rayTrace(world, player, false); - - if (getCooldownRemainder(stack) > 0) - return super.onItemRightClick(world, player, hand); - - if (mop != null && mop.typeOfHit == RayTraceResult.Type.BLOCK) { - BlockPos blockPos = mop.getBlockPos().offset(mop.sideHit); - - if (world.isAirBlock(blockPos)) { - world.setBlockState(blockPos, RegistrarBloodMagicBlocks.BLOOD_LIGHT.getDefaultState()); - if (!world.isRemote) - NetworkHelper.getSoulNetwork(getOwnerUUID(stack)).syphonAndDamage(player, getLpUsed()); - resetCooldown(stack); - player.swingArm(hand); - return super.onItemRightClick(world, player, hand); - } - } else { - if (!world.isRemote) { - world.spawnEntity(new EntityBloodLight(world, player)); - NetworkHelper.getSoulNetwork(getOwnerUUID(stack)).syphonAndDamage(player, getLpUsed()); - } - resetCooldown(stack); - } - - return super.onItemRightClick(world, player, hand); - } - - @Override - public boolean shouldCauseReequipAnimation(ItemStack oldStack, ItemStack newStack, boolean slotChanged) { - return oldStack.getItem() != newStack.getItem(); - } - - public int getCooldownRemainder(ItemStack stack) { - return NBTHelper.checkNBT(stack).getTagCompound().getInteger(Constants.NBT.TICKS_REMAINING); - } - - public void reduceCooldown(ItemStack stack) { - NBTHelper.checkNBT(stack).getTagCompound().setInteger(Constants.NBT.TICKS_REMAINING, getCooldownRemainder(stack) - 1); - } - - public void resetCooldown(ItemStack stack) { - NBTHelper.checkNBT(stack).getTagCompound().setInteger(Constants.NBT.TICKS_REMAINING, 10); - } -} diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilBounce.java b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilBounce.java deleted file mode 100644 index 37a6eccb..00000000 --- a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilBounce.java +++ /dev/null @@ -1,22 +0,0 @@ -package WayofTime.bloodmagic.item.sigil; - -import WayofTime.bloodmagic.api.util.helper.PlayerHelper; -import WayofTime.bloodmagic.core.RegistrarBloodMagic; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.PotionEffect; -import net.minecraft.world.World; - -public class ItemSigilBounce extends ItemSigilToggleableBase { - public ItemSigilBounce() { - super("bounce", 100); - } - - @Override - public void onSigilUpdate(ItemStack stack, World world, EntityPlayer player, int itemSlot, boolean isSelected) { - if (PlayerHelper.isFakePlayer(player)) - return; - - player.addPotionEffect(new PotionEffect(RegistrarBloodMagic.BOUNCE, 2, 0, true, false)); - } -} diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilClaw.java b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilClaw.java deleted file mode 100644 index 44753b5b..00000000 --- a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilClaw.java +++ /dev/null @@ -1,22 +0,0 @@ -package WayofTime.bloodmagic.item.sigil; - -import WayofTime.bloodmagic.api.util.helper.PlayerHelper; -import WayofTime.bloodmagic.core.RegistrarBloodMagic; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.PotionEffect; -import net.minecraft.world.World; - -public class ItemSigilClaw extends ItemSigilToggleableBase { - public ItemSigilClaw() { - super("claw", 100); - } - - @Override - public void onSigilUpdate(ItemStack stack, World world, EntityPlayer player, int itemSlot, boolean isSelected) { - if (PlayerHelper.isFakePlayer(player)) - return; - - player.addPotionEffect(new PotionEffect(RegistrarBloodMagic.CLING, 2, 0, true, false)); - } -} diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilDivination.java b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilDivination.java deleted file mode 100644 index bc77fa24..00000000 --- a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilDivination.java +++ /dev/null @@ -1,98 +0,0 @@ -package WayofTime.bloodmagic.item.sigil; - -import WayofTime.bloodmagic.api.altar.IBloodAltar; -import WayofTime.bloodmagic.api.iface.IAltarReader; -import WayofTime.bloodmagic.api.iface.ISigil; -import WayofTime.bloodmagic.api.util.helper.NetworkHelper; -import WayofTime.bloodmagic.api.util.helper.PlayerHelper; -import WayofTime.bloodmagic.tile.TileIncenseAltar; -import WayofTime.bloodmagic.tile.TileInversionPillar; -import WayofTime.bloodmagic.util.ChatUtil; -import WayofTime.bloodmagic.util.helper.NumeralHelper; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResult; -import net.minecraft.util.EnumActionResult; -import net.minecraft.util.EnumHand; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.TextComponentTranslation; -import net.minecraft.world.World; - -import java.util.ArrayList; -import java.util.List; - -public class ItemSigilDivination extends ItemSigilBase implements IAltarReader { - public ItemSigilDivination() { - super("divination"); - } - - @Override - public ActionResult onItemRightClick(World world, EntityPlayer player, EnumHand hand) { -// if (world instanceof WorldServer) -// { -// System.out.println("Testing..."); -//// BuildTestStructure s = new BuildTestStructure(); -//// s.placeStructureAtPosition(new Random(), Rotation.CLOCKWISE_180, (WorldServer) world, player.getPosition(), 0); -// DungeonTester.testDungeonElementWithOutput((WorldServer) world, player.getPosition()); -// } - -// if (!world.isRemote) -// { -// EntityCorruptedSheep fred = new EntityCorruptedSheep(world, EnumDemonWillType.DESTRUCTIVE); -// fred.setPosition(player.posX, player.posY, player.posZ); -// world.spawnEntityInWorld(fred); -// } - ItemStack stack = player.getHeldItem(hand); - if (stack.getItem() instanceof ISigil.Holding) - stack = ((Holding) stack.getItem()).getHeldItem(stack, player); - - if (PlayerHelper.isFakePlayer(player)) - return ActionResult.newResult(EnumActionResult.FAIL, stack); - - if (!world.isRemote) { - super.onItemRightClick(world, player, hand); - - RayTraceResult position = rayTrace(world, player, false); - - if (position == null) { - int currentEssence = NetworkHelper.getSoulNetwork(getOwnerUUID(stack)).getCurrentEssence(); - List toSend = new ArrayList(); - if (!getOwnerName(stack).equals(PlayerHelper.getUsernameFromPlayer(player))) - toSend.add(new TextComponentTranslation(tooltipBase + "otherNetwork", getOwnerName(stack))); - toSend.add(new TextComponentTranslation(tooltipBase + "currentEssence", currentEssence)); - ChatUtil.sendNoSpam(player, toSend.toArray(new ITextComponent[toSend.size()])); - } else { - if (position.typeOfHit == RayTraceResult.Type.BLOCK) { - TileEntity tile = world.getTileEntity(position.getBlockPos()); - - if (tile != null && tile instanceof IBloodAltar) { - IBloodAltar altar = (IBloodAltar) tile; - int tier = altar.getTier().ordinal() + 1; - int currentEssence = altar.getCurrentBlood(); - int capacity = altar.getCapacity(); - altar.checkTier(); - ChatUtil.sendNoSpam(player, new TextComponentTranslation(tooltipBase + "currentAltarTier", NumeralHelper.toRoman(tier)), new TextComponentTranslation(tooltipBase + "currentEssence", currentEssence), new TextComponentTranslation(tooltipBase + "currentAltarCapacity", capacity)); - } else if (tile != null && tile instanceof TileIncenseAltar) { - TileIncenseAltar altar = (TileIncenseAltar) tile; - altar.recheckConstruction(); - double tranquility = altar.tranquility; - ChatUtil.sendNoSpam(player, new TextComponentTranslation(tooltipBase + "currentTranquility", (int) ((100D * (int) (100 * tranquility)) / 100d)), new TextComponentTranslation(tooltipBase + "currentBonus", (int) (100 * altar.incenseAddition))); - } else if (tile != null && tile instanceof TileInversionPillar) { - TileInversionPillar pillar = (TileInversionPillar) tile; - double inversion = pillar.getCurrentInversion(); - ChatUtil.sendNoSpam(player, new TextComponentTranslation(tooltipBase + "currentInversion", ((int) (10 * inversion)) / 10d)); - } else - - { - int currentEssence = NetworkHelper.getSoulNetwork(getOwnerUUID(stack)).getCurrentEssence(); - ChatUtil.sendNoSpam(player, new TextComponentTranslation(tooltipBase + "currentEssence", currentEssence)); - } - } - } - } - - return super.onItemRightClick(world, player, hand); - } -} diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilEnderSeverance.java b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilEnderSeverance.java deleted file mode 100644 index 855c29ab..00000000 --- a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilEnderSeverance.java +++ /dev/null @@ -1,30 +0,0 @@ -package WayofTime.bloodmagic.item.sigil; - -import WayofTime.bloodmagic.api.util.helper.PlayerHelper; -import WayofTime.bloodmagic.core.RegistrarBloodMagic; -import net.minecraft.entity.Entity; -import net.minecraft.entity.monster.EntityEnderman; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.PotionEffect; -import net.minecraft.world.World; - -import java.util.List; - -public class ItemSigilEnderSeverance extends ItemSigilToggleableBase { - public ItemSigilEnderSeverance() { - super("ender_severance", 200); - } - - @Override - public void onSigilUpdate(ItemStack stack, World world, EntityPlayer player, int itemSlot, boolean isSelected) { - if (PlayerHelper.isFakePlayer(player)) - return; - - List entityList = world.getEntitiesWithinAABB(Entity.class, new net.minecraft.util.math.AxisAlignedBB(player.posX - 4.5, player.posY - 4.5, player.posZ - 4.5, player.posX + 4.5, player.posY + 4.5, player.posZ + 4.5)); - for (Entity entity : entityList) { - if (entity instanceof EntityEnderman) - ((EntityEnderman) entity).addPotionEffect(new PotionEffect(RegistrarBloodMagic.PLANAR_BINDING, 40, 0)); - } - } -} diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilFastMiner.java b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilFastMiner.java deleted file mode 100644 index 8c6b1a27..00000000 --- a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilFastMiner.java +++ /dev/null @@ -1,52 +0,0 @@ -package WayofTime.bloodmagic.item.sigil; - -import WayofTime.bloodmagic.api.BloodMagicAPI; -import WayofTime.bloodmagic.api.util.helper.PlayerHelper; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.MobEffects; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -import java.util.List; - -public class ItemSigilFastMiner extends ItemSigilToggleableBase { - public ItemSigilFastMiner() { - super("fast_miner", 100); - } - - @Override - public void onSigilUpdate(ItemStack stack, World world, EntityPlayer player, int itemSlot, boolean isSelected) { - if (PlayerHelper.isFakePlayer(player)) - return; - player.addPotionEffect(new PotionEffect(MobEffects.HASTE, 2, 0, true, false)); - } - - @Override - public boolean performArrayEffect(World world, BlockPos pos) { - double radius = 10; - int ticks = 600; - int potionPotency = 2; - - AxisAlignedBB bb = new AxisAlignedBB(pos).grow(radius); - List playerList = world.getEntitiesWithinAABB(EntityPlayer.class, bb); - for (EntityPlayer player : playerList) { - if (!player.isPotionActive(MobEffects.HASTE) || (player.isPotionActive(MobEffects.HASTE) && player.getActivePotionEffect(MobEffects.HASTE).getAmplifier() < potionPotency)) { - player.addPotionEffect(new PotionEffect(MobEffects.HASTE, ticks, potionPotency)); - if (!player.capabilities.isCreativeMode) { - player.hurtResistantTime = 0; - player.attackEntityFrom(BloodMagicAPI.damageSource, 1.0F); - } - } - } - - return false; - } - - @Override - public boolean hasArrayEffect() { - return true; - } -} diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilFrost.java b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilFrost.java deleted file mode 100644 index dfaab6cd..00000000 --- a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilFrost.java +++ /dev/null @@ -1,21 +0,0 @@ -package WayofTime.bloodmagic.item.sigil; - -import WayofTime.bloodmagic.api.util.helper.PlayerHelper; -import net.minecraft.enchantment.EnchantmentFrostWalker; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class ItemSigilFrost extends ItemSigilToggleableBase { - public ItemSigilFrost() { - super("frost", 100); - } - - @Override - public void onSigilUpdate(ItemStack stack, World world, EntityPlayer player, int itemSlot, boolean isSelected) { - if (PlayerHelper.isFakePlayer(player)) - return; - - EnchantmentFrostWalker.freezeNearby(player, world, player.getPosition(), 1); - } -} diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/ISigil.java b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/ISigil.java new file mode 100644 index 00000000..ddee7954 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/ISigil.java @@ -0,0 +1,51 @@ +package WayofTime.bloodmagic.item.sigil.sigil; + +import WayofTime.bloodmagic.api.iface.IBindable; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumActionResult; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; +import net.minecraft.util.NonNullList; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +import javax.annotation.Nonnegative; +import javax.annotation.Nonnull; + +public interface ISigil extends IBindable { + + @Nonnull + default EnumActionResult onRightClick(@Nonnull ItemStack stack, @Nonnull EntityPlayer player, @Nonnull World world, @Nonnull EnumHand hand) { + return EnumActionResult.PASS; + } + + default EnumActionResult onInteract(@Nonnull ItemStack stack, @Nonnull EntityPlayer player, @Nonnull World world, @Nonnull BlockPos pos, @Nonnull EnumFacing side, @Nonnull EnumHand hand) { + return EnumActionResult.PASS; + } + + @Nonnegative + int getCost(); + + interface Toggle extends ISigil { + + default void onToggle(boolean active, @Nonnull ItemStack stack, @Nonnull EntityPlayer player, @Nonnull World world, @Nonnull EnumHand hand) { + + } + + default void onUpdate(@Nonnull ItemStack stack, @Nonnull EntityPlayer player, @Nonnull World world, @Nonnegative int itemSlot, boolean isHeld) { + + } + } + + interface Holding extends ISigil { + + int getSize(ItemStack stack); + + int getEquippedSigil(ItemStack stack); + + NonNullList getHeldSigils(ItemStack stack); + + void setHeldSigils(ItemStack stack, NonNullList inventory); + } +} diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/ItemSigil.java b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/ItemSigil.java new file mode 100644 index 00000000..1550549c --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/ItemSigil.java @@ -0,0 +1,148 @@ +package WayofTime.bloodmagic.item.sigil.sigil; + +import WayofTime.bloodmagic.BloodMagic; +import WayofTime.bloodmagic.api.iface.IBindable; +import WayofTime.bloodmagic.api.util.helper.NetworkHelper; +import WayofTime.bloodmagic.api.util.helper.PlayerHelper; +import WayofTime.bloodmagic.client.IMeshProvider; +import com.google.common.collect.Lists; +import net.minecraft.client.renderer.ItemMeshDefinition; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.*; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import javax.annotation.Nullable; +import java.util.List; + +public class ItemSigil extends Item implements IBindable, IMeshProvider { + + private final ISigil sigil; + + public ItemSigil(ISigil sigil, String name) { + this.sigil = sigil; + + setCreativeTab(BloodMagic.TAB_BM); + setUnlocalizedName(BloodMagic.MODID + ".sigil." + name); + setMaxStackSize(1); + } + + @Override + public ActionResult onItemRightClick(World world, EntityPlayer player, EnumHand hand) { + if (PlayerHelper.isFakePlayer(player)) + return ActionResult.newResult(EnumActionResult.FAIL, player.getHeldItem(hand)); + + ItemStack sigilStack = getSigilStack(player, hand); + if (getOwnerUUID(sigilStack) == null) + return ActionResult.newResult(EnumActionResult.FAIL, player.getHeldItem(hand)); + + if (sigil instanceof ISigil.Toggle && player.isSneaking()) { + boolean newState = toggleState(sigilStack); + ((ISigil.Toggle) sigil).onToggle(newState, sigilStack, player, world, hand); + return ActionResult.newResult(EnumActionResult.SUCCESS, player.getHeldItem(hand)); + } + + return ActionResult.newResult(sigil.onRightClick(sigilStack, player, world, hand), player.getHeldItem(hand)); + } + + @Override + public EnumActionResult onItemUse(EntityPlayer player, World world, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { + if (PlayerHelper.isFakePlayer(player)) + return EnumActionResult.FAIL; + + return sigil.onInteract(getSigilStack(player, hand), player, world, pos, facing, hand); + } + + @Override + public void onUpdate(ItemStack stack, World world, Entity entity, int itemSlot, boolean isSelected) { + if (!(entity instanceof EntityPlayer) || PlayerHelper.isFakePlayer((EntityPlayer) entity)) + return; + + ItemStack sigilStack = stack; + if (sigil instanceof ISigil.Holding) { + ISigil.Holding holding = (ISigil.Holding) sigil; + int current = holding.getEquippedSigil(stack); + sigilStack = holding.getHeldSigils(stack).get(current); + } + + if (sigil instanceof ISigil.Toggle && isActive(sigilStack)) { + ((ISigil.Toggle) sigil).onUpdate(sigilStack, (EntityPlayer) entity, world, itemSlot, isSelected); + if (entity.ticksExisted % 100 == 0) + NetworkHelper.getSoulNetwork(getOwnerUUID(sigilStack)).syphonAndDamage((EntityPlayer) entity, sigil.getCost()); + } + } + + @Override + public String getOwnerName(ItemStack stack) { + return sigil.getOwnerName(stack); + } + + @Override + public String getOwnerUUID(ItemStack stack) { + return sigil.getOwnerUUID(stack); + } + + public boolean toggleState(ItemStack stack) { + if (!stack.hasTagCompound()) + return false; + + boolean newState = !isActive(stack); + stack.getTagCompound().setBoolean("active", newState); + return newState; + } + + public boolean isActive(ItemStack stack) { + return stack.hasTagCompound() && stack.getTagCompound().getBoolean("active"); + } + + // TODO - Need to get ISigil from holding stack + public ItemStack getSigilStack(EntityPlayer player, EnumHand hand) { + ItemStack held = player.getHeldItem(hand); + + if (sigil instanceof ISigil.Holding) { + ISigil.Holding holding = (ISigil.Holding) sigil; + int current = holding.getEquippedSigil(held); + return holding.getHeldSigils(held).get(current); + } + + return held; + } + + @Override + public boolean onBind(EntityPlayer player, ItemStack stack) { + return sigil.onBind(player, stack); + } + + @SideOnly(Side.CLIENT) + @Override + public ItemMeshDefinition getMeshDefinition() { + return s -> { + if (!(sigil instanceof ISigil.Toggle)) + return new ModelResourceLocation(s.getItem().getRegistryName(), "inventory"); + + return new ModelResourceLocation(s.getItem().getRegistryName(), "active=" + isActive(s)); + }; + } + + @Override + public List getVariants() { + if (sigil instanceof ISigil.Toggle) { + return Lists.newArrayList( + "active=true", + "active=false" + ); + } else return Lists.newArrayList("inventory"); + } + + @Nullable + @Override + public ResourceLocation getCustomLocation() { + return null; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/ItemSigilDivination.java b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/ItemSigilDivination.java new file mode 100644 index 00000000..517a96f8 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/ItemSigilDivination.java @@ -0,0 +1,81 @@ +package WayofTime.bloodmagic.item.sigil.sigil; + +import WayofTime.bloodmagic.api.altar.IBloodAltar; +import WayofTime.bloodmagic.api.iface.IAltarReader; +import WayofTime.bloodmagic.api.util.helper.NetworkHelper; +import WayofTime.bloodmagic.api.util.helper.PlayerHelper; +import WayofTime.bloodmagic.tile.TileIncenseAltar; +import WayofTime.bloodmagic.tile.TileInversionPillar; +import WayofTime.bloodmagic.util.ChatUtil; +import WayofTime.bloodmagic.util.Utils; +import WayofTime.bloodmagic.util.helper.NumeralHelper; +import com.google.common.collect.Lists; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumActionResult; +import net.minecraft.util.EnumHand; +import net.minecraft.util.math.RayTraceResult; +import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.TextComponentTranslation; +import net.minecraft.world.World; + +import javax.annotation.Nonnull; +import java.util.List; + +public class ItemSigilDivination extends ItemSigil implements IAltarReader { + + public ItemSigilDivination() { + super(new SigilDivination(), "divination"); + } + + public static class SigilDivination implements ISigil { + + @Nonnull + @Override + public EnumActionResult onRightClick(@Nonnull ItemStack stack, @Nonnull EntityPlayer player, @Nonnull World world, @Nonnull EnumHand hand) { + RayTraceResult rayTrace = Utils.rayTrace(player, false); + if (rayTrace == null || rayTrace.typeOfHit == RayTraceResult.Type.MISS) { + printNetworkInformation(stack, player); + } else if (rayTrace.typeOfHit == RayTraceResult.Type.BLOCK) { + TileEntity tile = world.getTileEntity(rayTrace.getBlockPos()); + + String tooltipBase = "tooltip.bloodmagic.sigil.divination."; + if (tile != null && tile instanceof IBloodAltar) { + IBloodAltar altar = (IBloodAltar) tile; + int tier = altar.getTier().ordinal() + 1; + int currentEssence = altar.getCurrentBlood(); + int capacity = altar.getCapacity(); + altar.checkTier(); + ChatUtil.sendNoSpam(player, new TextComponentTranslation(tooltipBase + "currentAltarTier", NumeralHelper.toRoman(tier)), new TextComponentTranslation(tooltipBase + "currentEssence", currentEssence), new TextComponentTranslation(tooltipBase + "currentAltarCapacity", capacity)); + } else if (tile != null && tile instanceof TileIncenseAltar) { + TileIncenseAltar altar = (TileIncenseAltar) tile; + altar.recheckConstruction(); + double tranquility = altar.tranquility; + ChatUtil.sendNoSpam(player, new TextComponentTranslation(tooltipBase + "currentTranquility", (int) ((100D * (int) (100 * tranquility)) / 100d)), new TextComponentTranslation(tooltipBase + "currentBonus", (int) (100 * altar.incenseAddition))); + } else if (tile != null && tile instanceof TileInversionPillar) { + TileInversionPillar pillar = (TileInversionPillar) tile; + double inversion = pillar.getCurrentInversion(); + ChatUtil.sendNoSpam(player, new TextComponentTranslation(tooltipBase + "currentInversion", ((int) (10 * inversion)) / 10d)); + } else { + printNetworkInformation(stack, player); + } + } + return EnumActionResult.PASS; + } + + @Override + public int getCost() { + return 0; + } + + private void printNetworkInformation(ItemStack sigilStack, EntityPlayer player) { + int currentEssence = NetworkHelper.getSoulNetwork(getOwnerUUID(sigilStack)).getCurrentEssence(); + List toSend = Lists.newArrayList(); + if (getOwnerName(sigilStack) != null && !getOwnerName(sigilStack).equals(PlayerHelper.getUsernameFromPlayer(player))) + toSend.add(new TextComponentTranslation("tooltip.bloodmagic.sigil.divination.otherNetwork", getOwnerName(sigilStack))); + toSend.add(new TextComponentTranslation("tooltip.bloodmagic.sigil.divination.currentEssence", currentEssence)); + ChatUtil.sendNoSpam(player, toSend.toArray(new ITextComponent[0])); + } + } +} diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilAir.java b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilAir.java new file mode 100644 index 00000000..66557822 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilAir.java @@ -0,0 +1,52 @@ +package WayofTime.bloodmagic.item.sigil.sigil; + +import WayofTime.bloodmagic.api.util.helper.NetworkHelper; +import WayofTime.bloodmagic.core.RegistrarBloodMagic; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.SoundEvents; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumActionResult; +import net.minecraft.util.EnumHand; +import net.minecraft.util.SoundCategory; +import net.minecraft.util.math.Vec3d; +import net.minecraft.world.World; + +import javax.annotation.Nonnull; + +public class SigilAir implements ISigil { + + @Nonnull + @Override + public EnumActionResult onRightClick(@Nonnull ItemStack stack, @Nonnull EntityPlayer player, @Nonnull World world, @Nonnull EnumHand hand) { + if (world.isRemote) { + Vec3d vec = player.getLookVec(); + double wantedVelocity = 1.7D; + + if (player.isPotionActive(RegistrarBloodMagic.BOOST)) { + int amplifier = player.getActivePotionEffect(RegistrarBloodMagic.BOOST).getAmplifier(); + wantedVelocity += (1.0D + amplifier) * 0.35D; + } + + player.motionX = vec.x * wantedVelocity; + player.motionY = vec.y * wantedVelocity; + player.motionZ = vec.z * wantedVelocity; + world.playSound(null, player.posX, player.posY, player.posZ, SoundEvents.BLOCK_FIRE_EXTINGUISH, SoundCategory.BLOCKS, 0.5F, 2.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.8F); + } + + if (!world.isRemote) { + boolean unusable = false; + if (!player.capabilities.isCreativeMode) + unusable = !NetworkHelper.getSoulNetwork(getOwnerUUID(stack)).syphonAndDamage(player, getCost()); + + if (!unusable) + player.fallDistance = 0; + } + + return EnumActionResult.SUCCESS; + } + + @Override + public int getCost() { + return 50; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilBloodLight.java b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilBloodLight.java new file mode 100644 index 00000000..4f871fd8 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilBloodLight.java @@ -0,0 +1,55 @@ +package WayofTime.bloodmagic.item.sigil.sigil; + +import WayofTime.bloodmagic.api.util.helper.NetworkHelper; +import WayofTime.bloodmagic.core.RegistrarBloodMagicBlocks; +import WayofTime.bloodmagic.entity.projectile.EntityBloodLight; +import WayofTime.bloodmagic.util.Utils; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.CooldownTracker; +import net.minecraft.util.EnumActionResult; +import net.minecraft.util.EnumHand; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.RayTraceResult; +import net.minecraft.world.World; + +import javax.annotation.Nonnull; + +public class SigilBloodLight implements ISigil { + + @Nonnull + @Override + public EnumActionResult onRightClick(@Nonnull ItemStack stack, @Nonnull EntityPlayer player, @Nonnull World world, @Nonnull EnumHand hand) { + Item item = stack.getItem(); + RayTraceResult mop = Utils.rayTrace(player, false); + + CooldownTracker cooldownTracker = player.getCooldownTracker(); + if (mop != null && mop.typeOfHit == RayTraceResult.Type.BLOCK) { + BlockPos blockPos = mop.getBlockPos().offset(mop.sideHit); + + if (world.getBlockState(blockPos).getBlock().isReplaceable(world, blockPos)) { + world.setBlockState(blockPos, RegistrarBloodMagicBlocks.BLOOD_LIGHT.getDefaultState()); + if (!world.isRemote) + NetworkHelper.getSoulNetwork(getOwnerUUID(stack)).syphonAndDamage(player, getCost()); + player.swingArm(hand); + cooldownTracker.setCooldown(item, 10); + return EnumActionResult.SUCCESS; + } + } else { + if (!world.isRemote) { + world.spawnEntity(new EntityBloodLight(world, player)); + NetworkHelper.getSoulNetwork(getOwnerUUID(stack)).syphonAndDamage(player, getCost()); + } + cooldownTracker.setCooldown(item, 10); + return EnumActionResult.SUCCESS; + } + + return EnumActionResult.PASS; + } + + @Override + public int getCost() { + return 10; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilBounce.java b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilBounce.java new file mode 100644 index 00000000..1d145cc6 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilBounce.java @@ -0,0 +1,22 @@ +package WayofTime.bloodmagic.item.sigil.sigil; + +import WayofTime.bloodmagic.core.RegistrarBloodMagic; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.potion.PotionEffect; +import net.minecraft.world.World; + +import javax.annotation.Nonnull; + +public class SigilBounce implements ISigil.Toggle { + + @Override + public void onUpdate(@Nonnull ItemStack stack, @Nonnull EntityPlayer player, @Nonnull World world, int itemSlot, boolean isHeld) { + player.addPotionEffect(new PotionEffect(RegistrarBloodMagic.BOUNCE, 2, 0, true, false)); + } + + @Override + public int getCost() { + return 100; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilClaw.java b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilClaw.java new file mode 100644 index 00000000..eb6aaf12 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilClaw.java @@ -0,0 +1,22 @@ +package WayofTime.bloodmagic.item.sigil.sigil; + +import WayofTime.bloodmagic.core.RegistrarBloodMagic; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.potion.PotionEffect; +import net.minecraft.world.World; + +import javax.annotation.Nonnull; + +public class SigilClaw implements ISigil.Toggle { + + @Override + public void onUpdate(@Nonnull ItemStack stack, @Nonnull EntityPlayer player, @Nonnull World world, int itemSlot, boolean isHeld) { + player.addPotionEffect(new PotionEffect(RegistrarBloodMagic.CLING, 2, 0, true, false)); + } + + @Override + public int getCost() { + return 100; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilElementalAffinity.java b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilElementalAffinity.java similarity index 52% rename from src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilElementalAffinity.java rename to src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilElementalAffinity.java index e28a310f..fac14b7e 100644 --- a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilElementalAffinity.java +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilElementalAffinity.java @@ -1,25 +1,25 @@ -package WayofTime.bloodmagic.item.sigil; +package WayofTime.bloodmagic.item.sigil.sigil; -import WayofTime.bloodmagic.api.util.helper.PlayerHelper; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.MobEffects; import net.minecraft.item.ItemStack; import net.minecraft.potion.PotionEffect; import net.minecraft.world.World; -public class ItemSigilElementalAffinity extends ItemSigilToggleableBase { - public ItemSigilElementalAffinity() { - super("elemental_affinity", 200); - } +import javax.annotation.Nonnull; + +public class SigilElementalAffinity implements ISigil.Toggle { @Override - public void onSigilUpdate(ItemStack stack, World world, EntityPlayer player, int itemSlot, boolean isSelected) { - if (PlayerHelper.isFakePlayer(player)) - return; - + public void onUpdate(@Nonnull ItemStack stack, @Nonnull EntityPlayer player, @Nonnull World world, int itemSlot, boolean isHeld) { player.fallDistance = 0; player.extinguish(); player.addPotionEffect(new PotionEffect(MobEffects.FIRE_RESISTANCE, 2, 1, true, false)); player.addPotionEffect(new PotionEffect(MobEffects.WATER_BREATHING, 2, 0, true, false)); } + + @Override + public int getCost() { + return 200; + } } diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilEnderSeverance.java b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilEnderSeverance.java new file mode 100644 index 00000000..cceff8d8 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilEnderSeverance.java @@ -0,0 +1,26 @@ +package WayofTime.bloodmagic.item.sigil.sigil; + +import WayofTime.bloodmagic.core.RegistrarBloodMagic; +import net.minecraft.entity.Entity; +import net.minecraft.entity.monster.EntityEnderman; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.potion.PotionEffect; +import net.minecraft.world.World; + +import javax.annotation.Nonnull; +import java.util.List; + +public class SigilEnderSeverance implements ISigil.Toggle { + + @Override + public void onUpdate(@Nonnull ItemStack stack, @Nonnull EntityPlayer player, @Nonnull World world, int itemSlot, boolean isHeld) { + List entityList = world.getEntitiesWithinAABB(Entity.class, new net.minecraft.util.math.AxisAlignedBB(player.posX - 4.5, player.posY - 4.5, player.posZ - 4.5, player.posX + 4.5, player.posY + 4.5, player.posZ + 4.5)); + entityList.stream().filter(e -> e instanceof EntityEnderman).forEach(e -> ((EntityEnderman) e).addPotionEffect(new PotionEffect(RegistrarBloodMagic.PLANAR_BINDING, 40, 0))); + } + + @Override + public int getCost() { + return 200; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilFastMiner.java b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilFastMiner.java new file mode 100644 index 00000000..e4fdc50c --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilFastMiner.java @@ -0,0 +1,48 @@ +package WayofTime.bloodmagic.item.sigil.sigil; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.MobEffects; +import net.minecraft.item.ItemStack; +import net.minecraft.potion.PotionEffect; +import net.minecraft.world.World; + +import javax.annotation.Nonnull; + +public class SigilFastMiner implements ISigil.Toggle { + + @Override + public void onUpdate(@Nonnull ItemStack stack, @Nonnull EntityPlayer player, @Nonnull World world, int itemSlot, boolean isHeld) { + player.addPotionEffect(new PotionEffect(MobEffects.HASTE, 2, 0, true, false)); + } + + @Override + public int getCost() { + return 100; + } + +// @Override +// public boolean performArrayEffect(World world, BlockPos pos) { +// double radius = 10; +// int ticks = 600; +// int potionPotency = 2; +// +// AxisAlignedBB bb = new AxisAlignedBB(pos).grow(radius); +// List playerList = world.getEntitiesWithinAABB(EntityPlayer.class, bb); +// for (EntityPlayer player : playerList) { +// if (!player.isPotionActive(MobEffects.HASTE) || (player.isPotionActive(MobEffects.HASTE) && player.getActivePotionEffect(MobEffects.HASTE).getAmplifier() < potionPotency)) { +// player.addPotionEffect(new PotionEffect(MobEffects.HASTE, ticks, potionPotency)); +// if (!player.capabilities.isCreativeMode) { +// player.hurtResistantTime = 0; +// player.attackEntityFrom(BloodMagicAPI.damageSource, 1.0F); +// } +// } +// } +// +// return false; +// } +// +// @Override +// public boolean hasArrayEffect() { +// return true; +// } +} diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilFrost.java b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilFrost.java new file mode 100644 index 00000000..607a447c --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilFrost.java @@ -0,0 +1,21 @@ +package WayofTime.bloodmagic.item.sigil.sigil; + +import net.minecraft.enchantment.EnchantmentFrostWalker; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +import javax.annotation.Nonnull; + +public class SigilFrost implements ISigil.Toggle { + + @Override + public void onUpdate(@Nonnull ItemStack stack, @Nonnull EntityPlayer player, @Nonnull World world, int itemSlot, boolean isHeld) { + EnchantmentFrostWalker.freezeNearby(player, world, player.getPosition(), 1); + } + + @Override + public int getCost() { + return 100; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilHolding.java b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilHolding.java new file mode 100644 index 00000000..c9827081 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilHolding.java @@ -0,0 +1,53 @@ +package WayofTime.bloodmagic.item.sigil.sigil; + +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.util.NonNullList; + +public class SigilHolding implements ISigil.Holding { + + @Override + public int getCost() { + return 0; + } + + @Override + public int getSize(ItemStack stack) { + return 5; + } + + @Override + public int getEquippedSigil(ItemStack stack) { + if (!stack.hasTagCompound() || !stack.getTagCompound().hasKey("current")) + return -1; + + return stack.getTagCompound().getInteger("current"); + } + + @Override + public NonNullList getHeldSigils(ItemStack stack) { + NonNullList inventory = NonNullList.withSize(getSize(stack), ItemStack.EMPTY); + if (!stack.hasTagCompound() || !stack.getTagCompound().hasKey("inv")) + return inventory; + + NBTTagList invTag = stack.getTagCompound().getTagList("inv", 10); + for (int i = 0; i < invTag.tagCount(); i++) + inventory.set(i, new ItemStack(invTag.getCompoundTagAt(i))); + + return inventory; + } + + @Override + public void setHeldSigils(ItemStack stack, NonNullList inventory) { + NBTTagList invTag = new NBTTagList(); + for (ItemStack invStack : inventory) + if (!invStack.isEmpty()) + invTag.appendTag(invStack.writeToNBT(new NBTTagCompound())); + + if (!stack.hasTagCompound()) + stack.setTagCompound(new NBTTagCompound()); + + stack.getTagCompound().setTag("inv", invTag); + } +} diff --git a/src/main/java/WayofTime/bloodmagic/util/Utils.java b/src/main/java/WayofTime/bloodmagic/util/Utils.java index fdfcb6a4..f2d14f7e 100644 --- a/src/main/java/WayofTime/bloodmagic/util/Utils.java +++ b/src/main/java/WayofTime/bloodmagic/util/Utils.java @@ -36,10 +36,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.DamageSource; import net.minecraft.util.EnumFacing; import net.minecraft.util.SoundCategory; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.util.math.Vec3d; +import net.minecraft.util.math.*; import net.minecraft.world.World; import net.minecraftforge.common.IPlantable; import net.minecraftforge.common.ISpecialArmor; @@ -956,4 +953,24 @@ public class Utils { stack.getTagCompound().setLong(Constants.NBT.LEAST_SIG, itemUUID.getLeastSignificantBits()); } } + + public static RayTraceResult rayTrace(EntityPlayer player, boolean useLiquids) { + float pitch = player.rotationPitch; + float yaw = player.rotationYaw; + Vec3d eyePosition = new Vec3d(player.posX, player.posY + (double) player.getEyeHeight(), player.posZ); + + float f2 = MathHelper.cos(-yaw * 0.017453292F - (float) Math.PI); + float f3 = MathHelper.sin(-yaw * 0.017453292F - (float) Math.PI); + float f4 = -MathHelper.cos(-pitch * 0.017453292F); + float f5 = MathHelper.sin(-pitch * 0.017453292F); + float f6 = f3 * f4; + float f7 = f2 * f4; + + double reachDistance = 5.0D; + if (player instanceof EntityPlayerMP) + reachDistance = ((EntityPlayerMP)player).interactionManager.getBlockReachDistance(); + + Vec3d reachPosition = eyePosition.addVector((double) f6 * reachDistance, (double) f5 * reachDistance, (double) f7 * reachDistance); + return player.getEntityWorld().rayTraceBlocks(eyePosition, reachPosition, useLiquids, !useLiquids, false); + } } diff --git a/src/main/java/WayofTime/bloodmagic/util/handler/event/GenericHandler.java b/src/main/java/WayofTime/bloodmagic/util/handler/event/GenericHandler.java index defb55fa..ee83e923 100644 --- a/src/main/java/WayofTime/bloodmagic/util/handler/event/GenericHandler.java +++ b/src/main/java/WayofTime/bloodmagic/util/handler/event/GenericHandler.java @@ -38,6 +38,7 @@ import WayofTime.bloodmagic.util.helper.TextHelper; import com.google.common.base.Strings; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.resources.I18n; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -69,6 +70,7 @@ import net.minecraftforge.event.entity.living.LivingDropsEvent; import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent; import net.minecraftforge.event.entity.living.LivingFallEvent; import net.minecraftforge.event.entity.living.LivingHurtEvent; +import net.minecraftforge.event.entity.player.ItemTooltipEvent; import net.minecraftforge.event.entity.player.PlayerEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.event.entity.player.PlayerPickupXpEvent; @@ -371,6 +373,13 @@ public class GenericHandler { } } + @SubscribeEvent(priority = EventPriority.HIGH) + public void onTooltip(ItemTooltipEvent event) { + if (event.getItemStack().getItem() instanceof IBindable) + if (((IBindable) event.getItemStack().getItem()).getOwnerUUID(event.getItemStack()) != null) + event.getToolTip().add(I18n.format("tooltip.bloodmagic.currentOwner", PlayerHelper.getUsernameFromStack(event.getItemStack()))); + } + @SubscribeEvent public void selfSacrificeEvent(SacrificeKnifeUsedEvent event) { EntityPlayer player = event.player; From 2a1911ea07edf00d73afb7baa401aa16b4b0cc7d Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Mon, 9 Oct 2017 12:29:43 -0700 Subject: [PATCH 21/27] Improve model handling --- .../bloodmagic/block/BlockAltar.java | 7 ++-- .../bloodmagic/block/BlockBloodTank.java | 8 ++--- .../bloodmagic/block/BlockDemonCrucible.java | 7 ++-- .../block/BlockDemonCrystallizer.java | 7 ++-- .../block/BlockDemonPillarBase.java | 9 ++--- .../block/BlockDemonPillarCapBase.java | 10 ++---- .../bloodmagic/block/BlockDemonPylon.java | 7 ++-- .../block/BlockDemonStairsBase.java | 9 ++--- .../bloodmagic/block/BlockDemonWallBase.java | 9 ++--- .../bloodmagic/block/BlockIncenseAltar.java | 7 ++-- .../block/BlockInversionPillar.java | 7 ++-- .../block/BlockInversionPillarEnd.java | 7 ++-- .../bloodmagic/block/BlockPhantom.java | 7 ++-- .../bloodmagic/block/BlockRoutingNode.java | 5 +-- .../bloodmagic/block/BlockSoulForge.java | 7 ++-- .../bloodmagic/block/BlockSpectral.java | 7 ++-- .../bloodmagic/block/BlockTeleposer.java | 7 ++-- .../WayofTime/bloodmagic/block/IBMBlock.java | 3 ++ .../bloodmagic/block/base/BlockEnum.java | 10 +++--- .../bloodmagic/client/IMeshProvider.java | 10 +++--- .../bloodmagic/client/IVariantProvider.java | 9 ++++- .../item/ItemActivationCrystal.java | 11 +++---- .../bloodmagic/item/ItemAltarMaker.java | 7 ++-- .../bloodmagic/item/ItemArcaneAshes.java | 7 ++-- .../bloodmagic/item/ItemBloodShard.java | 9 +++-- .../bloodmagic/item/ItemBoundAxe.java | 27 --------------- .../bloodmagic/item/ItemBoundPickaxe.java | 27 --------------- .../bloodmagic/item/ItemBoundShovel.java | 27 --------------- .../bloodmagic/item/ItemBoundSword.java | 17 ++-------- .../bloodmagic/item/ItemBoundTool.java | 19 ++++++++++- .../item/ItemDaggerOfSacrifice.java | 7 ++-- .../bloodmagic/item/ItemDemonCrystal.java | 7 ++-- .../bloodmagic/item/ItemDemonWillGauge.java | 7 ++-- .../WayofTime/bloodmagic/item/ItemEnum.java | 8 ++--- .../bloodmagic/item/ItemExperienceBook.java | 9 +++-- .../bloodmagic/item/ItemInscriptionTool.java | 7 ++-- .../bloodmagic/item/ItemLavaCrystal.java | 7 ++-- .../bloodmagic/item/ItemPotionFlask.java | 13 ++------ .../bloodmagic/item/ItemRitualDiviner.java | 11 +++---- .../bloodmagic/item/ItemRitualReader.java | 7 ++-- .../item/ItemSacrificialDagger.java | 12 +------ .../bloodmagic/item/ItemSanguineBook.java | 5 +-- .../WayofTime/bloodmagic/item/ItemSlate.java | 15 ++++----- .../item/ItemTelepositionFocus.java | 13 ++++---- .../bloodmagic/item/ItemUpgradeTome.java | 7 ++-- .../bloodmagic/item/ItemUpgradeTrainer.java | 7 ++-- .../item/alchemy/ItemCuttingFluid.java | 7 ++-- .../ItemLivingArmourPointsUpgrade.java | 7 ++-- .../item/armour/ItemLivingArmour.java | 18 +++++----- .../item/armour/ItemSentientArmour.java | 18 +++++----- .../item/block/ItemBlockAlchemyTable.java | 5 +-- .../item/gear/ItemPackSacrifice.java | 7 ++-- .../item/gear/ItemPackSelfSacrifice.java | 7 ++-- .../item/routing/ItemFluidRouterFilter.java | 7 ++-- .../item/routing/ItemNodeRouter.java | 7 ++-- .../item/routing/ItemRouterFilter.java | 13 ++++---- .../bloodmagic/item/sigil/ItemSigilBase.java | 7 ++-- .../item/sigil/ItemSigilHolding.java | 5 +-- .../item/sigil/ItemSigilToggleableBase.java | 19 ++--------- .../item/sigil/sigil/ItemSigil.java | 24 +++++--------- .../bloodmagic/item/soul/ItemMonsterSoul.java | 11 +++---- .../item/soul/ItemSentientArmourGem.java | 26 ++++++--------- .../bloodmagic/item/soul/ItemSentientAxe.java | 18 ++-------- .../bloodmagic/item/soul/ItemSentientBow.java | 5 +-- .../item/soul/ItemSentientPickaxe.java | 18 ++-------- .../item/soul/ItemSentientShovel.java | 18 ++-------- .../item/soul/ItemSentientSword.java | 18 ++-------- .../bloodmagic/item/soul/ItemSoulGem.java | 30 +++++++---------- .../bloodmagic/item/soul/ItemSoulSnare.java | 7 ++-- .../bloodmagic/proxy/ClientProxy.java | 33 ------------------- .../bloodmagic/proxy/CommonProxy.java | 10 ------ .../bloodmagic/registry/ModRecipes.java | 3 +- .../bloodmagic/blockstates/sigil_air.json | 10 +++--- .../blockstates/sigil_blood_light.json | 10 +++--- .../blockstates/sigil_divination.json | 10 +++--- 75 files changed, 283 insertions(+), 547 deletions(-) diff --git a/src/main/java/WayofTime/bloodmagic/block/BlockAltar.java b/src/main/java/WayofTime/bloodmagic/block/BlockAltar.java index 886bbe25..aeb13014 100644 --- a/src/main/java/WayofTime/bloodmagic/block/BlockAltar.java +++ b/src/main/java/WayofTime/bloodmagic/block/BlockAltar.java @@ -16,6 +16,7 @@ import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.tile.TileAltar; import WayofTime.bloodmagic.util.Utils; import com.google.common.base.Strings; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; @@ -163,10 +164,8 @@ public class BlockAltar extends Block implements IVariantProvider, IDocumentedBl // IVariantProvider @Override - public List> getVariants() { - List> ret = new ArrayList>(); - ret.add(new ImmutablePair(0, "normal")); - return ret; + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "normal"); } // IDocumentedBlock diff --git a/src/main/java/WayofTime/bloodmagic/block/BlockBloodTank.java b/src/main/java/WayofTime/bloodmagic/block/BlockBloodTank.java index 6637e06d..b8354f7e 100644 --- a/src/main/java/WayofTime/bloodmagic/block/BlockBloodTank.java +++ b/src/main/java/WayofTime/bloodmagic/block/BlockBloodTank.java @@ -6,6 +6,7 @@ import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.item.block.ItemBlockBloodTank; import WayofTime.bloodmagic.tile.TileBloodTank; import com.google.common.collect.Lists; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; @@ -195,11 +196,8 @@ public class BlockBloodTank extends BlockInteger implements IVariantProvider, IB // IVariantProvider @Override - public List> getVariants() { - List> ret = Lists.newArrayList(); + public void populateVariants(Int2ObjectMap variants) { for (int i = 0; i < TileBloodTank.CAPACITIES.length; i++) - ret.add(Pair.of(i, "inventory")); - - return ret; + variants.put(i, "inventory"); } } diff --git a/src/main/java/WayofTime/bloodmagic/block/BlockDemonCrucible.java b/src/main/java/WayofTime/bloodmagic/block/BlockDemonCrucible.java index b0bfcfb1..ba562cab 100644 --- a/src/main/java/WayofTime/bloodmagic/block/BlockDemonCrucible.java +++ b/src/main/java/WayofTime/bloodmagic/block/BlockDemonCrucible.java @@ -6,6 +6,7 @@ import WayofTime.bloodmagic.api.soul.IDiscreteDemonWill; import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.tile.TileDemonCrucible; import WayofTime.bloodmagic.util.Utils; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; @@ -100,10 +101,8 @@ public class BlockDemonCrucible extends Block implements IVariantProvider, IBMBl } @Override - public List> getVariants() { - List> ret = new ArrayList>(); - ret.add(new ImmutablePair(0, "normal")); - return ret; + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "normal"); } @Override diff --git a/src/main/java/WayofTime/bloodmagic/block/BlockDemonCrystallizer.java b/src/main/java/WayofTime/bloodmagic/block/BlockDemonCrystallizer.java index 0b255c05..9377a5c5 100644 --- a/src/main/java/WayofTime/bloodmagic/block/BlockDemonCrystallizer.java +++ b/src/main/java/WayofTime/bloodmagic/block/BlockDemonCrystallizer.java @@ -3,6 +3,7 @@ package WayofTime.bloodmagic.block; import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.tile.TileDemonCrystallizer; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; @@ -68,10 +69,8 @@ public class BlockDemonCrystallizer extends BlockContainer implements IVariantPr } @Override - public List> getVariants() { - List> ret = new ArrayList>(); - ret.add(new ImmutablePair(0, "normal")); - return ret; + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "normal"); } @Override diff --git a/src/main/java/WayofTime/bloodmagic/block/BlockDemonPillarBase.java b/src/main/java/WayofTime/bloodmagic/block/BlockDemonPillarBase.java index 44c7f95f..5ff97e5b 100644 --- a/src/main/java/WayofTime/bloodmagic/block/BlockDemonPillarBase.java +++ b/src/main/java/WayofTime/bloodmagic/block/BlockDemonPillarBase.java @@ -3,6 +3,7 @@ package WayofTime.bloodmagic.block; import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.block.base.BlockEnumPillar; import com.google.common.collect.Lists; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; import net.minecraft.util.EnumFacing; @@ -24,16 +25,12 @@ public class BlockDemonPillarBase & IStringSerializable> exten } @Override - public List> getVariants() { - List> ret = Lists.newArrayList(); - + public void populateVariants(Int2ObjectMap variants) { //This is done to make the ItemBlocks have the proper model EnumFacing.Axis[] axis = new EnumFacing.Axis[]{EnumFacing.Axis.Y, EnumFacing.Axis.X, EnumFacing.Axis.Z}; for (int i = 0; i < 3; i++) for (int j = 0; j < this.getTypes().length; j++) - ret.add(Pair.of(i * 5 + j, "axis=" + axis[i] + ",type=" + this.getTypes()[j])); - - return ret; + variants.put(i * 5 + j, "axis=" + axis[i] + ",type=" + this.getTypes()[j]); } } \ No newline at end of file diff --git a/src/main/java/WayofTime/bloodmagic/block/BlockDemonPillarCapBase.java b/src/main/java/WayofTime/bloodmagic/block/BlockDemonPillarCapBase.java index 51ef6dbb..e18397e1 100644 --- a/src/main/java/WayofTime/bloodmagic/block/BlockDemonPillarCapBase.java +++ b/src/main/java/WayofTime/bloodmagic/block/BlockDemonPillarCapBase.java @@ -3,6 +3,7 @@ package WayofTime.bloodmagic.block; import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.block.base.BlockEnumPillarCap; import com.google.common.collect.Lists; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; import net.minecraft.util.EnumFacing; @@ -24,15 +25,10 @@ public class BlockDemonPillarCapBase & IStringSerializable> ex } @Override - public List> getVariants() { - List> ret = Lists.newArrayList(); - + public void populateVariants(Int2ObjectMap variants) { //This is done to make the ItemBlocks have the proper model - for (int i = 0; i < EnumFacing.values().length; i++) for (int j = 0; j < this.getTypes().length; j++) - ret.add(Pair.of(i * 2 + j, "facing=" + EnumFacing.values()[i] + ",type=" + this.getTypes()[j])); - - return ret; + variants.put(i * 2 + j, "facing=" + EnumFacing.values()[i] + ",type=" + this.getTypes()[j]); } } \ No newline at end of file diff --git a/src/main/java/WayofTime/bloodmagic/block/BlockDemonPylon.java b/src/main/java/WayofTime/bloodmagic/block/BlockDemonPylon.java index 28abe0f5..f25a0e35 100644 --- a/src/main/java/WayofTime/bloodmagic/block/BlockDemonPylon.java +++ b/src/main/java/WayofTime/bloodmagic/block/BlockDemonPylon.java @@ -3,6 +3,7 @@ package WayofTime.bloodmagic.block; import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.tile.TileDemonPylon; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; @@ -61,9 +62,7 @@ public class BlockDemonPylon extends BlockContainer implements IVariantProvider } @Override - public List> getVariants() { - List> ret = new ArrayList>(); - ret.add(new ImmutablePair(0, "normal")); - return ret; + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "normal"); } } diff --git a/src/main/java/WayofTime/bloodmagic/block/BlockDemonStairsBase.java b/src/main/java/WayofTime/bloodmagic/block/BlockDemonStairsBase.java index 30166d16..457a7111 100644 --- a/src/main/java/WayofTime/bloodmagic/block/BlockDemonStairsBase.java +++ b/src/main/java/WayofTime/bloodmagic/block/BlockDemonStairsBase.java @@ -3,6 +3,7 @@ package WayofTime.bloodmagic.block; import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.block.base.BlockEnumStairs; import com.google.common.collect.Lists; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; import net.minecraft.util.IStringSerializable; @@ -23,12 +24,8 @@ public class BlockDemonStairsBase & IStringSerializable> exten } @Override - public List> getVariants() { - List> ret = Lists.newArrayList(); - + public void populateVariants(Int2ObjectMap variants) { for (int i = 0; i < this.getTypes().length; i++) - ret.add(Pair.of(i, "facing=south,half=bottom,shape=straight,type=" + this.getTypes()[i])); - - return ret; + variants.put(i, "facing=south,half=bottom,shape=straight,type=" + this.getTypes()[i]); } } \ No newline at end of file diff --git a/src/main/java/WayofTime/bloodmagic/block/BlockDemonWallBase.java b/src/main/java/WayofTime/bloodmagic/block/BlockDemonWallBase.java index 2ad6bfe1..93fab1f7 100644 --- a/src/main/java/WayofTime/bloodmagic/block/BlockDemonWallBase.java +++ b/src/main/java/WayofTime/bloodmagic/block/BlockDemonWallBase.java @@ -3,6 +3,7 @@ package WayofTime.bloodmagic.block; import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.block.base.BlockEnumWall; import com.google.common.collect.Lists; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; import net.minecraft.util.IStringSerializable; @@ -23,12 +24,8 @@ public class BlockDemonWallBase & IStringSerializable> extends } @Override - public List> getVariants() { - List> ret = Lists.newArrayList(); - + public void populateVariants(Int2ObjectMap variants) { for (int i = 0; i < this.getTypes().length; i++) - ret.add(Pair.of(i, "east=true,north=false,south=false,type=" + this.getTypes()[i] + ",up=true,west=true")); - - return ret; + variants.put(i, "east=true,north=false,south=false,type=" + this.getTypes()[i] + ",up=true,west=true"); } } \ No newline at end of file diff --git a/src/main/java/WayofTime/bloodmagic/block/BlockIncenseAltar.java b/src/main/java/WayofTime/bloodmagic/block/BlockIncenseAltar.java index af051063..c6aa9870 100644 --- a/src/main/java/WayofTime/bloodmagic/block/BlockIncenseAltar.java +++ b/src/main/java/WayofTime/bloodmagic/block/BlockIncenseAltar.java @@ -3,6 +3,7 @@ package WayofTime.bloodmagic.block; import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.tile.TileIncenseAltar; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; @@ -84,10 +85,8 @@ public class BlockIncenseAltar extends Block implements IVariantProvider, IBMBlo } @Override - public List> getVariants() { - List> ret = new ArrayList>(); - ret.add(new ImmutablePair(0, "normal")); - return ret; + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "normal"); } @Override diff --git a/src/main/java/WayofTime/bloodmagic/block/BlockInversionPillar.java b/src/main/java/WayofTime/bloodmagic/block/BlockInversionPillar.java index 03040157..0b49e8db 100644 --- a/src/main/java/WayofTime/bloodmagic/block/BlockInversionPillar.java +++ b/src/main/java/WayofTime/bloodmagic/block/BlockInversionPillar.java @@ -4,6 +4,7 @@ import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.block.base.BlockEnum; import WayofTime.bloodmagic.block.enums.EnumSubWillType; import WayofTime.bloodmagic.tile.TileInversionPillar; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; import net.minecraft.block.state.BlockStateContainer; @@ -73,11 +74,9 @@ public class BlockInversionPillar extends BlockEnum { } @Override - public List> getVariants() { - List> ret = new ArrayList>(); + public void populateVariants(Int2ObjectMap variants) { for (int i = 0; i < this.getTypes().length; i++) - ret.add(Pair.of(i, "static=false,type=" + this.getTypes()[i])); - return ret; + variants.put(i, "static=false,type=" + this.getTypes()[i]); } @Override diff --git a/src/main/java/WayofTime/bloodmagic/block/BlockInversionPillarEnd.java b/src/main/java/WayofTime/bloodmagic/block/BlockInversionPillarEnd.java index 9b0e3067..d5669c54 100644 --- a/src/main/java/WayofTime/bloodmagic/block/BlockInversionPillarEnd.java +++ b/src/main/java/WayofTime/bloodmagic/block/BlockInversionPillarEnd.java @@ -4,6 +4,7 @@ import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.block.base.BlockEnum; import WayofTime.bloodmagic.block.enums.EnumInversionCap; import WayofTime.bloodmagic.client.IVariantProvider; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; @@ -54,10 +55,8 @@ public class BlockInversionPillarEnd extends BlockEnum impleme } @Override - public List> getVariants() { - List> ret = new ArrayList>(); + public void populateVariants(Int2ObjectMap variants) { for (int i = 0; i < this.getTypes().length; i++) - ret.add(new ImmutablePair(i, "type=" + this.getTypes()[i])); - return ret; + variants.put(i, "type=" + this.getTypes()[i]); } } diff --git a/src/main/java/WayofTime/bloodmagic/block/BlockPhantom.java b/src/main/java/WayofTime/bloodmagic/block/BlockPhantom.java index b488e046..12a201a1 100644 --- a/src/main/java/WayofTime/bloodmagic/block/BlockPhantom.java +++ b/src/main/java/WayofTime/bloodmagic/block/BlockPhantom.java @@ -3,6 +3,7 @@ package WayofTime.bloodmagic.block; import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.tile.TilePhantomBlock; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; @@ -85,9 +86,7 @@ public class BlockPhantom extends Block implements IVariantProvider { } @Override - public List> getVariants() { - List> ret = new ArrayList>(); - ret.add(new ImmutablePair(0, "normal")); - return ret; + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "normal"); } } diff --git a/src/main/java/WayofTime/bloodmagic/block/BlockRoutingNode.java b/src/main/java/WayofTime/bloodmagic/block/BlockRoutingNode.java index 773d98b9..f9b4fdaf 100644 --- a/src/main/java/WayofTime/bloodmagic/block/BlockRoutingNode.java +++ b/src/main/java/WayofTime/bloodmagic/block/BlockRoutingNode.java @@ -5,6 +5,7 @@ import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.tile.routing.TileMasterRoutingNode; import WayofTime.bloodmagic.tile.routing.TileRoutingNode; import com.google.common.collect.Lists; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.block.properties.PropertyBool; @@ -132,7 +133,7 @@ public class BlockRoutingNode extends Block implements IBMBlock, IVariantProvide } @Override - public List> getVariants() { - return Lists.newArrayList(Pair.of(0, "inventory")); + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "inventory"); } } diff --git a/src/main/java/WayofTime/bloodmagic/block/BlockSoulForge.java b/src/main/java/WayofTime/bloodmagic/block/BlockSoulForge.java index 2c200c2c..6fa1b227 100644 --- a/src/main/java/WayofTime/bloodmagic/block/BlockSoulForge.java +++ b/src/main/java/WayofTime/bloodmagic/block/BlockSoulForge.java @@ -4,6 +4,7 @@ import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.api.Constants; import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.tile.TileSoulForge; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.block.Block; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; @@ -98,10 +99,8 @@ public class BlockSoulForge extends Block implements IVariantProvider, IBMBlock } @Override - public List> getVariants() { - List> ret = new ArrayList>(); - ret.add(new ImmutablePair(0, "normal")); - return ret; + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "normal"); } @Override diff --git a/src/main/java/WayofTime/bloodmagic/block/BlockSpectral.java b/src/main/java/WayofTime/bloodmagic/block/BlockSpectral.java index 6aa45663..61f54108 100644 --- a/src/main/java/WayofTime/bloodmagic/block/BlockSpectral.java +++ b/src/main/java/WayofTime/bloodmagic/block/BlockSpectral.java @@ -4,6 +4,7 @@ import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.ConfigHandler; import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.tile.TileSpectralBlock; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; @@ -108,9 +109,7 @@ public class BlockSpectral extends Block implements IVariantProvider { } @Override - public List> getVariants() { - List> ret = new ArrayList>(); - ret.add(new ImmutablePair(0, "normal")); - return ret; + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "normal"); } } diff --git a/src/main/java/WayofTime/bloodmagic/block/BlockTeleposer.java b/src/main/java/WayofTime/bloodmagic/block/BlockTeleposer.java index 6ac92d99..e47581e9 100644 --- a/src/main/java/WayofTime/bloodmagic/block/BlockTeleposer.java +++ b/src/main/java/WayofTime/bloodmagic/block/BlockTeleposer.java @@ -5,6 +5,7 @@ import WayofTime.bloodmagic.api.Constants; import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.item.ItemTelepositionFocus; import WayofTime.bloodmagic.tile.TileTeleposer; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; @@ -65,10 +66,8 @@ public class BlockTeleposer extends BlockContainer implements IVariantProvider, } @Override - public List> getVariants() { - List> ret = new ArrayList>(); - ret.add(new ImmutablePair(0, "normal")); - return ret; + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "normal"); } @Override diff --git a/src/main/java/WayofTime/bloodmagic/block/IBMBlock.java b/src/main/java/WayofTime/bloodmagic/block/IBMBlock.java index 7dd5b818..479cbcdb 100644 --- a/src/main/java/WayofTime/bloodmagic/block/IBMBlock.java +++ b/src/main/java/WayofTime/bloodmagic/block/IBMBlock.java @@ -2,7 +2,10 @@ package WayofTime.bloodmagic.block; import net.minecraft.item.ItemBlock; +import javax.annotation.Nullable; + public interface IBMBlock { + @Nullable ItemBlock getItem(); } diff --git a/src/main/java/WayofTime/bloodmagic/block/base/BlockEnum.java b/src/main/java/WayofTime/bloodmagic/block/base/BlockEnum.java index 2691f724..496bbf38 100644 --- a/src/main/java/WayofTime/bloodmagic/block/base/BlockEnum.java +++ b/src/main/java/WayofTime/bloodmagic/block/base/BlockEnum.java @@ -4,6 +4,7 @@ import WayofTime.bloodmagic.block.IBMBlock; import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.item.block.base.ItemBlockEnum; import com.google.common.collect.Lists; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.block.properties.PropertyEnum; @@ -77,15 +78,12 @@ public class BlockEnum & IStringSerializable> extends Block im } @Override - public List> getVariants() { - List> variants = Lists.newArrayList(); + public void populateVariants(Int2ObjectMap variants) { if (getItem() == null) - return variants; + return; for (int i = 0; i < types.length; i++) - variants.add(Pair.of(i, getProperty().getName() + "=" + types[i].name())); - - return variants; + variants.put(i, getProperty().getName() + "=" + types[i].name()); } public E[] getTypes() { diff --git a/src/main/java/WayofTime/bloodmagic/client/IMeshProvider.java b/src/main/java/WayofTime/bloodmagic/client/IMeshProvider.java index d697da6f..a848bc65 100644 --- a/src/main/java/WayofTime/bloodmagic/client/IMeshProvider.java +++ b/src/main/java/WayofTime/bloodmagic/client/IMeshProvider.java @@ -22,11 +22,9 @@ public interface IMeshProvider { ItemMeshDefinition getMeshDefinition(); /** - * Gets all possible variants for this item - * - * @return - All possible variants for this item + * Populates a list of all possible variants for this item */ - List getVariants(); + void populateVariants(List variants); /** * If a custom ResourceLocation is required, return it here. @@ -36,5 +34,7 @@ public interface IMeshProvider { * @return - The custom ResourceLocation */ @Nullable - ResourceLocation getCustomLocation(); + default ResourceLocation getCustomLocation() { + return null; + } } diff --git a/src/main/java/WayofTime/bloodmagic/client/IVariantProvider.java b/src/main/java/WayofTime/bloodmagic/client/IVariantProvider.java index c37d9958..1d6c71e5 100644 --- a/src/main/java/WayofTime/bloodmagic/client/IVariantProvider.java +++ b/src/main/java/WayofTime/bloodmagic/client/IVariantProvider.java @@ -1,9 +1,16 @@ package WayofTime.bloodmagic.client; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import org.apache.commons.lang3.tuple.Pair; import java.util.List; public interface IVariantProvider { - List> getVariants(); + + /** + * A mapping of meta -> state variant + * + * @param variants A map to populate with all variants + */ + void populateVariants(Int2ObjectMap variants); } diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemActivationCrystal.java b/src/main/java/WayofTime/bloodmagic/item/ItemActivationCrystal.java index c0560ec7..a045bcbf 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemActivationCrystal.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemActivationCrystal.java @@ -3,6 +3,7 @@ package WayofTime.bloodmagic.item; import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.util.helper.TextHelper; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.ItemStack; @@ -50,12 +51,10 @@ public class ItemActivationCrystal extends ItemBindableBase implements IVariantP } @Override - public List> getVariants() { - List> ret = new ArrayList>(); - ret.add(new ImmutablePair(0, "type=weak")); - ret.add(new ImmutablePair(1, "type=demonic")); - ret.add(new ImmutablePair(2, "type=creative")); - return ret; + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "type=weak"); + variants.put(1, "type=demonic"); + variants.put(2, "type=creative"); } public int getCrystalLevel(ItemStack stack) { diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemAltarMaker.java b/src/main/java/WayofTime/bloodmagic/item/ItemAltarMaker.java index 442ecd96..7501b5fc 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemAltarMaker.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemAltarMaker.java @@ -12,6 +12,7 @@ import WayofTime.bloodmagic.util.ChatUtil; import WayofTime.bloodmagic.util.helper.NumeralHelper; import WayofTime.bloodmagic.util.helper.TextHelper; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.block.state.IBlockState; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.EntityPlayer; @@ -90,10 +91,8 @@ public class ItemAltarMaker extends Item implements IAltarManipulator, IVariantP } @Override - public List> getVariants() { - List> ret = new ArrayList>(); - ret.add(new ImmutablePair(0, "type=altarmaker")); - return ret; + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "type=altarmaker"); } public void setTierToBuild(EnumAltarTier tierToBuild) { diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemArcaneAshes.java b/src/main/java/WayofTime/bloodmagic/item/ItemArcaneAshes.java index 4734f6f9..11d010ca 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemArcaneAshes.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemArcaneAshes.java @@ -5,6 +5,7 @@ import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.core.RegistrarBloodMagicBlocks; import WayofTime.bloodmagic.tile.TileAlchemyArray; import WayofTime.bloodmagic.util.helper.TextHelper; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -61,9 +62,7 @@ public class ItemArcaneAshes extends Item implements IVariantProvider { } @Override - public List> getVariants() { - List> ret = new ArrayList>(); - ret.add(new ImmutablePair(0, "type=arcaneashes")); - return ret; + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "type=arcaneashes"); } } diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemBloodShard.java b/src/main/java/WayofTime/bloodmagic/item/ItemBloodShard.java index acbf2214..cdcda8d3 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemBloodShard.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemBloodShard.java @@ -2,6 +2,7 @@ package WayofTime.bloodmagic.item; import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.client.IVariantProvider; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -41,10 +42,8 @@ public class ItemBloodShard extends Item implements IVariantProvider { } @Override - public List> getVariants() { - List> ret = new ArrayList>(); - ret.add(new ImmutablePair(0, "type=weak")); - ret.add(new ImmutablePair(1, "type=demonic")); - return ret; + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "type=weak"); + variants.put(1, "type=demonic"); } } diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemBoundAxe.java b/src/main/java/WayofTime/bloodmagic/item/ItemBoundAxe.java index 26831f4c..ee4cdde1 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemBoundAxe.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemBoundAxe.java @@ -4,7 +4,6 @@ import WayofTime.bloodmagic.api.BlockStack; import WayofTime.bloodmagic.api.ItemStackWrapper; import WayofTime.bloodmagic.api.util.helper.NetworkHelper; import WayofTime.bloodmagic.client.IMeshProvider; -import WayofTime.bloodmagic.client.mesh.CustomMeshDefinitionActivatable; import com.google.common.collect.HashMultiset; import com.google.common.collect.Multimap; import com.google.common.collect.Sets; @@ -12,7 +11,6 @@ import net.minecraft.block.Block; import net.minecraft.block.BlockLeaves; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; -import net.minecraft.client.renderer.ItemMeshDefinition; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; @@ -22,17 +20,12 @@ import net.minecraft.init.Blocks; import net.minecraft.init.Enchantments; import net.minecraft.inventory.EntityEquipmentSlot; import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.fml.common.eventhandler.Event; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; -import javax.annotation.Nullable; -import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -116,24 +109,4 @@ public class ItemBoundAxe extends ItemBoundTool implements IMeshProvider { } return multimap; } - - @Override - @SideOnly(Side.CLIENT) - public ItemMeshDefinition getMeshDefinition() { - return new CustomMeshDefinitionActivatable("bound_axe"); - } - - @Nullable - @Override - public ResourceLocation getCustomLocation() { - return null; - } - - @Override - public List getVariants() { - List ret = new ArrayList(); - ret.add("active=true"); - ret.add("active=false"); - return ret; - } } diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemBoundPickaxe.java b/src/main/java/WayofTime/bloodmagic/item/ItemBoundPickaxe.java index bc2c47f3..21c7a231 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemBoundPickaxe.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemBoundPickaxe.java @@ -4,14 +4,12 @@ import WayofTime.bloodmagic.api.BlockStack; import WayofTime.bloodmagic.api.ItemStackWrapper; import WayofTime.bloodmagic.api.util.helper.NetworkHelper; import WayofTime.bloodmagic.client.IMeshProvider; -import WayofTime.bloodmagic.client.mesh.CustomMeshDefinitionActivatable; import com.google.common.collect.HashMultiset; import com.google.common.collect.Multimap; import com.google.common.collect.Sets; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; -import net.minecraft.client.renderer.ItemMeshDefinition; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; @@ -21,17 +19,12 @@ import net.minecraft.init.Blocks; import net.minecraft.init.Enchantments; import net.minecraft.inventory.EntityEquipmentSlot; import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.fml.common.eventhandler.Event; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; -import javax.annotation.Nullable; -import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -129,24 +122,4 @@ public class ItemBoundPickaxe extends ItemBoundTool implements IMeshProvider { } return multimap; } - - @Override - @SideOnly(Side.CLIENT) - public ItemMeshDefinition getMeshDefinition() { - return new CustomMeshDefinitionActivatable("bound_pickaxe"); - } - - @Nullable - @Override - public ResourceLocation getCustomLocation() { - return null; - } - - @Override - public List getVariants() { - List ret = new ArrayList(); - ret.add("active=true"); - ret.add("active=false"); - return ret; - } } diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemBoundShovel.java b/src/main/java/WayofTime/bloodmagic/item/ItemBoundShovel.java index c122d617..fd643888 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemBoundShovel.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemBoundShovel.java @@ -4,14 +4,12 @@ import WayofTime.bloodmagic.api.BlockStack; import WayofTime.bloodmagic.api.ItemStackWrapper; import WayofTime.bloodmagic.api.util.helper.NetworkHelper; import WayofTime.bloodmagic.client.IMeshProvider; -import WayofTime.bloodmagic.client.mesh.CustomMeshDefinitionActivatable; import com.google.common.collect.HashMultiset; import com.google.common.collect.Multimap; import com.google.common.collect.Sets; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; -import net.minecraft.client.renderer.ItemMeshDefinition; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; @@ -21,17 +19,12 @@ import net.minecraft.init.Blocks; import net.minecraft.init.Enchantments; import net.minecraft.inventory.EntityEquipmentSlot; import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.world.BlockEvent; import net.minecraftforge.fml.common.eventhandler.Event; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; -import javax.annotation.Nullable; -import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -115,24 +108,4 @@ public class ItemBoundShovel extends ItemBoundTool implements IMeshProvider { } return multimap; } - - @Override - @SideOnly(Side.CLIENT) - public ItemMeshDefinition getMeshDefinition() { - return new CustomMeshDefinitionActivatable("bound_shovel"); - } - - @Nullable - @Override - public ResourceLocation getCustomLocation() { - return null; - } - - @Override - public List getVariants() { - List ret = new ArrayList(); - ret.add("active=true"); - ret.add("active=false"); - return ret; - } } diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemBoundSword.java b/src/main/java/WayofTime/bloodmagic/item/ItemBoundSword.java index cf6a8809..183d72ef 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemBoundSword.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemBoundSword.java @@ -30,14 +30,11 @@ import net.minecraft.item.ItemSword; import net.minecraft.util.ActionResult; import net.minecraft.util.EnumHand; import net.minecraft.util.NonNullList; -import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; -import javax.annotation.Nullable; -import java.util.ArrayList; import java.util.List; public class ItemBoundSword extends ItemSword implements IBindable, IActivatable, IMeshProvider { @@ -133,18 +130,10 @@ public class ItemBoundSword extends ItemSword implements IBindable, IActivatable return new CustomMeshDefinitionActivatable("bound_sword"); } - @Nullable @Override - public ResourceLocation getCustomLocation() { - return null; - } - - @Override - public List getVariants() { - List ret = new ArrayList(); - ret.add("active=true"); - ret.add("active=false"); - return ret; + public void populateVariants(List variants) { + variants.add("active=true"); + variants.add("active=false"); } // IBindable diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemBoundTool.java b/src/main/java/WayofTime/bloodmagic/item/ItemBoundTool.java index 0bbcea86..5c830bde 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemBoundTool.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemBoundTool.java @@ -9,6 +9,8 @@ import WayofTime.bloodmagic.api.iface.IBindable; import WayofTime.bloodmagic.api.util.helper.NBTHelper; import WayofTime.bloodmagic.api.util.helper.NetworkHelper; import WayofTime.bloodmagic.api.util.helper.PlayerHelper; +import WayofTime.bloodmagic.client.IMeshProvider; +import WayofTime.bloodmagic.client.mesh.CustomMeshDefinitionActivatable; import WayofTime.bloodmagic.core.RegistrarBloodMagicItems; import WayofTime.bloodmagic.util.Utils; import WayofTime.bloodmagic.util.helper.TextHelper; @@ -19,6 +21,7 @@ import com.google.common.collect.Multimap; import com.google.common.collect.Multiset; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.ItemMeshDefinition; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; @@ -45,7 +48,7 @@ import java.util.List; import java.util.Map; import java.util.Set; -public class ItemBoundTool extends ItemTool implements IBindable, IActivatable { +public class ItemBoundTool extends ItemTool implements IBindable, IActivatable, IMeshProvider { public final int chargeTime = 30; protected final String tooltipBase; private final String name; @@ -250,6 +253,20 @@ public class ItemBoundTool extends ItemTool implements IBindable, IActivatable { return null; } + // IMeshProvider + + @Override + @SideOnly(Side.CLIENT) + public ItemMeshDefinition getMeshDefinition() { + return new CustomMeshDefinitionActivatable("bound_" + name); + } + + @Override + public void populateVariants(List variants) { + variants.add("active=true"); + variants.add("active=false"); + } + public String getTooltipBase() { return tooltipBase; } diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemDaggerOfSacrifice.java b/src/main/java/WayofTime/bloodmagic/item/ItemDaggerOfSacrifice.java index b5cdb49c..0b23856f 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemDaggerOfSacrifice.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemDaggerOfSacrifice.java @@ -6,6 +6,7 @@ import WayofTime.bloodmagic.api.util.helper.PurificationHelper; import WayofTime.bloodmagic.api_impl.BloodMagicAPI; import WayofTime.bloodmagic.client.IVariantProvider; import com.google.common.collect.Lists; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.monster.IMob; import net.minecraft.entity.passive.EntityAnimal; @@ -76,9 +77,7 @@ public class ItemDaggerOfSacrifice extends Item implements IVariantProvider { } @Override - public List> getVariants() { - List> ret = Lists.newArrayList(); - ret.add(Pair.of(0, "type=normal")); - return ret; + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "type=normal"); } } diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemDemonCrystal.java b/src/main/java/WayofTime/bloodmagic/item/ItemDemonCrystal.java index bd8143dc..169265cf 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemDemonCrystal.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemDemonCrystal.java @@ -6,6 +6,7 @@ import WayofTime.bloodmagic.api.soul.IDiscreteDemonWill; import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.core.RegistrarBloodMagicItems; import com.google.common.collect.Lists; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -90,11 +91,9 @@ public class ItemDemonCrystal extends Item implements IDiscreteDemonWill, IVaria } @Override - public List> getVariants() { - List> ret = new ArrayList>(); + public void populateVariants(Int2ObjectMap variants) { for (String name : NAMES) - ret.add(new ImmutablePair(NAMES.indexOf(name), "type=" + name)); - return ret; + variants.put(NAMES.indexOf(name), "type=" + name); } public static ItemStack getStack(String name) { diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemDemonWillGauge.java b/src/main/java/WayofTime/bloodmagic/item/ItemDemonWillGauge.java index 68dcc7cf..5c3b8927 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemDemonWillGauge.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemDemonWillGauge.java @@ -4,6 +4,7 @@ import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.api.iface.IDemonWillViewer; import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.util.helper.TextHelper; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -32,10 +33,8 @@ public class ItemDemonWillGauge extends Item implements IVariantProvider, IDemon } @Override - public List> getVariants() { - List> ret = new ArrayList>(); - ret.add(new ImmutablePair(0, "type=willgauge")); - return ret; + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "type=willgauge"); } @Override diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemEnum.java b/src/main/java/WayofTime/bloodmagic/item/ItemEnum.java index e3799a0f..e7ca9173 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemEnum.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemEnum.java @@ -4,6 +4,7 @@ import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.item.types.ISubItem; import com.google.common.collect.Lists; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -49,11 +50,8 @@ public class ItemEnum & ISubItem> extends Item implements IVar } @Override - public List> getVariants() { - List> variants = Lists.newArrayList(); + public void populateVariants(Int2ObjectMap variants) { for (int i = 0; i < types.length; i++) - variants.add(Pair.of(i, "type=" + types[i].getInternalName())); - - return variants; + variants.put(i, "type=" + types[i].getInternalName()); } } \ No newline at end of file diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemExperienceBook.java b/src/main/java/WayofTime/bloodmagic/item/ItemExperienceBook.java index 45fad002..1973bb51 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemExperienceBook.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemExperienceBook.java @@ -4,6 +4,7 @@ import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.api.util.helper.NBTHelper; import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.util.helper.TextHelper; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.SoundEvents; @@ -59,14 +60,12 @@ public class ItemExperienceBook extends Item implements IVariantProvider { giveOneLevelExpToPlayer(stack, player); } - return new ActionResult(EnumActionResult.SUCCESS, stack); + return new ActionResult<>(EnumActionResult.SUCCESS, stack); } @Override - public List> getVariants() { - List> ret = new ArrayList>(); - ret.add(new ImmutablePair(0, "type=experiencetome")); - return ret; + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "type=experiencetome"); } public void giveOneLevelExpToPlayer(ItemStack stack, EntityPlayer player) { diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemInscriptionTool.java b/src/main/java/WayofTime/bloodmagic/item/ItemInscriptionTool.java index 4481c2a2..51186953 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemInscriptionTool.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemInscriptionTool.java @@ -7,6 +7,7 @@ import WayofTime.bloodmagic.api.util.helper.NBTHelper; import WayofTime.bloodmagic.block.BlockRitualStone; import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.util.helper.TextHelper; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.block.state.IBlockState; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.creativetab.CreativeTabs; @@ -102,11 +103,9 @@ public class ItemInscriptionTool extends ItemBindableBase implements IVariantPro } @Override - public List> getVariants() { - List> ret = new ArrayList>(); + public void populateVariants(Int2ObjectMap variants) { for (int i = 1; i < EnumRuneType.values().length; i++) - ret.add(new ImmutablePair(i, "type=" + EnumRuneType.values()[i].name())); - return ret; + variants.put(i, "type=" + EnumRuneType.values()[i].name()); } public EnumRuneType getType(ItemStack stack) { diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemLavaCrystal.java b/src/main/java/WayofTime/bloodmagic/item/ItemLavaCrystal.java index c224ea7d..218f19c8 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemLavaCrystal.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemLavaCrystal.java @@ -5,6 +5,7 @@ import WayofTime.bloodmagic.api.util.helper.NetworkHelper; import WayofTime.bloodmagic.api.util.helper.PlayerHelper; import WayofTime.bloodmagic.client.IVariantProvider; import com.google.common.collect.Lists; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.MobEffects; import net.minecraft.item.ItemStack; @@ -53,9 +54,7 @@ public class ItemLavaCrystal extends ItemBindableBase implements IVariantProvide } @Override - public List> getVariants() { - List> ret = Lists.newArrayList(); - ret.add(Pair.of(0, "type=normal")); - return ret; + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "type=normal"); } } diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemPotionFlask.java b/src/main/java/WayofTime/bloodmagic/item/ItemPotionFlask.java index 3f5e15ac..4e628304 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemPotionFlask.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemPotionFlask.java @@ -4,7 +4,6 @@ import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.api.util.helper.NBTHelper; import WayofTime.bloodmagic.client.IMeshProvider; import WayofTime.bloodmagic.util.helper.TextHelper; -import com.google.common.collect.Lists; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.ItemMeshDefinition; import net.minecraft.client.renderer.block.model.ModelResourceLocation; @@ -24,7 +23,6 @@ import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; -import javax.annotation.Nullable; import java.util.List; public class ItemPotionFlask extends Item implements IMeshProvider { @@ -131,14 +129,9 @@ public class ItemPotionFlask extends Item implements IMeshProvider { }; } - @Nullable @Override - public ResourceLocation getCustomLocation() { - return null; - } - - @Override - public List getVariants() { - return Lists.newArrayList("full=true", "full=false"); + public void populateVariants(List variants) { + variants.add("full=true"); + variants.add("full=false"); } } \ No newline at end of file diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemRitualDiviner.java b/src/main/java/WayofTime/bloodmagic/item/ItemRitualDiviner.java index 616b01a2..0a8c8e2f 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemRitualDiviner.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemRitualDiviner.java @@ -16,6 +16,7 @@ import WayofTime.bloodmagic.util.Utils; import WayofTime.bloodmagic.util.handler.event.ClientHandler; import WayofTime.bloodmagic.util.helper.TextHelper; import com.google.common.base.Strings; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.client.util.ITooltipFlag; @@ -332,12 +333,10 @@ public class ItemRitualDiviner extends Item implements IVariantProvider { } @Override - public List> getVariants() { - List> ret = new ArrayList>(); - ret.add(new ImmutablePair(0, "type=basic")); - ret.add(new ImmutablePair(1, "type=dusk")); - ret.add(new ImmutablePair(2, "type=dawn")); - return ret; + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "type=basic"); + variants.put(1, "type=dusk"); + variants.put(2, "type=dawn"); } public void cycleDirection(ItemStack stack, EntityPlayer player) { diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemRitualReader.java b/src/main/java/WayofTime/bloodmagic/item/ItemRitualReader.java index 455e3f1c..dfbae3ec 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemRitualReader.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemRitualReader.java @@ -10,6 +10,7 @@ import WayofTime.bloodmagic.api.util.helper.NBTHelper; import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.util.ChatUtil; import WayofTime.bloodmagic.util.helper.TextHelper; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -233,9 +234,7 @@ public class ItemRitualReader extends Item implements IVariantProvider { } @Override - public List> getVariants() { - List> ret = new ArrayList>(); - ret.add(new ImmutablePair(0, "type=normal")); - return ret; + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "type=normal"); } } diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemSacrificialDagger.java b/src/main/java/WayofTime/bloodmagic/item/ItemSacrificialDagger.java index 1444de0e..f06cfe2b 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemSacrificialDagger.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemSacrificialDagger.java @@ -30,8 +30,6 @@ import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; -import javax.annotation.Nullable; -import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -183,17 +181,9 @@ public class ItemSacrificialDagger extends Item implements IMeshProvider { } @Override - public List getVariants() { - List variants = new ArrayList(); + public void populateVariants(List variants) { variants.add("type=normal"); variants.add("type=creative"); variants.add("type=ceremonial"); - return variants; - } - - @Nullable - @Override - public ResourceLocation getCustomLocation() { - return null; } } \ No newline at end of file diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemSanguineBook.java b/src/main/java/WayofTime/bloodmagic/item/ItemSanguineBook.java index f17328f6..2656aaba 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemSanguineBook.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemSanguineBook.java @@ -11,6 +11,7 @@ import WayofTime.bloodmagic.tile.TileAltar; import WayofTime.bloodmagic.util.ChatUtil; import WayofTime.bloodmagic.util.helper.NumeralHelper; import WayofTime.bloodmagic.util.helper.TextHelper; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.block.state.IBlockState; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.EntityPlayer; @@ -109,7 +110,7 @@ public class ItemSanguineBook extends Item implements IVariantProvider, IAltarMa // IVariantProvider @Override - public List> getVariants() { - return Collections.singletonList(Pair.of(0, "type=normal")); + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "type=normal"); } } diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemSlate.java b/src/main/java/WayofTime/bloodmagic/item/ItemSlate.java index b2564ffb..ab68166d 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemSlate.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemSlate.java @@ -3,6 +3,7 @@ package WayofTime.bloodmagic.item; import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.util.helper.TextHelper; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; @@ -51,13 +52,11 @@ public class ItemSlate extends Item implements IVariantProvider { } @Override - public List> getVariants() { - List> ret = new ArrayList>(); - ret.add(new ImmutablePair(0, "type=blank")); - ret.add(new ImmutablePair(1, "type=reinforced")); - ret.add(new ImmutablePair(2, "type=imbued")); - ret.add(new ImmutablePair(3, "type=demonic")); - ret.add(new ImmutablePair(4, "type=ethereal")); - return ret; + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "type=blank"); + variants.put(1, "type=reinforced"); + variants.put(2, "type=imbued"); + variants.put(3, "type=demonic"); + variants.put(4, "type=ethereal"); } } diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemTelepositionFocus.java b/src/main/java/WayofTime/bloodmagic/item/ItemTelepositionFocus.java index 64895638..e1926357 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemTelepositionFocus.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemTelepositionFocus.java @@ -5,6 +5,7 @@ import WayofTime.bloodmagic.api.Constants; import WayofTime.bloodmagic.api.util.helper.NBTHelper; import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.util.helper.TextHelper; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; @@ -87,13 +88,11 @@ public class ItemTelepositionFocus extends ItemBindableBase implements IVariantP } @Override - public List> getVariants() { - List> ret = new ArrayList>(); - ret.add(new ImmutablePair(0, "type=weak")); - ret.add(new ImmutablePair(1, "type=enhanced")); - ret.add(new ImmutablePair(2, "type=reinforced")); - ret.add(new ImmutablePair(3, "type=demonic")); - return ret; + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "type=weak"); + variants.put(1, "type=enhanced"); + variants.put(2, "type=reinforced"); + variants.put(3, "type=demonic"); } public World getWorld(ItemStack stack) { diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemUpgradeTome.java b/src/main/java/WayofTime/bloodmagic/item/ItemUpgradeTome.java index c7bd3f2c..2a7e87b8 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemUpgradeTome.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemUpgradeTome.java @@ -8,6 +8,7 @@ import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.item.armour.ItemLivingArmour; import WayofTime.bloodmagic.livingArmour.LivingArmour; import WayofTime.bloodmagic.util.helper.TextHelper; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; @@ -96,10 +97,8 @@ public class ItemUpgradeTome extends Item implements IVariantProvider { } @Override - public List> getVariants() { - List> ret = new ArrayList>(); - ret.add(new ImmutablePair(0, "type=upgradetome")); - return ret; + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "type=upgradetome"); } @Override diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemUpgradeTrainer.java b/src/main/java/WayofTime/bloodmagic/item/ItemUpgradeTrainer.java index f22ac3c0..459b25ef 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemUpgradeTrainer.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemUpgradeTrainer.java @@ -7,6 +7,7 @@ import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; import WayofTime.bloodmagic.api.util.helper.ItemHelper.LivingUpgrades; import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.util.helper.TextHelper; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; @@ -82,9 +83,7 @@ public class ItemUpgradeTrainer extends Item implements IUpgradeTrainer, IVarian } @Override - public List> getVariants() { - List> ret = new ArrayList>(); - ret.add(new ImmutablePair(0, "type=upgradetrainer")); - return ret; + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "type=upgradetrainer"); } } diff --git a/src/main/java/WayofTime/bloodmagic/item/alchemy/ItemCuttingFluid.java b/src/main/java/WayofTime/bloodmagic/item/alchemy/ItemCuttingFluid.java index f65f891c..6e5e1e82 100644 --- a/src/main/java/WayofTime/bloodmagic/item/alchemy/ItemCuttingFluid.java +++ b/src/main/java/WayofTime/bloodmagic/item/alchemy/ItemCuttingFluid.java @@ -6,6 +6,7 @@ import WayofTime.bloodmagic.api.util.helper.NBTHelper; import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.core.RegistrarBloodMagicItems; import WayofTime.bloodmagic.util.helper.TextHelper; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; @@ -67,11 +68,9 @@ public class ItemCuttingFluid extends Item implements IVariantProvider, ICustomA } @Override - public List> getVariants() { - List> ret = new ArrayList>(); + public void populateVariants(Int2ObjectMap variants) { for (String name : names) - ret.add(new ImmutablePair(names.indexOf(name), "type=" + name)); - return ret; + variants.put(names.indexOf(name), "type=" + name); } public int getDamageOfFluid(ItemStack stack) { diff --git a/src/main/java/WayofTime/bloodmagic/item/alchemy/ItemLivingArmourPointsUpgrade.java b/src/main/java/WayofTime/bloodmagic/item/alchemy/ItemLivingArmourPointsUpgrade.java index 30e35efd..269587c5 100644 --- a/src/main/java/WayofTime/bloodmagic/item/alchemy/ItemLivingArmourPointsUpgrade.java +++ b/src/main/java/WayofTime/bloodmagic/item/alchemy/ItemLivingArmourPointsUpgrade.java @@ -7,6 +7,7 @@ import WayofTime.bloodmagic.item.armour.ItemLivingArmour; import WayofTime.bloodmagic.livingArmour.LivingArmour; import WayofTime.bloodmagic.util.helper.TextHelper; import com.google.common.collect.Iterables; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.EntityLivingBase; @@ -118,11 +119,9 @@ public class ItemLivingArmourPointsUpgrade extends Item implements IVariantProvi } @Override - public List> getVariants() { - List> ret = new ArrayList>(); + public void populateVariants(Int2ObjectMap variants) { for (String name : names) - ret.add(new ImmutablePair(names.indexOf(name), "type=" + name)); - return ret; + variants.put(names.indexOf(name), "type=" + name); } public static ItemStack getStack(String name) { diff --git a/src/main/java/WayofTime/bloodmagic/item/armour/ItemLivingArmour.java b/src/main/java/WayofTime/bloodmagic/item/armour/ItemLivingArmour.java index 55f632f9..886202e0 100644 --- a/src/main/java/WayofTime/bloodmagic/item/armour/ItemLivingArmour.java +++ b/src/main/java/WayofTime/bloodmagic/item/armour/ItemLivingArmour.java @@ -9,7 +9,6 @@ import WayofTime.bloodmagic.api.util.helper.NBTHelper; import WayofTime.bloodmagic.api.util.helper.NetworkHelper; import WayofTime.bloodmagic.client.IMeshProvider; import WayofTime.bloodmagic.core.RegistrarBloodMagicItems; -import WayofTime.bloodmagic.item.types.ComponentType; import WayofTime.bloodmagic.item.types.ReagentType; import WayofTime.bloodmagic.livingArmour.LivingArmour; import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerRepairing; @@ -45,8 +44,11 @@ import org.lwjgl.input.Keyboard; import javax.annotation.Nullable; import java.lang.reflect.Field; -import java.util.*; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.Map.Entry; +import java.util.UUID; public class ItemLivingArmour extends ItemArmor implements ISpecialArmor, IMeshProvider { public static final boolean useSpecialArmourCalculation = true; @@ -367,13 +369,11 @@ public class ItemLivingArmour extends ItemArmor implements ISpecialArmor, IMeshP } @Override - public List getVariants() { - List ret = new ArrayList(); - ret.add("armour=head"); - ret.add("armour=body"); - ret.add("armour=leg"); - ret.add("armour=feet"); - return ret; + public void populateVariants(List variants) { + variants.add("armour=head"); + variants.add("armour=body"); + variants.add("armour=leg"); + variants.add("armour=feet"); } public void setLivingArmour(ItemStack stack, LivingArmour armour, boolean forceWrite) { diff --git a/src/main/java/WayofTime/bloodmagic/item/armour/ItemSentientArmour.java b/src/main/java/WayofTime/bloodmagic/item/armour/ItemSentientArmour.java index 962a6272..63662c40 100644 --- a/src/main/java/WayofTime/bloodmagic/item/armour/ItemSentientArmour.java +++ b/src/main/java/WayofTime/bloodmagic/item/armour/ItemSentientArmour.java @@ -33,7 +33,10 @@ import net.minecraftforge.common.ISpecialArmor; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; -import java.util.*; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.UUID; public class ItemSentientArmour extends ItemArmor implements ISpecialArmor, IMeshProvider, IMultiWillTool { public static String[] names = {"helmet", "chest", "legs", "boots"}; @@ -297,18 +300,15 @@ public class ItemSentientArmour extends ItemArmor implements ISpecialArmor, IMes } @Override - public List getVariants() { - List ret = new ArrayList(); + public void populateVariants(List variants) { for (EnumDemonWillType type : EnumDemonWillType.values()) { String additional = "_" + type.getName().toLowerCase(); - ret.add("armour=head" + additional); - ret.add("armour=body" + additional); - ret.add("armour=leg" + additional); - ret.add("armour=feet" + additional); + variants.add("armour=head" + additional); + variants.add("armour=body" + additional); + variants.add("armour=leg" + additional); + variants.add("armour=feet" + additional); } - - return ret; } @Override diff --git a/src/main/java/WayofTime/bloodmagic/item/block/ItemBlockAlchemyTable.java b/src/main/java/WayofTime/bloodmagic/item/block/ItemBlockAlchemyTable.java index 6f082408..3370d29f 100644 --- a/src/main/java/WayofTime/bloodmagic/item/block/ItemBlockAlchemyTable.java +++ b/src/main/java/WayofTime/bloodmagic/item/block/ItemBlockAlchemyTable.java @@ -3,6 +3,7 @@ package WayofTime.bloodmagic.item.block; import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.tile.TileAlchemyTable; import com.google.common.collect.Lists; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; @@ -64,7 +65,7 @@ public class ItemBlockAlchemyTable extends ItemBlock implements IVariantProvider } @Override - public List> getVariants() { - return Lists.newArrayList(Pair.of(0, "inventory")); + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "inventory"); } } \ No newline at end of file diff --git a/src/main/java/WayofTime/bloodmagic/item/gear/ItemPackSacrifice.java b/src/main/java/WayofTime/bloodmagic/item/gear/ItemPackSacrifice.java index 3abdfdce..bece7301 100644 --- a/src/main/java/WayofTime/bloodmagic/item/gear/ItemPackSacrifice.java +++ b/src/main/java/WayofTime/bloodmagic/item/gear/ItemPackSacrifice.java @@ -9,6 +9,7 @@ import WayofTime.bloodmagic.api.util.helper.ItemHelper.LPContainer; import WayofTime.bloodmagic.api.util.helper.NBTHelper; import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.util.helper.TextHelper; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.EntityEquipmentSlot; @@ -76,10 +77,8 @@ public class ItemPackSacrifice extends ItemArmor implements IAltarManipulator, I } @Override - public List> getVariants() { - List> ret = new ArrayList>(); - ret.add(new ImmutablePair(0, "type=normal")); - return ret; + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "type=normal"); } // IFillable diff --git a/src/main/java/WayofTime/bloodmagic/item/gear/ItemPackSelfSacrifice.java b/src/main/java/WayofTime/bloodmagic/item/gear/ItemPackSelfSacrifice.java index 1dd19a4b..9d6c36f8 100644 --- a/src/main/java/WayofTime/bloodmagic/item/gear/ItemPackSelfSacrifice.java +++ b/src/main/java/WayofTime/bloodmagic/item/gear/ItemPackSelfSacrifice.java @@ -10,6 +10,7 @@ import WayofTime.bloodmagic.api.util.helper.NBTHelper; import WayofTime.bloodmagic.api.util.helper.NetworkHelper; import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.util.helper.TextHelper; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.EntityEquipmentSlot; @@ -101,10 +102,8 @@ public class ItemPackSelfSacrifice extends ItemArmor implements IAltarManipulato } @Override - public List> getVariants() { - List> ret = new ArrayList>(); - ret.add(new ImmutablePair(0, "type=normal")); - return ret; + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "type=normal"); } // IFillable diff --git a/src/main/java/WayofTime/bloodmagic/item/routing/ItemFluidRouterFilter.java b/src/main/java/WayofTime/bloodmagic/item/routing/ItemFluidRouterFilter.java index 455c44c4..d88f2432 100644 --- a/src/main/java/WayofTime/bloodmagic/item/routing/ItemFluidRouterFilter.java +++ b/src/main/java/WayofTime/bloodmagic/item/routing/ItemFluidRouterFilter.java @@ -7,6 +7,7 @@ import WayofTime.bloodmagic.routing.IFluidFilter; import WayofTime.bloodmagic.routing.RoutingFluidFilter; import WayofTime.bloodmagic.util.GhostItemHelper; import WayofTime.bloodmagic.util.helper.TextHelper; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; @@ -121,10 +122,8 @@ public class ItemFluidRouterFilter extends Item implements IFluidFilterProvider, } @Override - public List> getVariants() { - List> ret = new ArrayList>(); - ret.add(new ImmutablePair(0, "type=exact")); - return ret; + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "type=exact"); } @Override diff --git a/src/main/java/WayofTime/bloodmagic/item/routing/ItemNodeRouter.java b/src/main/java/WayofTime/bloodmagic/item/routing/ItemNodeRouter.java index 3cdb1aa0..4cdc0ae6 100644 --- a/src/main/java/WayofTime/bloodmagic/item/routing/ItemNodeRouter.java +++ b/src/main/java/WayofTime/bloodmagic/item/routing/ItemNodeRouter.java @@ -8,6 +8,7 @@ import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.routing.IMasterRoutingNode; import WayofTime.bloodmagic.routing.IRoutingNode; import WayofTime.bloodmagic.util.helper.TextHelper; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -176,10 +177,8 @@ public class ItemNodeRouter extends Item implements INodeRenderer, IVariantProvi } @Override - public List> getVariants() { - List> ret = new ArrayList>(); - ret.add(new ImmutablePair(0, "type=normal")); - return ret; + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "type=normal"); } public BlockPos getBlockPos(ItemStack stack) { diff --git a/src/main/java/WayofTime/bloodmagic/item/routing/ItemRouterFilter.java b/src/main/java/WayofTime/bloodmagic/item/routing/ItemRouterFilter.java index 76cc2b48..5fa81eed 100644 --- a/src/main/java/WayofTime/bloodmagic/item/routing/ItemRouterFilter.java +++ b/src/main/java/WayofTime/bloodmagic/item/routing/ItemRouterFilter.java @@ -6,6 +6,7 @@ import WayofTime.bloodmagic.item.inventory.ItemInventory; import WayofTime.bloodmagic.routing.*; import WayofTime.bloodmagic.util.GhostItemHelper; import WayofTime.bloodmagic.util.helper.TextHelper; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; @@ -138,13 +139,11 @@ public class ItemRouterFilter extends Item implements IItemFilterProvider, IVari } @Override - public List> getVariants() { - List> ret = new ArrayList>(); - ret.add(new ImmutablePair(0, "type=exact")); - ret.add(new ImmutablePair(1, "type=ignorenbt")); - ret.add(new ImmutablePair(2, "type=moditems")); - ret.add(new ImmutablePair(3, "type=oredict")); - return ret; + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "type=exact"); + variants.put(1, "type=ignorenbt"); + variants.put(2, "type=moditems"); + variants.put(3, "type=oredict"); } @Override diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilBase.java b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilBase.java index 7de088ff..74157b85 100644 --- a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilBase.java +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilBase.java @@ -6,6 +6,7 @@ import WayofTime.bloodmagic.api.util.helper.PlayerHelper; import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.util.helper.TextHelper; import com.google.common.base.Strings; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.item.ItemStack; import net.minecraft.world.World; @@ -51,10 +52,8 @@ public class ItemSigilBase extends ItemSigil implements IVariantProvider { } @Override - public List> getVariants() { - List> ret = new ArrayList>(); - ret.add(Pair.of(0, "type=normal")); - return ret; + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "type=normal"); } public String getName() { diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilHolding.java b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilHolding.java index da59eee5..5ac4df3f 100644 --- a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilHolding.java +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilHolding.java @@ -12,6 +12,7 @@ import WayofTime.bloodmagic.client.key.KeyBindings; import WayofTime.bloodmagic.util.Utils; import WayofTime.bloodmagic.util.helper.TextHelper; import com.google.common.base.Strings; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; @@ -167,8 +168,8 @@ public class ItemSigilHolding extends ItemSigilBase implements IKeybindable, IAl } @Override - public List> getVariants() { - return Collections.emptyList(); + public void populateVariants(Int2ObjectMap variants) { + } public static int next(int mode) { diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilToggleableBase.java b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilToggleableBase.java index 7590fc19..fed28625 100644 --- a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilToggleableBase.java +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilToggleableBase.java @@ -10,14 +10,10 @@ import com.google.common.base.Strings; import net.minecraft.client.renderer.ItemMeshDefinition; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; -import org.apache.commons.lang3.text.WordUtils; -import javax.annotation.Nullable; -import java.util.ArrayList; import java.util.List; import java.util.Locale; @@ -53,18 +49,9 @@ public class ItemSigilToggleableBase extends ItemSigilToggleable implements IMes return new CustomMeshDefinitionActivatable("sigil_" + name.toLowerCase(Locale.ROOT)); } - @Nullable @Override - public ResourceLocation getCustomLocation() { - return null; - } - - @Override - public List getVariants() { - List ret = new ArrayList(); - ret.add("active=false"); - ret.add("active=true"); - - return ret; + public void populateVariants(List variants) { + variants.add("active=false"); + variants.add("active=true"); } } diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/ItemSigil.java b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/ItemSigil.java index 1550549c..df087bf3 100644 --- a/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/ItemSigil.java +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/ItemSigil.java @@ -5,20 +5,21 @@ import WayofTime.bloodmagic.api.iface.IBindable; import WayofTime.bloodmagic.api.util.helper.NetworkHelper; import WayofTime.bloodmagic.api.util.helper.PlayerHelper; import WayofTime.bloodmagic.client.IMeshProvider; -import com.google.common.collect.Lists; import net.minecraft.client.renderer.ItemMeshDefinition; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.util.*; +import net.minecraft.util.ActionResult; +import net.minecraft.util.EnumActionResult; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; -import javax.annotation.Nullable; import java.util.List; public class ItemSigil extends Item implements IBindable, IMeshProvider { @@ -131,18 +132,11 @@ public class ItemSigil extends Item implements IBindable, IMeshProvider { } @Override - public List getVariants() { + public void populateVariants(List variants) { if (sigil instanceof ISigil.Toggle) { - return Lists.newArrayList( - "active=true", - "active=false" - ); - } else return Lists.newArrayList("inventory"); - } - - @Nullable - @Override - public ResourceLocation getCustomLocation() { - return null; + variants.add("active=true"); + variants.add("active=false"); + } else + variants.add("inventory"); } } diff --git a/src/main/java/WayofTime/bloodmagic/item/soul/ItemMonsterSoul.java b/src/main/java/WayofTime/bloodmagic/item/soul/ItemMonsterSoul.java index 3be9b4be..ed35d92d 100644 --- a/src/main/java/WayofTime/bloodmagic/item/soul/ItemMonsterSoul.java +++ b/src/main/java/WayofTime/bloodmagic/item/soul/ItemMonsterSoul.java @@ -7,6 +7,7 @@ import WayofTime.bloodmagic.api.soul.IDemonWill; import WayofTime.bloodmagic.api.util.helper.NBTHelper; import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.util.helper.TextHelper; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; @@ -105,13 +106,9 @@ public class ItemMonsterSoul extends Item implements IDemonWill, IVariantProvide } @Override - public List> getVariants() { - List> ret = new ArrayList>(); - for (int i = 0; i < names.length; i++) { - String name = names[i]; - ret.add(new ImmutablePair(i, "type=" + name)); - } - return ret; + public void populateVariants(Int2ObjectMap variants) { + for (int i = 0; i < names.length; i++) + variants.put(i, "type=" + names[i]); } @Override diff --git a/src/main/java/WayofTime/bloodmagic/item/soul/ItemSentientArmourGem.java b/src/main/java/WayofTime/bloodmagic/item/soul/ItemSentientArmourGem.java index e25ae539..3c1e9fc6 100644 --- a/src/main/java/WayofTime/bloodmagic/item/soul/ItemSentientArmourGem.java +++ b/src/main/java/WayofTime/bloodmagic/item/soul/ItemSentientArmourGem.java @@ -5,19 +5,20 @@ import WayofTime.bloodmagic.api.soul.EnumDemonWillType; import WayofTime.bloodmagic.api.soul.PlayerDemonWillHandler; import WayofTime.bloodmagic.client.IMeshProvider; import WayofTime.bloodmagic.item.armour.ItemSentientArmour; -import com.google.common.collect.Lists; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.ItemMeshDefinition; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.util.*; +import net.minecraft.util.ActionResult; +import net.minecraft.util.EnumActionResult; +import net.minecraft.util.EnumHand; +import net.minecraft.util.NonNullList; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; -import javax.annotation.Nullable; import java.util.List; public class ItemSentientArmourGem extends Item implements IMeshProvider { @@ -53,7 +54,7 @@ public class ItemSentientArmourGem extends Item implements IMeshProvider { ItemSentientArmour.convertPlayerArmour(type, will, player); } - return new ActionResult(EnumActionResult.PASS, player.getHeldItem(hand)); + return new ActionResult<>(EnumActionResult.PASS, player.getHeldItem(hand)); } @SideOnly(Side.CLIENT) @@ -62,24 +63,17 @@ public class ItemSentientArmourGem extends Item implements IMeshProvider { return stack -> { boolean flag = false; NonNullList armourInventory = Minecraft.getMinecraft().player.inventory.armorInventory; - for (ItemStack armourStack : armourInventory) { - if (armourStack != null && armourStack.getItem() instanceof ItemSentientArmour) { + for (ItemStack armourStack : armourInventory) + if (!armourStack.isEmpty() && armourStack.getItem() instanceof ItemSentientArmour) flag = true; - } - } return new ModelResourceLocation(stack.getItem().getRegistryName(), "type=" + (flag ? "" : "de") + "activated"); }; } @Override - public List getVariants() { - return Lists.newArrayList("type=activated", "type=deactivated"); - } - - @Nullable - @Override - public ResourceLocation getCustomLocation() { - return null; + public void populateVariants(List variants) { + variants.add("type=activated"); + variants.add("type=deactivated"); } } diff --git a/src/main/java/WayofTime/bloodmagic/item/soul/ItemSentientAxe.java b/src/main/java/WayofTime/bloodmagic/item/soul/ItemSentientAxe.java index c2b82f28..24298f2a 100644 --- a/src/main/java/WayofTime/bloodmagic/item/soul/ItemSentientAxe.java +++ b/src/main/java/WayofTime/bloodmagic/item/soul/ItemSentientAxe.java @@ -36,13 +36,11 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.PotionEffect; import net.minecraft.util.ActionResult; import net.minecraft.util.EnumHand; -import net.minecraft.util.ResourceLocation; import net.minecraft.world.EnumDifficulty; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; -import javax.annotation.Nullable; import java.util.*; public class ItemSentientAxe extends ItemAxe implements IDemonWillWeapon, IMeshProvider, IMultiWillTool, ISentientTool { @@ -300,20 +298,10 @@ public class ItemSentientAxe extends ItemAxe implements IDemonWillWeapon, IMeshP return new CustomMeshDefinitionMultiWill("sentient_axe"); } - @Nullable @Override - public ResourceLocation getCustomLocation() { - return null; - } - - @Override - public List getVariants() { - List ret = new ArrayList(); - for (EnumDemonWillType type : EnumDemonWillType.values()) { - ret.add("type=" + type.getName().toLowerCase()); - } - - return ret; + public void populateVariants(List variants) { + for (EnumDemonWillType type : EnumDemonWillType.values()) + variants.add("type=" + type.getName().toLowerCase()); } @Override diff --git a/src/main/java/WayofTime/bloodmagic/item/soul/ItemSentientBow.java b/src/main/java/WayofTime/bloodmagic/item/soul/ItemSentientBow.java index 97b87625..00c29dec 100644 --- a/src/main/java/WayofTime/bloodmagic/item/soul/ItemSentientBow.java +++ b/src/main/java/WayofTime/bloodmagic/item/soul/ItemSentientBow.java @@ -12,6 +12,7 @@ import WayofTime.bloodmagic.core.RegistrarBloodMagicItems; import WayofTime.bloodmagic.entity.mob.EntitySentientSpecter; import WayofTime.bloodmagic.entity.projectile.EntitySentientArrow; import com.google.common.collect.Lists; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -253,8 +254,8 @@ public class ItemSentientBow extends ItemBow implements IMultiWillTool, ISentien } @Override - public List> getVariants() { - return Lists.newArrayList(Pair.of(0, "inventory")); + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "inventory"); } public EntityTippedArrow getArrowEntity(World world, ItemStack stack, EntityLivingBase target, EntityLivingBase user, float velocity) { diff --git a/src/main/java/WayofTime/bloodmagic/item/soul/ItemSentientPickaxe.java b/src/main/java/WayofTime/bloodmagic/item/soul/ItemSentientPickaxe.java index 05c51b19..07d8690f 100644 --- a/src/main/java/WayofTime/bloodmagic/item/soul/ItemSentientPickaxe.java +++ b/src/main/java/WayofTime/bloodmagic/item/soul/ItemSentientPickaxe.java @@ -36,13 +36,11 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.PotionEffect; import net.minecraft.util.ActionResult; import net.minecraft.util.EnumHand; -import net.minecraft.util.ResourceLocation; import net.minecraft.world.EnumDifficulty; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; -import javax.annotation.Nullable; import java.util.*; public class ItemSentientPickaxe extends ItemPickaxe implements IDemonWillWeapon, IMeshProvider, IMultiWillTool, ISentientTool { @@ -299,20 +297,10 @@ public class ItemSentientPickaxe extends ItemPickaxe implements IDemonWillWeapon return new CustomMeshDefinitionMultiWill("sentient_pickaxe"); } - @Nullable @Override - public ResourceLocation getCustomLocation() { - return null; - } - - @Override - public List getVariants() { - List ret = new ArrayList(); - for (EnumDemonWillType type : EnumDemonWillType.values()) { - ret.add("type=" + type.getName().toLowerCase()); - } - - return ret; + public void populateVariants(List variants) { + for (EnumDemonWillType type : EnumDemonWillType.values()) + variants.add("type=" + type.getName().toLowerCase()); } @Override diff --git a/src/main/java/WayofTime/bloodmagic/item/soul/ItemSentientShovel.java b/src/main/java/WayofTime/bloodmagic/item/soul/ItemSentientShovel.java index 2edd2b73..e6888e5d 100644 --- a/src/main/java/WayofTime/bloodmagic/item/soul/ItemSentientShovel.java +++ b/src/main/java/WayofTime/bloodmagic/item/soul/ItemSentientShovel.java @@ -36,13 +36,11 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.PotionEffect; import net.minecraft.util.ActionResult; import net.minecraft.util.EnumHand; -import net.minecraft.util.ResourceLocation; import net.minecraft.world.EnumDifficulty; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; -import javax.annotation.Nullable; import java.util.*; public class ItemSentientShovel extends ItemSpade implements IDemonWillWeapon, IMeshProvider, IMultiWillTool, ISentientTool { @@ -300,20 +298,10 @@ public class ItemSentientShovel extends ItemSpade implements IDemonWillWeapon, I return new CustomMeshDefinitionMultiWill("sentient_shovel"); } - @Nullable @Override - public ResourceLocation getCustomLocation() { - return null; - } - - @Override - public List getVariants() { - List ret = new ArrayList(); - for (EnumDemonWillType type : EnumDemonWillType.values()) { - ret.add("type=" + type.getName().toLowerCase()); - } - - return ret; + public void populateVariants(List variants) { + for (EnumDemonWillType type : EnumDemonWillType.values()) + variants.add("type=" + type.getName().toLowerCase()); } @Override diff --git a/src/main/java/WayofTime/bloodmagic/item/soul/ItemSentientSword.java b/src/main/java/WayofTime/bloodmagic/item/soul/ItemSentientSword.java index 4753c957..a7a0066f 100644 --- a/src/main/java/WayofTime/bloodmagic/item/soul/ItemSentientSword.java +++ b/src/main/java/WayofTime/bloodmagic/item/soul/ItemSentientSword.java @@ -34,13 +34,11 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.PotionEffect; import net.minecraft.util.ActionResult; import net.minecraft.util.EnumHand; -import net.minecraft.util.ResourceLocation; import net.minecraft.world.EnumDifficulty; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; -import javax.annotation.Nullable; import java.util.*; public class ItemSentientSword extends ItemSword implements IDemonWillWeapon, IMeshProvider, IMultiWillTool, ISentientTool { @@ -275,20 +273,10 @@ public class ItemSentientSword extends ItemSword implements IDemonWillWeapon, IM return new CustomMeshDefinitionMultiWill("sentient_shovel"); } - @Nullable @Override - public ResourceLocation getCustomLocation() { - return null; - } - - @Override - public List getVariants() { - List ret = new ArrayList(); - for (EnumDemonWillType type : EnumDemonWillType.values()) { - ret.add("type=" + type.getName().toLowerCase()); - } - - return ret; + public void populateVariants(List variants) { + for (EnumDemonWillType type : EnumDemonWillType.values()) + variants.add("type=" + type.getName().toLowerCase()); } @Override diff --git a/src/main/java/WayofTime/bloodmagic/item/soul/ItemSoulGem.java b/src/main/java/WayofTime/bloodmagic/item/soul/ItemSoulGem.java index a4095e15..6dde869a 100644 --- a/src/main/java/WayofTime/bloodmagic/item/soul/ItemSoulGem.java +++ b/src/main/java/WayofTime/bloodmagic/item/soul/ItemSoulGem.java @@ -18,14 +18,15 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.*; +import net.minecraft.util.ActionResult; +import net.minecraft.util.EnumActionResult; +import net.minecraft.util.EnumHand; +import net.minecraft.util.NonNullList; import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; -import javax.annotation.Nullable; -import java.util.ArrayList; import java.util.List; import java.util.Locale; @@ -55,7 +56,7 @@ public class ItemSoulGem extends Item implements IDemonWillGem, IMeshProvider, I double filled = PlayerDemonWillHandler.addDemonWill(type, player, drain, stack); this.drainWill(type, stack, filled, true); - return new ActionResult(EnumActionResult.PASS, stack); + return new ActionResult<>(EnumActionResult.PASS, stack); } @Override @@ -64,24 +65,15 @@ public class ItemSoulGem extends Item implements IDemonWillGem, IMeshProvider, I return new CustomMeshDefinitionWillGem("soul_gem"); } - @Nullable @Override - public ResourceLocation getCustomLocation() { - return null; - } - - @Override - public List getVariants() { - List ret = new ArrayList(); + public void populateVariants(List variants) { for (EnumDemonWillType type : EnumDemonWillType.values()) { - ret.add("type=petty_" + type.getName().toLowerCase()); - ret.add("type=lesser_" + type.getName().toLowerCase()); - ret.add("type=common_" + type.getName().toLowerCase()); - ret.add("type=greater_" + type.getName().toLowerCase()); - ret.add("type=grand_" + type.getName().toLowerCase()); + variants.add("type=petty_" + type.getName().toLowerCase()); + variants.add("type=lesser_" + type.getName().toLowerCase()); + variants.add("type=common_" + type.getName().toLowerCase()); + variants.add("type=greater_" + type.getName().toLowerCase()); + variants.add("type=grand_" + type.getName().toLowerCase()); } - - return ret; } @Override diff --git a/src/main/java/WayofTime/bloodmagic/item/soul/ItemSoulSnare.java b/src/main/java/WayofTime/bloodmagic/item/soul/ItemSoulSnare.java index e6d76d8c..9842603b 100644 --- a/src/main/java/WayofTime/bloodmagic/item/soul/ItemSoulSnare.java +++ b/src/main/java/WayofTime/bloodmagic/item/soul/ItemSoulSnare.java @@ -4,6 +4,7 @@ import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.entity.projectile.EntitySoulSnare; import WayofTime.bloodmagic.util.helper.TextHelper; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; @@ -75,9 +76,7 @@ public class ItemSoulSnare extends Item implements IVariantProvider { } @Override - public List> getVariants() { - List> ret = new ArrayList>(); - ret.add(new ImmutablePair(0, "type=soulsnare")); - return ret; + public void populateVariants(Int2ObjectMap variants) { + variants.put(0, "type=soulsnare"); } } diff --git a/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java b/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java index f414bb72..d0a496c1 100644 --- a/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java +++ b/src/main/java/WayofTime/bloodmagic/proxy/ClientProxy.java @@ -3,8 +3,6 @@ package WayofTime.bloodmagic.proxy; import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.api.Constants; import WayofTime.bloodmagic.api.soul.DemonWillHolder; -import WayofTime.bloodmagic.client.IMeshProvider; -import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.client.helper.ShaderHelper; import WayofTime.bloodmagic.client.hud.HUDElementDemonWillAura; import WayofTime.bloodmagic.client.hud.HUDElementHolding; @@ -21,15 +19,11 @@ import WayofTime.bloodmagic.entity.projectile.EntitySoulSnare; import WayofTime.bloodmagic.tile.*; import WayofTime.bloodmagic.tile.routing.TileRoutingNode; import com.google.common.collect.ImmutableMap; -import net.minecraft.block.Block; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RenderPlayer; -import net.minecraft.item.Item; import net.minecraft.potion.PotionUtils; import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.client.model.ModelLoaderRegistry; import net.minecraftforge.client.model.animation.AnimationTESR; import net.minecraftforge.client.model.obj.OBJLoader; @@ -39,7 +33,6 @@ import net.minecraftforge.common.model.animation.IAnimationStateMachine; import net.minecraftforge.fml.client.registry.ClientRegistry; import net.minecraftforge.fml.client.registry.RenderingRegistry; import net.minecraftforge.fml.common.ObfuscationReflectionHelper; -import org.apache.commons.lang3.tuple.Pair; import java.awt.Color; import java.util.Map; @@ -120,32 +113,6 @@ public class ClientProxy extends CommonProxy { new HUDElementDemonWillAura(); } - @Override - public void tryHandleBlockModel(Block block, String name) { - if (block instanceof IVariantProvider) { - IVariantProvider variantProvider = (IVariantProvider) block; - for (Pair variant : variantProvider.getVariants()) - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(block), variant.getLeft(), new ModelResourceLocation(new ResourceLocation(BloodMagic.MODID, name), variant.getRight())); - } - } - - @Override - public void tryHandleItemModel(Item item, String name) { - if (item instanceof IMeshProvider) { - IMeshProvider meshProvider = (IMeshProvider) item; - ModelLoader.setCustomMeshDefinition(item, meshProvider.getMeshDefinition()); - ResourceLocation resourceLocation = meshProvider.getCustomLocation(); - if (resourceLocation == null) - resourceLocation = new ResourceLocation(BloodMagic.MODID, "item/" + name); - for (String variant : meshProvider.getVariants()) - ModelLoader.registerItemVariants(item, new ModelResourceLocation(resourceLocation, variant)); - } else if (item instanceof IVariantProvider) { - IVariantProvider variantProvider = (IVariantProvider) item; - for (Pair variant : variantProvider.getVariants()) - ModelLoader.setCustomModelResourceLocation(item, variant.getLeft(), new ModelResourceLocation(new ResourceLocation(BloodMagic.MODID, "item/" + name), variant.getRight())); - } - } - private void addElytraLayer() { RenderManager renderManager = Minecraft.getMinecraft().getRenderManager(); try { diff --git a/src/main/java/WayofTime/bloodmagic/proxy/CommonProxy.java b/src/main/java/WayofTime/bloodmagic/proxy/CommonProxy.java index ec248e4b..1dbea0c8 100644 --- a/src/main/java/WayofTime/bloodmagic/proxy/CommonProxy.java +++ b/src/main/java/WayofTime/bloodmagic/proxy/CommonProxy.java @@ -4,8 +4,6 @@ import WayofTime.bloodmagic.api.ritual.CapabilityRuneType; import WayofTime.bloodmagic.api.ritual.IRitualStone; import WayofTime.bloodmagic.api.teleport.TeleportQueue; import com.google.common.collect.ImmutableMap; -import net.minecraft.block.Block; -import net.minecraft.item.Item; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; @@ -36,14 +34,6 @@ public class CommonProxy { return null; } - public void tryHandleBlockModel(Block block, String name) { - // NO-OP - } - - public void tryHandleItemModel(Item item, String name) { - // NO-OP - } - public IAnimationStateMachine load(ResourceLocation location, ImmutableMap parameters) { return null; } diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java b/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java index a1cd31a2..c1e46a44 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java @@ -110,7 +110,8 @@ public class ModRecipes { AlchemyArrayRecipeRegistry.registerRecipe(new ItemStack(Items.ARROW), new ItemStack(Items.FEATHER), new AlchemyArrayEffectSkeletonTurret("skeletonTurret"), new DualAlchemyCircleRenderer(new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/SkeletonTurret1.png"), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/SkeletonTurret2.png"))); - AlchemyArrayRecipeRegistry.registerRecipe(ReagentType.REAGENT_FASTMINER.getStack(), new ItemStack(Items.IRON_PICKAXE), new AlchemyArrayEffectSigil("fastMiner", (ISigil) RegistrarBloodMagicItems.SIGIL_FAST_MINER), new SingleAlchemyCircleRenderer(new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/FastMinerSigil.png"))); + // FIXME +// AlchemyArrayRecipeRegistry.registerRecipe(ReagentType.REAGENT_FASTMINER.getStack(), new ItemStack(Items.IRON_PICKAXE), new AlchemyArrayEffectSigil("fastMiner", (ISigil) RegistrarBloodMagicItems.SIGIL_FAST_MINER), new SingleAlchemyCircleRenderer(new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/FastMinerSigil.png"))); } diff --git a/src/main/resources/assets/bloodmagic/blockstates/sigil_air.json b/src/main/resources/assets/bloodmagic/blockstates/sigil_air.json index 32f44849..caaa2b92 100644 --- a/src/main/resources/assets/bloodmagic/blockstates/sigil_air.json +++ b/src/main/resources/assets/bloodmagic/blockstates/sigil_air.json @@ -5,12 +5,10 @@ "transform": "forge:default-item" }, "variants": { - "type": { - "normal": { - "textures": { - "layer0": "bloodmagic:items/AirSigil" - } + "inventory": [{ + "textures": { + "layer0": "bloodmagic:items/AirSigil" } - } + }] } } \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/blockstates/sigil_blood_light.json b/src/main/resources/assets/bloodmagic/blockstates/sigil_blood_light.json index dc5b4f19..c82ae4de 100644 --- a/src/main/resources/assets/bloodmagic/blockstates/sigil_blood_light.json +++ b/src/main/resources/assets/bloodmagic/blockstates/sigil_blood_light.json @@ -5,12 +5,10 @@ "transform": "forge:default-item" }, "variants": { - "type": { - "normal": { - "textures": { - "layer0": "bloodmagic:items/BloodLightSigil" - } + "inventory": [{ + "textures": { + "layer0": "bloodmagic:items/BloodLightSigil" } - } + }] } } \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/blockstates/sigil_divination.json b/src/main/resources/assets/bloodmagic/blockstates/sigil_divination.json index 184354d6..161209bd 100644 --- a/src/main/resources/assets/bloodmagic/blockstates/sigil_divination.json +++ b/src/main/resources/assets/bloodmagic/blockstates/sigil_divination.json @@ -5,12 +5,10 @@ "transform": "forge:default-item" }, "variants": { - "type": { - "normal": { - "textures": { - "layer0": "bloodmagic:items/DivinationSigil" - } + "inventory": [{ + "textures": { + "layer0": "bloodmagic:items/DivinationSigil" } - } + }] } } \ No newline at end of file From e2538d92918db9b92fab67917b5b6372c1d59d03 Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Mon, 9 Oct 2017 12:34:14 -0700 Subject: [PATCH 22/27] Debug logging for registration timings --- .../java/WayofTime/bloodmagic/BloodMagic.java | 5 +++ .../bloodmagic/core/RegistrarBloodMagic.java | 38 +++++++++++++++++++ .../core/RegistrarBloodMagicBlocks.java | 14 ++----- .../core/RegistrarBloodMagicItems.java | 35 ++++++++--------- .../core/RegistrarBloodMagicRecipes.java | 10 ++--- 5 files changed, 68 insertions(+), 34 deletions(-) diff --git a/src/main/java/WayofTime/bloodmagic/BloodMagic.java b/src/main/java/WayofTime/bloodmagic/BloodMagic.java index c24c358f..5874d562 100644 --- a/src/main/java/WayofTime/bloodmagic/BloodMagic.java +++ b/src/main/java/WayofTime/bloodmagic/BloodMagic.java @@ -133,4 +133,9 @@ public class BloodMagic { public void onIMCRecieved(FMLInterModComms.IMCEvent event) { IMCHandler.handleIMC(event); } + + public static void debug(String message, Object... args) { + if (IS_DEV) + LOGGER.info("[DEBUG] " + message, args); + } } diff --git a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagic.java b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagic.java index 688c627c..9a81cc95 100644 --- a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagic.java +++ b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagic.java @@ -10,9 +10,13 @@ import WayofTime.bloodmagic.entity.projectile.EntitySentientArrow; import WayofTime.bloodmagic.entity.projectile.EntitySoulSnare; import WayofTime.bloodmagic.item.types.ComponentType; import WayofTime.bloodmagic.potion.PotionBloodMagic; +import com.google.common.base.Stopwatch; +import net.minecraft.block.Block; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.init.MobEffects; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.IRecipe; import net.minecraft.potion.Potion; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.event.ModelRegistryEvent; @@ -61,8 +65,30 @@ public class RegistrarBloodMagic { public static IForgeRegistry BLOOD_ORBS = null; + @SubscribeEvent + public static void registerItems(RegistryEvent.Register event) { + Stopwatch stopwatch = Stopwatch.createStarted(); + RegistrarBloodMagicItems.registerItems(event.getRegistry()); + BloodMagic.debug("Item registration completed in {}", stopwatch.stop()); + } + + @SubscribeEvent + public static void registerBlocks(RegistryEvent.Register event) { + Stopwatch stopwatch = Stopwatch.createStarted(); + RegistrarBloodMagicBlocks.registerBlocks(event.getRegistry()); + BloodMagic.debug("Block registration completed in {}", stopwatch.stop()); + } + + @SubscribeEvent + public static void registerRecipes(RegistryEvent.Register event) { + Stopwatch stopwatch = Stopwatch.createStarted(); + RegistrarBloodMagicRecipes.registerCrafting(event.getRegistry()); + BloodMagic.debug("Recipe registration completed in {}", stopwatch.stop()); + } + @SubscribeEvent public static void registerBloodOrbs(RegistryEvent.Register event) { + Stopwatch stopwatch = Stopwatch.createStarted(); ResourceLocation orb = RegistrarBloodMagicItems.BLOOD_ORB.getRegistryName(); event.getRegistry().registerAll( new BloodOrb("weak", 1, 5000).withModel(new ModelResourceLocation(orb, "type=weak")).setRegistryName("weak"), @@ -72,10 +98,12 @@ public class RegistrarBloodMagic { new BloodOrb("archmage", 5, 10000000).withModel(new ModelResourceLocation(orb, "type=archmage")).setRegistryName("archmage"), new BloodOrb("transcendent", 6, 30000000).withModel(new ModelResourceLocation(orb, "type=transcendent")).setRegistryName("transcendent") ); + BloodMagic.debug("Blood Orb registration completed in {}", stopwatch.stop()); } @SubscribeEvent public static void registerPotions(RegistryEvent.Register event) { + Stopwatch stopwatch = Stopwatch.createStarted(); event.getRegistry().registerAll( new PotionBloodMagic("Boost", false, 0xFFFFFF, 0, 1).setRegistryName("boost"), new PotionBloodMagic("Planar Binding", false, 0, 2, 0).setRegistryName("planar_binding"), @@ -89,10 +117,12 @@ public class RegistrarBloodMagic { new PotionBloodMagic("Cling", false, 0x000000, 2, 1).setRegistryName("cling"), new PotionBloodMagic("S. Lamb", false, 0x000000, 3, 1).setRegistryName("sacrificial_lamb") ); + BloodMagic.debug("Potion registration completed in {}", stopwatch.stop()); } @SubscribeEvent public static void registerEntities(RegistryEvent.Register event) { + Stopwatch stopwatch = Stopwatch.createStarted(); int entities = 0; EntityRegistry.registerModEntity(new ResourceLocation(BloodMagic.MODID, "blood_light"), EntityBloodLight.class, "BloodLight", ++entities, BloodMagic.instance, 16 * 4, 3, true); EntityRegistry.registerModEntity(new ResourceLocation(BloodMagic.MODID, "soul_snare"), EntitySoulSnare.class, "SoulSnare", ++entities, BloodMagic.instance, 16 * 4, 3, true); @@ -104,21 +134,25 @@ public class RegistrarBloodMagic { EntityRegistry.registerModEntity(new ResourceLocation(BloodMagic.MODID, "corrupted_sheep"), EntityCorruptedSheep.class, "CorruptedSheep", ++entities, BloodMagic.instance, 16 * 4, 3, true); EntityRegistry.registerModEntity(new ResourceLocation(BloodMagic.MODID, "corrupted_chicken"), EntityCorruptedChicken.class, "CorruptedChicken", ++entities, BloodMagic.instance, 16 * 4, 3, true); EntityRegistry.registerModEntity(new ResourceLocation(BloodMagic.MODID, "corrupted_spider"), EntityCorruptedSpider.class, "CorruptedSpider", ++entities, BloodMagic.instance, 16 * 4, 3, true); + BloodMagic.debug("Entity registration completed in {}", stopwatch.stop()); } @SubscribeEvent public static void onRegistryCreation(RegistryEvent.NewRegistry event) { + Stopwatch stopwatch = Stopwatch.createStarted(); BLOOD_ORBS = new RegistryBuilder() .setName(new ResourceLocation(BloodMagic.MODID, "blood_orb")) .setIDRange(0, Short.MAX_VALUE) .setType(BloodOrb.class) .addCallback((IForgeRegistry.AddCallback) (owner, stage, id, obj, oldObj) -> OrbRegistry.tierMap.put(obj.getTier(), OrbRegistry.getOrbStack(obj))) .create(); + BloodMagic.debug("Registry creation completed in {}", stopwatch.stop()); } @SideOnly(Side.CLIENT) @SubscribeEvent public static void registerModels(ModelRegistryEvent event) { + Stopwatch stopwatch = Stopwatch.createStarted(); for (BloodOrb orb : BLOOD_ORBS) { ModelResourceLocation modelLocation = orb.getModelLocation(); if (modelLocation == null) @@ -137,6 +171,10 @@ public class RegistrarBloodMagic { return orb.getModelLocation(); }); + + RegistrarBloodMagicItems.registerModels(); + RegistrarBloodMagicBlocks.registerModels(); + BloodMagic.debug("Model registration completed in {}", stopwatch.stop()); } @SubscribeEvent diff --git a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicBlocks.java b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicBlocks.java index 54cad50a..585b6a06 100644 --- a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicBlocks.java +++ b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicBlocks.java @@ -15,17 +15,13 @@ import net.minecraft.block.state.IBlockState; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.renderer.block.statemap.StateMapperBase; import net.minecraft.init.Blocks; -import net.minecraftforge.client.event.ModelRegistryEvent; import net.minecraftforge.client.model.ModelLoader; -import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.fluids.FluidRegistry; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.registry.GameRegistry; +import net.minecraftforge.registries.IForgeRegistry; import java.util.List; -@Mod.EventBusSubscriber(modid = BloodMagic.MODID) @GameRegistry.ObjectHolder(BloodMagic.MODID) @SuppressWarnings("unused") public class RegistrarBloodMagicBlocks { @@ -73,8 +69,7 @@ public class RegistrarBloodMagicBlocks { static List blocks; - @SubscribeEvent - public static void registerBlocks(RegistryEvent.Register event) { + public static void registerBlocks(IForgeRegistry registry) { FluidRegistry.registerFluid(BlockLifeEssence.getLifeEssence()); FluidRegistry.addBucketForFluid(BlockLifeEssence.getLifeEssence()); @@ -122,13 +117,12 @@ public class RegistrarBloodMagicBlocks { new BlockInversionPillarEnd().setRegistryName("inversion_pillar_end") ); - event.getRegistry().registerAll(blocks.toArray(new Block[0])); + registry.registerAll(blocks.toArray(new Block[0])); registerTileEntities(); } - @SubscribeEvent - public static void registerModels(ModelRegistryEvent event) { + public static void registerModels() { ModelLoader.setCustomStateMapper(LIFE_ESSENCE, new StateMapperBase() { @Override protected ModelResourceLocation getModelResourceLocation(IBlockState state) { diff --git a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicItems.java b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicItems.java index 40dccbcb..f43433ee 100644 --- a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicItems.java +++ b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicItems.java @@ -16,30 +16,26 @@ import WayofTime.bloodmagic.item.routing.ItemNodeRouter; import WayofTime.bloodmagic.item.routing.ItemRouterFilter; import WayofTime.bloodmagic.item.sigil.*; import WayofTime.bloodmagic.item.sigil.sigil.*; -import WayofTime.bloodmagic.item.sigil.sigil.ItemSigilDivination; import WayofTime.bloodmagic.item.soul.*; import WayofTime.bloodmagic.item.types.ComponentType; import WayofTime.bloodmagic.item.types.ReagentType; import com.google.common.collect.Lists; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.init.Items; import net.minecraft.inventory.EntityEquipmentSlot; import net.minecraft.item.Item; import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.event.ModelRegistryEvent; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.common.util.EnumHelper; -import net.minecraftforge.event.RegistryEvent; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; -import org.apache.commons.lang3.tuple.Pair; +import net.minecraftforge.registries.IForgeRegistry; import java.util.List; -@Mod.EventBusSubscriber(modid = BloodMagic.MODID) @GameRegistry.ObjectHolder(BloodMagic.MODID) @SuppressWarnings("unchecked") public class RegistrarBloodMagicItems { @@ -122,8 +118,7 @@ public class RegistrarBloodMagicItems { public static List items; - @SubscribeEvent - public static void registerItems(RegistryEvent.Register event) { + public static void registerItems(IForgeRegistry registry) { items = Lists.newArrayList(); RegistrarBloodMagicBlocks.blocks.stream().filter(block -> block instanceof IBMBlock && ((IBMBlock) block).getItem() != null).forEach(block -> { @@ -207,16 +202,17 @@ public class RegistrarBloodMagicItems { new ItemPotionFlask().setRegistryName("potion_flask") )); - event.getRegistry().registerAll(items.toArray(new Item[0])); + registry.registerAll(items.toArray(new Item[0])); } @SideOnly(Side.CLIENT) - @SubscribeEvent - public static void registerRenders(ModelRegistryEvent event) { + public static void registerModels() { items.stream().filter(i -> i instanceof IVariantProvider).forEach(i -> { IVariantProvider variantProvider = (IVariantProvider) i; - for (Pair variant : variantProvider.getVariants()) - ModelLoader.setCustomModelResourceLocation(i, variant.getLeft(), new ModelResourceLocation(i.getRegistryName(), variant.getRight())); + Int2ObjectMap variants = new Int2ObjectOpenHashMap<>(); + variantProvider.populateVariants(variants); + for (Int2ObjectMap.Entry variant : variants.int2ObjectEntrySet()) + ModelLoader.setCustomModelResourceLocation(i, variant.getIntKey(), new ModelResourceLocation(i.getRegistryName(), variant.getValue())); }); items.stream().filter(i -> i instanceof IMeshProvider).forEach(i -> { @@ -224,7 +220,10 @@ public class RegistrarBloodMagicItems { ResourceLocation loc = mesh.getCustomLocation(); if (loc == null) loc = i.getRegistryName(); - for (String variant : mesh.getVariants()) + + List variants = Lists.newArrayList(); + mesh.populateVariants(variants); + for (String variant : variants) ModelLoader.registerItemVariants(i, new ModelResourceLocation(loc, variant)); ModelLoader.setCustomMeshDefinition(i, mesh.getMeshDefinition()); @@ -232,8 +231,10 @@ public class RegistrarBloodMagicItems { RegistrarBloodMagicBlocks.blocks.stream().filter(b -> b instanceof IVariantProvider).forEach(b -> { IVariantProvider variantProvider = (IVariantProvider) b; - for (Pair variant : variantProvider.getVariants()) - ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(b), variant.getLeft(), new ModelResourceLocation(b.getRegistryName(), variant.getRight())); + Int2ObjectMap variants = new Int2ObjectOpenHashMap<>(); + variantProvider.populateVariants(variants); + for (Int2ObjectMap.Entry variant : variants.int2ObjectEntrySet()) + ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(b), variant.getIntKey(), new ModelResourceLocation(b.getRegistryName(), variant.getValue())); }); final ResourceLocation holdingLoc = SIGIL_HOLDING.getRegistryName(); diff --git a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicRecipes.java b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicRecipes.java index 89ed8aa1..d1b8191a 100644 --- a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicRecipes.java +++ b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicRecipes.java @@ -19,20 +19,16 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.IRecipe; import net.minecraft.item.crafting.Ingredient; import net.minecraft.util.ResourceLocation; -import net.minecraftforge.event.RegistryEvent; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidUtil; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.oredict.OreIngredient; import net.minecraftforge.oredict.ShapelessOreRecipe; +import net.minecraftforge.registries.IForgeRegistry; -@Mod.EventBusSubscriber(modid = BloodMagic.MODID) public class RegistrarBloodMagicRecipes { - @SubscribeEvent - public static void registerCrafting(RegistryEvent.Register event) { + public static void registerCrafting(IForgeRegistry registry) { for (int i = 0; i < ItemSoulGem.names.length; i++) { for (int j = 0; j < ItemDemonCrystal.NAMES.size(); j++) { ItemStack baseGemStack = new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, i); @@ -43,7 +39,7 @@ public class RegistrarBloodMagicRecipes { EnumDemonWillType willType = ((ItemDemonCrystal) RegistrarBloodMagicItems.ITEM_DEMON_CRYSTAL).getType(crystalStack); ((ItemSoulGem) RegistrarBloodMagicItems.SOUL_GEM).setCurrentType(willType, newGemStack); ShapelessOreRecipe shapeless = new ShapelessOreRecipe(new ResourceLocation(BloodMagic.MODID, "soul_gem"), newGemStack, baseGemStack, crystalStack); - event.getRegistry().register(shapeless.setRegistryName("soul_gem_" + willType.getName())); + registry.register(shapeless.setRegistryName("soul_gem_" + willType.getName())); } } } From 9de2354e64fcf56961c2427e717f6feea655235b Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Fri, 13 Oct 2017 17:12:54 -0700 Subject: [PATCH 23/27] Stop using a custom bus subscriber annotation I'm sorry, past self, but Forge has had one since like 1.10, it's time to move on. It's for the better. --- .../java/WayofTime/bloodmagic/BloodMagic.java | 3 -- .../WayofTime/bloodmagic/annot/Handler.java | 15 ------- .../java/WayofTime/bloodmagic/util/Utils.java | 16 ------- .../util/handler/event/ClientHandler.java | 24 +++++------ .../util/handler/event/CraftingHandler.java | 8 ++-- .../util/handler/event/GenericHandler.java | 42 +++++++++---------- .../handler/event/LivingArmourHandler.java | 21 +++++----- .../handler/event/StatTrackerHandler.java | 14 +++---- .../util/handler/event/WillHandler.java | 26 ++++++------ 9 files changed, 68 insertions(+), 101 deletions(-) delete mode 100644 src/main/java/WayofTime/bloodmagic/annot/Handler.java diff --git a/src/main/java/WayofTime/bloodmagic/BloodMagic.java b/src/main/java/WayofTime/bloodmagic/BloodMagic.java index 5874d562..72c9155f 100644 --- a/src/main/java/WayofTime/bloodmagic/BloodMagic.java +++ b/src/main/java/WayofTime/bloodmagic/BloodMagic.java @@ -1,6 +1,5 @@ package WayofTime.bloodmagic; -import WayofTime.bloodmagic.annot.Handler; import WayofTime.bloodmagic.api.registry.OrbRegistry; import WayofTime.bloodmagic.api.registry.RitualRegistry; import WayofTime.bloodmagic.api_impl.BloodMagicAPI; @@ -17,7 +16,6 @@ import WayofTime.bloodmagic.registry.*; import WayofTime.bloodmagic.structures.ModDungeons; import WayofTime.bloodmagic.util.BloodMagicIsntReadyYetStopTryingToUseItAndJustWaitForMeToFinishPleaseAndThankYou; import WayofTime.bloodmagic.util.PluginUtil; -import WayofTime.bloodmagic.util.Utils; import WayofTime.bloodmagic.util.handler.IMCHandler; import com.google.common.collect.Lists; import net.minecraft.creativetab.CreativeTabs; @@ -85,7 +83,6 @@ public class BloodMagic { ModTranquilityHandlers.init(); ModDungeons.init(); - Utils.registerHandlers(event.getAsmData().getAll(Handler.class.getCanonicalName())); proxy.preInit(); } diff --git a/src/main/java/WayofTime/bloodmagic/annot/Handler.java b/src/main/java/WayofTime/bloodmagic/annot/Handler.java deleted file mode 100644 index 0e972824..00000000 --- a/src/main/java/WayofTime/bloodmagic/annot/Handler.java +++ /dev/null @@ -1,15 +0,0 @@ -package WayofTime.bloodmagic.annot; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * Classes annotated with this will automatically be registered to the - * {@link net.minecraftforge.common.MinecraftForge#EVENT_BUS}. - */ -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.TYPE) -public @interface Handler { -} diff --git a/src/main/java/WayofTime/bloodmagic/util/Utils.java b/src/main/java/WayofTime/bloodmagic/util/Utils.java index f2d14f7e..ae3b50ef 100644 --- a/src/main/java/WayofTime/bloodmagic/util/Utils.java +++ b/src/main/java/WayofTime/bloodmagic/util/Utils.java @@ -1,6 +1,5 @@ package WayofTime.bloodmagic.util; -import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.api.BlockStack; import WayofTime.bloodmagic.api.Constants; import WayofTime.bloodmagic.api.altar.EnumAltarComponent; @@ -41,9 +40,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.IPlantable; import net.minecraftforge.common.ISpecialArmor; import net.minecraftforge.common.ISpecialArmor.ArmorProperties; -import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fluids.IFluidBlock; -import net.minecraftforge.fml.common.discovery.ASMDataTable; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemHandlerHelper; @@ -919,19 +916,6 @@ public class Utils { return largerStack ? stack : ItemStack.EMPTY; } - public static void registerHandlers(Set eventHandlers) { - for (ASMDataTable.ASMData data : eventHandlers) { - try { - Class handlerClass = Class.forName(data.getClassName()); - Object handlerImpl = handlerClass.newInstance(); - MinecraftForge.EVENT_BUS.register(handlerImpl); - BloodMagic.LOGGER.debug("Registering event handler for class {}", data.getClassName()); - } catch (Exception e) { - // No-op - } - } - } - public static boolean hasUUID(ItemStack stack) { return stack.hasTagCompound() && stack.getTagCompound().hasKey(Constants.NBT.MOST_SIG) && stack.getTagCompound().hasKey(Constants.NBT.LEAST_SIG); } diff --git a/src/main/java/WayofTime/bloodmagic/util/handler/event/ClientHandler.java b/src/main/java/WayofTime/bloodmagic/util/handler/event/ClientHandler.java index 7103ab7f..7066d100 100644 --- a/src/main/java/WayofTime/bloodmagic/util/handler/event/ClientHandler.java +++ b/src/main/java/WayofTime/bloodmagic/util/handler/event/ClientHandler.java @@ -2,7 +2,6 @@ package WayofTime.bloodmagic.util.handler.event; import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.ConfigHandler; -import WayofTime.bloodmagic.annot.Handler; import WayofTime.bloodmagic.api.Constants; import WayofTime.bloodmagic.api.registry.RitualRegistry; import WayofTime.bloodmagic.api.ritual.Ritual; @@ -41,6 +40,7 @@ import net.minecraftforge.client.event.sound.PlaySoundEvent; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.event.entity.player.ItemTooltipEvent; import net.minecraftforge.fml.client.FMLClientHandler; +import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.gameevent.InputEvent; import net.minecraftforge.fml.relauncher.ReflectionHelper; @@ -50,7 +50,7 @@ import org.lwjgl.opengl.GL11; import java.util.*; -@Handler +@Mod.EventBusSubscriber @SideOnly(Side.CLIENT) public class ClientHandler { // Quick toggle for error suppression. Set to false if you wish to hide model errors. @@ -76,7 +76,7 @@ public class ClientHandler { private static boolean mrsHoloDisplay; @SubscribeEvent - public void onTooltipEvent(ItemTooltipEvent event) { + public static void onTooltipEvent(ItemTooltipEvent event) { ItemStack stack = event.getItemStack(); if (stack.isEmpty()) { return; @@ -93,7 +93,7 @@ public class ClientHandler { } @SubscribeEvent - public void onSoundEvent(PlaySoundEvent event) { + public static void onSoundEvent(PlaySoundEvent event) { EntityPlayer player = Minecraft.getMinecraft().player; if (player != null && player.isPotionActive(RegistrarBloodMagic.DEAFNESS)) { event.setResultSound(null); @@ -101,7 +101,7 @@ public class ClientHandler { } @SubscribeEvent - public void onTextureStitch(TextureStitchEvent.Pre event) { + public static void onTextureStitch(TextureStitchEvent.Pre event) { final String BLOCKS = "blocks"; ritualStoneBlank = forName(event.getMap(), "RitualStone", BLOCKS); @@ -121,7 +121,7 @@ public class ClientHandler { } @SubscribeEvent - public void render(RenderWorldLastEvent event) { + public static void render(RenderWorldLastEvent event) { EntityPlayerSP player = minecraft.player; World world = player.getEntityWorld(); @@ -146,7 +146,7 @@ public class ClientHandler { } @SubscribeEvent - public void onMouseEvent(MouseEvent event) { + public static void onMouseEvent(MouseEvent event) { EntityPlayerSP player = Minecraft.getMinecraft().player; if (event.getDwheel() != 0 && player != null && player.isSneaking()) { @@ -164,7 +164,7 @@ public class ClientHandler { } @SubscribeEvent - public void onKey(InputEvent event) { + public static void onKey(InputEvent event) { if (!minecraft.inGameHasFocus) return; @@ -174,7 +174,7 @@ public class ClientHandler { } @SubscribeEvent - public void onHudRender(RenderGameOverlayEvent.Pre event) { + public static void onHudRender(RenderGameOverlayEvent.Pre event) { for (HUDElement element : hudElements) if (element.getElementType() == event.getType() && element.shouldRender(minecraft)) element.render(minecraft, event.getResolution(), event.getPartialTicks()); @@ -182,7 +182,7 @@ public class ClientHandler { // Stolen from Chisel @SubscribeEvent - public void onModelBake(ModelBakeEvent event) { + public static void onModelBake(ModelBakeEvent event) { if (BloodMagic.IS_DEV && SUPPRESS_ASSET_ERRORS) return; @@ -218,7 +218,7 @@ public class ClientHandler { // For some reason, we need some bad textures to be listed in the Crystal and Node models. This will hide that from the end user. @SubscribeEvent - public void onTextureStitch(TextureStitchEvent.Post event) { + public static void onTextureStitch(TextureStitchEvent.Post event) { if (BloodMagic.IS_DEV && SUPPRESS_ASSET_ERRORS) return; @@ -249,7 +249,7 @@ public class ClientHandler { BloodMagic.LOGGER.debug("Suppressed required texture errors in {}", stopwatch.stop()); } - private void renderRitualStones(EntityPlayerSP player, float partialTicks) { + private static void renderRitualStones(EntityPlayerSP player, float partialTicks) { World world = player.getEntityWorld(); ItemRitualDiviner ritualDiviner = (ItemRitualDiviner) player.inventory.getCurrentItem().getItem(); EnumFacing direction = ritualDiviner.getDirection(player.inventory.getCurrentItem()); diff --git a/src/main/java/WayofTime/bloodmagic/util/handler/event/CraftingHandler.java b/src/main/java/WayofTime/bloodmagic/util/handler/event/CraftingHandler.java index f47c2065..61e56302 100644 --- a/src/main/java/WayofTime/bloodmagic/util/handler/event/CraftingHandler.java +++ b/src/main/java/WayofTime/bloodmagic/util/handler/event/CraftingHandler.java @@ -1,7 +1,6 @@ package WayofTime.bloodmagic.util.handler.event; import WayofTime.bloodmagic.BloodMagic; -import WayofTime.bloodmagic.annot.Handler; import WayofTime.bloodmagic.api.Constants; import WayofTime.bloodmagic.api.event.AltarCraftedEvent; import WayofTime.bloodmagic.api.iface.IUpgradeTrainer; @@ -21,17 +20,18 @@ import net.minecraftforge.event.AnvilUpdateEvent; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidUtil; +import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import java.util.ArrayList; import java.util.List; -@Handler +@Mod.EventBusSubscriber public class CraftingHandler { // Sets the uses of crafted Inscription Tools to 10 @SubscribeEvent - public void onAltarCrafted(AltarCraftedEvent event) { + public static void onAltarCrafted(AltarCraftedEvent event) { if (event.getOutput() == null) { return; } @@ -49,7 +49,7 @@ public class CraftingHandler { // Handles crafting of: Revealing Upgrade Tome, Elytra Upgrade Tome, Combining Upgrade Tomes, Setting Upgrade for Trainer @SubscribeEvent - public void onAnvil(AnvilUpdateEvent event) { + public static void onAnvil(AnvilUpdateEvent event) { // TODO - Azanor come back :( // if (ConfigHandler.thaumcraftGogglesUpgrade) { // if (event.getLeft().getItem() == RegistrarBloodMagicItems.LIVING_ARMOUR_HELMET && event.getRight().getItem() == Constants.Compat.THAUMCRAFT_GOGGLES && !event.getRight().isItemDamaged()) { diff --git a/src/main/java/WayofTime/bloodmagic/util/handler/event/GenericHandler.java b/src/main/java/WayofTime/bloodmagic/util/handler/event/GenericHandler.java index ee83e923..80706b88 100644 --- a/src/main/java/WayofTime/bloodmagic/util/handler/event/GenericHandler.java +++ b/src/main/java/WayofTime/bloodmagic/util/handler/event/GenericHandler.java @@ -2,7 +2,6 @@ package WayofTime.bloodmagic.util.handler.event; import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.ConfigHandler; -import WayofTime.bloodmagic.annot.Handler; import WayofTime.bloodmagic.api.Constants; import WayofTime.bloodmagic.api.event.ItemBindEvent; import WayofTime.bloodmagic.api.event.SacrificeKnifeUsedEvent; @@ -75,6 +74,7 @@ import net.minecraftforge.event.entity.player.PlayerEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.event.entity.player.PlayerPickupXpEvent; import net.minecraftforge.event.world.ExplosionEvent; +import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.Event.Result; import net.minecraftforge.fml.common.eventhandler.EventPriority; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; @@ -87,7 +87,7 @@ import java.util.List; import java.util.Map; import java.util.Random; -@Handler +@Mod.EventBusSubscriber public class GenericHandler { public static Map bounceMap = new HashMap(); public static Map filledHandMap = new HashMap(); @@ -95,7 +95,7 @@ public class GenericHandler { private static Map attackTaskMap = new HashMap(); @SubscribeEvent - public void onEntityFall(LivingFallEvent event) { + public static void onEntityFall(LivingFallEvent event) { if (event.getEntityLiving() instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) event.getEntityLiving(); if (player.isPotionActive(RegistrarBloodMagic.BOUNCE) && !player.isSneaking() && event.getDistance() > 2) { @@ -114,7 +114,7 @@ public class GenericHandler { } @SubscribeEvent - public void playerTickPost(TickEvent.PlayerTickEvent event) { + public static void playerTickPost(TickEvent.PlayerTickEvent event) { if (event.phase == TickEvent.Phase.END && bounceMap.containsKey(event.player)) { event.player.motionY = bounceMap.remove(event.player); } @@ -132,7 +132,7 @@ public class GenericHandler { } @SubscribeEvent - public void onPlayerClick(PlayerInteractEvent event) { + public static void onPlayerClick(PlayerInteractEvent event) { if (event.isCancelable() && event.getEntityPlayer().isPotionActive(RegistrarBloodMagic.CONSTRICT)) { EntityPlayer player = event.getEntityPlayer(); int level = player.getActivePotionEffect(RegistrarBloodMagic.CONSTRICT).getAmplifier(); @@ -143,7 +143,7 @@ public class GenericHandler { } @SubscribeEvent - public void onPlayerDropItem(ItemTossEvent event) { + public static void onPlayerDropItem(ItemTossEvent event) { EntityItem itemEntity = event.getEntityItem(); if (itemEntity != null) { ItemStack stack = itemEntity.getItem(); @@ -157,7 +157,7 @@ public class GenericHandler { } @SubscribeEvent - public void onExplosion(ExplosionEvent.Start event) { + public static void onExplosion(ExplosionEvent.Start event) { World world = event.getWorld(); Explosion exp = event.getExplosion(); Vec3d position = exp.getPosition(); @@ -176,7 +176,7 @@ public class GenericHandler { } @SubscribeEvent - public void onEntityHurt(LivingHurtEvent event) { + public static void onEntityHurt(LivingHurtEvent event) { if (event.getEntity().getEntityWorld().isRemote) return; @@ -210,7 +210,7 @@ public class GenericHandler { // Handles sending the client the Demon Will Aura updates @SubscribeEvent - public void onLivingUpdate(LivingUpdateEvent event) { + public static void onLivingUpdate(LivingUpdateEvent event) { if (!event.getEntityLiving().getEntityWorld().isRemote) { EntityLivingBase entity = event.getEntityLiving(); if (entity instanceof EntityPlayer && entity.ticksExisted % 50 == 0) //TODO: Change to an incremental counter @@ -286,7 +286,7 @@ public class GenericHandler { } // @SideOnly(Side.SERVER) - public void sendPlayerDemonWillAura(EntityPlayer player) { + public static void sendPlayerDemonWillAura(EntityPlayer player) { if (player instanceof EntityPlayerMP) { BlockPos pos = player.getPosition(); DemonWillHolder holder = WorldDemonWillHandler.getWillHolder(player.getEntityWorld().provider.getDimension(), pos.getX() >> 4, pos.getZ() >> 4); @@ -300,7 +300,7 @@ public class GenericHandler { // Handles destroying altar @SubscribeEvent - public void harvestEvent(PlayerEvent.HarvestCheck event) { + public static void harvestEvent(PlayerEvent.HarvestCheck event) { IBlockState state = event.getTargetBlock(); Block block = state.getBlock(); if (block instanceof BlockAltar && event.getEntityPlayer() != null && event.getEntityPlayer() instanceof EntityPlayerMP && !event.getEntityPlayer().getHeldItemMainhand().isEmpty() && event.getEntityPlayer().getHeldItemMainhand().getItem() instanceof ItemAltarMaker) { @@ -311,14 +311,14 @@ public class GenericHandler { // Handle Teleposer block blacklist @SubscribeEvent - public void onTelepose(TeleposeEvent event) { + public static void onTelepose(TeleposeEvent event) { if (BloodMagicAPI.INSTANCE.getBlacklist().getTeleposer().contains(event.initialState) || BloodMagicAPI.INSTANCE.getBlacklist().getTeleposer().contains(event.finalState)) event.setCanceled(true); } // Handle Teleposer entity blacklist @SubscribeEvent - public void onTeleposeEntity(TeleposeEvent.Ent event) { + public static void onTeleposeEntity(TeleposeEvent.Ent event) { EntityEntry entry = EntityRegistry.getEntry(event.entity.getClass()); if (BloodMagicAPI.INSTANCE.getBlacklist().getTeleposerEntities().contains(entry.getRegistryName())) event.setCanceled(true); @@ -326,13 +326,13 @@ public class GenericHandler { // Sets teleport cooldown for Teleposed entities to 5 ticks (1/4 second) instead of 150 (7.5 seconds) @SubscribeEvent - public void onTeleposeEntityPost(TeleposeEvent.Ent.Post event) { + public static void onTeleposeEntityPost(TeleposeEvent.Ent.Post event) { event.entity.timeUntilPortal = 5; } // Handles binding of IBindable's as well as setting a player's highest orb tier @SubscribeEvent - public void onInteract(PlayerInteractEvent.RightClickItem event) { + public static void onInteract(PlayerInteractEvent.RightClickItem event) { if (event.getWorld().isRemote) return; @@ -374,14 +374,14 @@ public class GenericHandler { } @SubscribeEvent(priority = EventPriority.HIGH) - public void onTooltip(ItemTooltipEvent event) { + public static void onTooltip(ItemTooltipEvent event) { if (event.getItemStack().getItem() instanceof IBindable) if (((IBindable) event.getItemStack().getItem()).getOwnerUUID(event.getItemStack()) != null) event.getToolTip().add(I18n.format("tooltip.bloodmagic.currentOwner", PlayerHelper.getUsernameFromStack(event.getItemStack()))); } @SubscribeEvent - public void selfSacrificeEvent(SacrificeKnifeUsedEvent event) { + public static void selfSacrificeEvent(SacrificeKnifeUsedEvent event) { EntityPlayer player = event.player; if (LivingArmour.hasFullSet(player)) { @@ -402,7 +402,7 @@ public class GenericHandler { // Drop Blood Shards @SubscribeEvent - public void onLivingDrops(LivingDropsEvent event) { + public static void onLivingDrops(LivingDropsEvent event) { EntityLivingBase attackedEntity = event.getEntityLiving(); DamageSource source = event.getSource(); Entity entity = source.getTrueSource(); @@ -420,7 +420,7 @@ public class GenericHandler { // Experience Tome @SubscribeEvent(priority = EventPriority.LOWEST) - public void onExperiencePickup(PlayerPickupXpEvent event) { + public static void onExperiencePickup(PlayerPickupXpEvent event) { EntityPlayer player = event.getEntityPlayer(); ItemStack itemstack = EnchantmentHelper.getEnchantedItem(Enchantments.MENDING, player); @@ -441,11 +441,11 @@ public class GenericHandler { } } - private int xpToDurability(int xp) { + private static int xpToDurability(int xp) { return xp * 2; } - private int durabilityToXp(int durability) { + private static int durabilityToXp(int durability) { return durability / 2; } } diff --git a/src/main/java/WayofTime/bloodmagic/util/handler/event/LivingArmourHandler.java b/src/main/java/WayofTime/bloodmagic/util/handler/event/LivingArmourHandler.java index 903d77e9..341fd647 100644 --- a/src/main/java/WayofTime/bloodmagic/util/handler/event/LivingArmourHandler.java +++ b/src/main/java/WayofTime/bloodmagic/util/handler/event/LivingArmourHandler.java @@ -1,7 +1,6 @@ package WayofTime.bloodmagic.util.handler.event; import WayofTime.bloodmagic.BloodMagic; -import WayofTime.bloodmagic.annot.Handler; import WayofTime.bloodmagic.api.Constants; import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; import WayofTime.bloodmagic.core.RegistrarBloodMagic; @@ -35,14 +34,16 @@ import net.minecraftforge.event.entity.living.LivingHealEvent; import net.minecraftforge.event.entity.player.ArrowLooseEvent; import net.minecraftforge.event.entity.player.PlayerEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent; +import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.Event; import net.minecraftforge.fml.common.eventhandler.EventPriority; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; -@Handler +@Mod.EventBusSubscriber public class LivingArmourHandler { + @SubscribeEvent - public void onEntityHealed(LivingHealEvent event) { + public static void onEntityHealed(LivingHealEvent event) { if (event.getEntityLiving() instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) event.getEntity(); if (LivingArmour.hasFullSet(player)) { @@ -65,7 +66,7 @@ public class LivingArmourHandler { } @SubscribeEvent - public void onMiningSpeedCheck(PlayerEvent.BreakSpeed event) { + public static void onMiningSpeedCheck(PlayerEvent.BreakSpeed event) { EntityPlayer player = event.getEntityPlayer(); if (LivingArmour.hasFullSet(player)) { ItemStack chestStack = player.getItemStackFromSlot(EntityEquipmentSlot.CHEST); @@ -85,7 +86,7 @@ public class LivingArmourHandler { // Applies: Storm Trooper @SubscribeEvent - public void onEntityJoinedWorld(EntityJoinWorldEvent event) { + public static void onEntityJoinedWorld(EntityJoinWorldEvent event) { Entity owner = null; if (event.getEntity() instanceof EntityArrow) { owner = ((EntityArrow) event.getEntity()).shootingEntity; @@ -115,7 +116,7 @@ public class LivingArmourHandler { } @SubscribeEvent - public void onPlayerClick(PlayerInteractEvent event) { + public static void onPlayerClick(PlayerInteractEvent event) { if (event.isCancelable()) { EntityPlayer player = event.getEntityPlayer(); @@ -148,7 +149,7 @@ public class LivingArmourHandler { // Applies: Grim Reaper @SubscribeEvent(priority = EventPriority.HIGHEST) - public void onEntityDeath(LivingDeathEvent event) { + public static void onEntityDeath(LivingDeathEvent event) { if (event.getEntityLiving() instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) event.getEntityLiving(); @@ -174,7 +175,7 @@ public class LivingArmourHandler { // Applies: Jump @SubscribeEvent - public void onJumpEvent(LivingEvent.LivingJumpEvent event) { + public static void onJumpEvent(LivingEvent.LivingJumpEvent event) { if (event.getEntityLiving() instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) event.getEntityLiving(); @@ -198,7 +199,7 @@ public class LivingArmourHandler { // Applies: Step Assist, Speed Boost @SubscribeEvent(priority = EventPriority.HIGHEST) - public void onEntityUpdate(LivingEvent.LivingUpdateEvent event) { + public static void onEntityUpdate(LivingEvent.LivingUpdateEvent event) { if (event.getEntityLiving() instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) event.getEntityLiving(); boolean hasAssist = false; @@ -253,7 +254,7 @@ public class LivingArmourHandler { // Applies: Arrow Shot // Tracks: Arrow Shot @SubscribeEvent - public void onArrowFire(ArrowLooseEvent event) { + public static void onArrowFire(ArrowLooseEvent event) { World world = event.getEntityPlayer().getEntityWorld(); ItemStack stack = event.getBow(); EntityPlayer player = event.getEntityPlayer(); diff --git a/src/main/java/WayofTime/bloodmagic/util/handler/event/StatTrackerHandler.java b/src/main/java/WayofTime/bloodmagic/util/handler/event/StatTrackerHandler.java index 78b03262..a8121653 100644 --- a/src/main/java/WayofTime/bloodmagic/util/handler/event/StatTrackerHandler.java +++ b/src/main/java/WayofTime/bloodmagic/util/handler/event/StatTrackerHandler.java @@ -1,7 +1,6 @@ package WayofTime.bloodmagic.util.handler.event; import WayofTime.bloodmagic.BloodMagic; -import WayofTime.bloodmagic.annot.Handler; import WayofTime.bloodmagic.api.livingArmour.LivingArmourUpgrade; import WayofTime.bloodmagic.item.armour.ItemLivingArmour; import WayofTime.bloodmagic.item.armour.ItemSentientArmour; @@ -24,17 +23,18 @@ import net.minecraftforge.event.entity.living.LivingHurtEvent; import net.minecraftforge.event.entity.player.AttackEntityEvent; import net.minecraftforge.event.entity.player.PlayerPickupXpEvent; import net.minecraftforge.event.world.BlockEvent; +import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.EventPriority; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; -@Handler +@Mod.EventBusSubscriber public class StatTrackerHandler { private static float lastPlayerSwingStrength = 0; // Tracks: Digging, DigSlowdown @SubscribeEvent - public void blockBreakEvent(BlockEvent.BreakEvent event) { + public static void blockBreakEvent(BlockEvent.BreakEvent event) { EntityPlayer player = event.getPlayer(); if (player != null) { if (LivingArmour.hasFullSet(player)) { @@ -53,7 +53,7 @@ public class StatTrackerHandler { // Tracks: Health Boost @SubscribeEvent - public void onEntityHealed(LivingHealEvent event) { + public static void onEntityHealed(LivingHealEvent event) { EntityLivingBase healedEntity = event.getEntityLiving(); if (!(healedEntity instanceof EntityPlayer)) { return; @@ -74,13 +74,13 @@ public class StatTrackerHandler { } @SubscribeEvent - public void onLivingAttack(AttackEntityEvent event) { + public static void onLivingAttack(AttackEntityEvent event) { lastPlayerSwingStrength = event.getEntityPlayer().getCooledAttackStrength(0); } // Tracks: Fall Protect, Arrow Protect, Physical Protect, Grave Digger, Sprint Attack, Critical Strike, Nocturnal Prowess @SubscribeEvent - public void entityHurt(LivingHurtEvent event) { + public static void entityHurt(LivingHurtEvent event) { DamageSource source = event.getSource(); Entity sourceEntity = event.getSource().getTrueSource(); EntityLivingBase attackedEntity = event.getEntityLiving(); @@ -153,7 +153,7 @@ public class StatTrackerHandler { // Tracks: Experienced @SubscribeEvent(priority = EventPriority.LOW) - public void onExperiencePickup(PlayerPickupXpEvent event) { + public static void onExperiencePickup(PlayerPickupXpEvent event) { EntityPlayer player = event.getEntityPlayer(); if (LivingArmour.hasFullSet(player)) { diff --git a/src/main/java/WayofTime/bloodmagic/util/handler/event/WillHandler.java b/src/main/java/WayofTime/bloodmagic/util/handler/event/WillHandler.java index 6fc490c9..49a48e97 100644 --- a/src/main/java/WayofTime/bloodmagic/util/handler/event/WillHandler.java +++ b/src/main/java/WayofTime/bloodmagic/util/handler/event/WillHandler.java @@ -1,6 +1,5 @@ package WayofTime.bloodmagic.util.handler.event; -import WayofTime.bloodmagic.annot.Handler; import WayofTime.bloodmagic.api.soul.*; import WayofTime.bloodmagic.core.RegistrarBloodMagic; import WayofTime.bloodmagic.core.RegistrarBloodMagicItems; @@ -25,6 +24,7 @@ import net.minecraftforge.event.entity.living.LivingDeathEvent; import net.minecraftforge.event.entity.living.LivingDropsEvent; import net.minecraftforge.event.entity.player.EntityItemPickupEvent; import net.minecraftforge.event.world.ChunkDataEvent; +import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.Event; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.gameevent.TickEvent; @@ -33,14 +33,14 @@ import java.util.HashMap; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; -@Handler +@Mod.EventBusSubscriber public class WillHandler { - private final HashMap serverTicks = new HashMap(); + private static final HashMap SERVER_TICKS = new HashMap(); // Adds Will to player @SubscribeEvent - public void onItemPickup(EntityItemPickupEvent event) { + public static void onItemPickup(EntityItemPickupEvent event) { ItemStack stack = event.getItem().getItem(); if (stack.getItem() instanceof IDemonWill) { EntityPlayer player = event.getEntityPlayer(); @@ -55,7 +55,7 @@ public class WillHandler { } @SubscribeEvent - public void onEntityAttacked(LivingDeathEvent event) { + public static void onEntityAttacked(LivingDeathEvent event) { if (event.getSource() instanceof EntityDamageSourceIndirect) { Entity sourceEntity = event.getSource().getImmediateSource(); @@ -67,7 +67,7 @@ public class WillHandler { // Add/Drop Demon Will for Player @SubscribeEvent - public void onLivingDrops(LivingDropsEvent event) { + public static void onLivingDrops(LivingDropsEvent event) { EntityLivingBase attackedEntity = event.getEntityLiving(); DamageSource source = event.getSource(); Entity entity = source.getTrueSource(); @@ -106,16 +106,16 @@ public class WillHandler { } @SubscribeEvent - public void onServerWorldTick(TickEvent.WorldTickEvent event) { + public static void onServerWorldTick(TickEvent.WorldTickEvent event) { if (event.world.isRemote) return; int dim = event.world.provider.getDimension(); if (event.phase == TickEvent.Phase.END) { - if (!this.serverTicks.containsKey(dim)) - this.serverTicks.put(dim, 0); + if (!SERVER_TICKS.containsKey(dim)) + SERVER_TICKS.put(dim, 0); - int ticks = (this.serverTicks.get(dim)); + int ticks = (SERVER_TICKS.get(dim)); if (ticks % 20 == 0) { CopyOnWriteArrayList dirtyChunks = WorldDemonWillHandler.dirtyChunks.get(dim); @@ -127,13 +127,13 @@ public class WillHandler { } } - this.serverTicks.put(dim, ticks + 1); + SERVER_TICKS.put(dim, ticks + 1); } } @SubscribeEvent - public void chunkSave(ChunkDataEvent.Save event) { + public static void chunkSave(ChunkDataEvent.Save event) { int dim = event.getWorld().provider.getDimension(); ChunkPos loc = event.getChunk().getPos(); @@ -150,7 +150,7 @@ public class WillHandler { } @SubscribeEvent - public void chunkLoad(ChunkDataEvent.Load event) { + public static void chunkLoad(ChunkDataEvent.Load event) { int dim = event.getWorld().provider.getDimension(); if (event.getData().getCompoundTag("BloodMagic").hasKey("base")) { NBTTagCompound nbt = event.getData().getCompoundTag("BloodMagic"); From 7cac007b1140e47cc37c490759d870949aabe952 Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Fri, 13 Oct 2017 17:41:54 -0700 Subject: [PATCH 24/27] Add modid to subscriber annotations --- src/main/java/WayofTime/bloodmagic/ConfigHandler.java | 2 +- .../java/WayofTime/bloodmagic/potion/PotionEventHandlers.java | 3 ++- .../WayofTime/bloodmagic/util/handler/event/ClientHandler.java | 2 +- .../bloodmagic/util/handler/event/CraftingHandler.java | 2 +- .../bloodmagic/util/handler/event/GenericHandler.java | 2 +- .../bloodmagic/util/handler/event/LivingArmourHandler.java | 2 +- .../bloodmagic/util/handler/event/StatTrackerHandler.java | 2 +- .../WayofTime/bloodmagic/util/handler/event/WillHandler.java | 3 ++- 8 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/main/java/WayofTime/bloodmagic/ConfigHandler.java b/src/main/java/WayofTime/bloodmagic/ConfigHandler.java index 99867dc1..23e12138 100644 --- a/src/main/java/WayofTime/bloodmagic/ConfigHandler.java +++ b/src/main/java/WayofTime/bloodmagic/ConfigHandler.java @@ -8,7 +8,7 @@ import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; @Config(modid = BloodMagic.MODID, name = BloodMagic.MODID + "/" + BloodMagic.MODID, category = "") -@Mod.EventBusSubscriber +@Mod.EventBusSubscriber(modid = BloodMagic.MODID) public class ConfigHandler { @Config.Comment({ "Blacklist options for various features" }) diff --git a/src/main/java/WayofTime/bloodmagic/potion/PotionEventHandlers.java b/src/main/java/WayofTime/bloodmagic/potion/PotionEventHandlers.java index 27911f00..a393cb53 100644 --- a/src/main/java/WayofTime/bloodmagic/potion/PotionEventHandlers.java +++ b/src/main/java/WayofTime/bloodmagic/potion/PotionEventHandlers.java @@ -1,5 +1,6 @@ package WayofTime.bloodmagic.potion; +import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.api.event.SacrificeKnifeUsedEvent; import WayofTime.bloodmagic.core.RegistrarBloodMagic; import net.minecraft.entity.Entity; @@ -18,7 +19,7 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import java.util.List; -@Mod.EventBusSubscriber +@Mod.EventBusSubscriber(modid = BloodMagic.MODID) public class PotionEventHandlers { @SubscribeEvent diff --git a/src/main/java/WayofTime/bloodmagic/util/handler/event/ClientHandler.java b/src/main/java/WayofTime/bloodmagic/util/handler/event/ClientHandler.java index 7066d100..e1ad1e37 100644 --- a/src/main/java/WayofTime/bloodmagic/util/handler/event/ClientHandler.java +++ b/src/main/java/WayofTime/bloodmagic/util/handler/event/ClientHandler.java @@ -50,7 +50,7 @@ import org.lwjgl.opengl.GL11; import java.util.*; -@Mod.EventBusSubscriber +@Mod.EventBusSubscriber(modid = BloodMagic.MODID) @SideOnly(Side.CLIENT) public class ClientHandler { // Quick toggle for error suppression. Set to false if you wish to hide model errors. diff --git a/src/main/java/WayofTime/bloodmagic/util/handler/event/CraftingHandler.java b/src/main/java/WayofTime/bloodmagic/util/handler/event/CraftingHandler.java index 61e56302..3c9ca214 100644 --- a/src/main/java/WayofTime/bloodmagic/util/handler/event/CraftingHandler.java +++ b/src/main/java/WayofTime/bloodmagic/util/handler/event/CraftingHandler.java @@ -26,7 +26,7 @@ import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import java.util.ArrayList; import java.util.List; -@Mod.EventBusSubscriber +@Mod.EventBusSubscriber(modid = BloodMagic.MODID) public class CraftingHandler { // Sets the uses of crafted Inscription Tools to 10 diff --git a/src/main/java/WayofTime/bloodmagic/util/handler/event/GenericHandler.java b/src/main/java/WayofTime/bloodmagic/util/handler/event/GenericHandler.java index 80706b88..72c9fb45 100644 --- a/src/main/java/WayofTime/bloodmagic/util/handler/event/GenericHandler.java +++ b/src/main/java/WayofTime/bloodmagic/util/handler/event/GenericHandler.java @@ -87,7 +87,7 @@ import java.util.List; import java.util.Map; import java.util.Random; -@Mod.EventBusSubscriber +@Mod.EventBusSubscriber(modid = BloodMagic.MODID) public class GenericHandler { public static Map bounceMap = new HashMap(); public static Map filledHandMap = new HashMap(); diff --git a/src/main/java/WayofTime/bloodmagic/util/handler/event/LivingArmourHandler.java b/src/main/java/WayofTime/bloodmagic/util/handler/event/LivingArmourHandler.java index 341fd647..a82dd6a0 100644 --- a/src/main/java/WayofTime/bloodmagic/util/handler/event/LivingArmourHandler.java +++ b/src/main/java/WayofTime/bloodmagic/util/handler/event/LivingArmourHandler.java @@ -39,7 +39,7 @@ import net.minecraftforge.fml.common.eventhandler.Event; import net.minecraftforge.fml.common.eventhandler.EventPriority; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; -@Mod.EventBusSubscriber +@Mod.EventBusSubscriber(modid = BloodMagic.MODID) public class LivingArmourHandler { @SubscribeEvent diff --git a/src/main/java/WayofTime/bloodmagic/util/handler/event/StatTrackerHandler.java b/src/main/java/WayofTime/bloodmagic/util/handler/event/StatTrackerHandler.java index a8121653..8aee28b8 100644 --- a/src/main/java/WayofTime/bloodmagic/util/handler/event/StatTrackerHandler.java +++ b/src/main/java/WayofTime/bloodmagic/util/handler/event/StatTrackerHandler.java @@ -27,7 +27,7 @@ import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.eventhandler.EventPriority; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; -@Mod.EventBusSubscriber +@Mod.EventBusSubscriber(modid = BloodMagic.MODID) public class StatTrackerHandler { private static float lastPlayerSwingStrength = 0; diff --git a/src/main/java/WayofTime/bloodmagic/util/handler/event/WillHandler.java b/src/main/java/WayofTime/bloodmagic/util/handler/event/WillHandler.java index 49a48e97..4857c90e 100644 --- a/src/main/java/WayofTime/bloodmagic/util/handler/event/WillHandler.java +++ b/src/main/java/WayofTime/bloodmagic/util/handler/event/WillHandler.java @@ -1,5 +1,6 @@ package WayofTime.bloodmagic.util.handler.event; +import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.api.soul.*; import WayofTime.bloodmagic.core.RegistrarBloodMagic; import WayofTime.bloodmagic.core.RegistrarBloodMagicItems; @@ -33,7 +34,7 @@ import java.util.HashMap; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; -@Mod.EventBusSubscriber +@Mod.EventBusSubscriber(modid = BloodMagic.MODID) public class WillHandler { private static final HashMap SERVER_TICKS = new HashMap(); From 67b4b7f9b1735fbd62348eb36daf68691724e4bf Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Fri, 15 Dec 2017 00:10:13 -0800 Subject: [PATCH 25/27] More Sigil work --- .../core/RegistrarBloodMagicItems.java | 11 +- .../item/sigil/ItemSigilGreenGrove.java | 94 ------------ .../bloodmagic/item/sigil/ItemSigilHaste.java | 22 --- .../bloodmagic/item/sigil/ItemSigilLava.java | 115 -------------- .../item/sigil/ItemSigilTeleposition.java | 90 ----------- .../item/sigil/ItemSigilTransposition.java | 143 ----------------- .../bloodmagic/item/sigil/ItemSigilWater.java | 132 ---------------- .../sigil/sigil/ItemSigilTeleposition.java | 90 +++++++++++ .../sigil/sigil/ItemSigilTransposition.java | 145 ++++++++++++++++++ .../item/sigil/sigil/SigilFluid.java | 79 ++++++++++ .../item/sigil/sigil/SigilGreenGrove.java | 91 +++++++++++ .../item/sigil/sigil/SigilHaste.java | 22 +++ .../util/handler/event/GenericHandler.java | 51 ++++-- .../bloodmagic/blockstates/sigil_lava.json | 10 +- .../blockstates/sigil_teleposition.json | 10 +- .../blockstates/sigil_transposition.json | 10 +- .../bloodmagic/blockstates/sigil_water.json | 10 +- 17 files changed, 485 insertions(+), 640 deletions(-) delete mode 100644 src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilGreenGrove.java delete mode 100644 src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilHaste.java delete mode 100644 src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilLava.java delete mode 100644 src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilTeleposition.java delete mode 100644 src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilTransposition.java delete mode 100644 src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilWater.java create mode 100644 src/main/java/WayofTime/bloodmagic/item/sigil/sigil/ItemSigilTeleposition.java create mode 100644 src/main/java/WayofTime/bloodmagic/item/sigil/sigil/ItemSigilTransposition.java create mode 100644 src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilFluid.java create mode 100644 src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilGreenGrove.java create mode 100644 src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilHaste.java diff --git a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicItems.java b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicItems.java index f43433ee..79f1dcd3 100644 --- a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicItems.java +++ b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicItems.java @@ -16,6 +16,8 @@ import WayofTime.bloodmagic.item.routing.ItemNodeRouter; import WayofTime.bloodmagic.item.routing.ItemRouterFilter; import WayofTime.bloodmagic.item.sigil.*; import WayofTime.bloodmagic.item.sigil.sigil.*; +import WayofTime.bloodmagic.item.sigil.sigil.ItemSigilTeleposition; +import WayofTime.bloodmagic.item.sigil.sigil.ItemSigilTransposition; import WayofTime.bloodmagic.item.soul.*; import WayofTime.bloodmagic.item.types.ComponentType; import WayofTime.bloodmagic.item.types.ReagentType; @@ -29,6 +31,7 @@ import net.minecraft.item.Item; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.ModelLoader; import net.minecraftforge.common.util.EnumHelper; +import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @@ -144,15 +147,15 @@ public class RegistrarBloodMagicItems { new ItemBoundShovel().setRegistryName("bound_shovel"), new ItemSigilDivination().setRegistryName("sigil_divination"), new ItemSigil(new SigilAir(), "air").setRegistryName("sigil_air"), - new ItemSigilWater().setRegistryName("sigil_water"), - new ItemSigilLava().setRegistryName("sigil_lava"), + new ItemSigil(new SigilFluid(FluidRegistry.WATER), "water").setRegistryName("sigil_water"), + new ItemSigil(new SigilFluid(FluidRegistry.LAVA), "lava").setRegistryName("sigil_lava"), new ItemSigilVoid().setRegistryName("sigil_void"), - new ItemSigilGreenGrove().setRegistryName("sigil_green_grove"), + new ItemSigil(new SigilGreenGrove(), "green_grove").setRegistryName("sigil_green_grove"), new ItemSigil(new SigilBloodLight(), "blood_light").setRegistryName("sigil_blood_light"), new ItemSigil(new SigilElementalAffinity(), "elemental_affinity").setRegistryName("sigil_elemental_affinity"), new ItemSigilMagnetism().setRegistryName("sigil_magnetism"), new ItemSigilSuppression().setRegistryName("sigil_suppression"), - new ItemSigilHaste().setRegistryName("sigil_haste"), + new ItemSigil(new SigilHaste(), "haste").setRegistryName("sigil_haste"), new ItemSigil(new SigilFastMiner(), "fast_miner").setRegistryName("sigil_fast_miner"), new ItemSigilSeer().setRegistryName("sigil_seer"), new ItemSigilPhantomBridge().setRegistryName("sigil_phantom_bridge"), diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilGreenGrove.java b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilGreenGrove.java deleted file mode 100644 index 842b69ad..00000000 --- a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilGreenGrove.java +++ /dev/null @@ -1,94 +0,0 @@ -package WayofTime.bloodmagic.item.sigil; - -import WayofTime.bloodmagic.api.util.helper.PlayerHelper; -import WayofTime.bloodmagic.api_impl.BloodMagicAPI; -import net.minecraft.block.IGrowable; -import net.minecraft.block.state.IBlockState; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.EnumFacing; -import net.minecraft.util.EnumHand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.player.BonemealEvent; -import net.minecraftforge.fml.common.eventhandler.Event.Result; - -public class ItemSigilGreenGrove extends ItemSigilToggleableBase { - public ItemSigilGreenGrove() { - super("green_grove", 150); - } - - @Override - public boolean onSigilUse(ItemStack stack, EntityPlayer player, World world, BlockPos blockPos, EnumFacing side, float hitX, float hitY, float hitZ) { - if (PlayerHelper.isFakePlayer(player)) - return false; - - if (applyBonemeal(world, blockPos, player, stack)) { - if (!world.isRemote) { - world.playEvent(2005, blockPos, 0); - } - return true; - } - - return false; - } - - @Override - public void onSigilUpdate(ItemStack stack, World worldIn, EntityPlayer player, int itemSlot, boolean isSelected) { - if (PlayerHelper.isFakePlayer(player)) - return; - - int range = 3; - int verticalRange = 2; - int posX = (int) Math.round(player.posX - 0.5f); - int posY = (int) player.posY; - int posZ = (int) Math.round(player.posZ - 0.5f); - - for (int ix = posX - range; ix <= posX + range; ix++) { - for (int iz = posZ - range; iz <= posZ + range; iz++) { - for (int iy = posY - verticalRange; iy <= posY + verticalRange; iy++) { - BlockPos blockPos = new BlockPos(ix, iy, iz); - IBlockState state = worldIn.getBlockState(blockPos); - - if (!BloodMagicAPI.INSTANCE.getBlacklist().getGreenGrove().contains(state)) { - if (state.getBlock() instanceof IGrowable) { - if (worldIn.rand.nextInt(50) == 0) { - IBlockState preBlockState = worldIn.getBlockState(blockPos); - state.getBlock().updateTick(worldIn, blockPos, state, worldIn.rand); - - IBlockState newState = worldIn.getBlockState(blockPos); - if (!newState.equals(preBlockState) && !worldIn.isRemote) - worldIn.playEvent(2005, blockPos, 0); - } - } - } - } - } - } - } - - private boolean applyBonemeal(World worldIn, BlockPos target, EntityPlayer player, ItemStack sigilStack) { - IBlockState iblockstate = worldIn.getBlockState(target); - - BonemealEvent event = new BonemealEvent(player, worldIn, target, iblockstate, EnumHand.MAIN_HAND, sigilStack); - if (MinecraftForge.EVENT_BUS.post(event)) - return false; - else if (event.getResult() == Result.ALLOW) - return true; - - if (iblockstate.getBlock() instanceof IGrowable) { - IGrowable igrowable = (IGrowable) iblockstate.getBlock(); - - if (igrowable.canGrow(worldIn, target, iblockstate, worldIn.isRemote)) { - if (!worldIn.isRemote) { - if (igrowable.canUseBonemeal(worldIn, worldIn.rand, target, iblockstate)) - igrowable.grow(worldIn, worldIn.rand, target, iblockstate); - } - return true; - } - } - - return false; - } -} diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilHaste.java b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilHaste.java deleted file mode 100644 index 02559204..00000000 --- a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilHaste.java +++ /dev/null @@ -1,22 +0,0 @@ -package WayofTime.bloodmagic.item.sigil; - -import WayofTime.bloodmagic.api.util.helper.PlayerHelper; -import WayofTime.bloodmagic.core.RegistrarBloodMagic; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.PotionEffect; -import net.minecraft.world.World; - -public class ItemSigilHaste extends ItemSigilToggleableBase { - public ItemSigilHaste() { - super("haste", 250); - } - - @Override - public void onSigilUpdate(ItemStack stack, World world, EntityPlayer player, int itemSlot, boolean isSelected) { - if (PlayerHelper.isFakePlayer(player)) - return; - - player.addPotionEffect(new PotionEffect(RegistrarBloodMagic.BOOST, 2, 0, true, false)); - } -} diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilLava.java b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilLava.java deleted file mode 100644 index 919b2dab..00000000 --- a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilLava.java +++ /dev/null @@ -1,115 +0,0 @@ -package WayofTime.bloodmagic.item.sigil; - -import WayofTime.bloodmagic.api.iface.ISigil; -import WayofTime.bloodmagic.api.util.helper.NetworkHelper; -import WayofTime.bloodmagic.api.util.helper.PlayerHelper; -import net.minecraft.block.material.Material; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResult; -import net.minecraft.util.EnumActionResult; -import net.minecraft.util.EnumFacing; -import net.minecraft.util.EnumHand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.world.World; -import net.minecraftforge.event.ForgeEventFactory; -import net.minecraftforge.fluids.FluidRegistry; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.CapabilityFluidHandler; -import net.minecraftforge.fluids.capability.IFluidHandler; - -public class ItemSigilLava extends ItemSigilBase { - public ItemSigilLava() { - super("lava", 1000); - } - - @Override - public ActionResult onItemRightClick(World world, EntityPlayer player, EnumHand hand) { - ItemStack stack = player.getHeldItem(hand); - if (stack.getItem() instanceof ISigil.Holding) - stack = ((Holding) stack.getItem()).getHeldItem(stack, player); - if (PlayerHelper.isFakePlayer(player)) - return ActionResult.newResult(EnumActionResult.FAIL, stack); - - if (!world.isRemote && !isUnusable(stack)) { - RayTraceResult rayTrace = this.rayTrace(world, player, false); - - if (rayTrace != null) { - ActionResult ret = ForgeEventFactory.onBucketUse(player, world, stack, rayTrace); - if (ret != null) - return ret; - - if (rayTrace.typeOfHit == RayTraceResult.Type.BLOCK) { - BlockPos blockpos = rayTrace.getBlockPos(); - - if (!world.isBlockModifiable(player, blockpos)) { - return super.onItemRightClick(world, player, hand); - } - - if (!player.canPlayerEdit(blockpos.offset(rayTrace.sideHit), rayTrace.sideHit, stack)) { - return super.onItemRightClick(world, player, hand); - } - - BlockPos blockpos1 = blockpos.offset(rayTrace.sideHit); - - if (!player.canPlayerEdit(blockpos1, rayTrace.sideHit, stack)) { - return super.onItemRightClick(world, player, hand); - } - - if (this.canPlaceLava(world, blockpos1) && NetworkHelper.getSoulNetwork(getOwnerUUID(stack)).syphonAndDamage(player, getLpUsed()) && this.tryPlaceLava(world, blockpos1)) { - return super.onItemRightClick(world, player, hand); - } - } - } - } - - return super.onItemRightClick(world, player, hand); - } - - @Override - public EnumActionResult onItemUse(EntityPlayer player, World world, BlockPos blockPos, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) { - ItemStack stack = player.getHeldItem(hand); - if (world.isRemote || player.isSneaking() || isUnusable(stack)) { - return EnumActionResult.FAIL; - } - if (!world.canMineBlockBody(player, blockPos)) { - return EnumActionResult.FAIL; - } - - TileEntity tile = world.getTileEntity(blockPos); - if (tile.hasCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, side)) { - IFluidHandler handler = tile.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, side); - FluidStack fluid = new FluidStack(FluidRegistry.LAVA, 1000); - int amount = handler.fill(fluid, false); - - if (amount > 0 && NetworkHelper.getSoulNetwork(getOwnerUUID(stack)).syphonAndDamage(player, getLpUsed())) { - handler.fill(fluid, true); - return EnumActionResult.SUCCESS; - } - - return EnumActionResult.FAIL; - } - - return EnumActionResult.FAIL; - } - - public boolean canPlaceLava(World world, BlockPos blockPos) { - if (!world.isAirBlock(blockPos) && world.getBlockState(blockPos).getBlock().getMaterial(world.getBlockState(blockPos)).isSolid()) { - return false; - } else if ((world.getBlockState(blockPos).getBlock() == Blocks.LAVA || world.getBlockState(blockPos).getBlock() == Blocks.FLOWING_LAVA) && world.getBlockState(blockPos).getBlock().getMetaFromState(world.getBlockState(blockPos)) == 0) { - return false; - } else { - world.setBlockState(blockPos, Blocks.FLOWING_LAVA.getBlockState().getBaseState(), 3); - return true; - } - } - - public boolean tryPlaceLava(World world, BlockPos pos) { - Material material = world.getBlockState(pos).getBlock().getMaterial(world.getBlockState(pos)); - - return world.isAirBlock(pos) && !material.isSolid(); - } -} diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilTeleposition.java b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilTeleposition.java deleted file mode 100644 index e4fd869f..00000000 --- a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilTeleposition.java +++ /dev/null @@ -1,90 +0,0 @@ -package WayofTime.bloodmagic.item.sigil; - -import WayofTime.bloodmagic.api.Constants; -import WayofTime.bloodmagic.api.iface.ISigil; -import WayofTime.bloodmagic.api.teleport.TeleportQueue; -import WayofTime.bloodmagic.api.util.helper.NBTHelper; -import WayofTime.bloodmagic.api.util.helper.PlayerHelper; -import WayofTime.bloodmagic.ritual.portal.Teleports; -import WayofTime.bloodmagic.tile.TileTeleposer; -import WayofTime.bloodmagic.util.helper.TextHelper; -import net.minecraft.client.util.ITooltipFlag; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.ActionResult; -import net.minecraft.util.EnumActionResult; -import net.minecraft.util.EnumFacing; -import net.minecraft.util.EnumHand; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; - -import java.util.List; - -public class ItemSigilTeleposition extends ItemSigilBase { - public ItemSigilTeleposition() { - super("teleposition"); - } - - @Override - @SideOnly(Side.CLIENT) - public void addInformation(ItemStack stack, World world, List tooltip, ITooltipFlag flag) { - super.addInformation(stack, world, tooltip, flag); - - if (!stack.hasTagCompound()) - return; - NBTTagCompound tag = stack.getTagCompound(); - - if (tag != null && stack.getTagCompound().hasKey(Constants.NBT.DIMENSION_ID) && stack.getTagCompound().hasKey(Constants.NBT.X_COORD) && stack.getTagCompound().hasKey(Constants.NBT.Y_COORD) && stack.getTagCompound().hasKey(Constants.NBT.Z_COORD)) { - tooltip.add(" "); - tooltip.add(TextHelper.localizeEffect("tooltip.bloodmagic.telepositionFocus.coords", getValue(tag, Constants.NBT.X_COORD), getValue(tag, Constants.NBT.Y_COORD), getValue(tag, Constants.NBT.Z_COORD))); - tooltip.add(TextHelper.localizeEffect("tooltip.bloodmagic.telepositionFocus.dimension", getValue(tag, Constants.NBT.DIMENSION_ID))); - } - } - - @Override - public ActionResult onItemRightClick(World world, EntityPlayer player, EnumHand hand) { - ItemStack stack = player.getHeldItem(hand); - if (stack.getItem() instanceof ISigil.Holding) - stack = ((Holding) stack.getItem()).getHeldItem(stack, player); - if (PlayerHelper.isFakePlayer(player)) - return ActionResult.newResult(EnumActionResult.FAIL, stack); - - if (!world.isRemote && NBTHelper.checkNBT(stack) != null && stack.getTagCompound().hasKey(Constants.NBT.DIMENSION_ID) && stack.getTagCompound().hasKey(Constants.NBT.X_COORD) && stack.getTagCompound().hasKey(Constants.NBT.Y_COORD) && stack.getTagCompound().hasKey(Constants.NBT.Z_COORD)) { - BlockPos blockPos = new BlockPos(getValue(stack.getTagCompound(), Constants.NBT.X_COORD), getValue(stack.getTagCompound(), Constants.NBT.Y_COORD), getValue(stack.getTagCompound(), Constants.NBT.Z_COORD)).up(); - if (world.provider.getDimension() == getValue(stack.getTagCompound(), Constants.NBT.DIMENSION_ID)) { - TeleportQueue.getInstance().addITeleport(new Teleports.TeleportSameDim(blockPos, player, getOwnerUUID(stack), true)); - } else { - TeleportQueue.getInstance().addITeleport(new Teleports.TeleportToDim(blockPos, player, getOwnerUUID(stack), world, getValue(stack.getTagCompound(), Constants.NBT.DIMENSION_ID), true)); - } - } - return super.onItemRightClick(world, player, hand); - } - - @Override - public EnumActionResult onItemUse(EntityPlayer player, World world, BlockPos pos, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) { - ItemStack stack = player.getHeldItem(hand); - if (stack.getItem() instanceof ISigil.Holding) - stack = ((Holding) stack.getItem()).getHeldItem(stack, player); - if (PlayerHelper.isFakePlayer(player)) - return EnumActionResult.FAIL; - - if (!world.isRemote && player.isSneaking() && NBTHelper.checkNBT(stack) != null) { - if (world.getTileEntity(pos) != null && world.getTileEntity(pos) instanceof TileTeleposer) { - stack.getTagCompound().setInteger(Constants.NBT.DIMENSION_ID, world.provider.getDimension()); - stack.getTagCompound().setInteger(Constants.NBT.X_COORD, pos.getX()); - stack.getTagCompound().setInteger(Constants.NBT.Y_COORD, pos.getY()); - stack.getTagCompound().setInteger(Constants.NBT.Z_COORD, pos.getZ()); - - return EnumActionResult.SUCCESS; - } - } - return EnumActionResult.FAIL; - } - - public int getValue(NBTTagCompound tag, String key) { - return tag.getInteger(key); - } -} diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilTransposition.java b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilTransposition.java deleted file mode 100644 index ac8429f4..00000000 --- a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilTransposition.java +++ /dev/null @@ -1,143 +0,0 @@ -package WayofTime.bloodmagic.item.sigil; - -import WayofTime.bloodmagic.api.BlockStack; -import WayofTime.bloodmagic.api.Constants; -import WayofTime.bloodmagic.api.iface.ISigil; -import WayofTime.bloodmagic.api.util.helper.NBTHelper; -import WayofTime.bloodmagic.api.util.helper.NetworkHelper; -import WayofTime.bloodmagic.api.util.helper.PlayerHelper; -import WayofTime.bloodmagic.api_impl.BloodMagicAPI; -import net.minecraft.block.Block; -import net.minecraft.block.state.IBlockState; -import net.minecraft.client.util.ITooltipFlag; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntityMobSpawner; -import net.minecraft.util.EnumActionResult; -import net.minecraft.util.EnumFacing; -import net.minecraft.util.EnumHand; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraftforge.fml.common.registry.ForgeRegistries; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; - -import java.util.List; - -public class ItemSigilTransposition extends ItemSigilBase { - public ItemSigilTransposition() { - super("transposition", 1000); - } - - @Override - @SideOnly(Side.CLIENT) - public void addInformation(ItemStack stack, World world, List tooltip, ITooltipFlag flag) { - super.addInformation(stack, world, tooltip, flag); - - if (!stack.hasTagCompound()) - return; - NBTTagCompound tag = stack.getTagCompound(); - - if (tag.hasKey(Constants.NBT.CONTAINED_BLOCK_NAME) && tag.hasKey(Constants.NBT.CONTAINED_BLOCK_META)) { - tooltip.add(" "); - BlockStack blockStack = new BlockStack(Block.getBlockFromName(tag.getString(Constants.NBT.CONTAINED_BLOCK_NAME)), tag.getByte(Constants.NBT.CONTAINED_BLOCK_META)); - tooltip.add(blockStack.getItemStack().getDisplayName()); - } - } - - @Override - public String getItemStackDisplayName(ItemStack stack) { - stack = NBTHelper.checkNBT(stack); - NBTTagCompound tag = stack.getTagCompound(); - - if (tag.hasKey(Constants.NBT.CONTAINED_BLOCK_NAME) && tag.hasKey(Constants.NBT.CONTAINED_BLOCK_META)) { - BlockStack blockStack = new BlockStack(ForgeRegistries.BLOCKS.getValue(new ResourceLocation(tag.getString(Constants.NBT.CONTAINED_BLOCK_NAME))), tag.getByte(Constants.NBT.CONTAINED_BLOCK_META)); - if (blockStack.getItemStack() != null && blockStack.getItemStack().getItem() != null) //TODO: Figure out why it's a null item. This is a patchwork solution. - { - return super.getItemStackDisplayName(stack) + " (" + blockStack.getItemStack().getDisplayName() + ")"; - } - - } - return super.getItemStackDisplayName(stack); - } - - @Override - public EnumActionResult onItemUse(EntityPlayer player, World world, BlockPos blockPos, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) { - ItemStack stack = player.getHeldItem(hand); - if (stack.getItem() instanceof ISigil.Holding) - stack = ((Holding) stack.getItem()).getHeldItem(stack, player); - if (PlayerHelper.isFakePlayer(player)) - return EnumActionResult.FAIL; - - stack = NBTHelper.checkNBT(stack); - - IBlockState state = world.getBlockState(blockPos); - if (!world.isRemote) { - if (BloodMagicAPI.INSTANCE.getBlacklist().getTransposition().contains(state)) - return EnumActionResult.FAIL; - - if (player.isSneaking() && (!stack.getTagCompound().hasKey(Constants.NBT.CONTAINED_BLOCK_NAME) || !stack.getTagCompound().hasKey(Constants.NBT.CONTAINED_BLOCK_META))) { - if (state.getPlayerRelativeBlockHardness(player, world, blockPos) >= 0 && state.getBlockHardness(world, blockPos) >= 0) { - int cost = getLpUsed(); - - NBTTagCompound tileNBTTag = new NBTTagCompound(); - String blockName = state.getBlock().getRegistryName().toString(); - byte metadata = (byte) state.getBlock().getMetaFromState(state); - - if (world.getTileEntity(blockPos) != null) { - cost *= 5; - world.getTileEntity(blockPos).writeToNBT(tileNBTTag); - - if (world.getTileEntity(blockPos) instanceof TileEntityMobSpawner) { - cost *= 6; - } - } - - stack.getTagCompound().setString(Constants.NBT.CONTAINED_BLOCK_NAME, blockName); - stack.getTagCompound().setByte(Constants.NBT.CONTAINED_BLOCK_META, metadata); - stack.getTagCompound().setTag(Constants.NBT.CONTAINED_TILE_ENTITY, tileNBTTag); - - NetworkHelper.getSoulNetwork(getOwnerUUID(stack)).syphonAndDamage(player, cost); - - world.removeTileEntity(blockPos); - world.setBlockToAir(blockPos); - - return EnumActionResult.SUCCESS; - } - } else if (stack.getTagCompound().hasKey(Constants.NBT.CONTAINED_BLOCK_NAME) && stack.getTagCompound().hasKey(Constants.NBT.CONTAINED_BLOCK_META)) { - IBlockState iblockstate = world.getBlockState(blockPos); - Block block = iblockstate.getBlock(); - BlockStack blockToPlace = new BlockStack(Block.getBlockFromName(stack.getTagCompound().getString(Constants.NBT.CONTAINED_BLOCK_NAME)), stack.getTagCompound().getByte(Constants.NBT.CONTAINED_BLOCK_META)); - - if (!block.isReplaceable(world, blockPos)) { - blockPos = blockPos.offset(side); - } - - if (!stack.isEmpty() && player.canPlayerEdit(blockPos, side, stack) && world.mayPlace(blockToPlace.getBlock(), blockPos, false, side, player)) { - if (world.setBlockState(blockPos, blockToPlace.getState(), 3)) { - blockToPlace.getBlock().onBlockPlacedBy(world, blockPos, blockToPlace.getState(), player, blockToPlace.getItemStack()); -// world.playSound((double) ((float) blockPos.getX() + 0.5F), (double) ((float) blockPos.getY() + 0.5F), (double) ((float) blockPos.getZ() + 0.5F), blockToPlace.getBlock().getStepSound().getPlaceSound(), (blockToPlace.getBlock().getStepSound().getVolume() + 1.0F) / 2.0F, blockToPlace.getBlock().getStepSound().getPitch() * 0.8F); - - if (stack.getTagCompound().hasKey(Constants.NBT.CONTAINED_TILE_ENTITY) && blockToPlace.getBlock().hasTileEntity(blockToPlace.getState())) { - NBTTagCompound tag = stack.getTagCompound().getCompoundTag(Constants.NBT.CONTAINED_TILE_ENTITY); - tag.setInteger("x", blockPos.getX()); - tag.setInteger("y", blockPos.getY()); - tag.setInteger("z", blockPos.getZ()); - world.getTileEntity(blockPos).readFromNBT(tag); - } - world.notifyBlockUpdate(blockPos, state, state, 3); - - stack.getTagCompound().removeTag(Constants.NBT.CONTAINED_BLOCK_NAME); - stack.getTagCompound().removeTag(Constants.NBT.CONTAINED_BLOCK_META); - stack.getTagCompound().removeTag(Constants.NBT.CONTAINED_TILE_ENTITY); - - return EnumActionResult.SUCCESS; - } - } - } - } - return EnumActionResult.FAIL; - } -} diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilWater.java b/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilWater.java deleted file mode 100644 index 8fa03754..00000000 --- a/src/main/java/WayofTime/bloodmagic/item/sigil/ItemSigilWater.java +++ /dev/null @@ -1,132 +0,0 @@ -package WayofTime.bloodmagic.item.sigil; - -import WayofTime.bloodmagic.api.iface.ISigil; -import WayofTime.bloodmagic.api.util.helper.NetworkHelper; -import WayofTime.bloodmagic.api.util.helper.PlayerHelper; -import net.minecraft.block.BlockCauldron; -import net.minecraft.block.material.Material; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.init.SoundEvents; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.*; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.world.World; -import net.minecraftforge.fluids.FluidRegistry; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.capability.CapabilityFluidHandler; -import net.minecraftforge.fluids.capability.IFluidHandler; - -public class ItemSigilWater extends ItemSigilBase { - public ItemSigilWater() { - super("water", 100); - } - - @Override - public ActionResult onItemRightClick(World world, EntityPlayer player, EnumHand hand) { - ItemStack stack = player.getHeldItem(hand); - if (stack.getItem() instanceof ISigil.Holding) - stack = ((Holding) stack.getItem()).getHeldItem(stack, player); - if (PlayerHelper.isFakePlayer(player)) - return ActionResult.newResult(EnumActionResult.FAIL, stack); - - if (!world.isRemote && !isUnusable(stack)) { - RayTraceResult rayTrace = this.rayTrace(world, player, false); - - if (rayTrace != null) { - ActionResult ret = net.minecraftforge.event.ForgeEventFactory.onBucketUse(player, world, stack, rayTrace); - if (ret != null) - return ret; - - if (rayTrace.typeOfHit == RayTraceResult.Type.BLOCK) { - BlockPos blockpos = rayTrace.getBlockPos(); - - if (!world.isBlockModifiable(player, blockpos)) - return super.onItemRightClick(world, player, hand); - - if (!player.canPlayerEdit(blockpos.offset(rayTrace.sideHit), rayTrace.sideHit, stack)) - return super.onItemRightClick(world, player, hand); - - BlockPos blockpos1 = blockpos.offset(rayTrace.sideHit); - - if (!player.canPlayerEdit(blockpos1, rayTrace.sideHit, stack)) - return super.onItemRightClick(world, player, hand); - - if (this.canPlaceWater(world, blockpos1) && NetworkHelper.getSoulNetwork(getOwnerUUID(stack)).syphonAndDamage(player, getLpUsed()) && this.tryPlaceWater(world, blockpos1)) - return super.onItemRightClick(world, player, hand); - } - } - } - - return super.onItemRightClick(world, player, hand); - } - - @Override - public EnumActionResult onItemUse(EntityPlayer player, World world, BlockPos blockPos, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ) { - ItemStack stack = player.getHeldItem(hand); - if (world.isRemote || player.isSneaking() || isUnusable(stack)) - return EnumActionResult.FAIL; - - if (!world.canMineBlockBody(player, blockPos)) - return EnumActionResult.FAIL; - - TileEntity tile = world.getTileEntity(blockPos); - if (tile.hasCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, side)) { - IFluidHandler handler = tile.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, side); - FluidStack fluid = new FluidStack(FluidRegistry.WATER, 1000); - int amount = handler.fill(fluid, false); - - if (amount > 0 && NetworkHelper.getSoulNetwork(player).syphonAndDamage(player, getLpUsed())) { - handler.fill(fluid, true); - return EnumActionResult.SUCCESS; - } - - return EnumActionResult.FAIL; - } - - if (world.getBlockState(blockPos).getBlock() == Blocks.CAULDRON && NetworkHelper.getSoulNetwork(player).syphonAndDamage(player, getLpUsed())) { - world.setBlockState(blockPos, Blocks.CAULDRON.getDefaultState().withProperty(BlockCauldron.LEVEL, 3)); - return EnumActionResult.SUCCESS; - } - - return EnumActionResult.FAIL; - } - - public boolean canPlaceWater(World world, BlockPos blockPos) { - if (!world.isAirBlock(blockPos) && world.getBlockState(blockPos).getBlock().getMaterial(world.getBlockState(blockPos)).isSolid()) - return false; - else if ((world.getBlockState(blockPos).getBlock() == Blocks.WATER || world.getBlockState(blockPos).getBlock() == Blocks.FLOWING_WATER) && world.getBlockState(blockPos).getBlock().getMetaFromState(world.getBlockState(blockPos)) == 0) - return false; - else - return true; - } - - public boolean tryPlaceWater(World worldIn, BlockPos pos) { - - Material material = worldIn.getBlockState(pos).getBlock().getMaterial(worldIn.getBlockState(pos)); - boolean notSolid = !material.isSolid(); - - if (!worldIn.isAirBlock(pos) && !notSolid) { - return false; - } else { - if (worldIn.provider.doesWaterVaporize()) { - int i = pos.getX(); - int j = pos.getY(); - int k = pos.getZ(); - worldIn.playSound(null, i, j, k, SoundEvents.BLOCK_FIRE_EXTINGUISH, SoundCategory.BLOCKS, 0.5F, 2.6F + (worldIn.rand.nextFloat() - worldIn.rand.nextFloat()) * 0.8F); - - for (int l = 0; l < 8; ++l) - worldIn.spawnParticle(EnumParticleTypes.SMOKE_LARGE, (double) i + Math.random(), (double) j + Math.random(), (double) k + Math.random(), 0.0D, 0.0D, 0.0D, 0); - } else { - if (!worldIn.isRemote && notSolid && !material.isLiquid()) - worldIn.destroyBlock(pos, true); - - worldIn.setBlockState(pos, Blocks.FLOWING_WATER.getDefaultState(), 3); - } - - return true; - } - } -} diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/ItemSigilTeleposition.java b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/ItemSigilTeleposition.java new file mode 100644 index 00000000..c3228ab2 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/ItemSigilTeleposition.java @@ -0,0 +1,90 @@ +package WayofTime.bloodmagic.item.sigil.sigil; + +import WayofTime.bloodmagic.api.teleport.ITeleport; +import WayofTime.bloodmagic.api.teleport.TeleportQueue; +import WayofTime.bloodmagic.ritual.portal.Teleports; +import WayofTime.bloodmagic.tile.TileTeleposer; +import net.minecraft.client.resources.I18n; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumActionResult; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.util.List; + +public class ItemSigilTeleposition extends ItemSigil { + + public ItemSigilTeleposition() { + super(new SigilTeleposition(), "teleposition"); + } + + @SideOnly(Side.CLIENT) + @Override + public void addInformation(ItemStack stack, @Nullable World worldIn, List tooltip, ITooltipFlag flagIn) { + super.addInformation(stack, worldIn, tooltip, flagIn); + + if (!stack.hasTagCompound() || !stack.getTagCompound().hasKey("dim")) + return; + + NBTTagCompound tag = stack.getTagCompound(); + BlockPos pos = BlockPos.fromLong(tag.getLong("pos")); + + tooltip.add(""); + tooltip.add(I18n.format("tooltip.bloodmagic.telepositionFocus.coords", pos.getX(), pos.getY(), pos.getZ())); + tooltip.add(I18n.format("tooltip.bloodmagic.telepositionFocus.dimension", tag.getInteger("dim"))); + } + + public static class SigilTeleposition implements ISigil { + + @Override + public int getCost() { + return 0; + } + + @Nonnull + @Override + public EnumActionResult onRightClick(@Nonnull ItemStack stack, @Nonnull EntityPlayer player, @Nonnull World world, @Nonnull EnumHand hand) { + if (world.isRemote || !stack.hasTagCompound() || !stack.getTagCompound().hasKey("dim")) + return EnumActionResult.PASS; + + NBTTagCompound tag = stack.getTagCompound(); + BlockPos pos = BlockPos.fromLong(tag.getLong("pos")); + int dimension = tag.getInteger("dim"); + + ITeleport teleport; + if (world.provider.getDimension() == dimension) + teleport = new Teleports.TeleportSameDim(pos, player, getOwnerUUID(stack), true); + else + teleport = new Teleports.TeleportToDim(pos, player, getOwnerUUID(stack), world, dimension, true); + + TeleportQueue.getInstance().addITeleport(teleport); + + return EnumActionResult.SUCCESS; + } + + @Override + public EnumActionResult onInteract(@Nonnull ItemStack stack, @Nonnull EntityPlayer player, @Nonnull World world, @Nonnull BlockPos pos, @Nonnull EnumFacing side, @Nonnull EnumHand hand) { + if (!stack.hasTagCompound()) + stack.setTagCompound(new NBTTagCompound()); + + if (!(world.getTileEntity(pos) instanceof TileTeleposer)) + return EnumActionResult.FAIL; + + NBTTagCompound tag = stack.getTagCompound(); + tag.setLong("pos", pos.toLong()); + tag.setInteger("dim", world.provider.getDimension()); + + + return EnumActionResult.SUCCESS; + } + } +} diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/ItemSigilTransposition.java b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/ItemSigilTransposition.java new file mode 100644 index 00000000..58120ac2 --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/ItemSigilTransposition.java @@ -0,0 +1,145 @@ +package WayofTime.bloodmagic.item.sigil.sigil; + +import WayofTime.bloodmagic.api.util.helper.NetworkHelper; +import WayofTime.bloodmagic.api_impl.BloodMagicAPI; +import net.minecraft.block.state.IBlockState; +import net.minecraft.client.resources.I18n; +import net.minecraft.client.util.ITooltipFlag; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTUtil; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.tileentity.TileEntityMobSpawner; +import net.minecraft.util.EnumActionResult; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.util.List; + +public class ItemSigilTransposition extends ItemSigil { + + public ItemSigilTransposition() { + super(new SigilTransposition(), "transposition"); + } + + @Override + public void addInformation(ItemStack stack, @Nullable World worldIn, List tooltip, ITooltipFlag flagIn) { + super.addInformation(stack, worldIn, tooltip, flagIn); + + if (!stack.hasTagCompound()) + return; + + NBTTagCompound tag = stack.getTagCompound(); + if (!tag.hasKey("stored")) + return; + + IBlockState state = NBTUtil.readBlockState(tag.getCompoundTag("stored")); + ItemStack blockStack = new ItemStack(state.getBlock().getItemDropped(state, null, 0), 1, state.getBlock().damageDropped(state)); + tooltip.add(blockStack.isEmpty() ? I18n.format(state.getBlock().getUnlocalizedName()) : blockStack.getDisplayName()); + } + + @Override + public String getItemStackDisplayName(ItemStack stack) { + if (!stack.hasTagCompound()) + return super.getItemStackDisplayName(stack); + + NBTTagCompound tag = stack.getTagCompound(); + if (!tag.hasKey("stored")) + return super.getItemStackDisplayName(stack); + + IBlockState state = NBTUtil.readBlockState(tag.getCompoundTag("stored")); + ItemStack blockStack = new ItemStack(state.getBlock().getItemDropped(state, null, 0), 1, state.getBlock().damageDropped(state)); + String blockName = blockStack.isEmpty() ? net.minecraft.util.text.translation.I18n.translateToLocal(state.getBlock().getUnlocalizedName()) : blockStack.getDisplayName(); + + return super.getItemStackDisplayName(stack) + " (" + blockName + ")"; + } + + @Nullable + @Override + public NBTTagCompound getNBTShareTag(ItemStack stack) { + if (!stack.hasTagCompound() || !stack.getTagCompound().hasKey("stored")) + return null; + + NBTTagCompound justTheState = stack.getTagCompound().copy(); + justTheState.getCompoundTag("stored").removeTag("tile"); + return justTheState; + } + + public static class SigilTransposition implements ISigil { + + @Override + public int getCost() { + return 1000; + } + + @Override + public EnumActionResult onInteract(@Nonnull ItemStack stack, @Nonnull EntityPlayer player, @Nonnull World world, @Nonnull BlockPos pos, @Nonnull EnumFacing side, @Nonnull EnumHand hand) { + IBlockState state = world.getBlockState(pos); + if (world.isRemote || BloodMagicAPI.INSTANCE.getBlacklist().getTransposition().contains(state)) + return EnumActionResult.FAIL; + + NBTTagCompound tag = stack.getTagCompound(); + if (player.isSneaking() && (!stack.hasTagCompound() || !tag.hasKey("stored"))) { + if (state.getPlayerRelativeBlockHardness(player, world, pos) >= 0 && state.getBlockHardness(world, pos) >= 0) { + int cost = getCost(); + + NBTTagCompound stored = new NBTTagCompound(); + NBTUtil.writeBlockState(stored, state); + + TileEntity tile = world.getTileEntity(pos); + if (tile != null) { + NBTTagCompound tileTag = new NBTTagCompound(); + tile.writeToNBT(tileTag); + stored.setTag("tile", tileTag); + cost *= 5; + + if (tile instanceof TileEntityMobSpawner) + cost *= 6; + } + + tag.setTag("stored", stored); + + NetworkHelper.getSoulNetwork(getOwnerUUID(stack)).syphonAndDamage(player, cost); + world.setBlockToAir(pos); + world.removeTileEntity(pos); + } + } else if (stack.hasTagCompound() && stack.getTagCompound().hasKey("stored")) { + IBlockState placeAtState = world.getBlockState(pos); + + // If the block we clicked isn't replaceable, try to offset to the side we clicked on + if (!placeAtState.getBlock().isReplaceable(world, pos)) + placeAtState = world.getBlockState(pos = pos.offset(side)); + + // If we still can't place here, just cancel out. + if (!placeAtState.getBlock().isReplaceable(world, pos)) + return EnumActionResult.FAIL; + + NBTTagCompound stored = stack.getTagCompound().getCompoundTag("stored"); + IBlockState toPlace = NBTUtil.readBlockState(stored); + if (player.canPlayerEdit(pos, side, stack) && world.mayPlace(toPlace.getBlock(), pos, false, side, player)) { + ItemStack placeStack = new ItemStack(state.getBlock().getItemDropped(state, null, 0), 1, state.getBlock().damageDropped(state)); + toPlace.getBlock().onBlockPlacedBy(world, pos, toPlace, player, placeStack); + + if (stored.hasKey("tile")) { + NBTTagCompound tileTag = stored.getCompoundTag("tile"); + tileTag.setInteger("x", pos.getX()); + tileTag.setInteger("y", pos.getY()); + tileTag.setInteger("z", pos.getZ()); + world.getTileEntity(pos).readFromNBT(tileTag); + } + + world.notifyBlockUpdate(pos, state, state, 3); + + stack.getTagCompound().removeTag("stored"); + } + } + + return EnumActionResult.SUCCESS; + } + } +} diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilFluid.java b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilFluid.java new file mode 100644 index 00000000..82bc1aaf --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilFluid.java @@ -0,0 +1,79 @@ +package WayofTime.bloodmagic.item.sigil.sigil; + +import WayofTime.bloodmagic.api.util.helper.NetworkHelper; +import net.minecraft.block.Block; +import net.minecraft.block.BlockLiquid; +import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumActionResult; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.IFluidBlock; +import net.minecraftforge.fluids.capability.CapabilityFluidHandler; +import net.minecraftforge.fluids.capability.IFluidHandler; +import net.minecraftforge.fluids.capability.wrappers.BlockLiquidWrapper; +import net.minecraftforge.fluids.capability.wrappers.FluidBlockWrapper; + +import javax.annotation.Nonnull; + +public class SigilFluid implements ISigil { + + private final Fluid fluid; + + public SigilFluid(Fluid fluid) { + this.fluid = fluid; + } + + @Override + public int getCost() { + return 1000; + } + + @Override + public EnumActionResult onInteract(@Nonnull ItemStack stack, @Nonnull EntityPlayer player, @Nonnull World world, @Nonnull BlockPos pos, @Nonnull EnumFacing side, @Nonnull EnumHand hand) { + if (world.isRemote) + return EnumActionResult.FAIL; + + TileEntity tile = world.getTileEntity(pos); + if (tile != null && tile.hasCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, side)) { + IFluidHandler fluidHandler = tile.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, side); + FluidStack fluid = new FluidStack(this.fluid, 1000); + int amount = fluidHandler.fill(fluid, false); + if (amount > 0 && NetworkHelper.getSoulNetwork(getOwnerUUID(stack)).syphonAndDamage(player, getCost())) { + fluidHandler.fill(fluid, true); + return EnumActionResult.SUCCESS; + } + } + + if (fluid.getBlock() == null) + return EnumActionResult.FAIL; + + IBlockState placeAtState = world.getBlockState(pos); + if (!placeAtState.getBlock().isReplaceable(world, pos)) + placeAtState = world.getBlockState(pos = pos.offset(side)); + + if (!placeAtState.getBlock().isReplaceable(world, pos)) + return EnumActionResult.FAIL; + + Block fluidBlock = fluid.getBlock(); + IFluidHandler fluidHandler = null; + if (fluidBlock instanceof IFluidBlock) + fluidHandler = new FluidBlockWrapper((IFluidBlock) fluidBlock, world, pos); + else if (fluidBlock instanceof BlockLiquid) + fluidHandler = new BlockLiquidWrapper((BlockLiquid) fluidBlock, world, pos); + + if (fluidHandler != null) { + fluidHandler.fill(new FluidStack(fluid, Fluid.BUCKET_VOLUME), true); + NetworkHelper.getSoulNetwork(getOwnerUUID(stack)).syphonAndDamage(player, getCost()); + return EnumActionResult.SUCCESS; + } + + return EnumActionResult.FAIL; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilGreenGrove.java b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilGreenGrove.java new file mode 100644 index 00000000..19fb9f2f --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilGreenGrove.java @@ -0,0 +1,91 @@ +package WayofTime.bloodmagic.item.sigil.sigil; + +import WayofTime.bloodmagic.api_impl.BloodMagicAPI; +import net.minecraft.block.IGrowable; +import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumActionResult; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.entity.player.BonemealEvent; +import net.minecraftforge.fml.common.eventhandler.Event; + +import javax.annotation.Nonnull; + +public class SigilGreenGrove implements ISigil.Toggle { + + private static final int RANGE_HORIZONTAL = 3; + private static final int RANGE_VERTICAL = 2; + + @Override + public int getCost() { + return 150; + } + + @Override + public EnumActionResult onInteract(@Nonnull ItemStack stack, @Nonnull EntityPlayer player, @Nonnull World world, @Nonnull BlockPos pos, @Nonnull EnumFacing side, @Nonnull EnumHand hand) { + if (applyBonemeal(world, pos, player, stack, hand)) { + if (!world.isRemote) + world.playEvent(2005, pos, 0); + + return EnumActionResult.SUCCESS; + } + + return EnumActionResult.FAIL; + } + + @Override + public void onUpdate(@Nonnull ItemStack stack, @Nonnull EntityPlayer player, @Nonnull World world, int itemSlot, boolean isHeld) { + int posX = (int) Math.round(player.posX - 0.5f); + int posY = (int) player.posY; + int posZ = (int) Math.round(player.posZ - 0.5f); + + for (int ix = posX - RANGE_HORIZONTAL; ix <= posX + RANGE_HORIZONTAL; ix++) { + for (int iz = posZ - RANGE_HORIZONTAL; iz <= posZ + RANGE_HORIZONTAL; iz++) { + for (int iy = posY - RANGE_VERTICAL; iy <= posY + RANGE_VERTICAL; iy++) { + BlockPos blockPos = new BlockPos(ix, iy, iz); + IBlockState state = world.getBlockState(blockPos); + + if (!BloodMagicAPI.INSTANCE.getBlacklist().getGreenGrove().contains(state)) { + if (state.getBlock() instanceof IGrowable) { + if (world.rand.nextInt(50) == 0) { + state.getBlock().updateTick(world, blockPos, state, world.rand); + IBlockState newState = world.getBlockState(blockPos); + + if (!newState.equals(state) && !world.isRemote) + world.playEvent(2005, blockPos, 0); + } + } + } + } + } + } + } + + private boolean applyBonemeal(World world, BlockPos target, EntityPlayer player, ItemStack sigilStack, EnumHand hand) { + IBlockState state = world.getBlockState(target); + + BonemealEvent event = new BonemealEvent(player, world, target, state, hand, sigilStack); + if (MinecraftForge.EVENT_BUS.post(event)) + return false; + else if (event.getResult() == Event.Result.ALLOW) + return true; + + if (state.getBlock() instanceof IGrowable) { + IGrowable growable = (IGrowable) state.getBlock(); + + if (growable.canGrow(world, target, state, world.isRemote)) { + if (!world.isRemote && growable.canUseBonemeal(world, world.rand, target, state)) + growable.grow(world, world.rand, target, state); + + return true; + } + } + + return false; + } +} diff --git a/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilHaste.java b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilHaste.java new file mode 100644 index 00000000..4486ebfa --- /dev/null +++ b/src/main/java/WayofTime/bloodmagic/item/sigil/sigil/SigilHaste.java @@ -0,0 +1,22 @@ +package WayofTime.bloodmagic.item.sigil.sigil; + +import WayofTime.bloodmagic.core.RegistrarBloodMagic; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.potion.PotionEffect; +import net.minecraft.world.World; + +import javax.annotation.Nonnull; + +public class SigilHaste implements ISigil.Toggle { + + @Override + public int getCost() { + return 250; + } + + @Override + public void onUpdate(@Nonnull ItemStack stack, @Nonnull EntityPlayer player, @Nonnull World world, int itemSlot, boolean isHeld) { + player.addPotionEffect(new PotionEffect(RegistrarBloodMagic.BOOST, 2, 0, true, false)); + } +} diff --git a/src/main/java/WayofTime/bloodmagic/util/handler/event/GenericHandler.java b/src/main/java/WayofTime/bloodmagic/util/handler/event/GenericHandler.java index 72c9fb45..6e1f3098 100644 --- a/src/main/java/WayofTime/bloodmagic/util/handler/event/GenericHandler.java +++ b/src/main/java/WayofTime/bloodmagic/util/handler/event/GenericHandler.java @@ -55,6 +55,7 @@ import net.minecraft.init.MobEffects; import net.minecraft.inventory.EntityEquipmentSlot; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.DamageSource; import net.minecraft.util.EnumHand; import net.minecraft.util.EnumParticleTypes; @@ -342,22 +343,8 @@ public class GenericHandler { return; ItemStack held = event.getItemStack(); - if (!held.isEmpty() && held.getItem() instanceof IBindable) { - held = NBTHelper.checkNBT(held); - IBindable bindable = (IBindable) held.getItem(); - if (Strings.isNullOrEmpty(bindable.getOwnerUUID(held))) { - if (bindable.onBind(player, held)) { - String uuid = PlayerHelper.getUUIDFromPlayer(player).toString(); - ItemBindEvent toPost = new ItemBindEvent(player, uuid, held); - if (MinecraftForge.EVENT_BUS.post(toPost) || toPost.getResult() == Result.DENY) - return; - - BindableHelper.setItemOwnerUUID(held, uuid); - BindableHelper.setItemOwnerName(held, player.getDisplayNameString()); - } - } else if (bindable.getOwnerUUID(held).equals(PlayerHelper.getUUIDFromPlayer(player).toString()) && !bindable.getOwnerName(held).equals(player.getDisplayNameString())) - BindableHelper.setItemOwnerName(held, player.getDisplayNameString()); - } + if (!held.isEmpty() && held.getItem() instanceof IBindable) + bindItem(held, player); if (!held.isEmpty() && held.getItem() instanceof IBloodOrb) { held = NBTHelper.checkNBT(held); @@ -373,6 +360,38 @@ public class GenericHandler { } } + // Handles binding of IBindable's + @SubscribeEvent + public static void onInteractBlock(PlayerInteractEvent.RightClickBlock event) { + if (event.getWorld().isRemote) + return; + + if (PlayerHelper.isFakePlayer(event.getEntityPlayer())) + return; + + if (!event.getItemStack().isEmpty() && event.getItemStack().getItem() instanceof IBindable) + bindItem(event.getItemStack(), event.getEntityPlayer()); + } + + private static void bindItem(ItemStack stack, EntityPlayer player) { + IBindable bindable = (IBindable) stack.getItem(); + if (Strings.isNullOrEmpty(bindable.getOwnerUUID(stack))) { + if (!stack.hasTagCompound()) + stack.setTagCompound(new NBTTagCompound()); + + if (bindable.onBind(player, stack)) { + String uuid = PlayerHelper.getUUIDFromPlayer(player).toString(); + ItemBindEvent toPost = new ItemBindEvent(player, uuid, stack); + if (MinecraftForge.EVENT_BUS.post(toPost) || toPost.getResult() == Result.DENY) + return; + + BindableHelper.setItemOwnerUUID(stack, uuid); + BindableHelper.setItemOwnerName(stack, player.getDisplayNameString()); + } + } else if (bindable.getOwnerUUID(stack).equals(PlayerHelper.getUUIDFromPlayer(player).toString()) && !bindable.getOwnerName(stack).equals(player.getDisplayNameString())) + BindableHelper.setItemOwnerName(stack, player.getDisplayNameString()); + } + @SubscribeEvent(priority = EventPriority.HIGH) public static void onTooltip(ItemTooltipEvent event) { if (event.getItemStack().getItem() instanceof IBindable) diff --git a/src/main/resources/assets/bloodmagic/blockstates/sigil_lava.json b/src/main/resources/assets/bloodmagic/blockstates/sigil_lava.json index fde7dbbc..3e264e84 100644 --- a/src/main/resources/assets/bloodmagic/blockstates/sigil_lava.json +++ b/src/main/resources/assets/bloodmagic/blockstates/sigil_lava.json @@ -5,12 +5,10 @@ "transform": "forge:default-item" }, "variants": { - "type": { - "normal": { - "textures": { - "layer0": "bloodmagic:items/LavaSigil" - } + "inventory": [{ + "textures": { + "layer0": "bloodmagic:items/lavasigil" } - } + }] } } \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/blockstates/sigil_teleposition.json b/src/main/resources/assets/bloodmagic/blockstates/sigil_teleposition.json index 84d1fe93..c46bdb91 100644 --- a/src/main/resources/assets/bloodmagic/blockstates/sigil_teleposition.json +++ b/src/main/resources/assets/bloodmagic/blockstates/sigil_teleposition.json @@ -5,12 +5,10 @@ "transform": "forge:default-item" }, "variants": { - "type": { - "normal": { - "textures": { - "layer0": "bloodmagic:items/TelepositionSigil" - } + "inventory": [{ + "textures": { + "layer0": "bloodmagic:items/telepositionsigil" } - } + }] } } \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/blockstates/sigil_transposition.json b/src/main/resources/assets/bloodmagic/blockstates/sigil_transposition.json index bb09cc7d..616df1e8 100644 --- a/src/main/resources/assets/bloodmagic/blockstates/sigil_transposition.json +++ b/src/main/resources/assets/bloodmagic/blockstates/sigil_transposition.json @@ -5,12 +5,10 @@ "transform": "forge:default-item" }, "variants": { - "type": { - "normal": { - "textures": { - "layer0": "bloodmagic:items/TranspositionSigil" - } + "inventory": [{ + "textures": { + "layer0": "bloodmagic:items/transpositionsigil" } - } + }] } } \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/blockstates/sigil_water.json b/src/main/resources/assets/bloodmagic/blockstates/sigil_water.json index 9f76d28b..81b7c857 100644 --- a/src/main/resources/assets/bloodmagic/blockstates/sigil_water.json +++ b/src/main/resources/assets/bloodmagic/blockstates/sigil_water.json @@ -5,12 +5,10 @@ "transform": "forge:default-item" }, "variants": { - "type": { - "normal": { - "textures": { - "layer0": "bloodmagic:items/WaterSigil" - } + "inventory": [{ + "textures": { + "layer0": "bloodmagic:items/watersigil" } - } + }] } } \ No newline at end of file From 03b4b5e2d730d1d8cd308bbf4f42148df1c50846 Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Fri, 15 Dec 2017 17:50:12 -0800 Subject: [PATCH 26/27] Fix Reagent stacks --- src/main/java/WayofTime/bloodmagic/item/types/ReagentType.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/WayofTime/bloodmagic/item/types/ReagentType.java b/src/main/java/WayofTime/bloodmagic/item/types/ReagentType.java index 0691d87a..9f2504d5 100644 --- a/src/main/java/WayofTime/bloodmagic/item/types/ReagentType.java +++ b/src/main/java/WayofTime/bloodmagic/item/types/ReagentType.java @@ -41,6 +41,6 @@ public enum ReagentType implements ISubItem { @Nonnull @Override public ItemStack getStack(int count) { - return new ItemStack(RegistrarBloodMagicItems.COMPONENT, count, ordinal()); + return new ItemStack(RegistrarBloodMagicItems.REAGENT, count, ordinal()); } } From dce2817b8c4ae42dad4464759b2ced9c5f281167 Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Fri, 15 Dec 2017 18:34:04 -0800 Subject: [PATCH 27/27] Demon Crystal fixes --- .../api/soul/EnumDemonWillType.java | 20 +++++- .../bloodmagic/block/BlockDemonCrystal.java | 56 ++++------------ .../core/RegistrarBloodMagicRecipes.java | 19 +++--- .../bloodmagic/item/ItemDemonCrystal.java | 64 +------------------ .../item/block/ItemBlockDemonCrystal.java | 10 ++- 5 files changed, 50 insertions(+), 119 deletions(-) diff --git a/src/main/java/WayofTime/bloodmagic/api/soul/EnumDemonWillType.java b/src/main/java/WayofTime/bloodmagic/api/soul/EnumDemonWillType.java index 445697f7..12aee7ff 100644 --- a/src/main/java/WayofTime/bloodmagic/api/soul/EnumDemonWillType.java +++ b/src/main/java/WayofTime/bloodmagic/api/soul/EnumDemonWillType.java @@ -1,10 +1,15 @@ package WayofTime.bloodmagic.api.soul; +import WayofTime.bloodmagic.core.RegistrarBloodMagicItems; +import WayofTime.bloodmagic.item.types.ISubItem; +import net.minecraft.item.ItemStack; import net.minecraft.util.IStringSerializable; +import org.apache.commons.lang3.text.WordUtils; +import javax.annotation.Nonnull; import java.util.Locale; -public enum EnumDemonWillType implements IStringSerializable { +public enum EnumDemonWillType implements IStringSerializable, ISubItem { DEFAULT("default"), CORROSIVE("corrosive"), DESTRUCTIVE("destructive"), @@ -26,4 +31,17 @@ public enum EnumDemonWillType implements IStringSerializable { public String getName() { return this.toString(); } + + + @Nonnull + @Override + public String getInternalName() { + return "crystal" + WordUtils.capitalize(name); + } + + @Nonnull + @Override + public ItemStack getStack(int count) { + return new ItemStack(RegistrarBloodMagicItems.ITEM_DEMON_CRYSTAL, count, ordinal()); + } } diff --git a/src/main/java/WayofTime/bloodmagic/block/BlockDemonCrystal.java b/src/main/java/WayofTime/bloodmagic/block/BlockDemonCrystal.java index 95352a33..c5ca0a1b 100644 --- a/src/main/java/WayofTime/bloodmagic/block/BlockDemonCrystal.java +++ b/src/main/java/WayofTime/bloodmagic/block/BlockDemonCrystal.java @@ -4,6 +4,7 @@ import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.api.soul.EnumDemonWillType; import WayofTime.bloodmagic.api.soul.PlayerDemonWillHandler; import WayofTime.bloodmagic.item.ItemDemonCrystal; +import WayofTime.bloodmagic.item.block.ItemBlockDemonCrystal; import WayofTime.bloodmagic.tile.TileDemonCrystal; import net.minecraft.block.Block; import net.minecraft.block.material.Material; @@ -13,6 +14,7 @@ import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumBlockRenderType; @@ -26,7 +28,7 @@ import net.minecraft.world.World; import javax.annotation.Nullable; import java.util.Random; -public class BlockDemonCrystal extends Block { +public class BlockDemonCrystal extends Block implements IBMBlock { public static final PropertyInteger AGE = PropertyInteger.create("age", 0, 6); public static final PropertyEnum TYPE = PropertyEnum.create("type", EnumDemonWillType.class); public static final PropertyEnum ATTACHED = PropertyEnum.create("attached", EnumFacing.class); @@ -156,6 +158,8 @@ public class BlockDemonCrystal extends Block { } TileDemonCrystal crystal = (TileDemonCrystal) world.getTileEntity(pos); + if (crystal == null) + return false; if (PlayerDemonWillHandler.getTotalDemonWill(EnumDemonWillType.DEFAULT, player) > 1024) { crystal.dropSingleCrystal(); @@ -177,49 +181,13 @@ public class BlockDemonCrystal extends Block { return new TileDemonCrystal(); } - public static ItemStack getItemStackDropped(EnumDemonWillType type, int crystalNumber) { - ItemStack stack = null; - switch (type) { - case CORROSIVE: - stack = ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_CORROSIVE); - break; - case DEFAULT: - stack = ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_DEFAULT); - break; - case DESTRUCTIVE: - stack = ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_DESTRUCTIVE); - break; - case STEADFAST: - stack = ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_STEADFAST); - break; - case VENGEFUL: - stack = ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_VENGEFUL); - break; - } - - stack.setCount(crystalNumber); - return stack; + @Nullable + @Override + public ItemBlock getItem() { + return new ItemBlockDemonCrystal(this); } - // @Override -// public java.util.List getDrops(net.minecraft.world.IBlockAccess world, BlockPos pos, IBlockState state, int fortune) -// { -// java.util.List ret = super.getDrops(world, pos, state, fortune); -// int age = ((Integer) state.getValue(AGE)).intValue(); -// Random rand = world instanceof World ? ((World) world).rand : new Random(); -// -// if (age >= 7) -// { -// int k = 3 + fortune; -// -// for (int i = 0; i < 3 + fortune; ++i) -// { -// if (rand.nextInt(15) <= age) -// { -// ret.add(new ItemStack(this.getSeed(), 1, 0)); -// } -// } -// } -// return ret; -// } + public static ItemStack getItemStackDropped(EnumDemonWillType type, int crystalNumber) { + return type.getStack(crystalNumber); + } } \ No newline at end of file diff --git a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicRecipes.java b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicRecipes.java index d1b8191a..c2fabada 100644 --- a/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicRecipes.java +++ b/src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagicRecipes.java @@ -30,15 +30,12 @@ public class RegistrarBloodMagicRecipes { public static void registerCrafting(IForgeRegistry registry) { for (int i = 0; i < ItemSoulGem.names.length; i++) { - for (int j = 0; j < ItemDemonCrystal.NAMES.size(); j++) { + for (EnumDemonWillType willType : EnumDemonWillType.values()) { ItemStack baseGemStack = new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, i); ItemStack newGemStack = new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, i); - ItemStack crystalStack = new ItemStack(RegistrarBloodMagicItems.ITEM_DEMON_CRYSTAL, 1, j); - - EnumDemonWillType willType = ((ItemDemonCrystal) RegistrarBloodMagicItems.ITEM_DEMON_CRYSTAL).getType(crystalStack); ((ItemSoulGem) RegistrarBloodMagicItems.SOUL_GEM).setCurrentType(willType, newGemStack); - ShapelessOreRecipe shapeless = new ShapelessOreRecipe(new ResourceLocation(BloodMagic.MODID, "soul_gem"), newGemStack, baseGemStack, crystalStack); + ShapelessOreRecipe shapeless = new ShapelessOreRecipe(new ResourceLocation(BloodMagic.MODID, "soul_gem"), newGemStack, baseGemStack, willType.getStack()); registry.register(shapeless.setRegistryName("soul_gem_" + willType.getName())); } } @@ -89,7 +86,7 @@ public class RegistrarBloodMagicRecipes { registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicItems.SOUL_GEM), 1, 1, "dustRedstone", "ingotGold", "blockGlass", "dyeBlue"); registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 1), 60, 20, new ItemStack(RegistrarBloodMagicItems.SOUL_GEM), "gemDiamond", "blockRedstone", "blockLapis"); registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 2), 240, 50, new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 1), "gemDiamond", "blockGold", new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2)); - registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 3), 1000, 100, new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 2), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.BLOOD_SHARD), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_DEFAULT)); + registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 3), 1000, 100, new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 2), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.BLOOD_SHARD), EnumDemonWillType.DEFAULT.getStack()); registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 4), 4000, 500, new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 3), Items.NETHER_STAR); registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicItems.SENTIENT_SWORD), 0, 0, new ItemStack(RegistrarBloodMagicItems.SOUL_GEM), new ItemStack(Items.IRON_SWORD)); registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicItems.SENTIENT_AXE), 0, 0, new ItemStack(RegistrarBloodMagicItems.SOUL_GEM), new ItemStack(Items.IRON_AXE)); @@ -129,11 +126,11 @@ public class RegistrarBloodMagicRecipes { registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicBlocks.INPUT_ROUTING_NODE), 400, 25, "dustGlowstone", "dustRedstone", "ingotGold", new ItemStack(RegistrarBloodMagicBlocks.ITEM_ROUTING_NODE)); registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicBlocks.MASTER_ROUTING_NODE), 400, 200, "blockIron", "gemDiamond", new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 2)); - registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicBlocks.DEMON_CRYSTAL, 1, 0), 1200, 100, ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_DEFAULT), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_DEFAULT), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_DEFAULT), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_DEFAULT)); - registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicBlocks.DEMON_CRYSTAL, 1, 1), 1200, 100, ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_CORROSIVE), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_CORROSIVE), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_CORROSIVE), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_CORROSIVE)); - registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicBlocks.DEMON_CRYSTAL, 1, 2), 1200, 100, ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_DESTRUCTIVE), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_DESTRUCTIVE), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_DESTRUCTIVE), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_DESTRUCTIVE)); - registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicBlocks.DEMON_CRYSTAL, 1, 3), 1200, 100, ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_VENGEFUL), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_VENGEFUL), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_VENGEFUL), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_VENGEFUL)); - registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicBlocks.DEMON_CRYSTAL, 1, 4), 1200, 100, ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_STEADFAST), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_STEADFAST), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_STEADFAST), ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_STEADFAST)); + registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicBlocks.DEMON_CRYSTAL, 1, 0), 1200, 100, EnumDemonWillType.DEFAULT.getStack(), EnumDemonWillType.DEFAULT.getStack(), EnumDemonWillType.DEFAULT.getStack(), EnumDemonWillType.DEFAULT.getStack()); + registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicBlocks.DEMON_CRYSTAL, 1, 1), 1200, 100, EnumDemonWillType.CORROSIVE.getStack(), EnumDemonWillType.CORROSIVE.getStack(), EnumDemonWillType.CORROSIVE.getStack(), EnumDemonWillType.CORROSIVE.getStack()); + registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicBlocks.DEMON_CRYSTAL, 1, 2), 1200, 100, EnumDemonWillType.DESTRUCTIVE.getStack(), EnumDemonWillType.DESTRUCTIVE.getStack(), EnumDemonWillType.DESTRUCTIVE.getStack(), EnumDemonWillType.DESTRUCTIVE.getStack()); + registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicBlocks.DEMON_CRYSTAL, 1, 3), 1200, 100, EnumDemonWillType.VENGEFUL.getStack(), EnumDemonWillType.VENGEFUL.getStack(), EnumDemonWillType.VENGEFUL.getStack(), EnumDemonWillType.VENGEFUL.getStack()); + registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicBlocks.DEMON_CRYSTAL, 1, 4), 1200, 100, EnumDemonWillType.STEADFAST.getStack(), EnumDemonWillType.STEADFAST.getStack(), EnumDemonWillType.STEADFAST.getStack(), EnumDemonWillType.STEADFAST.getStack()); registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicBlocks.DEMON_CRUCIBLE), 400, 100, Items.CAULDRON, "stone", "gemLapis", "gemDiamond"); registrar.addTartaricForge(new ItemStack(RegistrarBloodMagicBlocks.DEMON_PYLON), 400, 50, "blockIron", "stone", "gemLapis", RegistrarBloodMagicItems.ITEM_DEMON_CRYSTAL); diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemDemonCrystal.java b/src/main/java/WayofTime/bloodmagic/item/ItemDemonCrystal.java index 169265cf..d944bd41 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemDemonCrystal.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemDemonCrystal.java @@ -1,65 +1,15 @@ package WayofTime.bloodmagic.item; -import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.api.soul.EnumDemonWillType; import WayofTime.bloodmagic.api.soul.IDiscreteDemonWill; import WayofTime.bloodmagic.client.IVariantProvider; -import WayofTime.bloodmagic.core.RegistrarBloodMagicItems; -import com.google.common.collect.Lists; -import it.unimi.dsi.fastutil.ints.Int2ObjectMap; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.util.NonNullList; import net.minecraft.util.math.MathHelper; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; -import org.apache.commons.lang3.tuple.ImmutablePair; -import org.apache.commons.lang3.tuple.Pair; -import java.util.ArrayList; -import java.util.List; - -public class ItemDemonCrystal extends Item implements IDiscreteDemonWill, IVariantProvider { - public static final ArrayList NAMES = Lists.newArrayList(); - - public static final String CRYSTAL_DEFAULT = "crystalDefault"; - public static final String CRYSTAL_CORROSIVE = "crystalCorrosive"; - public static final String CRYSTAL_VENGEFUL = "crystalVengeful"; - public static final String CRYSTAL_DESTRUCTIVE = "crystalDestructive"; - public static final String CRYSTAL_STEADFAST = "crystalSteadfast"; +public class ItemDemonCrystal extends ItemEnum implements IDiscreteDemonWill, IVariantProvider { public ItemDemonCrystal() { - super(); - - setUnlocalizedName(BloodMagic.MODID + ".demonCrystal."); - setHasSubtypes(true); - setCreativeTab(BloodMagic.TAB_BM); - - buildItemList(); - } - - private void buildItemList() { - NAMES.add(0, CRYSTAL_DEFAULT); - NAMES.add(1, CRYSTAL_CORROSIVE); - NAMES.add(2, CRYSTAL_DESTRUCTIVE); - NAMES.add(3, CRYSTAL_VENGEFUL); - NAMES.add(4, CRYSTAL_STEADFAST); - } - - @Override - public String getUnlocalizedName(ItemStack stack) { - return super.getUnlocalizedName(stack) + NAMES.get(stack.getItemDamage()); - } - - @Override - @SideOnly(Side.CLIENT) - public void getSubItems(CreativeTabs creativeTab, NonNullList list) { - if (!isInCreativeTab(creativeTab)) - return; - - for (int i = 0; i < NAMES.size(); i++) - list.add(new ItemStack(this, 1, i)); + super(EnumDemonWillType.class, "demonCrystal"); } @Override @@ -89,14 +39,4 @@ public class ItemDemonCrystal extends Item implements IDiscreteDemonWill, IVaria public EnumDemonWillType getType(ItemStack willStack) { return EnumDemonWillType.values()[MathHelper.clamp(willStack.getMetadata(), 0, EnumDemonWillType.values().length - 1)]; } - - @Override - public void populateVariants(Int2ObjectMap variants) { - for (String name : NAMES) - variants.put(NAMES.indexOf(name), "type=" + name); - } - - public static ItemStack getStack(String name) { - return new ItemStack(RegistrarBloodMagicItems.ITEM_DEMON_CRYSTAL, 1, NAMES.indexOf(name)); - } } diff --git a/src/main/java/WayofTime/bloodmagic/item/block/ItemBlockDemonCrystal.java b/src/main/java/WayofTime/bloodmagic/item/block/ItemBlockDemonCrystal.java index 611c8150..63ac8226 100644 --- a/src/main/java/WayofTime/bloodmagic/item/block/ItemBlockDemonCrystal.java +++ b/src/main/java/WayofTime/bloodmagic/item/block/ItemBlockDemonCrystal.java @@ -1,7 +1,9 @@ package WayofTime.bloodmagic.item.block; import WayofTime.bloodmagic.api.soul.EnumDemonWillType; +import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.tile.TileDemonCrystal; +import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.player.EntityPlayer; @@ -14,7 +16,7 @@ import net.minecraft.world.World; import java.util.Locale; -public class ItemBlockDemonCrystal extends ItemBlock { +public class ItemBlockDemonCrystal extends ItemBlock implements IVariantProvider { public ItemBlockDemonCrystal(Block block) { super(block); setHasSubtypes(true); @@ -43,4 +45,10 @@ public class ItemBlockDemonCrystal extends ItemBlock { return false; } + + @Override + public void populateVariants(Int2ObjectMap variants) { + for (EnumDemonWillType type : EnumDemonWillType.values()) + variants.put(type.ordinal(), "age=4,attached=up,type=" + type.getName()); + } }