Cleaner sub-item implementation

Todo: Move more sub items to use it
This commit is contained in:
Nicholas Ignoffo 2018-02-06 18:59:47 -08:00
parent 92fa6cd7f7
commit 739c1aa05f
9 changed files with 285 additions and 171 deletions

View file

@ -1,10 +1,14 @@
package WayofTime.bloodmagic.apibutnotreally.soul; package WayofTime.bloodmagic.apibutnotreally.soul;
import WayofTime.bloodmagic.core.RegistrarBloodMagicItems;
import WayofTime.bloodmagic.item.types.ISubItem;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IStringSerializable; import net.minecraft.util.IStringSerializable;
import javax.annotation.Nonnull;
import java.util.Locale; import java.util.Locale;
public enum EnumDemonWillType implements IStringSerializable { public enum EnumDemonWillType implements IStringSerializable, ISubItem {
DEFAULT("default"), DEFAULT("default"),
CORROSIVE("corrosive"), CORROSIVE("corrosive"),
DESTRUCTIVE("destructive"), DESTRUCTIVE("destructive"),
@ -26,4 +30,17 @@ public enum EnumDemonWillType implements IStringSerializable {
public String getName() { public String getName() {
return this.toString(); return this.toString();
} }
@Nonnull
@Override
public String getInternalName() {
return getName();
}
@Nonnull
@Override
public ItemStack getStack(int count) {
return new ItemStack(RegistrarBloodMagicItems.ITEM_DEMON_CRYSTAL, count, ordinal());
}
} }

View file

@ -181,19 +181,19 @@ public class BlockDemonCrystal extends Block {
ItemStack stack = null; ItemStack stack = null;
switch (type) { switch (type) {
case CORROSIVE: case CORROSIVE:
stack = ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_CORROSIVE); stack = EnumDemonWillType.CORROSIVE.getStack();
break; break;
case DEFAULT: case DEFAULT:
stack = ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_DEFAULT); stack = EnumDemonWillType.DEFAULT.getStack();
break; break;
case DESTRUCTIVE: case DESTRUCTIVE:
stack = ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_DESTRUCTIVE); stack = EnumDemonWillType.DESTRUCTIVE.getStack();
break; break;
case STEADFAST: case STEADFAST:
stack = ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_STEADFAST); stack = EnumDemonWillType.STEADFAST.getStack();
break; break;
case VENGEFUL: case VENGEFUL:
stack = ItemDemonCrystal.getStack(ItemDemonCrystal.CRYSTAL_VENGEFUL); stack = EnumDemonWillType.VENGEFUL.getStack();
break; break;
} }

View file

@ -19,46 +19,13 @@ import org.apache.commons.lang3.tuple.Pair;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
public class ItemDemonCrystal extends Item implements IDiscreteDemonWill, IVariantProvider { public class ItemDemonCrystal extends ItemEnum<EnumDemonWillType> implements IDiscreteDemonWill, IVariantProvider {
public static final ArrayList<String> 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 ItemDemonCrystal() { public ItemDemonCrystal() {
super(); super(EnumDemonWillType.class, "demonCrystal");
setUnlocalizedName(BloodMagic.MODID + ".demonCrystal.");
setHasSubtypes(true); setHasSubtypes(true);
setCreativeTab(BloodMagic.TAB_BM); 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<ItemStack> list) {
if (!isInCreativeTab(creativeTab))
return;
for (int i = 0; i < NAMES.size(); i++)
list.add(new ItemStack(this, 1, i));
} }
@Override @Override
@ -88,16 +55,4 @@ public class ItemDemonCrystal extends Item implements IDiscreteDemonWill, IVaria
public EnumDemonWillType getType(ItemStack willStack) { public EnumDemonWillType getType(ItemStack willStack) {
return EnumDemonWillType.values()[MathHelper.clamp(willStack.getMetadata(), 0, EnumDemonWillType.values().length - 1)]; return EnumDemonWillType.values()[MathHelper.clamp(willStack.getMetadata(), 0, EnumDemonWillType.values().length - 1)];
} }
@Override
public List<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
for (String name : NAMES)
ret.add(new ImmutablePair<Integer, String>(NAMES.indexOf(name), "type=" + name));
return ret;
}
public static ItemStack getStack(String name) {
return new ItemStack(RegistrarBloodMagicItems.ITEM_DEMON_CRYSTAL, 1, NAMES.indexOf(name));
}
} }

View file

@ -0,0 +1,59 @@
package WayofTime.bloodmagic.item;
import WayofTime.bloodmagic.BloodMagic;
import WayofTime.bloodmagic.client.IVariantProvider;
import WayofTime.bloodmagic.item.types.ISubItem;
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<T extends Enum<T> & ISubItem> extends Item implements IVariantProvider {
protected final T[] types;
public ItemEnum(Class<T> 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<ItemStack> 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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> variants = Lists.newArrayList();
for (int i = 0; i < types.length; i++)
variants.add(Pair.of(i, "type=" + types[i].getInternalName()));
return variants;
}
}

View file

@ -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 ComponentTypes implements ISubItem {
REAGENT_WATER,
REAGENT_LAVA,
REAGENT_AIR,
REAGENT_FAST_MINER,
REAGENT_VOID,
REAGENT_GROWTH,
REAGENT_AFFINITY,
REAGENT_SIGHT,
REAGENT_BINDING,
REAGENT_SUPPRESSION,
FRAME_PART,
REAGENT_BLOOD_LIGHT,
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());
}
}

View file

@ -0,0 +1,19 @@
package WayofTime.bloodmagic.item.types;
import net.minecraft.item.ItemStack;
import javax.annotation.Nonnull;
public interface ISubItem {
@Nonnull
String getInternalName();
@Nonnull
default ItemStack getStack() {
return getStack(1);
}
@Nonnull
ItemStack getStack(int count);
}

View file

@ -9,6 +9,7 @@ import WayofTime.bloodmagic.apibutnotreally.livingArmour.LivingArmourUpgrade;
import WayofTime.bloodmagic.apibutnotreally.recipe.AlchemyTableCustomRecipe; import WayofTime.bloodmagic.apibutnotreally.recipe.AlchemyTableCustomRecipe;
import WayofTime.bloodmagic.apibutnotreally.registry.*; import WayofTime.bloodmagic.apibutnotreally.registry.*;
import WayofTime.bloodmagic.apibutnotreally.ritual.EnumRuneType; import WayofTime.bloodmagic.apibutnotreally.ritual.EnumRuneType;
import WayofTime.bloodmagic.apibutnotreally.soul.EnumDemonWillType;
import WayofTime.bloodmagic.client.render.alchemyArray.*; import WayofTime.bloodmagic.client.render.alchemyArray.*;
import WayofTime.bloodmagic.compress.AdvancedCompressionHandler; import WayofTime.bloodmagic.compress.AdvancedCompressionHandler;
import WayofTime.bloodmagic.compress.BaseCompressionHandler; import WayofTime.bloodmagic.compress.BaseCompressionHandler;
@ -17,7 +18,6 @@ import WayofTime.bloodmagic.core.RegistrarBloodMagic;
import WayofTime.bloodmagic.core.RegistrarBloodMagicBlocks; import WayofTime.bloodmagic.core.RegistrarBloodMagicBlocks;
import WayofTime.bloodmagic.core.RegistrarBloodMagicItems; import WayofTime.bloodmagic.core.RegistrarBloodMagicItems;
import WayofTime.bloodmagic.item.ItemComponent; import WayofTime.bloodmagic.item.ItemComponent;
import WayofTime.bloodmagic.item.ItemDemonCrystal;
import WayofTime.bloodmagic.item.alchemy.ItemCuttingFluid; import WayofTime.bloodmagic.item.alchemy.ItemCuttingFluid;
import WayofTime.bloodmagic.item.alchemy.ItemLivingArmourPointsUpgrade; import WayofTime.bloodmagic.item.alchemy.ItemLivingArmourPointsUpgrade;
import WayofTime.bloodmagic.livingArmour.downgrade.*; import WayofTime.bloodmagic.livingArmour.downgrade.*;
@ -176,7 +176,7 @@ public class ModRecipes {
TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(RegistrarBloodMagicItems.SOUL_GEM), 1, 1, "dustRedstone", "ingotGold", "blockGlass", "dyeBlue"); 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, 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, 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, 3), 1000, 100, new ItemStack(RegistrarBloodMagicItems.SOUL_GEM, 1, 2), new ItemStack(RegistrarBloodMagicItems.SLATE, 1, 3), new ItemStack(RegistrarBloodMagicItems.BLOOD_SHARD), EnumDemonWillType.DEFAULT.getStack());
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.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_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_AXE), 0, 0, new ItemStack(RegistrarBloodMagicItems.SOUL_GEM), new ItemStack(Items.IRON_AXE));
@ -216,11 +216,11 @@ public class ModRecipes {
TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(RegistrarBloodMagicBlocks.INPUT_ROUTING_NODE), 400, 25, "dustGlowstone", "dustRedstone", "ingotGold", 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.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, 0), 1200, 100, EnumDemonWillType.DEFAULT.getStack(), EnumDemonWillType.DEFAULT.getStack(), EnumDemonWillType.DEFAULT.getStack(), EnumDemonWillType.DEFAULT.getStack());
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, 1), 1200, 100, EnumDemonWillType.CORROSIVE.getStack(), EnumDemonWillType.CORROSIVE.getStack(), EnumDemonWillType.CORROSIVE.getStack(), EnumDemonWillType.CORROSIVE.getStack());
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, 2), 1200, 100, EnumDemonWillType.DESTRUCTIVE.getStack(), EnumDemonWillType.DESTRUCTIVE.getStack(), EnumDemonWillType.DESTRUCTIVE.getStack(), EnumDemonWillType.DESTRUCTIVE.getStack());
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, 3), 1200, 100, EnumDemonWillType.VENGEFUL.getStack(), EnumDemonWillType.VENGEFUL.getStack(), EnumDemonWillType.VENGEFUL.getStack(), EnumDemonWillType.VENGEFUL.getStack());
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_CRYSTAL, 1, 4), 1200, 100, EnumDemonWillType.STEADFAST.getStack(), EnumDemonWillType.STEADFAST.getStack(), EnumDemonWillType.STEADFAST.getStack(), EnumDemonWillType.STEADFAST.getStack());
TartaricForgeRecipeRegistry.registerRecipe(new ItemStack(RegistrarBloodMagicBlocks.DEMON_CRUCIBLE), 400, 100, Items.CAULDRON, "stone", "gemLapis", "gemDiamond"); 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_PYLON), 400, 50, "blockIron", "stone", "gemLapis", RegistrarBloodMagicItems.ITEM_DEMON_CRYSTAL);

View file

@ -6,117 +6,27 @@
}, },
"variants": { "variants": {
"type": { "type": {
"reagentwater": { "frame_part": {
"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": {
"textures": { "textures": {
"layer0": "bloodmagic:items/ComponentFrameParts" "layer0": "bloodmagic:items/ComponentFrameParts"
} }
}, },
"reagentbloodlight": { "sand_iron": {
"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": {
"textures": { "textures": {
"layer0": "bloodmagic:items/IronSand" "layer0": "bloodmagic:items/IronSand"
} }
}, },
"goldsand": { "sand_gold": {
"textures": { "textures": {
"layer0": "bloodmagic:items/GoldSand" "layer0": "bloodmagic:items/GoldSand"
} }
}, },
"coalsand": { "sand_coal": {
"textures": { "textures": {
"layer0": "bloodmagic:items/CoalSand" "layer0": "bloodmagic:items/CoalSand"
} }
}, },
"plantoil": { "plant_oil": {
"textures": { "textures": {
"layer0": "bloodmagic:items/PlantOil" "layer0": "bloodmagic:items/PlantOil"
} }
@ -131,7 +41,7 @@
"layer0": "bloodmagic:items/Saltpeter" "layer0": "bloodmagic:items/Saltpeter"
} }
}, },
"neurotoxin": { "neuro_toxin": {
"textures": { "textures": {
"layer0": "bloodmagic:items/NeuroToxin" "layer0": "bloodmagic:items/NeuroToxin"
} }
@ -141,32 +51,122 @@
"layer0": "bloodmagic:items/Antiseptic" "layer0": "bloodmagic:items/Antiseptic"
} }
}, },
"reagentholding": { "catalyst_length_1": {
"textures": {
"layer0": "bloodmagic:items/ReagentHolding"
}
},
"mundanelength": {
"textures": { "textures": {
"layer0": "bloodmagic:items/MundaneLengtheningCatalyst" "layer0": "bloodmagic:items/MundaneLengtheningCatalyst"
} }
}, },
"mundanepower": { "catalyst_power_1": {
"textures": { "textures": {
"layer0": "bloodmagic:items/MundanePowerCatalyst" "layer0": "bloodmagic:items/MundanePowerCatalyst"
} }
}, },
"reagentclaw": { "reagent_water": {
"textures": {
"layer0": "bloodmagic:items/ReagentWater"
}
},
"reagent_lava": {
"textures": {
"layer0": "bloodmagic:items/ReagentLava"
}
},
"reagent_air": {
"textures": {
"layer0": "bloodmagic:items/ReagentAir"
}
},
"reagent_fast_miner": {
"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_blood_light": {
"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": { "textures": {
"layer0": "bloodmagic:items/ReagentClaw" "layer0": "bloodmagic:items/ReagentClaw"
} }
}, },
"reagentbounce": { "reagent_bounce": {
"textures": { "textures": {
"layer0": "bloodmagic:items/ReagentBounce" "layer0": "bloodmagic:items/ReagentBounce"
} }
}, },
"reagentfrost": { "reagent_frost": {
"textures": { "textures": {
"layer0": "bloodmagic:items/ReagentFrost" "layer0": "bloodmagic:items/ReagentFrost"
} }

View file

@ -6,27 +6,27 @@
}, },
"variants": { "variants": {
"type": { "type": {
"crystaldefault": { "default": {
"textures": { "textures": {
"layer0": "bloodmagic:items/DefaultCrystal" "layer0": "bloodmagic:items/DefaultCrystal"
} }
}, },
"crystalcorrosive": { "corrosive": {
"textures": { "textures": {
"layer0": "bloodmagic:items/CorrosiveCrystal" "layer0": "bloodmagic:items/CorrosiveCrystal"
} }
}, },
"crystalvengeful": { "vengeful": {
"textures": { "textures": {
"layer0": "bloodmagic:items/VengefulCrystal" "layer0": "bloodmagic:items/VengefulCrystal"
} }
}, },
"crystaldestructive": { "destructive": {
"textures": { "textures": {
"layer0": "bloodmagic:items/DestructiveCrystal" "layer0": "bloodmagic:items/DestructiveCrystal"
} }
}, },
"crystalsteadfast": { "steadfast": {
"textures": { "textures": {
"layer0": "bloodmagic:items/SteadfastCrystal" "layer0": "bloodmagic:items/SteadfastCrystal"
} }