Grinding now working

This commit is contained in:
Calclavia 2014-01-05 18:57:49 +08:00
parent f467c82f13
commit d9a251905d
4 changed files with 52 additions and 15 deletions

View file

@ -88,4 +88,16 @@ public final class MachineRecipes
return this.getOutput(machine, resourceInputs);
}
public Resource[] getRecipe(RecipeType machine, String... oreDictNames)
{
Resource[] resourceInputs = new Resource[oreDictNames.length];
for (int i = 0; i < oreDictNames.length; i++)
{
resourceInputs[i] = new OreDictResource(oreDictNames[i]);
}
return this.getOutput(machine, resourceInputs);
}
}

View file

@ -6,6 +6,7 @@ import net.minecraft.entity.item.EntityItem;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.DamageSource;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeDirection;
import resonantinduction.core.base.BlockRotatableBase;
/**
@ -43,8 +44,15 @@ public class BlockGrinderWheel extends BlockRotatableBase implements ITileEntity
}
else
{
entity.attackEntityFrom(DamageSource.cactus, 1);
entity.attackEntityFrom(DamageSource.cactus, 2);
}
// Move entity based on the direction of the block.
ForgeDirection dir = this.getDirection(world, x, y, z);
entity.motionX += dir.offsetX * 0.1;
entity.motionZ += dir.offsetZ * 0.1;
entity.motionY += Math.random() * 0.3;
}
@Override

View file

@ -84,11 +84,11 @@ public class ItemDust extends ItemBase
}
public static void generateDusts()
{
{
for (String materialName : materialNames)
{
String name = materialName.substring(0, 1).toUpperCase() + materialName.substring(1);
if (OreDictionary.getOres("ore" + name).size() > 0)
{
if (OreDictionary.getOres("dust" + name).size() == 0)
@ -99,7 +99,10 @@ public class ItemDust extends ItemBase
}
// Add to machine recipes
MachineRecipes.INSTANCE.addRecipe(RecipeType.GRINDER, "ore" + name, OreDictionary.getOres("dust" + name).get(0));
ItemStack dust = OreDictionary.getOres("dust" + name).get(0).copy();
dust.stackSize = 2;
MachineRecipes.INSTANCE.addRecipe(RecipeType.GRINDER, "ore" + name, dust);
}
}
}

View file

@ -46,14 +46,19 @@ public class TileGrinderWheel extends TileElectrical
if (entry.getValue() <= 0)
{
this.doGrind(entry.getKey());
if (this.doGrind(entry.getKey()))
{
entry.getKey().setDead();
it.remove();
}
}
else
{
// Make the entity not be able to be picked up.
EntityItem entity = entry.getKey();
entity.delayBeforeCanPickup = 20;
this.worldObj.spawnParticle("smoke", entity.posX, entity.posY, entity.posZ, 0, 0, 0);
this.worldObj.spawnParticle("crit", entity.posX, entity.posY, entity.posZ, (Math.random() - 0.5f) * 3, (Math.random() - 0.5f) * 3, (Math.random() - 0.5f) * 3);
}
}
}
@ -63,19 +68,28 @@ public class TileGrinderWheel extends TileElectrical
return MachineRecipes.INSTANCE.getRecipe(RecipeType.GRINDER, itemStack) == null ? false : MachineRecipes.INSTANCE.getRecipe(RecipeType.GRINDER, itemStack).length > 0;
}
private void doGrind(EntityItem entity)
private boolean doGrind(EntityItem entity)
{
ItemStack itemStack = entity.getEntityItem();
Resource[] results = MachineRecipes.INSTANCE.getRecipe(RecipeType.GRINDER, itemStack);
for (Resource resource : results)
if (!this.worldObj.isRemote)
{
if (resource instanceof ItemStackResource)
ItemStack itemStack = entity.getEntityItem();
Resource[] results = MachineRecipes.INSTANCE.getRecipe(RecipeType.GRINDER, itemStack);
for (Resource resource : results)
{
entity.setEntityItemStack(((ItemStackResource) resource).itemStack);
entity.setPosition(entity.posX, entity.posY - 1.2, entity.posZ);
if (resource instanceof ItemStackResource)
{
EntityItem entityItem = new EntityItem(this.worldObj, entity.posX, entity.posY, entity.posZ, ((ItemStackResource) resource).itemStack.copy());
entityItem.delayBeforeCanPickup = 20;
entityItem.motionX = 0;
entityItem.motionY = 0;
entityItem.motionZ = 0;
this.worldObj.spawnEntityInWorld(entityItem);
}
}
}
return true;
}
}