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 }