61 lines
1.9 KiB
Java
61 lines
1.9 KiB
Java
package org.bukkit.craftbukkit.block;
|
|
|
|
import net.minecraft.block.BlockJukebox;
|
|
import net.minecraft.block.BlockJukebox.TileEntityJukebox;
|
|
import net.minecraft.init.Blocks;
|
|
import net.minecraft.item.ItemStack;
|
|
import org.bukkit.Effect;
|
|
import org.bukkit.Material;
|
|
import org.bukkit.block.Block;
|
|
import org.bukkit.block.Jukebox;
|
|
import org.bukkit.craftbukkit.CraftWorld;
|
|
import org.bukkit.craftbukkit.util.CraftMagicNumbers;
|
|
|
|
public class CraftJukebox extends CraftBlockState implements Jukebox {
|
|
private final CraftWorld world;
|
|
private final TileEntityJukebox jukebox;
|
|
|
|
public CraftJukebox(final Block block) {
|
|
super(block);
|
|
|
|
world = (CraftWorld) block.getWorld();
|
|
jukebox = (TileEntityJukebox) world.getTileEntityAt(getX(), getY(), getZ());
|
|
}
|
|
|
|
@Override
|
|
public Material getPlaying() {
|
|
ItemStack record = jukebox.func_145856_a();
|
|
if (record == null) {
|
|
return Material.AIR;
|
|
}
|
|
return CraftMagicNumbers.getMaterial(record.getItem());
|
|
}
|
|
|
|
@Override
|
|
public void setPlaying(Material record) {
|
|
if (record == null || CraftMagicNumbers.getItem(record) == null) {
|
|
record = Material.AIR;
|
|
jukebox.func_145857_a(null);
|
|
} else {
|
|
jukebox.func_145857_a(new ItemStack(CraftMagicNumbers.getItem(record), 1));
|
|
}
|
|
jukebox.markDirty();
|
|
if (record == Material.AIR) {
|
|
world.getHandle().setBlockMetadataWithNotify(getX(), getY(), getZ(), 0, 3);
|
|
} else {
|
|
world.getHandle().setBlockMetadataWithNotify(getX(), getY(), getZ(), 1, 3);
|
|
}
|
|
world.playEffect(getLocation(), Effect.RECORD_PLAY, record.getId());
|
|
}
|
|
|
|
public boolean isPlaying() {
|
|
return getRawData() == 1;
|
|
}
|
|
|
|
public boolean eject() {
|
|
boolean result = isPlaying();
|
|
((BlockJukebox) Blocks.jukebox).func_149925_e(world.getHandle(), getX(), getY(), getZ());
|
|
return result;
|
|
}
|
|
}
|