Implement Hopper block state and inventory methods. Adds BUKKIT-3749

This commit is contained in:
Michael Limiero 2013-03-16 00:46:35 -04:00 committed by Travis Watkins
parent 6f68fc4ba4
commit d802168cd5
4 changed files with 47 additions and 1 deletions

View file

@ -249,6 +249,8 @@ public class CraftBlock implements Block {
return new CraftFurnace(this); return new CraftFurnace(this);
case DISPENSER: case DISPENSER:
return new CraftDispenser(this); return new CraftDispenser(this);
case HOPPER:
return new CraftHopper(this);
case MOB_SPAWNER: case MOB_SPAWNER:
return new CraftCreatureSpawner(this); return new CraftCreatureSpawner(this);
case NOTE_BLOCK: case NOTE_BLOCK:

View file

@ -0,0 +1,35 @@
package org.bukkit.craftbukkit.block;
import net.minecraft.server.TileEntityHopper;
import org.bukkit.block.Block;
import org.bukkit.block.Hopper;
import org.bukkit.craftbukkit.CraftWorld;
import org.bukkit.craftbukkit.inventory.CraftInventory;
import org.bukkit.inventory.Inventory;
public class CraftHopper extends CraftBlockState implements Hopper {
private final CraftWorld world;
private final TileEntityHopper hopper;
public CraftHopper(final Block block) {
super(block);
world = (CraftWorld) block.getWorld();
hopper = (TileEntityHopper) world.getTileEntityAt(getX(), getY(), getZ());
}
public Inventory getInventory() {
return new CraftInventory(hopper);
}
@Override
public boolean update(boolean force) {
boolean result = super.update(force);
if (result) {
hopper.update();
}
return result;
}
}

View file

@ -10,6 +10,7 @@ import net.minecraft.server.Packet101CloseWindow;
import net.minecraft.server.TileEntityBrewingStand; import net.minecraft.server.TileEntityBrewingStand;
import net.minecraft.server.TileEntityDispenser; import net.minecraft.server.TileEntityDispenser;
import net.minecraft.server.TileEntityFurnace; import net.minecraft.server.TileEntityFurnace;
import net.minecraft.server.TileEntityHopper;
import org.bukkit.GameMode; import org.bukkit.GameMode;
import org.bukkit.Location; import org.bukkit.Location;
@ -215,7 +216,12 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity {
} }
break; break;
case ENCHANTING: case ENCHANTING:
openCustomInventory(inventory, player, 4); openCustomInventory(inventory, player, 4);
break;
case HOPPER:
if (craftinv.getInventory() instanceof TileEntityHopper) {
getHandle().openHopper((TileEntityHopper)craftinv.getInventory());
}
break; break;
case CREATIVE: case CREATIVE:
case CRAFTING: case CRAFTING:

View file

@ -15,6 +15,7 @@ import net.minecraft.server.TileEntityBeacon;
import net.minecraft.server.TileEntityBrewingStand; import net.minecraft.server.TileEntityBrewingStand;
import net.minecraft.server.TileEntityDispenser; import net.minecraft.server.TileEntityDispenser;
import net.minecraft.server.TileEntityFurnace; import net.minecraft.server.TileEntityFurnace;
import net.minecraft.server.TileEntityHopper;
import org.apache.commons.lang.Validate; import org.apache.commons.lang.Validate;
import org.bukkit.entity.HumanEntity; import org.bukkit.entity.HumanEntity;
@ -444,6 +445,8 @@ public class CraftInventory implements Inventory {
return InventoryType.BEACON; return InventoryType.BEACON;
} else if (inventory instanceof ContainerAnvilInventory) { } else if (inventory instanceof ContainerAnvilInventory) {
return InventoryType.ANVIL; return InventoryType.ANVIL;
} else if (inventory instanceof TileEntityHopper) {
return InventoryType.HOPPER;
} else { } else {
return InventoryType.CHEST; return InventoryType.CHEST;
} }