Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- final static public float ConversionRate = 100F;
- // _bufferSize = ConversationRate * getMaxEnergyOutput()
- private float _bufferSize;
- private float _buffered;
- private boolean _added;
- // Called in some updateEntity, this is where I publish EnergyTileSourceEvent
- @Override
- public void distribute(float amount) {
- if(!_added || worldObj.isRemote)
- return;
- if((_buffered += amount) > _bufferSize) {
- _buffered = _bufferSize;
- }
- if(_buffered < ConversionRate) {
- return;
- }
- float real = _buffered / ConversionRate;
- int rounded = (int)real;
- float left = real - rounded;
- EnergyTileSourceEvent e = new EnergyTileSourceEvent(this, rounded);
- MinecraftForge.EVENT_BUS.post(e);
- _buffered = e.amount * ConversionRate + left;
- }
- // Called from updateEntity after some initialization, can be in the first updateEntity call but can also be much later
- @Override
- public void onUpdate() {
- if(!worldObj.isRemote && !_added) {
- EnergyTileLoadEvent loadEvent = new EnergyTileLoadEvent(this);
- MinecraftForge.EVENT_BUS.post(loadEvent);
- _added = true;
- }
- }
- @Override
- public void invalidate() {
- if(_added) {
- MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this));
- _added = false;
- }
- super.invalidate();
- }
- @Override
- public abstract int getMaxEnergyOutput();
- @Override
- public boolean emitsEnergyTo(TileEntity receiver, Direction direction) {
- return true;
- }
- @Override
- public boolean isAddedToEnergyNet() {
- return _added;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement