/* * Copyright 2014 eccentric_nz. */ package me.eccentric_nz.TARDIS.arch.attributes; import com.google.common.base.Preconditions; import java.util.UUID; /** * * @author Kristian */ public class TARDISAttribute { public TARDISNbtFactory.NbtCompound data; public TARDISAttribute(TARDISAttributeBuilder builder) { data = TARDISNbtFactory.createCompound(); setAmount(builder.amount); setOperation(builder.operation); setAttributeType(builder.type); setName(builder.name); setUUID(builder.uuid); } public TARDISAttribute(TARDISNbtFactory.NbtCompound data) { this.data = data; } public double getAmount() { return data.getDouble("Amount", 0.0); } public final void setAmount(double amount) { data.put("Amount", amount); } public TARDISAttributeOperation getOperation() { return TARDISAttributeOperation.fromId(data.getInteger("Operation", 0)); } public final void setOperation(TARDISAttributeOperation operation) { Preconditions.checkNotNull(operation, "operation cannot be NULL."); data.put("Operation", operation.getId()); } public TARDISAttributeType getAttributeType() { return TARDISAttributeType.fromId(data.getString("AttributeName", null)); } public final void setAttributeType(TARDISAttributeType type) { Preconditions.checkNotNull(type, "type cannot be NULL."); data.put("AttributeName", type.getMinecraftId()); } public String getName() { return data.getString("Name", null); } public final void setName(String name) { Preconditions.checkNotNull(name, "name cannot be NULL."); data.put("Name", name); } public UUID getUUID() { return new UUID(data.getLong("UUIDMost", null), data.getLong("UUIDLeast", null)); } public final void setUUID(UUID id) { Preconditions.checkNotNull("id", "id cannot be NULL."); data.put("UUIDLeast", id.getLeastSignificantBits()); data.put("UUIDMost", id.getMostSignificantBits()); } /** * Construct a new attribute builder with a random UUID and default * operation of adding numbers. * * @return The attribute builder. */ public static TARDISAttributeBuilder newBuilder() { return new TARDISAttributeBuilder().uuid(UUID.randomUUID()).operation(TARDISAttributeOperation.ADD_NUMBER); } }