A few last minute changes

This commit is contained in:
WayofTime 2015-05-18 20:32:04 -04:00
parent 61cb569ffb
commit 55db2dd3ac
14 changed files with 278 additions and 43 deletions

View file

@ -1,5 +1,5 @@
#
#Mon May 11 13:18:11 EDT 2015
#Sun May 17 08:27:28 EDT 2015
mod_name=BloodMagic
forge_version=10.13.3.1374-1.7.10
ccc_version=1.0.4.29
@ -9,5 +9,5 @@ guideapi_version=1.0-14
package_group=com.wayoftime.bloodmagic
mod_version=1.3.2aBeta
minetweaker_version=Dev-1.7.10-3.0.9B
build_number=8
mc_version=1.7.10
build_number=13

View file

@ -112,6 +112,7 @@ import WayofTime.alchemicalWizardry.common.harvest.BloodMagicHarvestHandler;
import WayofTime.alchemicalWizardry.common.harvest.CactusReedHarvestHandler;
import WayofTime.alchemicalWizardry.common.harvest.GourdHarvestHandler;
import WayofTime.alchemicalWizardry.common.harvest.PamHarvestCompatRegistry;
import WayofTime.alchemicalWizardry.common.items.ItemIncense;
import WayofTime.alchemicalWizardry.common.items.ItemRitualDiviner;
import WayofTime.alchemicalWizardry.common.items.armour.OmegaArmour;
import WayofTime.alchemicalWizardry.common.items.forestry.ItemBloodFrame;
@ -1117,6 +1118,9 @@ public class AlchemicalWizardry
AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.ghast_tear, 2), 100, new ItemStack[]{ghastTearStack, concentratedCatalystStack, weakBloodShardStack, new ItemStack(Blocks.soul_sand), new ItemStack(Blocks.soul_sand)}, 5);
AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.coal, 5), 1, new ItemStack[]{new ItemStack(Items.coal, 1, 1), new ItemStack(Items.coal, 1, 1), new ItemStack(Items.coal, 1, 1), new ItemStack(Items.coal, 1, 1), new ItemStack(Items.coal, 1, 1)}, 1);
AlchemyRecipeRegistry.registerRecipe(new ItemStack(Items.clay_ball, 4), 5, new ItemStack[]{new ItemStack(Blocks.sand), waterBucketStack}, 2);
ItemIncense.registerIncenseRecipes();
GameRegistry.addRecipe(new ItemStack(ModBlocks.blockCrucible), "i i", "sis", " S ", 's', new ItemStack(Blocks.stone_slab), 'i', ironIngotStack, 'S', stoneStack);
}
@EventHandler

View file

@ -30,9 +30,11 @@ public class PlayerSacrificeHandler
return false;
}
amount = amount + Math.max(increment, max - amount);
amount = amount + Math.min(increment, max - amount);
setPlayerIncense(player, amount);
// System.out.println("Amount of incense: " + amount + ", Increment: " + increment);
return true;
}

View file

@ -47,6 +47,11 @@ public class NEIBloodOrbShapedHandler extends ShapedRecipeHandler {
PositionedStack stack = new PositionedStack(orbs, 25 + x * 18, 6 + y * 18, false);
stack.setMaxSize(1);
ingredients.add(stack);
}else if(o instanceof List)
{
PositionedStack stack = new PositionedStack((List)o, 25 + x * 18, 6 + y * 18, false);
stack.setMaxSize(1);
ingredients.add(stack);
}
}
}

View file

@ -44,6 +44,11 @@ public class NEIBloodOrbShapelessHandler extends ShapelessRecipeHandler {
PositionedStack stack = new PositionedStack(orbs, 25 + stackorder[ingred][0] * 18, 6 + stackorder[ingred][1] * 18);
stack.setMaxSize(1);
ingredients.add(stack);
}else if(o instanceof List)
{
PositionedStack stack = new PositionedStack((List)o, 25 + stackorder[ingred][0] * 18, 6 + stackorder[ingred][1] * 18);
stack.setMaxSize(1);
ingredients.add(stack);
}
}
}

View file

@ -2,17 +2,32 @@ package WayofTime.alchemicalWizardry.common.block;
import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import WayofTime.alchemicalWizardry.AlchemicalWizardry;
import WayofTime.alchemicalWizardry.common.tileEntity.TECrucible;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class BlockCrucible extends BlockContainer
{
@SideOnly(Side.CLIENT)
private static IIcon topIcon;
@SideOnly(Side.CLIENT)
private static IIcon sideIcon;
@SideOnly(Side.CLIENT)
private static IIcon bottomIcon;
public BlockCrucible()
{
super(Material.anvil);
@ -20,18 +35,43 @@ public class BlockCrucible extends BlockContainer
this.setResistance(1.5f);
this.setCreativeTab(AlchemicalWizardry.tabBloodMagic);
this.setBlockName("blockCrucible");
this.setBlockBounds(0.3125F, 0.0F, 0.3125F, 0.6875F, 0.625F, 0.6875F);
}
@Override
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z)
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister iconRegister)
{
return null;
this.topIcon = iconRegister.registerIcon("AlchemicalWizardry:Crucible_Top");
this.sideIcon = iconRegister.registerIcon("AlchemicalWizardry:Crucible_Side");
this.bottomIcon = iconRegister.registerIcon("AlchemicalWizardry:Crucible_Bottom");
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(int side, int meta)
{
switch (side)
{
case 0:
return bottomIcon;
case 1:
return topIcon;
default:
return sideIcon;
}
}
// @Override
// public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z)
// {
// return null;
// }
@Override
public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z)
{
this.setBlockBounds(0.4F, 0.0F, 0.4F, 0.6F, 0.6F, 0.6F);
this.setBlockBounds(0.3125F, 0.0F, 0.3125F, 0.6875F, 0.625F, 0.6875F);
}
@Override
@ -61,4 +101,68 @@ public class BlockCrucible extends BlockContainer
tile.spawnClientParticle(world, x, y, z, rand);
}
}
@Override
public void breakBlock(World world, int x, int y, int z, Block par5, int par6)
{
dropItems(world, x, y, z);
super.breakBlock(world, x, y, z, par5, par6);
}
@Override
public boolean hasComparatorInputOverride()
{
return true;
}
@Override
public int getComparatorInputOverride(World world, int x, int y, int z, int meta)
{
TileEntity tile = world.getTileEntity(x, y, z);
if (tile instanceof TECrucible)
{
return ((TECrucible) tile).getRSPowerOutput();
}
return 15;
}
private void dropItems(World world, int x, int y, int z)
{
Random rand = new Random();
TileEntity tileEntity = world.getTileEntity(x, y, z);
if (!(tileEntity instanceof IInventory))
{
return;
}
IInventory inventory = (IInventory) tileEntity;
for (int i = 0; i < inventory.getSizeInventory(); i++)
{
ItemStack item = inventory.getStackInSlot(i);
if (item != null && item.stackSize > 0)
{
float rx = rand.nextFloat() * 0.8F + 0.1F;
float ry = rand.nextFloat() * 0.8F + 0.1F;
float rz = rand.nextFloat() * 0.8F + 0.1F;
EntityItem entityItem = new EntityItem(world,
x + rx, y + ry, z + rz,
new ItemStack(item.getItem(), item.stackSize, item.getItemDamage()));
if (item.hasTagCompound())
{
entityItem.getEntityItem().setTagCompound((NBTTagCompound) item.getTagCompound().copy());
}
float factor = 0.05F;
entityItem.motionX = rand.nextGaussian() * factor;
entityItem.motionY = rand.nextGaussian() * factor + 0.2F;
entityItem.motionZ = rand.nextGaussian() * factor;
world.spawnEntityInWorld(entityItem);
item.stackSize = 0;
}
}
}
}

View file

@ -5,19 +5,25 @@ import java.util.List;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.util.MathHelper;
import net.minecraft.util.StatCollector;
import net.minecraftforge.oredict.OreDictionary;
import WayofTime.alchemicalWizardry.AlchemicalWizardry;
import WayofTime.alchemicalWizardry.ModItems;
import WayofTime.alchemicalWizardry.api.items.ShapelessBloodOrbRecipe;
import WayofTime.alchemicalWizardry.api.sacrifice.IIncense;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class ItemIncense extends Item implements IIncense
{
private static final String[] ITEM_NAMES = new String[]{"Woodash", "Cloves"};
private static final String[] ITEM_NAMES = new String[]{"Woodash", "Byrrus", "Livens", "Viridis", "Purpura"};
@SideOnly(Side.CLIENT)
private IIcon[] icons;
@ -40,9 +46,17 @@ public class ItemIncense extends Item implements IIncense
{
icons = new IIcon[ITEM_NAMES.length];
IIcon baseIcon = iconRegister.registerIcon("AlchemicalWizardry:" + "baseIncenseItem");
for (int i = 0; i < ITEM_NAMES.length; ++i)
{
icons[i] = iconRegister.registerIcon("AlchemicalWizardry:" + "baseIncenseItem" + ITEM_NAMES[i]);
if(this.doesIncenseHaveUniqueTexture(i))
{
icons[i] = iconRegister.registerIcon("AlchemicalWizardry:" + "baseIncenseItem" + ITEM_NAMES[i]);
}else
{
icons[i] = baseIcon;
}
}
}
@ -76,67 +90,131 @@ public class ItemIncense extends Item implements IIncense
list.add(new ItemStack(id, 1, meta));
}
}
@Override
@SideOnly(Side.CLIENT)
public int getColorFromItemStack(ItemStack stack, int pass)
{
if(!this.doesIncenseHaveUniqueTexture(stack.getItemDamage()))
{
EnumIncense inc = EnumIncense.getEnumForIndex(stack.getItemDamage());
return (int)((255*inc.redColour * 256 * 256 + 255*inc.greenColour * 256 + 255*inc.blueColour));
}
return 256 * (256 * 255 + 255) + 255;
}
@Override
public int getMinLevel(ItemStack stack)
{
switch(stack.getItemDamage())
{
case 0:
return 0;
case 1:
return 200;
}
return 0;
return EnumIncense.getEnumForIndex(stack.getItemDamage()).minValue;
}
@Override
public int getMaxLevel(ItemStack stack)
{
switch(stack.getItemDamage())
{
case 0:
return 200;
case 1:
return 500;
}
return 100;
return EnumIncense.getEnumForIndex(stack.getItemDamage()).maxValue;
}
@Override
public int getIncenseDuration(ItemStack stack)
{
return 200;
return EnumIncense.getEnumForIndex(stack.getItemDamage()).incenseDuration;
}
@Override
public float getTickRate(ItemStack stack)
{
switch(stack.getItemDamage())
{
case 0:
return 1.0f;
case 1:
return 0.5f;
}
return 1.0f;
return EnumIncense.getEnumForIndex(stack.getItemDamage()).tickRate;
}
@Override
public float getRedColour(ItemStack stack)
{
return 1.0f;
return EnumIncense.getEnumForIndex(stack.getItemDamage()).redColour;
}
@Override
public float getGreenColour(ItemStack stack)
{
return 0;
return EnumIncense.getEnumForIndex(stack.getItemDamage()).greenColour;
}
@Override
public float getBlueColour(ItemStack stack)
{
return 0;
return EnumIncense.getEnumForIndex(stack.getItemDamage()).blueColour;
}
public boolean doesIncenseHaveUniqueTexture(int meta)
{
return false;
}
public static void registerIncenseRecipes()
{
int WILDCARD = OreDictionary.WILDCARD_VALUE;
ItemStack woodStack = new ItemStack(Blocks.log, 1, WILDCARD);
ItemStack charcoalStack = new ItemStack(Items.coal, 1, 1);
ItemStack leavesStack = new ItemStack(Blocks.leaves, 1, WILDCARD);
ItemStack goldNuggetStack = new ItemStack(Items.gold_nugget, 1, WILDCARD);
ItemStack stringStack = new ItemStack(Items.string, 1, WILDCARD);
ItemStack glowstoneStack = new ItemStack(Items.glowstone_dust, 1, WILDCARD);
ItemStack soulSandStack = new ItemStack(Blocks.soul_sand);
ItemStack gunpowderStack = new ItemStack(Items.gunpowder);
ItemStack fermentedEyeStack = new ItemStack(Items.fermented_spider_eye);
ItemStack quartzStack = new ItemStack(Items.quartz, 1, WILDCARD);
ItemStack blazePowderStack = new ItemStack(Items.blaze_powder);
ItemStack netherwartStack = new ItemStack(Items.nether_wart);
ItemStack fracturedBoneStack = new ItemStack(ModItems.baseAlchemyItems, 1, 5);
ItemStack woodashStack = new ItemStack(ModItems.itemIncense, 1, 0);
GameRegistry.addRecipe(woodashStack, "WWW", "WCW", "WWW", 'W', woodStack, 'C', charcoalStack); //WOODASH
GameRegistry.addRecipe(new ShapelessBloodOrbRecipe(new ItemStack(ModItems.itemIncense, 1, 1), woodashStack, "dyeRed", "dyeRed", new ItemStack(Items.redstone), leavesStack, leavesStack, new ItemStack(ModItems.apprenticeBloodOrb)));
GameRegistry.addRecipe(new ShapelessBloodOrbRecipe(new ItemStack(ModItems.itemIncense, 1, 2), woodashStack, "dyeBlue", "dyeBlue", goldNuggetStack, goldNuggetStack, glowstoneStack, stringStack, stringStack, new ItemStack(ModItems.magicianBloodOrb)));
GameRegistry.addRecipe(new ShapelessBloodOrbRecipe(new ItemStack(ModItems.itemIncense, 1, 3), woodashStack, "dyeGreen", "dyeGreen", soulSandStack, gunpowderStack, fermentedEyeStack, new ItemStack(ModItems.masterBloodOrb)));
GameRegistry.addRecipe(new ShapelessBloodOrbRecipe(new ItemStack(ModItems.itemIncense, 1, 4), woodashStack, "dyePurple", "dyePurple", quartzStack, netherwartStack, blazePowderStack, fracturedBoneStack, goldNuggetStack, new ItemStack(ModItems.archmageBloodOrb)));
}
public enum EnumIncense
{
WOODASH(0, 200, 1.0f, 1000, 0.937f, 0.898f, 0.820f),
RED(200, 600, 1.5f, 1000, 1.0f, 0, 0),
BLUE(600, 1200, 3.0f, 1000, 0, 0, 1.0f),
GREEN(1200, 2000, 4.0f, 1000, 0, 1.0f, 0),
PURPLE(2000, 3000, 5.0f, 1000, 1.0f, 0, 1.0f);
public final int minValue;
public final int maxValue;
public final float tickRate;
public final int incenseDuration;
public final float redColour;
public final float greenColour;
public final float blueColour;
private EnumIncense(int minValue, int maxValue, float tickRate, int dur, float red, float green, float blue)
{
this.minValue = minValue;
this.maxValue = maxValue;
this.tickRate = tickRate;
this.incenseDuration = dur;
this.redColour = red;
this.greenColour = green;
this.blueColour = blue;
}
public static EnumIncense getEnumForIndex(int index)
{
if(index > EnumIncense.values().length || index < 0)
{
return WOODASH;
}else
{
return EnumIncense.values()[index];
}
}
}
}

View file

@ -48,7 +48,7 @@ public class RitualEffectEllipsoid extends RitualEffect
int ySize = item2 == null ? 0 : item2.stackSize;
int zSize = item3 == null ? 0 : item3.stackSize;
int cost = (int) Math.pow((xSize + 1) * (ySize + 1) * (zSize + 1), 0.333);
int cost = 5;
if (currentEssence < cost)
{

View file

@ -3,6 +3,7 @@ package WayofTime.alchemicalWizardry.common.tileEntity;
import java.util.List;
import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
@ -16,6 +17,8 @@ import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper;
public class TECrucible extends TEInventory
{
private int radius = 5;
public float rColour;
public float gColour;
public float bColour;
@ -72,7 +75,7 @@ public class TECrucible extends TEInventory
if(ticksRemaining > 0)
{
List<EntityPlayer> playerList = SpellHelper.getPlayersInRange(worldObj, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, 3, 3);
List<EntityPlayer> playerList = SpellHelper.getPlayersInRange(worldObj, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, radius, radius);
if(playerList != null && !playerList.isEmpty())
{
@ -103,6 +106,8 @@ public class TECrucible extends TEInventory
if(stateChanged)
{
worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
updateNeighbors();
}
}else
{
@ -110,6 +115,7 @@ public class TECrucible extends TEInventory
{
state = 0;
worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
updateNeighbors();
}
}
}else
@ -118,24 +124,42 @@ public class TECrucible extends TEInventory
{
state = 0;
worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
updateNeighbors();
}
}
}
private void updateNeighbors()
{
Block block = worldObj.getBlock(xCoord + 1, yCoord, zCoord);
block.onNeighborBlockChange(worldObj, xCoord + 1, yCoord, zCoord, block);
block = worldObj.getBlock(xCoord - 1, yCoord, zCoord);
block.onNeighborBlockChange(worldObj, xCoord - 1, yCoord, zCoord, block);
block = worldObj.getBlock(xCoord, yCoord + 1, zCoord);
block.onNeighborBlockChange(worldObj, xCoord, yCoord + 1, zCoord, block);
block = worldObj.getBlock(xCoord, yCoord - 1, zCoord);
block.onNeighborBlockChange(worldObj, xCoord, yCoord - 1, zCoord, block);
block = worldObj.getBlock(xCoord, yCoord, zCoord + 1);
block.onNeighborBlockChange(worldObj, xCoord, yCoord, zCoord + 1, block);
block = worldObj.getBlock(xCoord, yCoord, zCoord - 1);
block.onNeighborBlockChange(worldObj, xCoord, yCoord, zCoord - 1, block);
}
public void spawnClientParticle(World world, int x, int y, int z, Random rand)
{
switch(state)
{
case 0:
world.spawnParticle("reddust", x + 0.5D + rand.nextGaussian() / 8, y + 0.5D, z + 0.5D + rand.nextGaussian() / 8, 0.15, 0.15, 0.15);
world.spawnParticle("reddust", x + 0.5D + rand.nextGaussian() / 8, y + 0.7D, z + 0.5D + rand.nextGaussian() / 8, 0.15, 0.15, 0.15);
break;
case 1:
world.spawnParticle("reddust", x + 0.5D + rand.nextGaussian() / 8, y + 0.5D, z + 0.5D + rand.nextGaussian() / 8, 0.9, 0.9, 0.9);
world.spawnParticle("reddust", x + 0.5D + rand.nextGaussian() / 8, y + 0.7D, z + 0.5D + rand.nextGaussian() / 8, 1.0, 1.0, 1.0);
break;
case 2:
world.spawnParticle("reddust", x + 0.5D + rand.nextGaussian() / 8, y + 0.5D, z + 0.5D + rand.nextGaussian() / 8, rColour, gColour, bColour);
world.spawnParticle("reddust", x + 0.5D + rand.nextGaussian() / 8, y + 0.7D, z + 0.5D + rand.nextGaussian() / 8, rColour, gColour, bColour);
world.spawnParticle("flame", x + 0.5D + rand.nextGaussian() / 32, y + 0.7D, z + 0.5D + rand.nextGaussian() / 32, 0, 0.02, 0);
break;
case 3:
@ -152,6 +176,7 @@ public class TECrucible extends TEInventory
tag.setInteger("ticksRemaining", ticksRemaining);
tag.setInteger("minValue", minValue);
tag.setInteger("maxValue", maxValue);
tag.setFloat("increment", this.incrementValue);
this.writeClientNBT(tag);
}
@ -164,6 +189,7 @@ public class TECrucible extends TEInventory
ticksRemaining = tag.getInteger("ticksRemaining");
minValue = tag.getInteger("minValue");
maxValue = tag.getInteger("maxValue");
incrementValue = tag.getFloat("increment");
this.readClientNBT(tag);
}
@ -211,4 +237,9 @@ public class TECrucible extends TEInventory
{
return stack != null ? stack.getItem() instanceof IIncense : false;
}
public int getRSPowerOutput()
{
return (state == 1 || state == 0) ? 0 : 15;
}
}

View file

@ -67,6 +67,7 @@ tile.blockMimic.name=Mimic Block
tile.blockSpectralContainer.name=Spectral Container
tile.blockBloodLightSource.name=Blood Light
tile.spectralBlock.name=Spectral Block
tile.blockCrucible.name=Incense Crucible
#Item Localization
item.weakBloodOrb.name=Weak Blood Orb
@ -235,7 +236,11 @@ item.boundPlateWater.name=Water Omega Plate
item.boundLeggingsWater.name=Water Omega Leggings
item.boundBootsWater.name=Water Omega Boots
item.bloodMagicIncenseItem.Woodash.name=Testing Incense
item.bloodMagicIncenseItem.Woodash.name=Wood Ash
item.bloodMagicIncenseItem.Byrrus.name=Byrrus
item.bloodMagicIncenseItem.Livens.name=Livens
item.bloodMagicIncenseItem.Viridis.name=Viridis
item.bloodMagicIncenseItem.Purpura.name=Purpura
#Creative Tab
itemGroup.tabBloodMagic=Blood Magic
@ -416,6 +421,7 @@ tooltip.voidsigil.desc=Better than a Swiffer!
tooltip.watersigil.desc=Infinite water, anyone?
tooltip.routingFocus.limit=Limit:
tooltip.routingFocus.desc=A focus used to route items
tooltip.alchemy.usedinincense=Purifying incense used in a crucible
#Messages
message.altar.capacity=Capacity: %s LP

Binary file not shown.

After

Width:  |  Height:  |  Size: 434 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 737 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 498 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 B