Fixed the last of the model errors

This commit is contained in:
Nicholas Ignoffo 2017-08-16 16:39:57 -07:00
parent 3b173ecf17
commit 37ec0582eb
36 changed files with 176 additions and 121 deletions

View file

@ -1,6 +1,7 @@
package WayofTime.bloodmagic;
import WayofTime.bloodmagic.annot.Handler;
import WayofTime.bloodmagic.api.registry.OrbRegistry;
import WayofTime.bloodmagic.api.registry.RitualRegistry;
import WayofTime.bloodmagic.api.util.helper.LogHelper;
import WayofTime.bloodmagic.api_impl.BloodMagicAPI;
@ -8,6 +9,7 @@ import WayofTime.bloodmagic.apiv2.BloodMagicPlugin;
import WayofTime.bloodmagic.apiv2.IBloodMagicPlugin;
import WayofTime.bloodmagic.client.gui.GuiHandler;
import WayofTime.bloodmagic.command.CommandBloodMagic;
import WayofTime.bloodmagic.core.RegistrarBloodMagic;
import WayofTime.bloodmagic.core.RegistrarBloodMagicItems;
import WayofTime.bloodmagic.meteor.MeteorConfigHandler;
import WayofTime.bloodmagic.network.BloodMagicPacketHandler;
@ -40,7 +42,7 @@ public class BloodMagic {
public static final CreativeTabs TAB_BM = new CreativeTabs(MODID + ".creativeTab") {
@Override
public ItemStack getTabIconItem() {
return new ItemStack(RegistrarBloodMagicItems.BLOOD_ORB);
return OrbRegistry.getOrbStack(RegistrarBloodMagic.ORB_WEAK);
}
};
public static final boolean IS_DEV = (Boolean) Launch.blackboard.get("fml.deobfuscatedEnvironment");

View file

@ -4,7 +4,6 @@ import WayofTime.bloodmagic.BloodMagic;
import WayofTime.bloodmagic.api.soul.EnumDemonWillType;
import WayofTime.bloodmagic.api.soul.PlayerDemonWillHandler;
import WayofTime.bloodmagic.item.ItemDemonCrystal;
import WayofTime.bloodmagic.item.block.ItemBlockDemonCrystal;
import WayofTime.bloodmagic.tile.TileDemonCrystal;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
@ -14,7 +13,6 @@ import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumBlockRenderType;
@ -28,7 +26,7 @@ import net.minecraft.world.World;
import javax.annotation.Nullable;
import java.util.Random;
public class BlockDemonCrystal extends Block implements IBMBlock {
public class BlockDemonCrystal extends Block {
public static final PropertyInteger AGE = PropertyInteger.create("age", 0, 6);
public static final PropertyEnum<EnumDemonWillType> TYPE = PropertyEnum.<EnumDemonWillType>create("type", EnumDemonWillType.class);
public static final PropertyEnum<EnumFacing> ATTACHED = PropertyEnum.<EnumFacing>create("attached", EnumFacing.class);
@ -179,11 +177,6 @@ public class BlockDemonCrystal extends Block implements IBMBlock {
return new TileDemonCrystal();
}
@Override
public ItemBlock getItem() {
return new ItemBlockDemonCrystal(this);
}
public static ItemStack getItemStackDropped(EnumDemonWillType type, int crystalNumber) {
ItemStack stack = null;
switch (type) {

View file

@ -1,8 +1,10 @@
package WayofTime.bloodmagic.block;
import WayofTime.bloodmagic.BloodMagic;
import WayofTime.bloodmagic.client.IVariantProvider;
import WayofTime.bloodmagic.tile.routing.TileMasterRoutingNode;
import WayofTime.bloodmagic.tile.routing.TileRoutingNode;
import com.google.common.collect.Lists;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.PropertyBool;
@ -17,8 +19,11 @@ import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import org.apache.commons.lang3.tuple.Pair;
public class BlockRoutingNode extends Block implements IBMBlock {
import java.util.List;
public class BlockRoutingNode extends Block implements IBMBlock, IVariantProvider {
public static final PropertyBool UP = PropertyBool.create("up");
public static final PropertyBool DOWN = PropertyBool.create("down");
public static final PropertyBool NORTH = PropertyBool.create("north");
@ -125,4 +130,9 @@ public class BlockRoutingNode extends Block implements IBMBlock {
public ItemBlock getItem() {
return new ItemBlock(this);
}
@Override
public List<Pair<Integer, String>> getVariants() {
return Lists.newArrayList(Pair.of(0, "inventory"));
}
}

View file

@ -18,8 +18,8 @@ public class CustomMeshDefinitionActivatable implements ItemMeshDefinition {
public ModelResourceLocation getModelLocation(ItemStack stack) {
if (!stack.isEmpty() && stack.getItem() instanceof IActivatable)
if (((IActivatable) stack.getItem()).getActivated(stack))
return new ModelResourceLocation(new ResourceLocation(BloodMagic.MODID, "item/" + name), "active=true");
return new ModelResourceLocation(new ResourceLocation(BloodMagic.MODID, name), "active=true");
return new ModelResourceLocation(new ResourceLocation(BloodMagic.MODID, "item/" + name), "active=false");
return new ModelResourceLocation(new ResourceLocation(BloodMagic.MODID, name), "active=false");
}
}

View file

@ -19,9 +19,9 @@ public class CustomMeshDefinitionMultiWill implements ItemMeshDefinition {
public ModelResourceLocation getModelLocation(ItemStack stack) {
if (!stack.isEmpty() && stack.getItem() instanceof IMultiWillTool) {
EnumDemonWillType type = ((IMultiWillTool) stack.getItem()).getCurrentType(stack);
return new ModelResourceLocation(new ResourceLocation(BloodMagic.MODID, "item/" + name), "type=" + type.getName().toLowerCase());
return new ModelResourceLocation(new ResourceLocation(BloodMagic.MODID, name), "type=" + type.getName().toLowerCase());
}
return new ModelResourceLocation(new ResourceLocation(BloodMagic.MODID, "item/" + name), "type=default");
return new ModelResourceLocation(new ResourceLocation(BloodMagic.MODID, name), "type=default");
}
}

View file

@ -20,9 +20,9 @@ public class CustomMeshDefinitionWillGem implements ItemMeshDefinition {
public ModelResourceLocation getModelLocation(ItemStack stack) {
if (!stack.isEmpty() && stack.getItem() == RegistrarBloodMagicItems.SOUL_GEM) {
EnumDemonWillType type = ((ItemSoulGem) stack.getItem()).getCurrentType(stack);
return new ModelResourceLocation(new ResourceLocation(BloodMagic.MODID, "item/" + name), "type=" + ItemSoulGem.names[stack.getItemDamage()] + "_" + type.getName().toLowerCase());
return new ModelResourceLocation(new ResourceLocation(BloodMagic.MODID, name), "type=" + ItemSoulGem.names[stack.getItemDamage()] + "_" + type.getName().toLowerCase());
}
return new ModelResourceLocation(new ResourceLocation(BloodMagic.MODID, "item/" + name), "type=petty_default");
return new ModelResourceLocation(new ResourceLocation(BloodMagic.MODID, name), "type=petty_default");
}
}

View file

@ -410,7 +410,7 @@ public class CategoryArchitect {
livingArmourPages.add(bindingRecipePage);
}
bindingRecipePage = BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_LEGS));
bindingRecipePage = BookUtils.getAlchemyPage(new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_LEGGINGS));
if (bindingRecipePage != null) {
livingArmourPages.add(bindingRecipePage);
}

View file

@ -11,7 +11,12 @@ import WayofTime.bloodmagic.tile.routing.TileOutputRoutingNode;
import com.google.common.collect.Lists;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.client.renderer.block.statemap.StateMapperBase;
import net.minecraft.init.Blocks;
import net.minecraftforge.client.event.ModelRegistryEvent;
import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fml.common.Mod;
@ -122,6 +127,16 @@ public class RegistrarBloodMagicBlocks {
registerTiles();
}
@SubscribeEvent
public static void registerModels(ModelRegistryEvent event) {
ModelLoader.setCustomStateMapper(LIFE_ESSENCE, new StateMapperBase() {
@Override
protected ModelResourceLocation getModelResourceLocation(IBlockState state) {
return new ModelResourceLocation(state.getBlock().getRegistryName(), "fluid");
}
});
}
private static void registerTiles() {
GameRegistry.registerTileEntity(TileAltar.class, BloodMagic.MODID + ":" + TileAltar.class.getSimpleName());
GameRegistry.registerTileEntity(TileImperfectRitualStone.class, BloodMagic.MODID + ":" + TileImperfectRitualStone.class.getSimpleName());

View file

@ -2,6 +2,7 @@ package WayofTime.bloodmagic.core;
import WayofTime.bloodmagic.BloodMagic;
import WayofTime.bloodmagic.block.IBMBlock;
import WayofTime.bloodmagic.client.IMeshProvider;
import WayofTime.bloodmagic.client.IVariantProvider;
import WayofTime.bloodmagic.item.*;
import WayofTime.bloodmagic.item.alchemy.ItemCuttingFluid;
@ -83,11 +84,11 @@ public class RegistrarBloodMagicItems {
public static final Item BLOOD_SHARD = Items.AIR;
public static final Item LIVING_ARMOUR_HELMET = Items.AIR;
public static final Item LIVING_ARMOUR_CHEST = Items.AIR;
public static final Item LIVING_ARMOUR_LEGS = Items.AIR;
public static final Item LIVING_ARMOUR_LEGGINGS = Items.AIR;
public static final Item LIVING_ARMOUR_BOOTS = Items.AIR;
public static final Item SENTIENT_ARMOUR_HELMET = Items.AIR;
public static final Item SENTIENT_ARMOUR_CHEST = Items.AIR;
public static final Item SENTIENT_ARMOUR_LEGS = Items.AIR;
public static final Item SENTIENT_ARMOUR_LEGGINGS = Items.AIR;
public static final Item SENTIENT_ARMOUR_BOOTS = Items.AIR;
public static final Item ALTAR_MAKER = Items.AIR;
public static final Item UPGRADE_TOME = Items.AIR;
@ -169,11 +170,11 @@ public class RegistrarBloodMagicItems {
new ItemTelepositionFocus().setRegistryName("teleposition_focus"),
new ItemExperienceBook().setRegistryName("experience_tome"),
new ItemBloodShard().setRegistryName("blood_shard"),
new ItemLivingArmour(EntityEquipmentSlot.HEAD).setRegistryName("living_armour_helm"),
new ItemLivingArmour(EntityEquipmentSlot.HEAD).setRegistryName("living_armour_helmet"),
new ItemLivingArmour(EntityEquipmentSlot.CHEST).setRegistryName("living_armour_chest"),
new ItemLivingArmour(EntityEquipmentSlot.LEGS).setRegistryName("living_armour_leggings"),
new ItemLivingArmour(EntityEquipmentSlot.FEET).setRegistryName("living_armour_boots"),
new ItemSentientArmour(EntityEquipmentSlot.HEAD).setRegistryName("sentient_armour_helm"),
new ItemSentientArmour(EntityEquipmentSlot.HEAD).setRegistryName("sentient_armour_helmet"),
new ItemSentientArmour(EntityEquipmentSlot.CHEST).setRegistryName("sentient_armour_chest"),
new ItemSentientArmour(EntityEquipmentSlot.LEGS).setRegistryName("sentient_armour_leggings"),
new ItemSentientArmour(EntityEquipmentSlot.FEET).setRegistryName("sentient_armour_boots"),
@ -206,19 +207,30 @@ public class RegistrarBloodMagicItems {
@SideOnly(Side.CLIENT)
@SubscribeEvent
public static void registerRenders(ModelRegistryEvent event) {
items.stream().filter(i -> i instanceof IVariantProvider).forEach(item -> {
IVariantProvider variantProvider = (IVariantProvider) item;
items.stream().filter(i -> i instanceof IVariantProvider).forEach(i -> {
IVariantProvider variantProvider = (IVariantProvider) i;
for (Pair<Integer, String> variant : variantProvider.getVariants())
ModelLoader.setCustomModelResourceLocation(item, variant.getLeft(), new ModelResourceLocation(item.getRegistryName(), variant.getRight()));
ModelLoader.setCustomModelResourceLocation(i, variant.getLeft(), new ModelResourceLocation(i.getRegistryName(), variant.getRight()));
});
RegistrarBloodMagicBlocks.blocks.stream().filter(i -> i instanceof IVariantProvider).forEach(block -> {
IVariantProvider variantProvider = (IVariantProvider) block;
for (Pair<Integer, String> variant : variantProvider.getVariants())
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(block), variant.getLeft(), new ModelResourceLocation(block.getRegistryName(), variant.getRight()));
items.stream().filter(i -> i instanceof IMeshProvider).forEach(i -> {
IMeshProvider mesh = (IMeshProvider) i;
ResourceLocation loc = mesh.getCustomLocation();
if (loc == null)
loc = i.getRegistryName();
for (String variant : mesh.getVariants())
ModelLoader.registerItemVariants(i, new ModelResourceLocation(loc, variant));
ModelLoader.setCustomMeshDefinition(i, mesh.getMeshDefinition());
});
final ResourceLocation holdingLoc = new ResourceLocation("bloodmagic", "item/ItemSigilHolding");
RegistrarBloodMagicBlocks.blocks.stream().filter(b -> b instanceof IVariantProvider).forEach(b -> {
IVariantProvider variantProvider = (IVariantProvider) b;
for (Pair<Integer, String> variant : variantProvider.getVariants())
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(b), variant.getLeft(), new ModelResourceLocation(b.getRegistryName(), variant.getRight()));
});
final ResourceLocation holdingLoc = SIGIL_HOLDING.getRegistryName();
ModelLoader.setCustomMeshDefinition(SIGIL_HOLDING, stack -> {
if (stack.hasTagCompound() && stack.getTagCompound().hasKey("color"))
return new ModelResourceLocation(holdingLoc, "type=color");

View file

@ -120,7 +120,7 @@ public class ItemBoundAxe extends ItemBoundTool implements IMeshProvider {
@Override
@SideOnly(Side.CLIENT)
public ItemMeshDefinition getMeshDefinition() {
return new CustomMeshDefinitionActivatable("ItemBoundAxe");
return new CustomMeshDefinitionActivatable("bound_axe");
}
@Nullable

View file

@ -133,7 +133,7 @@ public class ItemBoundPickaxe extends ItemBoundTool implements IMeshProvider {
@Override
@SideOnly(Side.CLIENT)
public ItemMeshDefinition getMeshDefinition() {
return new CustomMeshDefinitionActivatable("ItemBoundPickaxe");
return new CustomMeshDefinitionActivatable("bound_pickaxe");
}
@Nullable

View file

@ -119,7 +119,7 @@ public class ItemBoundShovel extends ItemBoundTool implements IMeshProvider {
@Override
@SideOnly(Side.CLIENT)
public ItemMeshDefinition getMeshDefinition() {
return new CustomMeshDefinitionActivatable("ItemBoundShovel");
return new CustomMeshDefinitionActivatable("bound_shovel");
}
@Nullable

View file

@ -130,7 +130,7 @@ public class ItemBoundSword extends ItemSword implements IBindable, IActivatable
@Override
@SideOnly(Side.CLIENT)
public ItemMeshDefinition getMeshDefinition() {
return new CustomMeshDefinitionActivatable("ItemBoundSword");
return new CustomMeshDefinitionActivatable("bound_sword");
}
@Nullable

View file

@ -127,7 +127,7 @@ public class ItemPotionFlask extends Item implements IMeshProvider {
boolean full = true;
if (stack.hasTagCompound() && stack.getTagCompound().hasKey("empty"))
full = false;
return new ModelResourceLocation(new ResourceLocation(BloodMagic.MODID, "item/" + getRegistryName().getResourcePath()), "full=" + (full ? "true" : "false"));
return new ModelResourceLocation(getRegistryName(), "full=" + full);
};
}

View file

@ -170,18 +170,15 @@ public class ItemSacrificialDagger extends Item implements IMeshProvider {
@Override
@SideOnly(Side.CLIENT)
public ItemMeshDefinition getMeshDefinition() {
return new ItemMeshDefinition() {
@Override
public ModelResourceLocation getModelLocation(ItemStack stack) {
String variant = "type=normal";
if (stack.getItemDamage() != 0)
variant = "type=creative";
return stack -> {
String variant = "type=normal";
if (stack.getItemDamage() != 0)
variant = "type=creative";
if (canUseForSacrifice(stack))
variant = "type=ceremonial";
if (canUseForSacrifice(stack))
variant = "type=ceremonial";
return new ModelResourceLocation(new ResourceLocation(BloodMagic.MODID, "item/ItemSacrificialDagger"), variant);
}
return new ModelResourceLocation(getRegistryName(), variant);
};
}

View file

@ -76,7 +76,7 @@ public class ItemLivingArmour extends ItemArmor implements ISpecialArmor, IMeshP
return "bloodmagic:models/armor/livingArmour_layer_1.png";
}
if (this == RegistrarBloodMagicItems.LIVING_ARMOUR_LEGS) {
if (this == RegistrarBloodMagicItems.LIVING_ARMOUR_LEGGINGS) {
return "bloodmagic:models/armor/livingArmour_layer_2.png";
} else {
return null;
@ -107,7 +107,7 @@ public class ItemLivingArmour extends ItemArmor implements ISpecialArmor, IMeshP
if (this == RegistrarBloodMagicItems.LIVING_ARMOUR_BOOTS || this == RegistrarBloodMagicItems.LIVING_ARMOUR_HELMET) {
damageAmount = 3d / 20d * 0.6;
} else if (this == RegistrarBloodMagicItems.LIVING_ARMOUR_LEGS) {
} else if (this == RegistrarBloodMagicItems.LIVING_ARMOUR_LEGGINGS) {
damageAmount = 6d / 20d * 0.6;
} else if (this == RegistrarBloodMagicItems.LIVING_ARMOUR_CHEST) {
damageAmount = 0.64;
@ -182,7 +182,7 @@ public class ItemLivingArmour extends ItemArmor implements ISpecialArmor, IMeshP
return 8;
}
if (armor.getItem() == RegistrarBloodMagicItems.LIVING_ARMOUR_LEGS) {
if (armor.getItem() == RegistrarBloodMagicItems.LIVING_ARMOUR_LEGGINGS) {
return 6;
}
@ -348,25 +348,21 @@ public class ItemLivingArmour extends ItemArmor implements ISpecialArmor, IMeshP
@Override
@SideOnly(Side.CLIENT)
public ItemMeshDefinition getMeshDefinition() {
return new ItemMeshDefinition() {
@Override
public ModelResourceLocation getModelLocation(ItemStack stack) {
assert getCustomLocation() != null;
if (stack.getItem() == RegistrarBloodMagicItems.LIVING_ARMOUR_HELMET)
return new ModelResourceLocation(getCustomLocation(), "armour=head");
else if (stack.getItem() == RegistrarBloodMagicItems.LIVING_ARMOUR_CHEST)
return new ModelResourceLocation(getCustomLocation(), "armour=body");
else if (stack.getItem() == RegistrarBloodMagicItems.LIVING_ARMOUR_LEGS)
return new ModelResourceLocation(getCustomLocation(), "armour=leg");
else
return new ModelResourceLocation(getCustomLocation(), "armour=feet");
}
return stack -> {
if (stack.getItem() == RegistrarBloodMagicItems.LIVING_ARMOUR_HELMET)
return new ModelResourceLocation(getCustomLocation(), "armour=head");
else if (stack.getItem() == RegistrarBloodMagicItems.LIVING_ARMOUR_CHEST)
return new ModelResourceLocation(getCustomLocation(), "armour=body");
else if (stack.getItem() == RegistrarBloodMagicItems.LIVING_ARMOUR_LEGGINGS)
return new ModelResourceLocation(getCustomLocation(), "armour=leg");
else
return new ModelResourceLocation(getCustomLocation(), "armour=feet");
};
}
@Override
public ResourceLocation getCustomLocation() {
return new ResourceLocation(BloodMagic.MODID, "item/ItemLivingArmour");
return new ResourceLocation(BloodMagic.MODID, "living_armour");
}
@Override

View file

@ -76,7 +76,7 @@ public class ItemSentientArmour extends ItemArmor implements ISpecialArmor, IMes
return "bloodmagic:models/armor/sentientArmour_layer_1.png";
}
if (this == RegistrarBloodMagicItems.SENTIENT_ARMOUR_LEGS) {
if (this == RegistrarBloodMagicItems.SENTIENT_ARMOUR_LEGGINGS) {
switch (this.getCurrentType(stack)) {
case DEFAULT:
return "bloodmagic:models/armor/sentientArmour_layer_2.png";
@ -142,7 +142,7 @@ public class ItemSentientArmour extends ItemArmor implements ISpecialArmor, IMes
if (this == RegistrarBloodMagicItems.SENTIENT_ARMOUR_BOOTS || this == RegistrarBloodMagicItems.SENTIENT_ARMOUR_HELMET) {
damageAmount = 3d / 20d * 0.6;
} else if (this == RegistrarBloodMagicItems.SENTIENT_ARMOUR_LEGS) {
} else if (this == RegistrarBloodMagicItems.SENTIENT_ARMOUR_LEGGINGS) {
damageAmount = 6d / 20d * 0.6;
} else if (this == RegistrarBloodMagicItems.SENTIENT_ARMOUR_CHEST) {
damageAmount = 0.64;
@ -207,7 +207,7 @@ public class ItemSentientArmour extends ItemArmor implements ISpecialArmor, IMes
return 8;
}
if (armor.getItem() == RegistrarBloodMagicItems.SENTIENT_ARMOUR_LEGS) {
if (armor.getItem() == RegistrarBloodMagicItems.SENTIENT_ARMOUR_LEGGINGS) {
return 6;
}
@ -277,27 +277,23 @@ public class ItemSentientArmour extends ItemArmor implements ISpecialArmor, IMes
@Override
@SideOnly(Side.CLIENT)
public ItemMeshDefinition getMeshDefinition() {
return new ItemMeshDefinition() {
@Override
public ModelResourceLocation getModelLocation(ItemStack stack) {
assert getCustomLocation() != null;
EnumDemonWillType type = ((ItemSentientArmour) RegistrarBloodMagicItems.SENTIENT_ARMOUR_HELMET).getCurrentType(stack);
String additional = "_" + type.getName().toLowerCase();
if (stack.getItem() == RegistrarBloodMagicItems.SENTIENT_ARMOUR_HELMET)
return new ModelResourceLocation(getCustomLocation(), "armour=head" + additional);
else if (stack.getItem() == RegistrarBloodMagicItems.SENTIENT_ARMOUR_CHEST)
return new ModelResourceLocation(getCustomLocation(), "armour=body" + additional);
else if (stack.getItem() == RegistrarBloodMagicItems.SENTIENT_ARMOUR_LEGS)
return new ModelResourceLocation(getCustomLocation(), "armour=leg" + additional);
else
return new ModelResourceLocation(getCustomLocation(), "armour=feet" + additional);
}
return stack -> {
EnumDemonWillType type = ((ItemSentientArmour) RegistrarBloodMagicItems.SENTIENT_ARMOUR_HELMET).getCurrentType(stack);
String additional = "_" + type.getName().toLowerCase();
if (stack.getItem() == RegistrarBloodMagicItems.SENTIENT_ARMOUR_HELMET)
return new ModelResourceLocation(getCustomLocation(), "armour=head" + additional);
else if (stack.getItem() == RegistrarBloodMagicItems.SENTIENT_ARMOUR_CHEST)
return new ModelResourceLocation(getCustomLocation(), "armour=body" + additional);
else if (stack.getItem() == RegistrarBloodMagicItems.SENTIENT_ARMOUR_LEGGINGS)
return new ModelResourceLocation(getCustomLocation(), "armour=leg" + additional);
else
return new ModelResourceLocation(getCustomLocation(), "armour=feet" + additional);
};
}
@Override
public ResourceLocation getCustomLocation() {
return new ResourceLocation(BloodMagic.MODID, "item/ItemSentientArmour");
return new ResourceLocation(BloodMagic.MODID, "sentient_armour");
}
@Override
@ -557,7 +553,7 @@ public class ItemSentientArmour extends ItemArmor implements ISpecialArmor, IMes
{
ItemStack omegaHelmetStack = ((ItemSentientArmour) RegistrarBloodMagicItems.SENTIENT_ARMOUR_HELMET).getSubstituteStack(type, will, helmetStack);
ItemStack omegaChestStack = ((ItemSentientArmour) RegistrarBloodMagicItems.SENTIENT_ARMOUR_CHEST).getSubstituteStack(type, will, chestStack);
ItemStack omegaLeggingsStack = ((ItemSentientArmour) RegistrarBloodMagicItems.SENTIENT_ARMOUR_LEGS).getSubstituteStack(type, will, leggingsStack);
ItemStack omegaLeggingsStack = ((ItemSentientArmour) RegistrarBloodMagicItems.SENTIENT_ARMOUR_LEGGINGS).getSubstituteStack(type, will, leggingsStack);
ItemStack omegaBootsStack = ((ItemSentientArmour) RegistrarBloodMagicItems.SENTIENT_ARMOUR_BOOTS).getSubstituteStack(type, will, bootsStack);
player.setItemStackToSlot(EntityEquipmentSlot.HEAD, omegaHelmetStack);

View file

@ -1,6 +1,8 @@
package WayofTime.bloodmagic.item.block;
import WayofTime.bloodmagic.client.IVariantProvider;
import WayofTime.bloodmagic.tile.TileAlchemyTable;
import com.google.common.collect.Lists;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
@ -10,8 +12,11 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import org.apache.commons.lang3.tuple.Pair;
public class ItemBlockAlchemyTable extends ItemBlock {
import java.util.List;
public class ItemBlockAlchemyTable extends ItemBlock implements IVariantProvider {
public ItemBlockAlchemyTable(Block block) {
super(block);
}
@ -57,4 +62,9 @@ public class ItemBlockAlchemyTable extends ItemBlock {
return true;
}
@Override
public List<Pair<Integer, String>> getVariants() {
return Lists.newArrayList(Pair.of(0, "inventory"));
}
}

View file

@ -19,7 +19,7 @@ import net.minecraft.world.World;
public class ItemSigilBloodLight extends ItemSigilBase {
public ItemSigilBloodLight() {
super("bloodLight", 10);
super("blood_light", 10);
}
@Override

View file

@ -9,7 +9,7 @@ import net.minecraft.world.World;
public class ItemSigilElementalAffinity extends ItemSigilToggleableBase {
public ItemSigilElementalAffinity() {
super("elementalAffinity", 200);
super("elemental_affinity", 200);
}
@Override

View file

@ -13,7 +13,7 @@ import java.util.List;
public class ItemSigilEnderSeverance extends ItemSigilToggleableBase {
public ItemSigilEnderSeverance() {
super("enderSeverance", 200);
super("ender_severance", 200);
}
@Override

View file

@ -14,7 +14,7 @@ import java.util.List;
public class ItemSigilFastMiner extends ItemSigilToggleableBase {
public ItemSigilFastMiner() {
super("fastMiner", 100);
super("fast_miner", 100);
}
@Override

View file

@ -16,7 +16,7 @@ import net.minecraftforge.fml.common.eventhandler.Event.Result;
public class ItemSigilGreenGrove extends ItemSigilToggleableBase {
public ItemSigilGreenGrove() {
super("greenGrove", 150);
super("green_grove", 150);
}
@Override

View file

@ -17,7 +17,7 @@ public class ItemSigilPhantomBridge extends ItemSigilToggleableBase {
private int range = 3;
public ItemSigilPhantomBridge() {
super("phantomBridge", 100);
super("phantom_bridge", 100);
}
@Override

View file

@ -19,6 +19,7 @@ import org.apache.commons.lang3.text.WordUtils;
import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
public class ItemSigilToggleableBase extends ItemSigilToggleable implements IMeshProvider {
protected final String tooltipBase;
@ -49,7 +50,7 @@ public class ItemSigilToggleableBase extends ItemSigilToggleable implements IMes
@Override
@SideOnly(Side.CLIENT)
public ItemMeshDefinition getMeshDefinition() {
return new CustomMeshDefinitionActivatable("ItemSigil" + WordUtils.capitalize(name));
return new CustomMeshDefinitionActivatable("sigil_" + name.toLowerCase(Locale.ROOT));
}
@Nullable

View file

@ -3,20 +3,24 @@ package WayofTime.bloodmagic.item.soul;
import WayofTime.bloodmagic.BloodMagic;
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.ActionResult;
import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumHand;
import net.minecraft.util.NonNullList;
import net.minecraft.util.*;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class ItemSentientArmourGem extends Item {
import javax.annotation.Nullable;
import java.util.List;
public class ItemSentientArmourGem extends Item implements IMeshProvider {
public ItemSentientArmourGem() {
super();
@ -53,19 +57,29 @@ public class ItemSentientArmourGem extends Item {
}
@SideOnly(Side.CLIENT)
public ModelResourceLocation getModel(ItemStack stack, EntityPlayer player, int useRemaining) {
boolean hasSentientArmour = false;
NonNullList<ItemStack> armourInventory = player.inventory.armorInventory;
for (ItemStack armourStack : armourInventory) {
if (armourStack != null && armourStack.getItem() instanceof ItemSentientArmour) {
hasSentientArmour = true;
@Override
public ItemMeshDefinition getMeshDefinition() {
return stack -> {
boolean flag = false;
NonNullList<ItemStack> armourInventory = Minecraft.getMinecraft().player.inventory.armorInventory;
for (ItemStack armourStack : armourInventory) {
if (armourStack != null && armourStack.getItem() instanceof ItemSentientArmour) {
flag = true;
}
}
}
if (hasSentientArmour) {
return new ModelResourceLocation("bloodmagic:ItemSentientArmourGem1", "inventory");
}
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;
}
}

View file

@ -297,7 +297,7 @@ public class ItemSentientAxe extends ItemAxe implements IDemonWillWeapon, IMeshP
@Override
@SideOnly(Side.CLIENT)
public ItemMeshDefinition getMeshDefinition() {
return new CustomMeshDefinitionMultiWill("ItemSentientAxe");
return new CustomMeshDefinitionMultiWill("sentient_axe");
}
@Nullable

View file

@ -7,9 +7,11 @@ import WayofTime.bloodmagic.api.iface.ISentientTool;
import WayofTime.bloodmagic.api.soul.EnumDemonWillType;
import WayofTime.bloodmagic.api.soul.PlayerDemonWillHandler;
import WayofTime.bloodmagic.api.util.helper.NBTHelper;
import WayofTime.bloodmagic.client.IVariantProvider;
import WayofTime.bloodmagic.core.RegistrarBloodMagicItems;
import WayofTime.bloodmagic.entity.mob.EntitySentientSpecter;
import WayofTime.bloodmagic.entity.projectile.EntitySentientArrow;
import com.google.common.collect.Lists;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
@ -32,10 +34,12 @@ import net.minecraft.util.math.MathHelper;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import org.apache.commons.lang3.tuple.Pair;
import java.util.List;
import java.util.Locale;
public class ItemSentientBow extends ItemBow implements IMultiWillTool, ISentientTool//, IMeshProvider
public class ItemSentientBow extends ItemBow implements IMultiWillTool, ISentientTool, IVariantProvider//, IMeshProvider
{
public static int[] soulBracket = new int[]{16, 60, 200, 400, 1000};
public static double[] defaultDamageAdded = new double[]{0.25, 0.5, 0.75, 1, 1.25};
@ -248,6 +252,11 @@ public class ItemSentientBow extends ItemBow implements IMultiWillTool, ISentien
return super.onItemRightClick(world, player, hand);
}
@Override
public List<Pair<Integer, String>> getVariants() {
return Lists.newArrayList(Pair.of(0, "inventory"));
}
public EntityTippedArrow getArrowEntity(World world, ItemStack stack, EntityLivingBase target, EntityLivingBase user, float velocity) {
EnumDemonWillType type = this.getCurrentType(stack);

View file

@ -296,7 +296,7 @@ public class ItemSentientPickaxe extends ItemPickaxe implements IDemonWillWeapon
@Override
@SideOnly(Side.CLIENT)
public ItemMeshDefinition getMeshDefinition() {
return new CustomMeshDefinitionMultiWill("ItemSentientPickaxe");
return new CustomMeshDefinitionMultiWill("sentient_pickaxe");
}
@Nullable

View file

@ -297,7 +297,7 @@ public class ItemSentientShovel extends ItemSpade implements IDemonWillWeapon, I
@Override
@SideOnly(Side.CLIENT)
public ItemMeshDefinition getMeshDefinition() {
return new CustomMeshDefinitionMultiWill("ItemSentientShovel");
return new CustomMeshDefinitionMultiWill("sentient_shovel");
}
@Nullable

View file

@ -272,7 +272,7 @@ public class ItemSentientSword extends ItemSword implements IDemonWillWeapon, IM
@Override
@SideOnly(Side.CLIENT)
public ItemMeshDefinition getMeshDefinition() {
return new CustomMeshDefinitionMultiWill("ItemSentientSword");
return new CustomMeshDefinitionMultiWill("sentient_shovel");
}
@Nullable

View file

@ -61,7 +61,7 @@ public class ItemSoulGem extends Item implements IDemonWillGem, IMeshProvider, I
@Override
@SideOnly(Side.CLIENT)
public ItemMeshDefinition getMeshDefinition() {
return new CustomMeshDefinitionWillGem("ItemSoulGem");
return new CustomMeshDefinitionWillGem("soul_gem");
}
@Nullable

View file

@ -256,7 +256,7 @@ public class ModRecipes {
AlchemyArrayRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_BINDING), new ItemStack(Items.DIAMOND_SHOVEL), new AlchemyArrayEffectBinding("boundShovel", Utils.setUnbreakable(new ItemStack(RegistrarBloodMagicItems.BOUND_SHOVEL))));
AlchemyArrayRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_BINDING), new ItemStack(Items.IRON_HELMET), new AlchemyArrayEffectBinding("livingHelmet", new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_HELMET)));
AlchemyArrayRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_BINDING), new ItemStack(Items.IRON_CHESTPLATE), new AlchemyArrayEffectBinding("livingChest", new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_CHEST)));
AlchemyArrayRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_BINDING), new ItemStack(Items.IRON_LEGGINGS), new AlchemyArrayEffectBinding("livingLegs", new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_LEGS)));
AlchemyArrayRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_BINDING), new ItemStack(Items.IRON_LEGGINGS), new AlchemyArrayEffectBinding("livingLegs", new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_LEGGINGS)));
AlchemyArrayRecipeRegistry.registerRecipe(ItemComponent.getStack(ItemComponent.REAGENT_BINDING), new ItemStack(Items.IRON_BOOTS), new AlchemyArrayEffectBinding("livingBoots", new ItemStack(RegistrarBloodMagicItems.LIVING_ARMOUR_BOOTS)));
AlchemyArrayRecipeRegistry.registerCraftingRecipe(new ItemStack(Items.REDSTONE), new ItemStack(RegistrarBloodMagicItems.SLATE), new ItemStack(RegistrarBloodMagicItems.SIGIL_DIVINATION), new ResourceLocation("bloodmagic", "textures/models/AlchemyArrays/DivinationSigil.png"));

View file

@ -120,22 +120,22 @@ item.bloodmagic.monsterSoul.vengeful.name=Vengeful Demonic Will
item.bloodmagic.monsterSoul.steadfast.name=Steadfast Demonic Will
item.bloodmagic.sigil.air.name=Air Sigil
item.bloodmagic.sigil.bloodLight.name=Sigil of the Blood Lamp
item.bloodmagic.sigil.blood_light.name=Sigil of the Blood Lamp
item.bloodmagic.sigil.compression.name=Sigil of Compression
item.bloodmagic.sigil.divination.name=Divination Sigil
item.bloodmagic.sigil.water.name=Water Sigil
item.bloodmagic.sigil.lava.name=Lava Sigil
item.bloodmagic.sigil.void.name=Void Sigil
item.bloodmagic.sigil.greenGrove.name=Sigil of the Green Grove
item.bloodmagic.sigil.green_grove.name=Sigil of the Green Grove
item.bloodmagic.sigil.elementalAffinity.name=Sigil of Elemental Affinity
item.bloodmagic.sigil.haste.name=Sigil of Haste
item.bloodmagic.sigil.suppression.name=Sigil of Suppression
item.bloodmagic.sigil.magnetism.name=Sigil of Magnetism
item.bloodmagic.sigil.fastMiner.name=Sigil of the Fast Miner
item.bloodmagic.sigil.fast_miner.name=Sigil of the Fast Miner
item.bloodmagic.sigil.seer.name=Seer's Sigil
item.bloodmagic.sigil.phantomBridge.name=Sigil of the Phantom Bridge
item.bloodmagic.sigil.phantom_bridge.name=Sigil of the Phantom Bridge
item.bloodmagic.sigil.whirlwind.name=Sigil of the Whirlwind
item.bloodmagic.sigil.enderSeverance.name=Sigil of Ender Severance
item.bloodmagic.sigil.ender_severance.name=Sigil of Ender Severance
item.bloodmagic.sigil.holding.name=Sigil of Holding
item.bloodmagic.sigil.holding.display=&r%s: &o&n%s
item.bloodmagic.sigil.teleposition.name=Teleposition Sigil
@ -389,7 +389,7 @@ tooltip.bloodmagic.activated=Activated
tooltip.bloodmagic.deactivated=Deactivated
tooltip.bloodmagic.sigil.air.desc=&oI feel lighter already...
tooltip.bloodmagic.sigil.bloodLight.desc=&oI see a light!
tooltip.bloodmagic.sigil.blood_light.desc=&oI see a light!
tooltip.bloodmagic.sigil.compression.desc=&oHands of diamonds
tooltip.bloodmagic.sigil.divination.desc=&oPeer into the soul
tooltip.bloodmagic.sigil.divination.otherNetwork=Peering into the soul of %s
@ -402,11 +402,11 @@ tooltip.bloodmagic.sigil.divination.currentBonus=Current Bonus: +%d%%
tooltip.bloodmagic.sigil.water.desc=&oInfinite water, anyone?
tooltip.bloodmagic.sigil.lava.desc=&oHOT! DO NOT EAT
tooltip.bloodmagic.sigil.void.desc=&oBetter than a Swiffer®!
tooltip.bloodmagic.sigil.greenGrove.desc=&oEnvironmentally friendly
tooltip.bloodmagic.sigil.green_grove.desc=&oEnvironmentally friendly
tooltip.bloodmagic.sigil.magnetism.desc=&oI have a very magnetic personality
tooltip.bloodmagic.sigil.suppression.desc=&oBetter than telekinesis...
tooltip.bloodmagic.sigil.haste.desc=&o42 doses of caffeine later...
tooltip.bloodmagic.sigil.fastMiner.desc=&oKeep mining, and mining...
tooltip.bloodmagic.sigil.fast_miner.desc=&oKeep mining, and mining...
tooltip.bloodmagic.sigil.elementalAffinity.desc=&oFalling fire fishes!
tooltip.bloodmagic.sigil.seer.desc=&oWhen seeing all is not enough
tooltip.bloodmagic.sigil.seer.currentAltarProgress=Current Progress: %d LP/ %s LP
@ -418,9 +418,9 @@ tooltip.bloodmagic.sigil.seer.currentAltarCapacity=Current Capacity: %d LP
tooltip.bloodmagic.sigil.seer.currentCharge=Current Charge: %d
tooltip.bloodmagic.sigil.seer.currentTranquility=Current Tranquility: %d
tooltip.bloodmagic.sigil.seer.currentBonus=Current Bonus: +%d%%
tooltip.bloodmagic.sigil.phantomBridge.desc=&oWalking on thin air...
tooltip.bloodmagic.sigil.phantom_bridge.desc=&oWalking on thin air...
tooltip.bloodmagic.sigil.whirlwind.desc=&oBest not to wear a skirt
tooltip.bloodmagic.sigil.enderSeverance.desc=&oPutting Endermen in Dire situations!
tooltip.bloodmagic.sigil.ender_severance.desc=&oPutting Endermen in Dire situations!
tooltip.bloodmagic.sigil.teleposition.desc=I am very close to being moved by this.
tooltip.bloodmagic.sigil.transposition.desc=Feel the power of the Force, my young apprentice.
tooltip.bloodmagic.sigil.holding.press=Press &o%s&r&7 to modify