/* * Copyright (c) CovertJaguar, 2014 http://railcraft.info * * This code is the property of CovertJaguar * and may only be used with explicit written * permission unless otherwise specified on the * license page at http://railcraft.info/wiki/info:license. */ package mods.railcraft.common.plugins.thaumcraft; import net.minecraft.entity.DataWatcher; import thaumcraft.api.aspects.Aspect; /** * * @author CovertJaguar <http://www.railcraft.info/> */ public class EssentiaTank { private final Aspect aspect; private final DataWatcher dataWatcher; private final int capacity, dataId; public EssentiaTank(Aspect aspect, int capacity, DataWatcher dataWatcher, int dataId) { this.aspect = aspect; this.dataWatcher = dataWatcher; this.dataId = dataId; this.capacity = capacity; dataWatcher.addObject(dataId, (short) 0); } public Aspect getAspect() { return aspect; } public int getAmount() { return dataWatcher.getWatchableObjectShort(dataId); } public void setAmount(int amount) { dataWatcher.updateObject(dataId, (short) amount); } public int fill(int amount, boolean doAdd) { if (amount < 0) return 0; int remainder = 0; int contents = getAmount() + amount; if (contents > capacity) { remainder = contents - capacity; contents = capacity; } if (doAdd) setAmount(contents); return remainder; } public boolean contains(int amount) { return getAmount() >= amount; } public boolean remove(int amount, boolean doRemove) { if (amount < 0) return false; if (contains(amount)) { if (doRemove) { int contents = getAmount() - amount; setAmount(Math.max(contents, 0)); } return true; } return false; } }