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