mffs/src/main/java/mffs/event/BlockPreMoveDelayedEvent.java

53 lines
2 KiB
Java

package mffs.event;
import mffs.DelayedEvent;
import mffs.IDelayedEventHandler;
import mffs.ManipulatorHelper;
import mffs.api.ISpecialForceManipulation;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import universalelectricity.core.vector.Vector3;
public class BlockPreMoveDelayedEvent extends DelayedEvent {
private World world;
private Vector3 position;
private Vector3 newPosition;
public BlockPreMoveDelayedEvent(final IDelayedEventHandler handler,
final int ticks, final World world,
final Vector3 position,
final Vector3 newPosition) {
super(handler, ticks);
this.world = world;
this.position = position;
this.newPosition = newPosition;
}
@Override
protected void onEvent() {
if (!this.world.isRemote) {
final TileEntity tileEntity = this.position.getTileEntity((IBlockAccess) this.world);
if (tileEntity instanceof ISpecialForceManipulation) {
((ISpecialForceManipulation) tileEntity)
.move(this.newPosition.intX(), this.newPosition.intY(),
this.newPosition.intZ());
}
final Block blockID = this.position.getBlock((IBlockAccess) this.world);
final int blockMetadata = this.position.getBlockMetadata((IBlockAccess) this.world);
final NBTTagCompound tileData = new NBTTagCompound();
if (tileEntity != null) {
tileEntity.writeToNBT(tileData);
}
ManipulatorHelper.setBlockSneaky(this.world, this.position, Blocks.air, 0,
null);
super.handler.getQuedDelayedEvents().add(new BlockPostMoveDelayedEvent(
super.handler, 0, this.world, this.position, this.newPosition,
blockID, blockMetadata, tileEntity, tileData));
}
}
}