001 package net.minecraft.src;
002
003 public class TileEntityNote extends TileEntity
004 {
005 /** Note to play */
006 public byte note = 0;
007
008 /** stores the latest redstone state */
009 public boolean previousRedstoneState = false;
010
011 /**
012 * Writes a tile entity to NBT.
013 */
014 public void writeToNBT(NBTTagCompound par1NBTTagCompound)
015 {
016 super.writeToNBT(par1NBTTagCompound);
017 par1NBTTagCompound.setByte("note", this.note);
018 }
019
020 /**
021 * Reads a tile entity from NBT.
022 */
023 public void readFromNBT(NBTTagCompound par1NBTTagCompound)
024 {
025 super.readFromNBT(par1NBTTagCompound);
026 this.note = par1NBTTagCompound.getByte("note");
027
028 if (this.note < 0)
029 {
030 this.note = 0;
031 }
032
033 if (this.note > 24)
034 {
035 this.note = 24;
036 }
037 }
038
039 /**
040 * change pitch by -> (currentPitch + 1) % 25
041 */
042 public void changePitch()
043 {
044 this.note = (byte)((this.note + 1) % 25);
045 this.onInventoryChanged();
046 }
047
048 /**
049 * plays the stored note
050 */
051 public void triggerNote(World par1World, int par2, int par3, int par4)
052 {
053 if (par1World.getBlockMaterial(par2, par3 + 1, par4) == Material.air)
054 {
055 Material var5 = par1World.getBlockMaterial(par2, par3 - 1, par4);
056 byte var6 = 0;
057
058 if (var5 == Material.rock)
059 {
060 var6 = 1;
061 }
062
063 if (var5 == Material.sand)
064 {
065 var6 = 2;
066 }
067
068 if (var5 == Material.glass)
069 {
070 var6 = 3;
071 }
072
073 if (var5 == Material.wood)
074 {
075 var6 = 4;
076 }
077
078 par1World.addBlockEvent(par2, par3, par4, Block.music.blockID, var6, this.note);
079 }
080 }
081 }