Improve model handling

This commit is contained in:
Nicholas Ignoffo 2017-10-09 12:29:43 -07:00
parent a0cd54969b
commit 2a1911ea07
75 changed files with 283 additions and 547 deletions

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
ret.add(new ImmutablePair<Integer, String>(0, "normal"));
return ret;
public void populateVariants(Int2ObjectMap<String> variants) {
variants.put(0, "normal");
}
// IDocumentedBlock

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = Lists.newArrayList();
public void populateVariants(Int2ObjectMap<String> variants) {
for (int i = 0; i < TileBloodTank.CAPACITIES.length; i++)
ret.add(Pair.of(i, "inventory"));
return ret;
variants.put(i, "inventory");
}
}

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
ret.add(new ImmutablePair<Integer, String>(0, "normal"));
return ret;
public void populateVariants(Int2ObjectMap<String> variants) {
variants.put(0, "normal");
}
@Override

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
ret.add(new ImmutablePair<Integer, String>(0, "normal"));
return ret;
public void populateVariants(Int2ObjectMap<String> variants) {
variants.put(0, "normal");
}
@Override

View file

@ -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<E extends Enum<E> & IStringSerializable> exten
}
@Override
public List<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = Lists.newArrayList();
public void populateVariants(Int2ObjectMap<String> 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]);
}
}

View file

@ -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<E extends Enum<E> & IStringSerializable> ex
}
@Override
public List<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = Lists.newArrayList();
public void populateVariants(Int2ObjectMap<String> 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]);
}
}

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
ret.add(new ImmutablePair<Integer, String>(0, "normal"));
return ret;
public void populateVariants(Int2ObjectMap<String> variants) {
variants.put(0, "normal");
}
}

View file

@ -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<E extends Enum<E> & IStringSerializable> exten
}
@Override
public List<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = Lists.newArrayList();
public void populateVariants(Int2ObjectMap<String> 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]);
}
}

View file

@ -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<E extends Enum<E> & IStringSerializable> extends
}
@Override
public List<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = Lists.newArrayList();
public void populateVariants(Int2ObjectMap<String> 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");
}
}

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
ret.add(new ImmutablePair<Integer, String>(0, "normal"));
return ret;
public void populateVariants(Int2ObjectMap<String> variants) {
variants.put(0, "normal");
}
@Override

View file

@ -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<EnumSubWillType> {
}
@Override
public List<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
public void populateVariants(Int2ObjectMap<String> 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

View file

@ -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<EnumInversionCap> impleme
}
@Override
public List<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
public void populateVariants(Int2ObjectMap<String> variants) {
for (int i = 0; i < this.getTypes().length; i++)
ret.add(new ImmutablePair<Integer, String>(i, "type=" + this.getTypes()[i]));
return ret;
variants.put(i, "type=" + this.getTypes()[i]);
}
}

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
ret.add(new ImmutablePair<Integer, String>(0, "normal"));
return ret;
public void populateVariants(Int2ObjectMap<String> variants) {
variants.put(0, "normal");
}
}

View file

@ -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<Pair<Integer, String>> getVariants() {
return Lists.newArrayList(Pair.of(0, "inventory"));
public void populateVariants(Int2ObjectMap<String> variants) {
variants.put(0, "inventory");
}
}

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
ret.add(new ImmutablePair<Integer, String>(0, "normal"));
return ret;
public void populateVariants(Int2ObjectMap<String> variants) {
variants.put(0, "normal");
}
@Override

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
ret.add(new ImmutablePair<Integer, String>(0, "normal"));
return ret;
public void populateVariants(Int2ObjectMap<String> variants) {
variants.put(0, "normal");
}
}

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
ret.add(new ImmutablePair<Integer, String>(0, "normal"));
return ret;
public void populateVariants(Int2ObjectMap<String> variants) {
variants.put(0, "normal");
}
@Override

View file

@ -2,7 +2,10 @@ package WayofTime.bloodmagic.block;
import net.minecraft.item.ItemBlock;
import javax.annotation.Nullable;
public interface IBMBlock {
@Nullable
ItemBlock getItem();
}

View file

@ -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<E extends Enum<E> & IStringSerializable> extends Block im
}
@Override
public List<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> variants = Lists.newArrayList();
public void populateVariants(Int2ObjectMap<String> 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() {

View file

@ -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<String> getVariants();
void populateVariants(List<String> 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;
}
}

View file

@ -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<Pair<Integer, String>> getVariants();
/**
* A mapping of meta -> state variant
*
* @param variants A map to populate with all variants
*/
void populateVariants(Int2ObjectMap<String> variants);
}

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
ret.add(new ImmutablePair<Integer, String>(0, "type=weak"));
ret.add(new ImmutablePair<Integer, String>(1, "type=demonic"));
ret.add(new ImmutablePair<Integer, String>(2, "type=creative"));
return ret;
public void populateVariants(Int2ObjectMap<String> variants) {
variants.put(0, "type=weak");
variants.put(1, "type=demonic");
variants.put(2, "type=creative");
}
public int getCrystalLevel(ItemStack stack) {

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
ret.add(new ImmutablePair<Integer, String>(0, "type=altarmaker"));
return ret;
public void populateVariants(Int2ObjectMap<String> variants) {
variants.put(0, "type=altarmaker");
}
public void setTierToBuild(EnumAltarTier tierToBuild) {

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
ret.add(new ImmutablePair<Integer, String>(0, "type=arcaneashes"));
return ret;
public void populateVariants(Int2ObjectMap<String> variants) {
variants.put(0, "type=arcaneashes");
}
}

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
ret.add(new ImmutablePair<Integer, String>(0, "type=weak"));
ret.add(new ImmutablePair<Integer, String>(1, "type=demonic"));
return ret;
public void populateVariants(Int2ObjectMap<String> variants) {
variants.put(0, "type=weak");
variants.put(1, "type=demonic");
}
}

View file

@ -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<String> getVariants() {
List<String> ret = new ArrayList<String>();
ret.add("active=true");
ret.add("active=false");
return ret;
}
}

View file

@ -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<String> getVariants() {
List<String> ret = new ArrayList<String>();
ret.add("active=true");
ret.add("active=false");
return ret;
}
}

View file

@ -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<String> getVariants() {
List<String> ret = new ArrayList<String>();
ret.add("active=true");
ret.add("active=false");
return ret;
}
}

View file

@ -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<String> getVariants() {
List<String> ret = new ArrayList<String>();
ret.add("active=true");
ret.add("active=false");
return ret;
public void populateVariants(List<String> variants) {
variants.add("active=true");
variants.add("active=false");
}
// IBindable

View file

@ -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<String> variants) {
variants.add("active=true");
variants.add("active=false");
}
public String getTooltipBase() {
return tooltipBase;
}

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = Lists.newArrayList();
ret.add(Pair.of(0, "type=normal"));
return ret;
public void populateVariants(Int2ObjectMap<String> variants) {
variants.put(0, "type=normal");
}
}

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
public void populateVariants(Int2ObjectMap<String> variants) {
for (String name : NAMES)
ret.add(new ImmutablePair<Integer, String>(NAMES.indexOf(name), "type=" + name));
return ret;
variants.put(NAMES.indexOf(name), "type=" + name);
}
public static ItemStack getStack(String name) {

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
ret.add(new ImmutablePair<Integer, String>(0, "type=willgauge"));
return ret;
public void populateVariants(Int2ObjectMap<String> variants) {
variants.put(0, "type=willgauge");
}
@Override

View file

@ -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<T extends Enum<T> & ISubItem> extends Item implements IVar
}
@Override
public List<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> variants = Lists.newArrayList();
public void populateVariants(Int2ObjectMap<String> 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());
}
}

View file

@ -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<ItemStack>(EnumActionResult.SUCCESS, stack);
return new ActionResult<>(EnumActionResult.SUCCESS, stack);
}
@Override
public List<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
ret.add(new ImmutablePair<Integer, String>(0, "type=experiencetome"));
return ret;
public void populateVariants(Int2ObjectMap<String> variants) {
variants.put(0, "type=experiencetome");
}
public void giveOneLevelExpToPlayer(ItemStack stack, EntityPlayer player) {

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
public void populateVariants(Int2ObjectMap<String> variants) {
for (int i = 1; i < EnumRuneType.values().length; i++)
ret.add(new ImmutablePair<Integer, String>(i, "type=" + EnumRuneType.values()[i].name()));
return ret;
variants.put(i, "type=" + EnumRuneType.values()[i].name());
}
public EnumRuneType getType(ItemStack stack) {

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = Lists.newArrayList();
ret.add(Pair.of(0, "type=normal"));
return ret;
public void populateVariants(Int2ObjectMap<String> variants) {
variants.put(0, "type=normal");
}
}

View file

@ -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<String> getVariants() {
return Lists.newArrayList("full=true", "full=false");
public void populateVariants(List<String> variants) {
variants.add("full=true");
variants.add("full=false");
}
}

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
ret.add(new ImmutablePair<Integer, String>(0, "type=basic"));
ret.add(new ImmutablePair<Integer, String>(1, "type=dusk"));
ret.add(new ImmutablePair<Integer, String>(2, "type=dawn"));
return ret;
public void populateVariants(Int2ObjectMap<String> variants) {
variants.put(0, "type=basic");
variants.put(1, "type=dusk");
variants.put(2, "type=dawn");
}
public void cycleDirection(ItemStack stack, EntityPlayer player) {

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
ret.add(new ImmutablePair<Integer, String>(0, "type=normal"));
return ret;
public void populateVariants(Int2ObjectMap<String> variants) {
variants.put(0, "type=normal");
}
}

View file

@ -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<String> getVariants() {
List<String> variants = new ArrayList<String>();
public void populateVariants(List<String> variants) {
variants.add("type=normal");
variants.add("type=creative");
variants.add("type=ceremonial");
return variants;
}
@Nullable
@Override
public ResourceLocation getCustomLocation() {
return null;
}
}

View file

@ -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<Pair<Integer, String>> getVariants() {
return Collections.singletonList(Pair.of(0, "type=normal"));
public void populateVariants(Int2ObjectMap<String> variants) {
variants.put(0, "type=normal");
}
}

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
ret.add(new ImmutablePair<Integer, String>(0, "type=blank"));
ret.add(new ImmutablePair<Integer, String>(1, "type=reinforced"));
ret.add(new ImmutablePair<Integer, String>(2, "type=imbued"));
ret.add(new ImmutablePair<Integer, String>(3, "type=demonic"));
ret.add(new ImmutablePair<Integer, String>(4, "type=ethereal"));
return ret;
public void populateVariants(Int2ObjectMap<String> 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");
}
}

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
ret.add(new ImmutablePair<Integer, String>(0, "type=weak"));
ret.add(new ImmutablePair<Integer, String>(1, "type=enhanced"));
ret.add(new ImmutablePair<Integer, String>(2, "type=reinforced"));
ret.add(new ImmutablePair<Integer, String>(3, "type=demonic"));
return ret;
public void populateVariants(Int2ObjectMap<String> 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) {

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
ret.add(new ImmutablePair<Integer, String>(0, "type=upgradetome"));
return ret;
public void populateVariants(Int2ObjectMap<String> variants) {
variants.put(0, "type=upgradetome");
}
@Override

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
ret.add(new ImmutablePair<Integer, String>(0, "type=upgradetrainer"));
return ret;
public void populateVariants(Int2ObjectMap<String> variants) {
variants.put(0, "type=upgradetrainer");
}
}

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
public void populateVariants(Int2ObjectMap<String> variants) {
for (String name : names)
ret.add(new ImmutablePair<Integer, String>(names.indexOf(name), "type=" + name));
return ret;
variants.put(names.indexOf(name), "type=" + name);
}
public int getDamageOfFluid(ItemStack stack) {

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
public void populateVariants(Int2ObjectMap<String> variants) {
for (String name : names)
ret.add(new ImmutablePair<Integer, String>(names.indexOf(name), "type=" + name));
return ret;
variants.put(names.indexOf(name), "type=" + name);
}
public static ItemStack getStack(String name) {

View file

@ -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<String> getVariants() {
List<String> ret = new ArrayList<String>();
ret.add("armour=head");
ret.add("armour=body");
ret.add("armour=leg");
ret.add("armour=feet");
return ret;
public void populateVariants(List<String> 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) {

View file

@ -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<String> getVariants() {
List<String> ret = new ArrayList<String>();
public void populateVariants(List<String> 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

View file

@ -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<Pair<Integer, String>> getVariants() {
return Lists.newArrayList(Pair.of(0, "inventory"));
public void populateVariants(Int2ObjectMap<String> variants) {
variants.put(0, "inventory");
}
}

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
ret.add(new ImmutablePair<Integer, String>(0, "type=normal"));
return ret;
public void populateVariants(Int2ObjectMap<String> variants) {
variants.put(0, "type=normal");
}
// IFillable

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
ret.add(new ImmutablePair<Integer, String>(0, "type=normal"));
return ret;
public void populateVariants(Int2ObjectMap<String> variants) {
variants.put(0, "type=normal");
}
// IFillable

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
ret.add(new ImmutablePair<Integer, String>(0, "type=exact"));
return ret;
public void populateVariants(Int2ObjectMap<String> variants) {
variants.put(0, "type=exact");
}
@Override

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
ret.add(new ImmutablePair<Integer, String>(0, "type=normal"));
return ret;
public void populateVariants(Int2ObjectMap<String> variants) {
variants.put(0, "type=normal");
}
public BlockPos getBlockPos(ItemStack stack) {

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
ret.add(new ImmutablePair<Integer, String>(0, "type=exact"));
ret.add(new ImmutablePair<Integer, String>(1, "type=ignorenbt"));
ret.add(new ImmutablePair<Integer, String>(2, "type=moditems"));
ret.add(new ImmutablePair<Integer, String>(3, "type=oredict"));
return ret;
public void populateVariants(Int2ObjectMap<String> variants) {
variants.put(0, "type=exact");
variants.put(1, "type=ignorenbt");
variants.put(2, "type=moditems");
variants.put(3, "type=oredict");
}
@Override

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
ret.add(Pair.of(0, "type=normal"));
return ret;
public void populateVariants(Int2ObjectMap<String> variants) {
variants.put(0, "type=normal");
}
public String getName() {

View file

@ -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<Pair<Integer, String>> getVariants() {
return Collections.emptyList();
public void populateVariants(Int2ObjectMap<String> variants) {
}
public static int next(int mode) {

View file

@ -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<String> getVariants() {
List<String> ret = new ArrayList<String>();
ret.add("active=false");
ret.add("active=true");
return ret;
public void populateVariants(List<String> variants) {
variants.add("active=false");
variants.add("active=true");
}
}

View file

@ -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<String> getVariants() {
public void populateVariants(List<String> 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");
}
}

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
for (int i = 0; i < names.length; i++) {
String name = names[i];
ret.add(new ImmutablePair<Integer, String>(i, "type=" + name));
}
return ret;
public void populateVariants(Int2ObjectMap<String> variants) {
for (int i = 0; i < names.length; i++)
variants.put(i, "type=" + names[i]);
}
@Override

View file

@ -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<ItemStack>(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<ItemStack> 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<String> getVariants() {
return Lists.newArrayList("type=activated", "type=deactivated");
}
@Nullable
@Override
public ResourceLocation getCustomLocation() {
return null;
public void populateVariants(List<String> variants) {
variants.add("type=activated");
variants.add("type=deactivated");
}
}

View file

@ -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<String> getVariants() {
List<String> ret = new ArrayList<String>();
for (EnumDemonWillType type : EnumDemonWillType.values()) {
ret.add("type=" + type.getName().toLowerCase());
}
return ret;
public void populateVariants(List<String> variants) {
for (EnumDemonWillType type : EnumDemonWillType.values())
variants.add("type=" + type.getName().toLowerCase());
}
@Override

View file

@ -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<Pair<Integer, String>> getVariants() {
return Lists.newArrayList(Pair.of(0, "inventory"));
public void populateVariants(Int2ObjectMap<String> variants) {
variants.put(0, "inventory");
}
public EntityTippedArrow getArrowEntity(World world, ItemStack stack, EntityLivingBase target, EntityLivingBase user, float velocity) {

View file

@ -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<String> getVariants() {
List<String> ret = new ArrayList<String>();
for (EnumDemonWillType type : EnumDemonWillType.values()) {
ret.add("type=" + type.getName().toLowerCase());
}
return ret;
public void populateVariants(List<String> variants) {
for (EnumDemonWillType type : EnumDemonWillType.values())
variants.add("type=" + type.getName().toLowerCase());
}
@Override

View file

@ -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<String> getVariants() {
List<String> ret = new ArrayList<String>();
for (EnumDemonWillType type : EnumDemonWillType.values()) {
ret.add("type=" + type.getName().toLowerCase());
}
return ret;
public void populateVariants(List<String> variants) {
for (EnumDemonWillType type : EnumDemonWillType.values())
variants.add("type=" + type.getName().toLowerCase());
}
@Override

View file

@ -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<String> getVariants() {
List<String> ret = new ArrayList<String>();
for (EnumDemonWillType type : EnumDemonWillType.values()) {
ret.add("type=" + type.getName().toLowerCase());
}
return ret;
public void populateVariants(List<String> variants) {
for (EnumDemonWillType type : EnumDemonWillType.values())
variants.add("type=" + type.getName().toLowerCase());
}
@Override

View file

@ -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<ItemStack>(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<String> getVariants() {
List<String> ret = new ArrayList<String>();
public void populateVariants(List<String> 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

View file

@ -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<Pair<Integer, String>> getVariants() {
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
ret.add(new ImmutablePair<Integer, String>(0, "type=soulsnare"));
return ret;
public void populateVariants(Int2ObjectMap<String> variants) {
variants.put(0, "type=soulsnare");
}
}

View file

@ -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<Integer, String> 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<Integer, String> 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 {

View file

@ -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<String, ITimeValue> parameters) {
return null;
}

View file

@ -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")));
}

View file

@ -5,12 +5,10 @@
"transform": "forge:default-item"
},
"variants": {
"type": {
"normal": {
"textures": {
"layer0": "bloodmagic:items/AirSigil"
}
"inventory": [{
"textures": {
"layer0": "bloodmagic:items/AirSigil"
}
}
}]
}
}

View file

@ -5,12 +5,10 @@
"transform": "forge:default-item"
},
"variants": {
"type": {
"normal": {
"textures": {
"layer0": "bloodmagic:items/BloodLightSigil"
}
"inventory": [{
"textures": {
"layer0": "bloodmagic:items/BloodLightSigil"
}
}
}]
}
}

View file

@ -5,12 +5,10 @@
"transform": "forge:default-item"
},
"variants": {
"type": {
"normal": {
"textures": {
"layer0": "bloodmagic:items/DivinationSigil"
}
"inventory": [{
"textures": {
"layer0": "bloodmagic:items/DivinationSigil"
}
}
}]
}
}