Added BC 6x support for facades and added builder support.
This commit is contained in:
parent
1f126054e4
commit
9ad9c7b370
6 changed files with 281 additions and 4 deletions
|
@ -1,5 +1,7 @@
|
||||||
package appeng.integration.modules;
|
package appeng.integration.modules;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
|
@ -12,12 +14,19 @@ import appeng.api.config.TunnelType;
|
||||||
import appeng.api.definitions.Blocks;
|
import appeng.api.definitions.Blocks;
|
||||||
import appeng.api.features.IP2PTunnelRegistry;
|
import appeng.api.features.IP2PTunnelRegistry;
|
||||||
import appeng.api.parts.IFacadePart;
|
import appeng.api.parts.IFacadePart;
|
||||||
|
import appeng.api.util.AEItemDefinition;
|
||||||
|
import appeng.api.util.IOrientableBlock;
|
||||||
|
import appeng.core.AppEng;
|
||||||
import appeng.facade.FacadePart;
|
import appeng.facade.FacadePart;
|
||||||
import appeng.integration.BaseModule;
|
import appeng.integration.BaseModule;
|
||||||
import appeng.integration.abstraction.IBC;
|
import appeng.integration.abstraction.IBC;
|
||||||
import appeng.integration.modules.helpers.BCPipeHandler;
|
import appeng.integration.modules.BCHelpers.AECableSchematicTile;
|
||||||
|
import appeng.integration.modules.BCHelpers.AEGenericSchematicTile;
|
||||||
|
import appeng.integration.modules.BCHelpers.AERotateableBlockSchematic;
|
||||||
|
import appeng.integration.modules.BCHelpers.BCPipeHandler;
|
||||||
import buildcraft.BuildCraftEnergy;
|
import buildcraft.BuildCraftEnergy;
|
||||||
import buildcraft.BuildCraftTransport;
|
import buildcraft.BuildCraftTransport;
|
||||||
|
import buildcraft.api.blueprints.SchematicRegistry;
|
||||||
import buildcraft.api.tools.IToolWrench;
|
import buildcraft.api.tools.IToolWrench;
|
||||||
import buildcraft.api.transport.IPipeConnection;
|
import buildcraft.api.transport.IPipeConnection;
|
||||||
import buildcraft.api.transport.IPipeTile;
|
import buildcraft.api.transport.IPipeTile;
|
||||||
|
@ -189,7 +198,16 @@ public class BC extends BaseModule implements IBC
|
||||||
addFacade( b.blockQuartz.stack( 1 ) );
|
addFacade( b.blockQuartz.stack( 1 ) );
|
||||||
addFacade( b.blockQuartzChiseled.stack( 1 ) );
|
addFacade( b.blockQuartzChiseled.stack( 1 ) );
|
||||||
addFacade( b.blockQuartzPiller.stack( 1 ) );
|
addFacade( b.blockQuartzPiller.stack( 1 ) );
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
initBuilderSupport();
|
||||||
|
}
|
||||||
|
catch (Throwable builderSupport)
|
||||||
|
{
|
||||||
|
// not supported?
|
||||||
|
}
|
||||||
|
|
||||||
Block skyStone = b.blockSkyStone.block();
|
Block skyStone = b.blockSkyStone.block();
|
||||||
if ( skyStone != null )
|
if ( skyStone != null )
|
||||||
{
|
{
|
||||||
|
@ -200,6 +218,42 @@ public class BC extends BaseModule implements IBC
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void initBuilderSupport()
|
||||||
|
{
|
||||||
|
SchematicRegistry.declareBlueprintSupport( AppEng.modid );
|
||||||
|
|
||||||
|
Blocks blks = AEApi.instance().blocks();
|
||||||
|
Block cable = blks.blockMultiPart.block();
|
||||||
|
for (Field f : blks.getClass().getFields())
|
||||||
|
{
|
||||||
|
AEItemDefinition def;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
def = (AEItemDefinition) f.get( blks );
|
||||||
|
if ( def != null )
|
||||||
|
{
|
||||||
|
Block myBlock = def.block();
|
||||||
|
if ( myBlock instanceof IOrientableBlock && ((IOrientableBlock) myBlock).usesMetadata() && def.entity() == null )
|
||||||
|
{
|
||||||
|
SchematicRegistry.registerSchematicBlock( myBlock, AERotateableBlockSchematic.class );
|
||||||
|
}
|
||||||
|
else if ( myBlock == cable )
|
||||||
|
{
|
||||||
|
SchematicRegistry.registerSchematicBlock( myBlock, AECableSchematicTile.class );
|
||||||
|
}
|
||||||
|
else if ( def.entity() != null )
|
||||||
|
{
|
||||||
|
SchematicRegistry.registerSchematicBlock( myBlock, AEGenericSchematicTile.class );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Throwable t)
|
||||||
|
{
|
||||||
|
// :P
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void PostInit()
|
public void PostInit()
|
||||||
{
|
{
|
||||||
|
|
143
integration/modules/BCHelpers/AECableSchematicTile.java
Normal file
143
integration/modules/BCHelpers/AECableSchematicTile.java
Normal file
|
@ -0,0 +1,143 @@
|
||||||
|
package appeng.integration.modules.BCHelpers;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.Vec3;
|
||||||
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
import appeng.api.parts.IFacadeContainer;
|
||||||
|
import appeng.api.parts.IPart;
|
||||||
|
import appeng.api.parts.IPartHost;
|
||||||
|
import appeng.api.parts.LayerFlags;
|
||||||
|
import appeng.api.parts.SelectedPart;
|
||||||
|
import appeng.api.util.AEColor;
|
||||||
|
import appeng.api.util.DimensionalCoord;
|
||||||
|
import appeng.parts.CableBusContainer;
|
||||||
|
import buildcraft.api.blueprints.IBuilderContext;
|
||||||
|
|
||||||
|
public class AECableSchematicTile extends AEGenericSchematicTile implements IPartHost
|
||||||
|
{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void rotateLeft(IBuilderContext context)
|
||||||
|
{
|
||||||
|
CableBusContainer cbc = new CableBusContainer( this );
|
||||||
|
cbc.readFromNBT( cpt );
|
||||||
|
|
||||||
|
cbc.rotateLeft();
|
||||||
|
|
||||||
|
cpt = new NBTTagCompound();
|
||||||
|
cbc.writeToNBT( cpt );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IFacadeContainer getFacadeContainer()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canAddPart(ItemStack part, ForgeDirection side)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ForgeDirection addPart(ItemStack is, ForgeDirection side, EntityPlayer owner)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IPart getPart(ForgeDirection side)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removePart(ForgeDirection side, boolean suppressUpdate)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void markForUpdate()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DimensionalCoord getLocation()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TileEntity getTile()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AEColor getColor()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void clearContainer()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isBlocked(ForgeDirection side)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SelectedPart selectPart(Vec3 pos)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void markForSave()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void partChanged()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasRedstone(ForgeDirection side)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isEmpty()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Set<LayerFlags> getLayerFlags()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void cleanup()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
59
integration/modules/BCHelpers/AEGenericSchematicTile.java
Normal file
59
integration/modules/BCHelpers/AEGenericSchematicTile.java
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
package appeng.integration.modules.BCHelpers;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
import appeng.tile.AEBaseTile;
|
||||||
|
import appeng.util.Platform;
|
||||||
|
import buildcraft.api.blueprints.IBuilderContext;
|
||||||
|
import buildcraft.api.blueprints.SchematicTile;
|
||||||
|
|
||||||
|
public class AEGenericSchematicTile extends SchematicTile
|
||||||
|
{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeRequirementsToSchematic(IBuilderContext context, int x, int y, int z)
|
||||||
|
{
|
||||||
|
TileEntity tile = context.world().getTileEntity( x, y, z );
|
||||||
|
ArrayList<ItemStack> list = new ArrayList();
|
||||||
|
if ( tile instanceof AEBaseTile )
|
||||||
|
{
|
||||||
|
AEBaseTile tcb = (AEBaseTile) tile;
|
||||||
|
tcb.getDrops( tile.getWorldObj(), tile.xCoord, tile.yCoord, tile.zCoord, list );
|
||||||
|
}
|
||||||
|
|
||||||
|
storedRequirements = list.toArray( new ItemStack[list.size()] );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void rotateLeft(IBuilderContext context)
|
||||||
|
{
|
||||||
|
if ( cpt.hasKey( "orientation_forward" ) && cpt.hasKey( "orientation_up" ) )
|
||||||
|
{
|
||||||
|
String forward = cpt.getString( "orientation_forward" );
|
||||||
|
String up = cpt.getString( "orientation_up" );
|
||||||
|
|
||||||
|
if ( forward != null && up != null )
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
ForgeDirection fdForward = ForgeDirection.valueOf( forward );
|
||||||
|
ForgeDirection fdUp = ForgeDirection.valueOf( up );
|
||||||
|
|
||||||
|
fdForward = Platform.rotateAround( fdForward, ForgeDirection.DOWN );
|
||||||
|
fdUp = Platform.rotateAround( fdUp, ForgeDirection.DOWN );
|
||||||
|
|
||||||
|
cpt.setString( "orientation_forward", fdForward.name() );
|
||||||
|
cpt.setString( "orientation_up", fdUp.name() );
|
||||||
|
}
|
||||||
|
catch (Throwable t)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
package appeng.integration.modules.BCHelpers;
|
||||||
|
|
||||||
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
import appeng.util.Platform;
|
||||||
|
import buildcraft.api.blueprints.IBuilderContext;
|
||||||
|
import buildcraft.api.blueprints.SchematicBlock;
|
||||||
|
|
||||||
|
public class AERotateableBlockSchematic extends SchematicBlock
|
||||||
|
{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void rotateLeft(IBuilderContext context)
|
||||||
|
{
|
||||||
|
if ( meta < 6 )
|
||||||
|
{
|
||||||
|
ForgeDirection d = Platform.rotateAround( ForgeDirection.values()[meta], ForgeDirection.DOWN );
|
||||||
|
meta = d.ordinal();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
package appeng.integration.modules.helpers;
|
package appeng.integration.modules.BCHelpers;
|
||||||
|
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
import net.minecraftforge.common.util.ForgeDirection;
|
|
@ -1,4 +1,4 @@
|
||||||
package appeng.integration.modules.helpers;
|
package appeng.integration.modules.BCHelpers;
|
||||||
|
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
import net.minecraftforge.common.util.ForgeDirection;
|
Loading…
Reference in a new issue