package net.minecraft.tileentity; import net.minecraft.block.material.Material; import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; public class TileEntityNote extends TileEntity { /** Note to play */ public byte note; /** stores the latest redstone state */ public boolean previousRedstoneState; private static final String __OBFID = "CL_00000362"; public void writeToNBT(NBTTagCompound compound) { super.writeToNBT(compound); compound.setByte("note", this.note); } public void readFromNBT(NBTTagCompound compound) { super.readFromNBT(compound); this.note = compound.getByte("note"); if (this.note < 0) { this.note = 0; } if (this.note > 24) { this.note = 24; } } /** * change pitch by -> (currentPitch + 1) % 25 */ public void changePitch() { byte old = note; this.note = (byte)((this.note + 1) % 25); if (!net.minecraftforge.common.ForgeHooks.onNoteChange(this, old)) return; this.markDirty(); } /** * plays the stored note */ public void triggerNote(World p_145878_1_, int p_145878_2_, int p_145878_3_, int p_145878_4_) { if (p_145878_1_.getBlock(p_145878_2_, p_145878_3_ + 1, p_145878_4_).getMaterial() == Material.air) { Material material = p_145878_1_.getBlock(p_145878_2_, p_145878_3_ - 1, p_145878_4_).getMaterial(); byte b0 = 0; if (material == Material.rock) { b0 = 1; } if (material == Material.sand) { b0 = 2; } if (material == Material.glass) { b0 = 3; } if (material == Material.wood) { b0 = 4; } p_145878_1_.addBlockEvent(p_145878_2_, p_145878_3_, p_145878_4_, Blocks.noteblock, b0, this.note); } } }