001 package org.bukkit.metadata; 002 003 import org.bukkit.plugin.Plugin; 004 005 import java.util.concurrent.Callable; 006 007 /** 008 * A FixedMetadataValue is a special case metadata item that contains the same 009 * value forever after initialization. Invalidating a FixedMetadataValue has 010 * no effect. 011 * <p> 012 * This class extends LazyMetadataValue for historical reasons, even though it 013 * overrides all the implementation methods. it is possible that in the future 014 * that the inheritance hierarchy may change. 015 */ 016 public class FixedMetadataValue extends LazyMetadataValue { 017 018 /** 019 * Store the internal value that is represented by this fixed value. 020 */ 021 private final Object internalValue; 022 023 /** 024 * Initializes a FixedMetadataValue with an Object 025 * 026 * @param owningPlugin the {@link Plugin} that created this metadata value 027 * @param value the value assigned to this metadata value 028 */ 029 public FixedMetadataValue(Plugin owningPlugin, final Object value) { 030 super(owningPlugin); 031 this.internalValue = value; 032 } 033 034 @Override 035 public void invalidate() { 036 037 } 038 039 @Override 040 public Object value() { 041 return internalValue; 042 } 043 }