This was to complicated, going to make it simpler

This commit is contained in:
Modmuss50 2015-04-17 20:00:30 +01:00
parent 314a9637b7
commit bb58ae8632
12 changed files with 4 additions and 219 deletions

View file

@ -6,13 +6,11 @@ import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraftforge.common.MinecraftForge;
import techreborn.achievement.TRAchievements; import techreborn.achievement.TRAchievements;
import techreborn.client.GuiHandler; import techreborn.client.GuiHandler;
import techreborn.compat.CompatManager; import techreborn.compat.CompatManager;
import techreborn.compat.recipes.RecipeManager; import techreborn.compat.recipes.RecipeManager;
import techreborn.config.ConfigTechReborn; import techreborn.config.ConfigTechReborn;
import techreborn.event.MultiblockEvent;
import techreborn.init.ModBlocks; import techreborn.init.ModBlocks;
import techreborn.init.ModItems; import techreborn.init.ModItems;
import techreborn.init.ModRecipes; import techreborn.init.ModRecipes;
@ -57,8 +55,6 @@ public class Core {
NetworkRegistry.INSTANCE.registerGuiHandler(INSTANCE, new GuiHandler()); NetworkRegistry.INSTANCE.registerGuiHandler(INSTANCE, new GuiHandler());
//packets //packets
PacketHandler.setChannels(NetworkRegistry.INSTANCE.newChannel(ModInfo.MOD_ID + "_packets", new PacketHandler())); PacketHandler.setChannels(NetworkRegistry.INSTANCE.newChannel(ModInfo.MOD_ID + "_packets", new PacketHandler()));
//Events
MinecraftForge.EVENT_BUS.register(new MultiblockEvent());
//Achievements //Achievements
TRAchievements.init(); TRAchievements.init();
LogHelper.info("Initialization Compleate"); LogHelper.info("Initialization Compleate");

View file

@ -1,31 +0,0 @@
package techreborn.api.multiblock;
import net.minecraft.tileentity.TileEntity;
public abstract class BaseMultiBlock implements IMultiBlock {
boolean isComplete = false;
TileEntity parent;
public BaseMultiBlock() {
}
public void setParent(TileEntity parent) {
this.parent = parent;
}
@Override
public boolean isComplete() {
return isComplete;
}
@Override
public TileEntity getController() {
return parent;
}
public void setIsComplete(boolean isComplete) {
this.isComplete = isComplete;
}
}

View file

@ -1,40 +0,0 @@
package techreborn.api.multiblock;
import net.minecraft.tileentity.TileEntity;
import java.util.List;
public interface IMultiBlock {
/**
* This is the name of the multiblock
*/
String getName();
/**
* This check to see if the multiblock is complete
*/
boolean checkIfComplete();
/**
* This check to see if the multiblock is complete
*/
boolean isComplete();
/**
* 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

@ -1,7 +0,0 @@
package techreborn.api.multiblock;
public interface IMultiBlockController {
IMultiBlock getMultiBlock();
}

View file

@ -1,9 +0,0 @@
package techreborn.api.multiblock;
public interface IMultiblockComponent {
/**
* This gets the instance of the multiblock , allow for different meta data for different structures,
*/
Class getMultiblockType();
}

View file

@ -1,26 +0,0 @@
package techreborn.api.multiblock;
import net.minecraft.tileentity.TileEntity;
public class MultiBlockController extends TileEntity implements IMultiBlockController{
BaseMultiBlock multiBlock;
public MultiBlockController(BaseMultiBlock multiBlock) {
this.multiBlock = multiBlock;
}
@Override
public IMultiBlock getMultiBlock() {
return multiBlock;
}
public void setMultiBlock(TileEntity tileEntity, BaseMultiBlock multiBlock){
this.multiBlock = multiBlock;
}
public void setParent(TileEntity tileEntity){
multiBlock.setParent(tileEntity);
}
}

View file

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

View file

@ -12,7 +12,6 @@ import net.minecraft.world.World;
import techreborn.Core; import techreborn.Core;
import techreborn.client.GuiHandler; import techreborn.client.GuiHandler;
import techreborn.client.TechRebornCreativeTab; import techreborn.client.TechRebornCreativeTab;
import techreborn.multiblocks.MultiBlastfurnace;
import techreborn.tiles.TileBlastFurnace; import techreborn.tiles.TileBlastFurnace;
public class BlockBlastFurnace extends BlockContainer{ public class BlockBlastFurnace extends BlockContainer{
@ -32,7 +31,7 @@ public class BlockBlastFurnace extends BlockContainer{
@Override @Override
public TileEntity createNewTileEntity(World world, int p_149915_2_) { public TileEntity createNewTileEntity(World world, int p_149915_2_) {
return new TileBlastFurnace(new MultiBlastfurnace()); return new TileBlastFurnace();
} }
@Override @Override

View file

@ -1,52 +0,0 @@
package techreborn.event;
import cpw.mods.fml.common.eventhandler.EventPriority;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import net.minecraft.tileentity.TileEntity;
import techreborn.api.multiblock.IMultiBlockController;
import techreborn.api.multiblock.IMultiblockComponent;
public class MultiblockEvent {
@SubscribeEvent(priority = EventPriority.LOWEST)
public void blockBreakEvent(net.minecraftforge.event.world.BlockEvent.BreakEvent event) {
if (event.world.getTileEntity(event.x, event.y, event.z) instanceof IMultiblockComponent) {
IMultiblockComponent component = (IMultiblockComponent) event.world.getTileEntity(event.x, event.y, event.z);
for (int x = -3; x < 3; x++) {
for (int y = -3; y < 3; y++) {
for (int z = -3; z < 3; z++) {
//TODO have a quicker way of doing this, Arraylist with all controllers?
TileEntity tile = event.world.getTileEntity(x + event.x, y + event.y, z + event.z);
if (tile != null && tile instanceof IMultiBlockController) {
IMultiBlockController controller = (IMultiBlockController) tile;
controller.getMultiBlock().recompute();
System.out.println(controller.getMultiBlock().isComplete());
}
}
}
}
}
}
@SubscribeEvent(priority = EventPriority.LOWEST)
public void blockPlaceEvent(net.minecraftforge.event.world.BlockEvent.PlaceEvent event) {
if (event.world.getTileEntity(event.x, event.y, event.z) instanceof IMultiblockComponent) {
IMultiblockComponent component = (IMultiblockComponent) event.world.getTileEntity(event.x, event.y, event.z);
for (int x = -3; x < 3; x++) {
for (int y = -3; y < 3; y++) {
for (int z = -3; z < 3; z++) {
//TODO have a quicker way of doing this
TileEntity tile = event.world.getTileEntity(x + event.x, y + event.y, z + event.z);
if (tile != null && tile instanceof IMultiBlockController) {
IMultiBlockController controller = (IMultiBlockController) tile;
controller.getMultiBlock().recompute();
System.out.println(controller.getMultiBlock().isComplete());
}
}
}
}
}
}
}

View file

@ -1,32 +0,0 @@
package techreborn.multiblocks;
import net.minecraft.tileentity.TileEntity;
import techreborn.api.multiblock.BaseMultiBlock;
import techreborn.init.ModBlocks;
import java.util.List;
public class MultiBlastfurnace extends BaseMultiBlock {
@Override
public String getName() {
return "BlastFurnaceMultiBlock";
}
@Override
public boolean checkIfComplete() {
return getController().getWorldObj().getBlock(getController().xCoord, getController().yCoord + 1, getController().zCoord) == ModBlocks.MachineCasing;
}
@Override
public List<TileEntity> getTiles() {
return null;
}
@Override
public void recompute() {
setIsComplete(checkIfComplete());
}
}

View file

@ -4,20 +4,16 @@ import ic2.api.energy.prefab.BasicSink;
import ic2.api.tile.IWrenchable; import ic2.api.tile.IWrenchable;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import techreborn.api.multiblock.BaseMultiBlock;
import techreborn.api.multiblock.MultiBlockController;
import techreborn.init.ModBlocks; import techreborn.init.ModBlocks;
import techreborn.util.Inventory; import techreborn.util.Inventory;
public class TileBlastFurnace extends MultiBlockController implements IWrenchable { public class TileBlastFurnace extends TileMachineBase implements IWrenchable {
public int tickTime; public int tickTime;
public BasicSink energy; public BasicSink energy;
public Inventory inventory = new Inventory(3, "TileBlastFurnace", 64); public Inventory inventory = new Inventory(3, "TileBlastFurnace", 64);
public TileBlastFurnace(BaseMultiBlock multiBlock) { public TileBlastFurnace() {
super(multiBlock);
setParent(this);
} }
@Override @Override

View file

@ -1,10 +1,8 @@
package techreborn.tiles; package techreborn.tiles;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import techreborn.api.multiblock.IMultiblockComponent;
import techreborn.multiblocks.MultiBlastfurnace;
public class TileMachineCasing extends TileEntity implements IMultiblockComponent { public class TileMachineCasing extends TileEntity {
@Override @Override
public boolean canUpdate() { public boolean canUpdate() {
@ -12,8 +10,4 @@ public class TileMachineCasing extends TileEntity implements IMultiblockComponen
return false; return false;
} }
@Override
public Class getMultiblockType() {
return MultiBlastfurnace.class;
}
} }