Initial work on the multiblock system

This commit is contained in:
Modmuss50 2015-04-17 11:23:51 +01:00
parent 1f1096dd49
commit cad9b8cc56
4 changed files with 70 additions and 0 deletions

View file

@ -0,0 +1,35 @@
package techreborn.api.multiblock;
import net.minecraft.tileentity.TileEntity;
import java.util.List;
public interface IMultiBlock {
/**
* This is the name of the multiblock
*/
void getName();
/**
* This check to see if the multiblock is complete
*/
boolean checkIfComplete(int x, int y, int z);
/**
* This is a list of all of the tiles that make up the multiblock
*/
List<TileEntity> getTiles();
/**
* This is the controller for the whole multiblock structure.
*
* This tile will store the nbt and do the logic for the whole system. Send block actions to this block.
*/
TileEntity getController();
/**
* Call this from the controller to allow to tile to update is completeness.
*/
void recompute();
}

View file

@ -0,0 +1,9 @@
package techreborn.api.multiblock;
public interface IMultiblockComponent {
/**
* This gets the multiblock type, allow for different meta data for different structures,
*/
IMultiBlock getMultiblock(int meta);
}

View file

@ -0,0 +1,3 @@
@API(apiVersion = "@MODVERSION@", owner = "techreborn", provides = "techrebornAPI") package techreborn.api.multiblock;
import cpw.mods.fml.common.API;

View file

@ -0,0 +1,23 @@
package techreborn.event;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import techreborn.api.multiblock.IMultiblockComponent;
public class MultiblockEvent {
@SubscribeEvent
public void blockBreakEvent(net.minecraftforge.event.world.BlockEvent.BreakEvent event){
if(event.block instanceof IMultiblockComponent){
IMultiblockComponent component = (IMultiblockComponent) event.block;
component.getMultiblock(event.world.getBlockMetadata(event.x, event.y, event.z)).recompute();
}
}
@SubscribeEvent
public void blockPlaceEvent(net.minecraftforge.event.world.BlockEvent.PlaceEvent event){
if(event.block instanceof IMultiblockComponent){
IMultiblockComponent component = (IMultiblockComponent) event.block;
component.getMultiblock(event.world.getBlockMetadata(event.x, event.y, event.z)).recompute();
}
}
}