Begin new model system
Includes some examples for both ways.
This commit is contained in:
parent
5c2ba20a32
commit
ba0b24d231
19
src/main/java/WayofTime/bloodmagic/client/IMeshProvider.java
Normal file
19
src/main/java/WayofTime/bloodmagic/client/IMeshProvider.java
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
package WayofTime.bloodmagic.client;
|
||||||
|
|
||||||
|
import net.minecraft.client.renderer.ItemMeshDefinition;
|
||||||
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides a custom {@link ItemMeshDefinition} for automatic registration of
|
||||||
|
* renders.
|
||||||
|
*/
|
||||||
|
public interface IMeshProvider {
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
ItemMeshDefinition getMeshDefinition();
|
||||||
|
|
||||||
|
List<String> getVariants();
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
package WayofTime.bloodmagic.client;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface IVariantProvider {
|
||||||
|
|
||||||
|
List<Pair<Integer, String>> getVariants();
|
||||||
|
}
|
|
@ -5,6 +5,7 @@ import net.minecraft.client.resources.model.ModelResourceLocation;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import WayofTime.bloodmagic.api.Constants;
|
import WayofTime.bloodmagic.api.Constants;
|
||||||
import WayofTime.bloodmagic.api.iface.IActivatable;
|
import WayofTime.bloodmagic.api.iface.IActivatable;
|
||||||
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
|
||||||
public class CustomMeshDefinitionActivatable implements ItemMeshDefinition
|
public class CustomMeshDefinitionActivatable implements ItemMeshDefinition
|
||||||
{
|
{
|
||||||
|
@ -18,12 +19,9 @@ public class CustomMeshDefinitionActivatable implements ItemMeshDefinition
|
||||||
public ModelResourceLocation getModelLocation(ItemStack stack)
|
public ModelResourceLocation getModelLocation(ItemStack stack)
|
||||||
{
|
{
|
||||||
if (stack != null && stack.getItem() instanceof IActivatable)
|
if (stack != null && stack.getItem() instanceof IActivatable)
|
||||||
{
|
if (((IActivatable) stack.getItem()).getActivated(stack))
|
||||||
if (!((IActivatable) stack.getItem()).getActivated(stack))
|
return new ModelResourceLocation(new ResourceLocation(Constants.Mod.MODID, "item/" + name), "active=true");
|
||||||
return new ModelResourceLocation(Constants.Mod.DOMAIN + name + "0", "inventory");
|
|
||||||
|
|
||||||
return new ModelResourceLocation(Constants.Mod.DOMAIN + name + "1", "inventory");
|
return new ModelResourceLocation(new ResourceLocation(Constants.Mod.MODID, "item/" + name), "active=false");
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,16 @@
|
||||||
package WayofTime.bloodmagic.item;
|
package WayofTime.bloodmagic.item;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
|
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
|
||||||
|
import WayofTime.bloodmagic.client.IMeshProvider;
|
||||||
|
import WayofTime.bloodmagic.client.mesh.CustomMeshDefinitionActivatable;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.BlockLeavesBase;
|
import net.minecraft.block.BlockLeavesBase;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
|
import net.minecraft.client.renderer.ItemMeshDefinition;
|
||||||
import net.minecraft.enchantment.EnchantmentHelper;
|
import net.minecraft.enchantment.EnchantmentHelper;
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
import net.minecraft.entity.SharedMonsterAttributes;
|
import net.minecraft.entity.SharedMonsterAttributes;
|
||||||
|
@ -26,8 +30,10 @@ import WayofTime.bloodmagic.api.ItemStackWrapper;
|
||||||
import com.google.common.collect.HashMultiset;
|
import com.google.common.collect.HashMultiset;
|
||||||
import com.google.common.collect.Multimap;
|
import com.google.common.collect.Multimap;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
public class ItemBoundAxe extends ItemBoundTool
|
public class ItemBoundAxe extends ItemBoundTool implements IMeshProvider
|
||||||
{
|
{
|
||||||
private static final Set<Block> EFFECTIVE_ON = Sets.newHashSet(Blocks.planks, Blocks.bookshelf, Blocks.log, Blocks.log2, Blocks.chest, Blocks.pumpkin, Blocks.lit_pumpkin, Blocks.melon_block, Blocks.ladder);
|
private static final Set<Block> EFFECTIVE_ON = Sets.newHashSet(Blocks.planks, Blocks.bookshelf, Blocks.log, Blocks.log2, Blocks.chest, Blocks.pumpkin, Blocks.lit_pumpkin, Blocks.melon_block, Blocks.ladder);
|
||||||
|
|
||||||
|
@ -115,4 +121,20 @@ public class ItemBoundAxe extends ItemBoundTool
|
||||||
multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), new AttributeModifier(itemModifierUUID, "Weapon modifier", 7, 0));
|
multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), new AttributeModifier(itemModifierUUID, "Weapon modifier", 7, 0));
|
||||||
return multimap;
|
return multimap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public ItemMeshDefinition getMeshDefinition()
|
||||||
|
{
|
||||||
|
return new CustomMeshDefinitionActivatable("ItemBoundAxe");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> getVariants()
|
||||||
|
{
|
||||||
|
List<String> ret = new ArrayList<String>();
|
||||||
|
ret.add("active=true");
|
||||||
|
ret.add("active=false");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,15 @@
|
||||||
package WayofTime.bloodmagic.item;
|
package WayofTime.bloodmagic.item;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
|
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
|
||||||
|
import WayofTime.bloodmagic.client.IMeshProvider;
|
||||||
|
import WayofTime.bloodmagic.client.mesh.CustomMeshDefinitionActivatable;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
|
import net.minecraft.client.renderer.ItemMeshDefinition;
|
||||||
import net.minecraft.enchantment.EnchantmentHelper;
|
import net.minecraft.enchantment.EnchantmentHelper;
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
import net.minecraft.entity.SharedMonsterAttributes;
|
import net.minecraft.entity.SharedMonsterAttributes;
|
||||||
|
@ -25,8 +29,10 @@ import WayofTime.bloodmagic.api.ItemStackWrapper;
|
||||||
import com.google.common.collect.HashMultiset;
|
import com.google.common.collect.HashMultiset;
|
||||||
import com.google.common.collect.Multimap;
|
import com.google.common.collect.Multimap;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
public class ItemBoundPickaxe extends ItemBoundTool
|
public class ItemBoundPickaxe extends ItemBoundTool implements IMeshProvider
|
||||||
{
|
{
|
||||||
private static final Set<Block> EFFECTIVE_ON = Sets.newHashSet(Blocks.activator_rail, Blocks.coal_ore, Blocks.cobblestone, Blocks.detector_rail, Blocks.diamond_block, Blocks.diamond_ore, Blocks.double_stone_slab, Blocks.golden_rail, Blocks.gold_block, Blocks.gold_ore, Blocks.ice, Blocks.iron_block, Blocks.iron_ore, Blocks.lapis_block, Blocks.lapis_ore, Blocks.lit_redstone_ore, Blocks.mossy_cobblestone, Blocks.netherrack, Blocks.packed_ice, Blocks.rail, Blocks.redstone_ore, Blocks.sandstone, Blocks.red_sandstone, Blocks.stone, Blocks.stone_slab);
|
private static final Set<Block> EFFECTIVE_ON = Sets.newHashSet(Blocks.activator_rail, Blocks.coal_ore, Blocks.cobblestone, Blocks.detector_rail, Blocks.diamond_block, Blocks.diamond_ore, Blocks.double_stone_slab, Blocks.golden_rail, Blocks.gold_block, Blocks.gold_ore, Blocks.ice, Blocks.iron_block, Blocks.iron_ore, Blocks.lapis_block, Blocks.lapis_ore, Blocks.lit_redstone_ore, Blocks.mossy_cobblestone, Blocks.netherrack, Blocks.packed_ice, Blocks.rail, Blocks.redstone_ore, Blocks.sandstone, Blocks.red_sandstone, Blocks.stone, Blocks.stone_slab);
|
||||||
|
|
||||||
|
@ -129,4 +135,20 @@ public class ItemBoundPickaxe extends ItemBoundTool
|
||||||
multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), new AttributeModifier(itemModifierUUID, "Weapon modifier", 5, 0));
|
multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), new AttributeModifier(itemModifierUUID, "Weapon modifier", 5, 0));
|
||||||
return multimap;
|
return multimap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public ItemMeshDefinition getMeshDefinition()
|
||||||
|
{
|
||||||
|
return new CustomMeshDefinitionActivatable("ItemBoundPickaxe");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> getVariants()
|
||||||
|
{
|
||||||
|
List<String> ret = new ArrayList<String>();
|
||||||
|
ret.add("active=true");
|
||||||
|
ret.add("active=false");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,14 @@
|
||||||
package WayofTime.bloodmagic.item;
|
package WayofTime.bloodmagic.item;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
|
import WayofTime.bloodmagic.api.util.helper.NetworkHelper;
|
||||||
|
import WayofTime.bloodmagic.client.IMeshProvider;
|
||||||
|
import WayofTime.bloodmagic.client.mesh.CustomMeshDefinitionActivatable;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.client.renderer.ItemMeshDefinition;
|
||||||
import net.minecraft.enchantment.EnchantmentHelper;
|
import net.minecraft.enchantment.EnchantmentHelper;
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
import net.minecraft.entity.SharedMonsterAttributes;
|
import net.minecraft.entity.SharedMonsterAttributes;
|
||||||
|
@ -24,8 +28,10 @@ import WayofTime.bloodmagic.api.ItemStackWrapper;
|
||||||
import com.google.common.collect.HashMultiset;
|
import com.google.common.collect.HashMultiset;
|
||||||
import com.google.common.collect.Multimap;
|
import com.google.common.collect.Multimap;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
public class ItemBoundShovel extends ItemBoundTool
|
public class ItemBoundShovel extends ItemBoundTool implements IMeshProvider
|
||||||
{
|
{
|
||||||
private static final Set<Block> EFFECTIVE_ON = Sets.newHashSet(Blocks.clay, Blocks.dirt, Blocks.farmland, Blocks.grass, Blocks.gravel, Blocks.mycelium, Blocks.sand, Blocks.snow, Blocks.snow_layer, Blocks.soul_sand);
|
private static final Set<Block> EFFECTIVE_ON = Sets.newHashSet(Blocks.clay, Blocks.dirt, Blocks.farmland, Blocks.grass, Blocks.gravel, Blocks.mycelium, Blocks.sand, Blocks.snow, Blocks.snow_layer, Blocks.soul_sand);
|
||||||
|
|
||||||
|
@ -113,4 +119,20 @@ public class ItemBoundShovel extends ItemBoundTool
|
||||||
multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), new AttributeModifier(itemModifierUUID, "Weapon modifier", 1, 0));
|
multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), new AttributeModifier(itemModifierUUID, "Weapon modifier", 1, 0));
|
||||||
return multimap;
|
return multimap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public ItemMeshDefinition getMeshDefinition()
|
||||||
|
{
|
||||||
|
return new CustomMeshDefinitionActivatable("ItemBoundShovel");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> getVariants()
|
||||||
|
{
|
||||||
|
List<String> ret = new ArrayList<String>();
|
||||||
|
ret.add("active=true");
|
||||||
|
ret.add("active=false");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
package WayofTime.bloodmagic.item;
|
package WayofTime.bloodmagic.item;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import WayofTime.bloodmagic.client.IMeshProvider;
|
||||||
|
import WayofTime.bloodmagic.client.mesh.CustomMeshDefinitionActivatable;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.client.renderer.ItemMeshDefinition;
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
import net.minecraft.entity.SharedMonsterAttributes;
|
import net.minecraft.entity.SharedMonsterAttributes;
|
||||||
import net.minecraft.entity.ai.attributes.AttributeModifier;
|
import net.minecraft.entity.ai.attributes.AttributeModifier;
|
||||||
|
@ -27,7 +31,7 @@ import com.google.common.base.Strings;
|
||||||
import com.google.common.collect.HashMultimap;
|
import com.google.common.collect.HashMultimap;
|
||||||
import com.google.common.collect.Multimap;
|
import com.google.common.collect.Multimap;
|
||||||
|
|
||||||
public class ItemBoundSword extends ItemSword implements IBindable, IActivatable
|
public class ItemBoundSword extends ItemSword implements IBindable, IActivatable, IMeshProvider
|
||||||
{
|
{
|
||||||
private float attackDamage;
|
private float attackDamage;
|
||||||
|
|
||||||
|
@ -116,6 +120,22 @@ public class ItemBoundSword extends ItemSword implements IBindable, IActivatable
|
||||||
return stack;
|
return stack;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public ItemMeshDefinition getMeshDefinition()
|
||||||
|
{
|
||||||
|
return new CustomMeshDefinitionActivatable("ItemBoundSword");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> getVariants()
|
||||||
|
{
|
||||||
|
List<String> ret = new ArrayList<String>();
|
||||||
|
ret.add("active=true");
|
||||||
|
ret.add("active=false");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
// IBindable
|
// IBindable
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
package WayofTime.bloodmagic.item;
|
package WayofTime.bloodmagic.item;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import WayofTime.bloodmagic.client.IVariantProvider;
|
||||||
import net.minecraft.creativetab.CreativeTabs;
|
import net.minecraft.creativetab.CreativeTabs;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
|
@ -12,8 +14,10 @@ import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
import WayofTime.bloodmagic.BloodMagic;
|
import WayofTime.bloodmagic.BloodMagic;
|
||||||
import WayofTime.bloodmagic.api.Constants;
|
import WayofTime.bloodmagic.api.Constants;
|
||||||
import WayofTime.bloodmagic.util.helper.TextHelper;
|
import WayofTime.bloodmagic.util.helper.TextHelper;
|
||||||
|
import org.apache.commons.lang3.tuple.ImmutablePair;
|
||||||
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
|
|
||||||
public class ItemSlate extends Item
|
public class ItemSlate extends Item implements IVariantProvider
|
||||||
{
|
{
|
||||||
public String[] names = { "blank", "reinforced", "imbued", "demonic", "ethereal" };
|
public String[] names = { "blank", "reinforced", "imbued", "demonic", "ethereal" };
|
||||||
|
|
||||||
|
@ -47,4 +51,15 @@ public class ItemSlate extends Item
|
||||||
{
|
{
|
||||||
list.addAll(Arrays.asList(TextHelper.cutLongString(TextHelper.localizeEffect("tooltip.BloodMagic.slate.desc"))));
|
list.addAll(Arrays.asList(TextHelper.cutLongString(TextHelper.localizeEffect("tooltip.BloodMagic.slate.desc"))));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,10 @@ import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import WayofTime.bloodmagic.client.IMeshProvider;
|
||||||
|
import WayofTime.bloodmagic.client.mesh.CustomMeshDefinitionActivatable;
|
||||||
|
import net.minecraft.client.renderer.ItemMeshDefinition;
|
||||||
|
import net.minecraft.client.resources.model.ModelResourceLocation;
|
||||||
import net.minecraft.entity.Entity;
|
import net.minecraft.entity.Entity;
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
import net.minecraft.entity.SharedMonsterAttributes;
|
import net.minecraft.entity.SharedMonsterAttributes;
|
||||||
|
@ -13,6 +17,7 @@ import net.minecraft.item.EnumAction;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.item.ItemSword;
|
import net.minecraft.item.ItemSword;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.util.ResourceLocation;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
|
@ -30,7 +35,7 @@ import WayofTime.bloodmagic.util.helper.TextHelper;
|
||||||
import com.google.common.collect.HashMultimap;
|
import com.google.common.collect.HashMultimap;
|
||||||
import com.google.common.collect.Multimap;
|
import com.google.common.collect.Multimap;
|
||||||
|
|
||||||
public class ItemSentientSword extends ItemSword implements IDemonWillWeapon, IActivatable
|
public class ItemSentientSword extends ItemSword implements IDemonWillWeapon, IActivatable, IMeshProvider
|
||||||
{
|
{
|
||||||
public int[] soulBracket = new int[] { 16, 60, 200, 400 };
|
public int[] soulBracket = new int[] { 16, 60, 200, 400 };
|
||||||
public double[] damageAdded = new double[] { 1, 1.5, 2, 2.5 };
|
public double[] damageAdded = new double[] { 1, 1.5, 2, 2.5 };
|
||||||
|
@ -142,12 +147,30 @@ public class ItemSentientSword extends ItemSword implements IDemonWillWeapon, IA
|
||||||
return super.onLeftClickEntity(stack, player, entity);
|
return super.onLeftClickEntity(stack, player, entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public ItemMeshDefinition getMeshDefinition()
|
||||||
|
{
|
||||||
|
return new CustomMeshDefinitionActivatable("ItemSentientSword");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> getVariants()
|
||||||
|
{
|
||||||
|
List<String> ret = new ArrayList<String>();
|
||||||
|
ret.add("active=true");
|
||||||
|
ret.add("active=false");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean getActivated(ItemStack stack)
|
public boolean getActivated(ItemStack stack)
|
||||||
{
|
{
|
||||||
NBTHelper.checkNBT(stack);
|
NBTHelper.checkNBT(stack);
|
||||||
return stack.getTagCompound().getBoolean(Constants.NBT.ACTIVATED);
|
return stack.getTagCompound().getBoolean(Constants.NBT.ACTIVATED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public ItemStack setActivatedState(ItemStack stack, boolean activated)
|
public ItemStack setActivatedState(ItemStack stack, boolean activated)
|
||||||
{
|
{
|
||||||
NBTHelper.checkNBT(stack);
|
NBTHelper.checkNBT(stack);
|
||||||
|
@ -178,6 +201,14 @@ public class ItemSentientSword extends ItemSword implements IDemonWillWeapon, IA
|
||||||
return soulList;
|
return soulList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Multimap<String, AttributeModifier> getAttributeModifiers(ItemStack stack)
|
||||||
|
{
|
||||||
|
Multimap<String, AttributeModifier> multimap = HashMultimap.<String, AttributeModifier>create();
|
||||||
|
multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), new AttributeModifier(itemModifierUUID, "Weapon modifier", getActivated(stack) ? getDamageOfActivatedSword(stack) : 2, 0));
|
||||||
|
return multimap;
|
||||||
|
}
|
||||||
|
|
||||||
public double getDamageOfActivatedSword(ItemStack stack)
|
public double getDamageOfActivatedSword(ItemStack stack)
|
||||||
{
|
{
|
||||||
NBTHelper.checkNBT(stack);
|
NBTHelper.checkNBT(stack);
|
||||||
|
@ -245,12 +276,4 @@ public class ItemSentientSword extends ItemSword implements IDemonWillWeapon, IA
|
||||||
|
|
||||||
tag.setDouble(Constants.NBT.SOUL_SWORD_DROP, drop);
|
tag.setDouble(Constants.NBT.SOUL_SWORD_DROP, drop);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Multimap<String, AttributeModifier> getAttributeModifiers(ItemStack stack)
|
|
||||||
{
|
|
||||||
Multimap<String, AttributeModifier> multimap = HashMultimap.<String, AttributeModifier>create();
|
|
||||||
multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), new AttributeModifier(itemModifierUUID, "Weapon modifier", getActivated(stack) ? getDamageOfActivatedSword(stack) : 2, 0));
|
|
||||||
return multimap;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,11 @@
|
||||||
package WayofTime.bloodmagic.proxy;
|
package WayofTime.bloodmagic.proxy;
|
||||||
|
|
||||||
|
import WayofTime.bloodmagic.client.IMeshProvider;
|
||||||
|
import WayofTime.bloodmagic.client.IVariantProvider;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.client.resources.model.ModelResourceLocation;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.util.ResourceLocation;
|
||||||
import net.minecraftforge.client.model.ModelLoader;
|
import net.minecraftforge.client.model.ModelLoader;
|
||||||
import net.minecraftforge.client.model.obj.OBJLoader;
|
import net.minecraftforge.client.model.obj.OBJLoader;
|
||||||
import net.minecraftforge.common.MinecraftForge;
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
|
@ -27,6 +33,7 @@ import WayofTime.bloodmagic.tile.routing.TileRoutingNode;
|
||||||
import WayofTime.bloodmagic.util.handler.ClientEventHandler;
|
import WayofTime.bloodmagic.util.handler.ClientEventHandler;
|
||||||
import WayofTime.bloodmagic.util.helper.InventoryRenderHelper;
|
import WayofTime.bloodmagic.util.helper.InventoryRenderHelper;
|
||||||
import WayofTime.bloodmagic.util.helper.InventoryRenderHelperV2;
|
import WayofTime.bloodmagic.util.helper.InventoryRenderHelperV2;
|
||||||
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
|
|
||||||
public class ClientProxy extends CommonProxy
|
public class ClientProxy extends CommonProxy
|
||||||
{
|
{
|
||||||
|
@ -71,7 +78,6 @@ public class ClientProxy extends CommonProxy
|
||||||
RenderingRegistry.registerEntityRenderingHandler(EntitySoulSnare.class, new SoulSnareRenderFactory());
|
RenderingRegistry.registerEntityRenderingHandler(EntitySoulSnare.class, new SoulSnareRenderFactory());
|
||||||
RenderingRegistry.registerEntityRenderingHandler(EntitySentientArrow.class, new SentientArrowRenderFactory());
|
RenderingRegistry.registerEntityRenderingHandler(EntitySentientArrow.class, new SentientArrowRenderFactory());
|
||||||
RenderingRegistry.registerEntityRenderingHandler(EntityBloodLight.class, new BloodLightRenderFactory());
|
RenderingRegistry.registerEntityRenderingHandler(EntityBloodLight.class, new BloodLightRenderFactory());
|
||||||
ModelLoader.setCustomMeshDefinition(ModItems.sentientSword, new CustomMeshDefinitionActivatable("ItemSentientSword"));
|
|
||||||
ModelLoader.setCustomMeshDefinition(ModItems.boundShovel, new CustomMeshDefinitionActivatable("ItemBoundShovel"));
|
ModelLoader.setCustomMeshDefinition(ModItems.boundShovel, new CustomMeshDefinitionActivatable("ItemBoundShovel"));
|
||||||
ModelLoader.setCustomMeshDefinition(ModItems.boundAxe, new CustomMeshDefinitionActivatable("ItemBoundAxe"));
|
ModelLoader.setCustomMeshDefinition(ModItems.boundAxe, new CustomMeshDefinitionActivatable("ItemBoundAxe"));
|
||||||
ModelLoader.setCustomMeshDefinition(ModItems.boundPickaxe, new CustomMeshDefinitionActivatable("ItemBoundPickaxe"));
|
ModelLoader.setCustomMeshDefinition(ModItems.boundPickaxe, new CustomMeshDefinitionActivatable("ItemBoundPickaxe"));
|
||||||
|
@ -91,4 +97,27 @@ public class ClientProxy extends CommonProxy
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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(Constants.Mod.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());
|
||||||
|
for (String variant : meshProvider.getVariants())
|
||||||
|
ModelLoader.registerItemVariants(item, new ModelResourceLocation(new ResourceLocation(Constants.Mod.MODID, "item/" + name), 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(Constants.Mod.MODID, "item/" + name), variant.getRight()));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
package WayofTime.bloodmagic.proxy;
|
package WayofTime.bloodmagic.proxy;
|
||||||
|
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.common.MinecraftForge;
|
import net.minecraftforge.common.MinecraftForge;
|
||||||
import net.minecraftforge.common.capabilities.CapabilityManager;
|
import net.minecraftforge.common.capabilities.CapabilityManager;
|
||||||
|
@ -50,4 +52,12 @@ public class CommonProxy
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void tryHandleBlockModel(Block block, String name) {
|
||||||
|
// NO-OP
|
||||||
|
}
|
||||||
|
|
||||||
|
public void tryHandleItemModel(Item item, String name) {
|
||||||
|
// NO-OP
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,6 @@ package WayofTime.bloodmagic.registry;
|
||||||
|
|
||||||
import WayofTime.bloodmagic.item.block.*;
|
import WayofTime.bloodmagic.item.block.*;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.item.Item;
|
|
||||||
import net.minecraft.item.ItemBlock;
|
import net.minecraft.item.ItemBlock;
|
||||||
import net.minecraftforge.fluids.FluidRegistry;
|
import net.minecraftforge.fluids.FluidRegistry;
|
||||||
import net.minecraftforge.fml.common.registry.GameRegistry;
|
import net.minecraftforge.fml.common.registry.GameRegistry;
|
||||||
|
@ -233,16 +232,11 @@ public class ModBlocks
|
||||||
return block;
|
return block;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ConfigHandler.blockBlacklist.contains(block.getRegistryName().split(":")[1]))
|
String blockName = block.getRegistryName().split(":")[1];
|
||||||
|
if (!ConfigHandler.blockBlacklist.contains(blockName)) {
|
||||||
GameRegistry.registerBlock(block, itemBlock);
|
GameRegistry.registerBlock(block, itemBlock);
|
||||||
|
BloodMagic.proxy.tryHandleBlockModel(block, blockName);
|
||||||
return block;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private static Block registerBlock(Block block, String name)
|
|
||||||
{
|
|
||||||
if (!ConfigHandler.blockBlacklist.contains(name))
|
|
||||||
GameRegistry.registerBlock(block, name);
|
|
||||||
|
|
||||||
return block;
|
return block;
|
||||||
}
|
}
|
||||||
|
@ -255,8 +249,11 @@ public class ModBlocks
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ConfigHandler.blockBlacklist.contains(block.getRegistryName().split(":")[1]))
|
String blockName = block.getRegistryName().split(":")[1];
|
||||||
|
if (!ConfigHandler.blockBlacklist.contains(blockName)) {
|
||||||
GameRegistry.registerBlock(block);
|
GameRegistry.registerBlock(block);
|
||||||
|
BloodMagic.proxy.tryHandleBlockModel(block, blockName);
|
||||||
|
}
|
||||||
|
|
||||||
return block;
|
return block;
|
||||||
}
|
}
|
||||||
|
|
|
@ -259,12 +259,6 @@ public class ModItems
|
||||||
renderHelperV2.registerRender(soulGem, 4, "grand");
|
renderHelperV2.registerRender(soulGem, 4, "grand");
|
||||||
renderHelperV2.registerRender(soulSnare, "soulSnare");
|
renderHelperV2.registerRender(soulSnare, "soulSnare");
|
||||||
|
|
||||||
renderHelperV2.registerRender(slate, 0, "blank");
|
|
||||||
renderHelperV2.registerRender(slate, 1, "reinforced");
|
|
||||||
renderHelperV2.registerRender(slate, 2, "imbued");
|
|
||||||
renderHelperV2.registerRender(slate, 3, "demonic");
|
|
||||||
renderHelperV2.registerRender(slate, 4, "ethereal");
|
|
||||||
|
|
||||||
renderHelperV2.registerRender(inscriptionTool, 1, EnumRuneType.WATER.name());
|
renderHelperV2.registerRender(inscriptionTool, 1, EnumRuneType.WATER.name());
|
||||||
renderHelperV2.registerRender(inscriptionTool, 2, EnumRuneType.FIRE.name());
|
renderHelperV2.registerRender(inscriptionTool, 2, EnumRuneType.FIRE.name());
|
||||||
renderHelperV2.registerRender(inscriptionTool, 3, EnumRuneType.EARTH.name());
|
renderHelperV2.registerRender(inscriptionTool, 3, EnumRuneType.EARTH.name());
|
||||||
|
@ -379,8 +373,6 @@ public class ModItems
|
||||||
renderHelper.itemRender(sigilTeleposition);
|
renderHelper.itemRender(sigilTeleposition);
|
||||||
renderHelper.itemRender(sigilTransposition);
|
renderHelper.itemRender(sigilTransposition);
|
||||||
|
|
||||||
renderHelper.customItemRender(sentientSword, 0);
|
|
||||||
renderHelper.customItemRender(sentientSword, 1);
|
|
||||||
renderHelper.itemRender(sentientBow, 0, "ItemSentientBow");
|
renderHelper.itemRender(sentientBow, 0, "ItemSentientBow");
|
||||||
renderHelper.itemRender(sentientBow, 1, "ItemSentientBow_pulling_0");
|
renderHelper.itemRender(sentientBow, 1, "ItemSentientBow_pulling_0");
|
||||||
renderHelper.itemRender(sentientBow, 2, "ItemSentientBow_pulling_1");
|
renderHelper.itemRender(sentientBow, 2, "ItemSentientBow_pulling_1");
|
||||||
|
@ -393,7 +385,10 @@ public class ModItems
|
||||||
private static Item registerItem(Item item, String name)
|
private static Item registerItem(Item item, String name)
|
||||||
{
|
{
|
||||||
if (!ConfigHandler.itemBlacklist.contains(name))
|
if (!ConfigHandler.itemBlacklist.contains(name))
|
||||||
|
{
|
||||||
GameRegistry.registerItem(item, name);
|
GameRegistry.registerItem(item, name);
|
||||||
|
BloodMagic.proxy.tryHandleItemModel(item, name);
|
||||||
|
}
|
||||||
|
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
@ -406,8 +401,12 @@ public class ModItems
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ConfigHandler.itemBlacklist.contains(item.getRegistryName().split(":")[1]))
|
String itemName = item.getRegistryName().split(":")[1];
|
||||||
|
if (!ConfigHandler.itemBlacklist.contains(itemName))
|
||||||
|
{
|
||||||
GameRegistry.registerItem(item);
|
GameRegistry.registerItem(item);
|
||||||
|
BloodMagic.proxy.tryHandleItemModel(item, itemName);
|
||||||
|
}
|
||||||
|
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"forge_marker": 1,
|
||||||
|
"defaults": {
|
||||||
|
"model": "builtin/generated",
|
||||||
|
"transform": "forge:default-tool"
|
||||||
|
},
|
||||||
|
"variants": {
|
||||||
|
"active": {
|
||||||
|
"true": {
|
||||||
|
"textures": {
|
||||||
|
"layer0": "bloodmagic:items/BoundAxe_activated"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"false": {
|
||||||
|
"textures": {
|
||||||
|
"layer0": "bloodmagic:items/Item_deactivated"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"forge_marker": 1,
|
||||||
|
"defaults": {
|
||||||
|
"model": "builtin/generated",
|
||||||
|
"transform": "forge:default-tool"
|
||||||
|
},
|
||||||
|
"variants": {
|
||||||
|
"active": {
|
||||||
|
"true": {
|
||||||
|
"textures": {
|
||||||
|
"layer0": "bloodmagic:items/BoundPickaxe_activated"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"false": {
|
||||||
|
"textures": {
|
||||||
|
"layer0": "bloodmagic:items/Item_deactivated"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"forge_marker": 1,
|
||||||
|
"defaults": {
|
||||||
|
"model": "builtin/generated",
|
||||||
|
"transform": "forge:default-tool"
|
||||||
|
},
|
||||||
|
"variants": {
|
||||||
|
"active": {
|
||||||
|
"true": {
|
||||||
|
"textures": {
|
||||||
|
"layer0": "bloodmagic:items/BoundShovel_activated"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"false": {
|
||||||
|
"textures": {
|
||||||
|
"layer0": "bloodmagic:items/Item_deactivated"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"forge_marker": 1,
|
||||||
|
"defaults": {
|
||||||
|
"model": "builtin/generated",
|
||||||
|
"transform": "forge:default-tool"
|
||||||
|
},
|
||||||
|
"variants": {
|
||||||
|
"active": {
|
||||||
|
"true": {
|
||||||
|
"textures": {
|
||||||
|
"layer0": "bloodmagic:items/BoundSword_activated"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"false": {
|
||||||
|
"textures": {
|
||||||
|
"layer0": "bloodmagic:items/Item_deactivated"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"forge_marker": 1,
|
||||||
|
"defaults": {
|
||||||
|
"model": "builtin/generated",
|
||||||
|
"transform": "forge:default-tool"
|
||||||
|
},
|
||||||
|
"variants": {
|
||||||
|
"active": {
|
||||||
|
"true": {
|
||||||
|
"textures": {
|
||||||
|
"layer0": "bloodmagic:items/SoulSword_activated"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"false": {
|
||||||
|
"textures": {
|
||||||
|
"layer0": "bloodmagic:items/SoulSword_deactivated"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,6 +0,0 @@
|
||||||
{
|
|
||||||
"parent":"bloodmagic:item/ItemToolBase",
|
|
||||||
"textures": {
|
|
||||||
"layer0":"bloodmagic:items/Item_deactivated"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,6 +0,0 @@
|
||||||
{
|
|
||||||
"parent":"bloodmagic:item/ItemToolBase",
|
|
||||||
"textures": {
|
|
||||||
"layer0":"bloodmagic:items/BoundAxe_activated"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,6 +0,0 @@
|
||||||
{
|
|
||||||
"parent":"bloodmagic:item/ItemToolBase",
|
|
||||||
"textures": {
|
|
||||||
"layer0":"bloodmagic:items/Item_deactivated"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,6 +0,0 @@
|
||||||
{
|
|
||||||
"parent":"bloodmagic:item/ItemToolBase",
|
|
||||||
"textures": {
|
|
||||||
"layer0":"bloodmagic:items/BoundPickaxe_activated"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,6 +0,0 @@
|
||||||
{
|
|
||||||
"parent":"bloodmagic:item/ItemToolBase",
|
|
||||||
"textures": {
|
|
||||||
"layer0":"bloodmagic:items/Item_deactivated"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,6 +0,0 @@
|
||||||
{
|
|
||||||
"parent":"bloodmagic:item/ItemToolBase",
|
|
||||||
"textures": {
|
|
||||||
"layer0":"bloodmagic:items/BoundShovel_activated"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,6 +0,0 @@
|
||||||
{
|
|
||||||
"parent":"bloodmagic:item/ItemToolBase",
|
|
||||||
"textures": {
|
|
||||||
"layer0":"bloodmagic:items/Item_deactivated"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,6 +0,0 @@
|
||||||
{
|
|
||||||
"parent":"bloodmagic:item/ItemToolBase",
|
|
||||||
"textures": {
|
|
||||||
"layer0":"bloodmagic:items/BoundSword_activated"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,7 +0,0 @@
|
||||||
{
|
|
||||||
"parent":"bloodmagic:item/ItemToolBase",
|
|
||||||
"textures": {
|
|
||||||
"layer0":"bloodmagic:items/SoulSword_deactivated"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
{
|
|
||||||
"parent":"bloodmagic:item/ItemToolBase",
|
|
||||||
"textures": {
|
|
||||||
"layer0":"bloodmagic:items/SoulSword_activated"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue