private void dropBlocks(World world, int x, int y, int z) {
    Block drop = world.getBlock(x, y, z);
    if (drop == Blocks.air) return;
    int dropmeta = world.getBlockMetadata(x, y, z);
    ItemStack sapling = tree.getSapling();
    Block logID = tree.getTreeType().getLogID();

    Collection<ItemStack> drops = this.getDrops(world, x, y, z, drop, dropmeta);
    if (drop == logID && logID != null) {
      if (rand.nextInt(3) == 0) {
        drops.add(
            ReikaItemHelper.getSizedItemStack(ItemStacks.sawdust.copy(), 1 + rand.nextInt(4)));
      }
    }

    for (ItemStack todrop : drops) {
      if (ReikaItemHelper.matchStacks(todrop, sapling)) {
        if (inv[0] != null && inv[0].stackSize >= inv[0].getMaxStackSize()) {
          if (!this.chestCheck(todrop))
            ReikaItemHelper.dropItem(world, dropx, yCoord - 0.25, dropz, todrop);
        } else ReikaInventoryHelper.addOrSetStack(todrop, inv, 0);
      } else {
        if (!this.chestCheck(todrop))
          ReikaItemHelper.dropItem(world, dropx, yCoord - 0.25, dropz, todrop);
      }
    }
  }
  @Override
  protected void drawGuiContainerForegroundLayer(int par1, int par2) {
    ReikaTextureHelper.bindFontTexture();

    int j = (width - xSize) / 2;
    int k = (height - ySize) / 2;
    ReikaGuiAPI.instance.drawCenteredStringNoShadow(
        fontRendererObj,
        StatCollector.translateToLocal("chroma.routerfilter"),
        xSize / 2,
        5,
        0xffffff);

    for (int i = 0; i < 9; i++) {
      ItemRule ir = tile.getFilter(i);
      if (ir != null) {
        int x = 8 + i * 18;
        int y = 33;
        ReikaGuiAPI.instance.drawItemStack(
            itemRender, fontRendererObj, ReikaItemHelper.getSizedItemStack(ir.getItem(), 1), x, y);
        GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS);
        GL11.glEnable(GL11.GL_BLEND);
        GL11.glDisable(GL11.GL_LIGHTING);
        GL11.glDisable(GL11.GL_TEXTURE_2D);
        ReikaGuiAPI.instance.drawRectFrame(x - 1, y - 1, 18, 18, 0xff000000 | ir.mode.color);
        GL11.glPopAttrib();
      }
    }
  }
 @SubscribeEvent
 public void meatGrinding(LivingDropsEvent ev) {
   if (ev.source instanceof GrinderDamage) {
     ItemStack food = ReikaEntityHelper.getFoodItem(ev.entityLiving);
     ev.drops.clear();
     if (food != null) {
       World world = ev.entityLiving.worldObj;
       Random rand = RotaryCraft.rand;
       int num = 4 + rand.nextInt(4) + rand.nextInt(4) + rand.nextInt(4);
       ItemStack is = ReikaItemHelper.getSizedItemStack(food, num);
       ReikaItemHelper.dropItem(
           world, ev.entityLiving.posX, ev.entityLiving.posY, ev.entityLiving.posZ, is);
     }
     ev.setCanceled(true);
   }
 }
 private void sortItems(World world, int x, int y, int z, List<EntityItem> li) {
   for (EntityItem ei : li) {
     ItemStack is = ei.getEntityItem();
     if (is.stackSize <= 1) ei.setDead();
     else {
       is.stackSize--;
     }
     ForgeDirection dir = this.getSideForItem(is);
     double dx = x + 0.5 + dir.offsetX * 0.75;
     double dy = y + 0.5 + dir.offsetY * 0.75;
     double dz = z + 0.5 + dir.offsetZ * 0.75;
     EntityItem e = new EntityItem(world, dx, dy, dz, ReikaItemHelper.getSizedItemStack(is, 1));
     double v = 0.1;
     e.motionX = dir.offsetX * v;
     e.motionY = dir.offsetY * v;
     e.motionZ = dir.offsetZ * v;
     world.spawnEntityInWorld(e);
   }
 }
  @Override
  public void onDeath(DamageSource src) {
    ChromaSounds.DISCHARGE.playSound(this, 1F, 2F);
    if (!worldObj.isRemote) {
      Entity e = src.getEntity();
      if (e instanceof EntityPlayer) {
        EntityPlayer ep = (EntityPlayer) e;
        if (doDrops && !ReikaPlayerAPI.isFakeOrNotInteractable(ep, posX, posY, posZ, 8)) {
          int looting = EnchantmentHelper.getLootingModifier((EntityPlayer) src.getEntity());
          ReikaItemHelper.dropItem(
              this,
              ReikaItemHelper.getSizedItemStack(
                  ChromaStacks.beaconDust, rand.nextInt(1 + looting * 2)));
          if (looting > 1) {
            if (color.isPrimary()) ReikaItemHelper.dropItem(this, ChromaStacks.purityDust);
            else ReikaItemHelper.dropItem(this, ChromaStacks.auraDust);
          }
        }
        ProgressStage.BALLLIGHTNING.stepPlayerTo(ep);
      }

      this.sendDeathParticles();
    }
  }
 private PulseJetRecipe(ItemStack in) {
   input = ReikaItemHelper.getSizedItemStack(in, 1);
 }
 public void addSizedOreRecipe(int size, Object... o) {
   ShapedOreRecipe ir =
       new ShapedOreRecipe(ReikaItemHelper.getSizedItemStack(this.getItem(), size), o);
   GameRegistry.addRecipe(ir);
 }
 public void addSizedRecipe(int size, Object... o) {
   GameRegistry.addRecipe(ReikaItemHelper.getSizedItemStack(this.getItem(), size), o);
 }
 private void setContents(int num) {
   inv[0] = ReikaItemHelper.getSizedItemStack(ItemStacks.bedrockdust, num);
 }
 private ItemStack getDrops(World world, int x, int y, int z) {
   ItemStack dust =
       ReikaItemHelper.getSizedItemStack(
           ItemStacks.bedrockdust, this.getNumberDust(world, x, y, z));
   return dust;
 }
 @Override
 public PositionedStack getIngredient() {
   return new PositionedStack(ReikaItemHelper.getSizedItemStack(input, 1), 21, 28);
 }