All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.bukkit.craftbukkit.block.CraftDispenser Maven / Gradle / Ivy

There is a newer version: 2.4.0
Show newest version
package org.bukkit.craftbukkit.block;

import net.minecraft.server.BlockDispenser;
import net.minecraft.server.BlockPosition;
import net.minecraft.server.Blocks;
import net.minecraft.server.TileEntityDispenser;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.Dispenser;
import org.bukkit.craftbukkit.CraftWorld;
import org.bukkit.craftbukkit.inventory.CraftInventory;
import org.bukkit.craftbukkit.projectiles.CraftBlockProjectileSource;
import org.bukkit.inventory.Inventory;
import org.bukkit.projectiles.BlockProjectileSource;

public class CraftDispenser extends CraftBlockState implements Dispenser {
  private final CraftWorld world;
  private final TileEntityDispenser dispenser;

  public CraftDispenser(final Block block) {
    super(block);

    world = (CraftWorld) block.getWorld();
    dispenser = (TileEntityDispenser) world.getTileEntityAt(getX(), getY(), getZ());
  }

  public CraftDispenser(final Material material, final TileEntityDispenser te) {
    super(material);
    world = null;
    dispenser = te;
  }

  public Inventory getInventory() {
    return new CraftInventory(dispenser);
  }

  public BlockProjectileSource getBlockProjectileSource() {
    Block block = getBlock();

    if (block.getType() != Material.DISPENSER) {
      return null;
    }

    return new CraftBlockProjectileSource(dispenser);
  }

  public boolean dispense() {
    Block block = getBlock();

    if (block.getType() == Material.DISPENSER) {
      BlockDispenser dispense = (BlockDispenser) Blocks.DISPENSER;

      dispense.dispense(world.getHandle(), new BlockPosition(getX(), getY(), getZ()));
      return true;
    } else {
      return false;
    }
  }

  @Override
  public boolean update(boolean force, boolean applyPhysics) {
    boolean result = super.update(force, applyPhysics);

    if (result) {
      dispenser.update();
    }

    return result;
  }

  @Override
  public TileEntityDispenser getTileEntity() {
    return dispenser;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy