mirror of
https://github.com/SquidDev-CC/CC-Tweaked
synced 2025-02-19 04:20:04 +00:00
Some further improvements to BlockGeneric
- Only have computers implement custom block drop logic: everything else only drops in creative mode. - Fix redstone inputs not being received correctly. Introduced in 8b86a954ee4728d299cdfea7511867040e4e91ef, yes I'm a silly billy. - Only update the neighbour which changed.
This commit is contained in:
parent
709a6329c7
commit
3aa3852ff6
@ -235,7 +235,8 @@ public class ComputerCraft
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public static class Upgrades {
|
public static class Upgrades
|
||||||
|
{
|
||||||
public static TurtleModem advancedModem;
|
public static TurtleModem advancedModem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,11 +11,9 @@ import net.minecraft.block.ITileEntityProvider;
|
|||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraft.util.EnumHand;
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.NonNullList;
|
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.IBlockAccess;
|
import net.minecraft.world.IBlockAccess;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
@ -35,96 +33,32 @@ public abstract class BlockGeneric extends Block implements ITileEntityProvider
|
|||||||
|
|
||||||
protected abstract TileGeneric createTile( int damage );
|
protected abstract TileGeneric createTile( int damage );
|
||||||
|
|
||||||
@Override
|
|
||||||
public final void dropBlockAsItemWithChance( World world, @Nonnull BlockPos pos, @Nonnull IBlockState state, float chance, int fortune )
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public final void getDrops( @Nonnull NonNullList<ItemStack> drops, IBlockAccess world, BlockPos pos, @Nonnull IBlockState state, int fortune )
|
|
||||||
{
|
|
||||||
TileEntity tile = world.getTileEntity( pos );
|
|
||||||
if( tile instanceof TileGeneric )
|
|
||||||
{
|
|
||||||
TileGeneric generic = (TileGeneric) tile;
|
|
||||||
generic.getDroppedItems( drops, false );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean removedByPlayer( @Nonnull IBlockState state, World world, @Nonnull BlockPos pos, @Nonnull EntityPlayer player, boolean willHarvest )
|
|
||||||
{
|
|
||||||
if( !world.isRemote )
|
|
||||||
{
|
|
||||||
// Drop items
|
|
||||||
boolean creative = player.capabilities.isCreativeMode;
|
|
||||||
dropAllItems( world, pos, creative );
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove block
|
|
||||||
return super.removedByPlayer( state, world, pos, player, willHarvest );
|
|
||||||
}
|
|
||||||
|
|
||||||
public final void dropAllItems( World world, BlockPos pos, boolean creative )
|
|
||||||
{
|
|
||||||
// Get items to drop
|
|
||||||
NonNullList<ItemStack> drops = NonNullList.create();
|
|
||||||
TileEntity tile = world.getTileEntity( pos );
|
|
||||||
if( tile instanceof TileGeneric )
|
|
||||||
{
|
|
||||||
TileGeneric generic = (TileGeneric) tile;
|
|
||||||
generic.getDroppedItems( drops, creative );
|
|
||||||
}
|
|
||||||
|
|
||||||
// Drop items
|
|
||||||
if( drops.size() > 0 )
|
|
||||||
{
|
|
||||||
for( ItemStack item : drops )
|
|
||||||
{
|
|
||||||
dropItem( world, pos, item );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public final void dropItem( World world, BlockPos pos, @Nonnull ItemStack stack )
|
|
||||||
{
|
|
||||||
Block.spawnAsEntity( world, pos, stack );
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final void breakBlock( @Nonnull World world, @Nonnull BlockPos pos, @Nonnull IBlockState newState )
|
public final void breakBlock( @Nonnull World world, @Nonnull BlockPos pos, @Nonnull IBlockState newState )
|
||||||
{
|
{
|
||||||
TileEntity tile = world.getTileEntity( pos );
|
TileEntity tile = world.getTileEntity( pos );
|
||||||
super.breakBlock( world, pos, newState );
|
super.breakBlock( world, pos, newState );
|
||||||
world.removeTileEntity( pos );
|
world.removeTileEntity( pos );
|
||||||
if( tile instanceof TileGeneric )
|
if( tile instanceof TileGeneric ) ((TileGeneric) tile).destroy();
|
||||||
{
|
|
||||||
TileGeneric generic = (TileGeneric) tile;
|
|
||||||
generic.destroy();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final boolean onBlockActivated( World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ )
|
public final boolean onBlockActivated( World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ )
|
||||||
{
|
{
|
||||||
TileEntity tile = world.getTileEntity( pos );
|
TileEntity tile = world.getTileEntity( pos );
|
||||||
if( tile instanceof TileGeneric )
|
return tile instanceof TileGeneric && ((TileGeneric) tile).onActivate( player, hand, side, hitX, hitY, hitZ );
|
||||||
{
|
|
||||||
TileGeneric generic = (TileGeneric) tile;
|
|
||||||
return generic.onActivate( player, hand, side, hitX, hitY, hitZ );
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public final void neighborChanged( IBlockState state, World world, BlockPos pos, Block block, BlockPos neighorPos )
|
public final void neighborChanged( IBlockState state, World world, BlockPos pos, Block block, BlockPos neighbour )
|
||||||
{
|
{
|
||||||
TileEntity tile = world.getTileEntity( pos );
|
TileEntity tile = world.getTileEntity( pos );
|
||||||
if( tile instanceof TileGeneric )
|
if( tile instanceof TileGeneric )
|
||||||
{
|
{
|
||||||
TileGeneric generic = (TileGeneric) tile;
|
TileGeneric generic = (TileGeneric) tile;
|
||||||
generic.onNeighbourChange();
|
generic.onNeighbourChange();
|
||||||
|
generic.onNeighbourChange( neighbour );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -132,11 +66,7 @@ public abstract class BlockGeneric extends Block implements ITileEntityProvider
|
|||||||
public final void onNeighborChange( IBlockAccess world, BlockPos pos, BlockPos neighbour )
|
public final void onNeighborChange( IBlockAccess world, BlockPos pos, BlockPos neighbour )
|
||||||
{
|
{
|
||||||
TileEntity tile = world.getTileEntity( pos );
|
TileEntity tile = world.getTileEntity( pos );
|
||||||
if( tile instanceof TileGeneric )
|
if( tile instanceof TileGeneric ) ((TileGeneric) tile).onNeighbourTileEntityChange( neighbour );
|
||||||
{
|
|
||||||
TileGeneric generic = (TileGeneric) tile;
|
|
||||||
generic.onNeighbourTileEntityChange( neighbour );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -157,12 +87,7 @@ public abstract class BlockGeneric extends Block implements ITileEntityProvider
|
|||||||
public final boolean canConnectRedstone( IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing side )
|
public final boolean canConnectRedstone( IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing side )
|
||||||
{
|
{
|
||||||
TileEntity tile = world.getTileEntity( pos );
|
TileEntity tile = world.getTileEntity( pos );
|
||||||
if( tile instanceof TileGeneric )
|
return tile instanceof TileGeneric && ((TileGeneric) tile).getRedstoneConnectivity( side );
|
||||||
{
|
|
||||||
TileGeneric generic = (TileGeneric) tile;
|
|
||||||
return generic.getRedstoneConnectivity( side );
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -172,8 +97,7 @@ public abstract class BlockGeneric extends Block implements ITileEntityProvider
|
|||||||
TileEntity tile = world.getTileEntity( pos );
|
TileEntity tile = world.getTileEntity( pos );
|
||||||
if( tile instanceof TileGeneric && tile.hasWorld() )
|
if( tile instanceof TileGeneric && tile.hasWorld() )
|
||||||
{
|
{
|
||||||
TileGeneric generic = (TileGeneric) tile;
|
return ((TileGeneric) tile).getRedstoneOutput( oppositeSide.getOpposite() );
|
||||||
return generic.getRedstoneOutput( oppositeSide.getOpposite() );
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -190,8 +114,7 @@ public abstract class BlockGeneric extends Block implements ITileEntityProvider
|
|||||||
TileEntity tile = world.getTileEntity( pos );
|
TileEntity tile = world.getTileEntity( pos );
|
||||||
if( tile instanceof TileGeneric )
|
if( tile instanceof TileGeneric )
|
||||||
{
|
{
|
||||||
TileGeneric generic = (TileGeneric) tile;
|
return ((TileGeneric) tile).getBundledRedstoneConnectivity( side );
|
||||||
return generic.getBundledRedstoneConnectivity( side );
|
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -201,8 +124,7 @@ public abstract class BlockGeneric extends Block implements ITileEntityProvider
|
|||||||
TileEntity tile = world.getTileEntity( pos );
|
TileEntity tile = world.getTileEntity( pos );
|
||||||
if( tile instanceof TileGeneric && tile.hasWorld() )
|
if( tile instanceof TileGeneric && tile.hasWorld() )
|
||||||
{
|
{
|
||||||
TileGeneric generic = (TileGeneric) tile;
|
return ((TileGeneric) tile).getBundledRedstoneOutput( side );
|
||||||
return generic.getBundledRedstoneOutput( side );
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -9,14 +9,12 @@ package dan200.computercraft.shared.common;
|
|||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.network.NetworkManager;
|
import net.minecraft.network.NetworkManager;
|
||||||
import net.minecraft.network.play.server.SPacketUpdateTileEntity;
|
import net.minecraft.network.play.server.SPacketUpdateTileEntity;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraft.util.EnumHand;
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.NonNullList;
|
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
@ -55,19 +53,20 @@ public abstract class TileGeneric extends TileEntity
|
|||||||
getWorld().setBlockState( getPos(), newState, 3 );
|
getWorld().setBlockState( getPos(), newState, 3 );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void getDroppedItems( @Nonnull NonNullList<ItemStack> drops, boolean creative )
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean onActivate( EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ )
|
public boolean onActivate( EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ )
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public void onNeighbourChange()
|
public void onNeighbourChange()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void onNeighbourChange( @Nonnull BlockPos neighbour )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
public void onNeighbourTileEntityChange( @Nonnull BlockPos neighbour )
|
public void onNeighbourTileEntityChange( @Nonnull BlockPos neighbour )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -8,11 +8,13 @@ package dan200.computercraft.shared.computer.blocks;
|
|||||||
|
|
||||||
import dan200.computercraft.ComputerCraft;
|
import dan200.computercraft.ComputerCraft;
|
||||||
import dan200.computercraft.shared.computer.core.ComputerFamily;
|
import dan200.computercraft.shared.computer.core.ComputerFamily;
|
||||||
|
import dan200.computercraft.shared.computer.items.ComputerItemFactory;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.block.properties.PropertyDirection;
|
import net.minecraft.block.properties.PropertyDirection;
|
||||||
import net.minecraft.block.properties.PropertyEnum;
|
import net.minecraft.block.properties.PropertyEnum;
|
||||||
import net.minecraft.block.state.BlockStateContainer;
|
import net.minecraft.block.state.BlockStateContainer;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
@ -103,4 +105,11 @@ public class BlockCommandComputer extends BlockComputerBase
|
|||||||
{
|
{
|
||||||
return new TileCommandComputer();
|
return new TileCommandComputer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
@Override
|
||||||
|
protected ItemStack getItem( TileComputerBase tile )
|
||||||
|
{
|
||||||
|
return tile instanceof TileCommandComputer ? ComputerItemFactory.create( (TileComputer) tile ) : ItemStack.EMPTY;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,14 +15,11 @@ import net.minecraft.block.properties.PropertyDirection;
|
|||||||
import net.minecraft.block.properties.PropertyEnum;
|
import net.minecraft.block.properties.PropertyEnum;
|
||||||
import net.minecraft.block.state.BlockStateContainer;
|
import net.minecraft.block.state.BlockStateContainer;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.RayTraceResult;
|
|
||||||
import net.minecraft.world.IBlockAccess;
|
import net.minecraft.world.IBlockAccess;
|
||||||
import net.minecraft.world.World;
|
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
@ -136,9 +133,8 @@ public class BlockComputer extends BlockComputerBase
|
|||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public ItemStack getPickBlock( @Nonnull IBlockState state, RayTraceResult target, @Nonnull World world, @Nonnull BlockPos pos, EntityPlayer player )
|
protected ItemStack getItem( TileComputerBase tile )
|
||||||
{
|
{
|
||||||
TileEntity tile = world.getTileEntity( pos );
|
return tile instanceof TileComputer ? ComputerItemFactory.create( (TileComputer) tile ) : ItemStack.EMPTY;
|
||||||
return tile instanceof TileComputer ? ComputerItemFactory.create( (TileComputer) tile ) : super.getPickBlock( state, target, world, pos, player );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,9 +12,13 @@ import dan200.computercraft.shared.util.DirectionUtil;
|
|||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraft.util.NonNullList;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.util.math.RayTraceResult;
|
||||||
import net.minecraft.world.IBlockAccess;
|
import net.minecraft.world.IBlockAccess;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
@ -49,6 +53,9 @@ public abstract class BlockComputerBase extends BlockDirectional
|
|||||||
|
|
||||||
protected abstract TileComputerBase createTile( ComputerFamily family );
|
protected abstract TileComputerBase createTile( ComputerFamily family );
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
protected abstract ItemStack getItem( TileComputerBase tile );
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
@Deprecated
|
@Deprecated
|
||||||
@ -83,4 +90,55 @@ public abstract class BlockComputerBase extends BlockDirectional
|
|||||||
computer.updateInput();
|
computer.updateInput();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Nonnull
|
||||||
|
public ItemStack getPickBlock( @Nonnull IBlockState state, RayTraceResult target, @Nonnull World world, @Nonnull BlockPos pos, EntityPlayer player )
|
||||||
|
{
|
||||||
|
TileEntity tile = world.getTileEntity( pos );
|
||||||
|
if( tile instanceof TileComputerBase )
|
||||||
|
{
|
||||||
|
ItemStack result = getItem( (TileComputerBase) tile );
|
||||||
|
if( !result.isEmpty() ) return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
return super.getPickBlock( state, target, world, pos, player );
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final void dropBlockAsItemWithChance( World world, @Nonnull BlockPos pos, @Nonnull IBlockState state, float chance, int fortune )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final void getDrops( @Nonnull NonNullList<ItemStack> drops, IBlockAccess world, BlockPos pos, @Nonnull IBlockState state, int fortune )
|
||||||
|
{
|
||||||
|
TileEntity tile = world.getTileEntity( pos );
|
||||||
|
if( tile instanceof TileComputerBase )
|
||||||
|
{
|
||||||
|
ItemStack stack = getItem( (TileComputerBase) tile );
|
||||||
|
if( !stack.isEmpty() ) drops.add( stack );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean removedByPlayer( @Nonnull IBlockState state, World world, @Nonnull BlockPos pos, @Nonnull EntityPlayer player, boolean willHarvest )
|
||||||
|
{
|
||||||
|
if( !world.isRemote )
|
||||||
|
{
|
||||||
|
// We drop the item here instead of doing it in the harvest method, as we
|
||||||
|
// need to drop it for creative players too.
|
||||||
|
TileEntity tile = world.getTileEntity( pos );
|
||||||
|
if( tile instanceof TileComputerBase )
|
||||||
|
{
|
||||||
|
TileComputerBase computer = (TileComputerBase) tile;
|
||||||
|
if( !player.capabilities.isCreativeMode || computer.getLabel() != null )
|
||||||
|
{
|
||||||
|
spawnAsEntity( world, pos, getItem( computer ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return super.removedByPlayer( state, world, pos, player, willHarvest );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -9,13 +9,10 @@ package dan200.computercraft.shared.computer.blocks;
|
|||||||
import dan200.computercraft.ComputerCraft;
|
import dan200.computercraft.ComputerCraft;
|
||||||
import dan200.computercraft.shared.computer.core.ComputerFamily;
|
import dan200.computercraft.shared.computer.core.ComputerFamily;
|
||||||
import dan200.computercraft.shared.computer.core.ServerComputer;
|
import dan200.computercraft.shared.computer.core.ServerComputer;
|
||||||
import dan200.computercraft.shared.computer.items.ComputerItemFactory;
|
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraft.util.NonNullList;
|
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
@ -60,12 +57,6 @@ public class TileComputer extends TileComputerBase
|
|||||||
return m_proxy;
|
return m_proxy;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void getDroppedItems( @Nonnull NonNullList<ItemStack> drops, boolean creative )
|
|
||||||
{
|
|
||||||
if( !creative || getLabel() != null ) drops.add( ComputerItemFactory.create( this ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void openGUI( EntityPlayer player )
|
public void openGUI( EntityPlayer player )
|
||||||
{
|
{
|
||||||
|
@ -173,9 +173,9 @@ public abstract class TileComputerBase extends TileGeneric implements IComputerT
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNeighbourChange()
|
public void onNeighbourChange( @Nonnull BlockPos neighbour )
|
||||||
{
|
{
|
||||||
updateInput();
|
updateInput( neighbour );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -296,7 +296,7 @@ public abstract class TileComputerBase extends TileGeneric implements IComputerT
|
|||||||
int localDir = remapLocalSide( DirectionUtil.toLocal( this, dir ) );
|
int localDir = remapLocalSide( DirectionUtil.toLocal( this, dir ) );
|
||||||
if( !isRedstoneBlockedOnSide( localDir ) )
|
if( !isRedstoneBlockedOnSide( localDir ) )
|
||||||
{
|
{
|
||||||
computer.setRedstoneInput( localDir, getWorld().getRedstonePower( offset, offsetSide ) );
|
computer.setRedstoneInput( localDir, getWorld().getRedstonePower( offset, dir ) );
|
||||||
computer.setBundledRedstoneInput( localDir, BundledRedstone.getOutput( getWorld(), offset, offsetSide ) );
|
computer.setBundledRedstoneInput( localDir, BundledRedstone.getOutput( getWorld(), offset, offsetSide ) );
|
||||||
}
|
}
|
||||||
if( !isPeripheralBlockedOnSide( localDir ) )
|
if( !isPeripheralBlockedOnSide( localDir ) )
|
||||||
|
@ -29,6 +29,7 @@ import net.minecraft.item.ItemStack;
|
|||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.BlockRenderLayer;
|
import net.minecraft.util.BlockRenderLayer;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraft.util.NonNullList;
|
||||||
import net.minecraft.util.math.AxisAlignedBB;
|
import net.minecraft.util.math.AxisAlignedBB;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.RayTraceResult;
|
import net.minecraft.util.math.RayTraceResult;
|
||||||
@ -600,4 +601,10 @@ public class BlockPeripheral extends BlockGeneric
|
|||||||
? PeripheralItemFactory.create( (ITilePeripheral) tile )
|
? PeripheralItemFactory.create( (ITilePeripheral) tile )
|
||||||
: super.getPickBlock( state, target, world, pos, player );
|
: super.getPickBlock( state, target, world, pos, player );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getDrops( @Nonnull NonNullList<ItemStack> drops, IBlockAccess world, BlockPos pos, @Nonnull IBlockState state, int fortune )
|
||||||
|
{
|
||||||
|
drops.add( PeripheralItemFactory.create( getPeripheralType( state ), null, 1 ) );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,11 +10,9 @@ import dan200.computercraft.api.peripheral.IPeripheral;
|
|||||||
import dan200.computercraft.shared.common.IDirectionalTile;
|
import dan200.computercraft.shared.common.IDirectionalTile;
|
||||||
import dan200.computercraft.shared.common.TileGeneric;
|
import dan200.computercraft.shared.common.TileGeneric;
|
||||||
import dan200.computercraft.shared.peripheral.PeripheralType;
|
import dan200.computercraft.shared.peripheral.PeripheralType;
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraft.util.ITickable;
|
import net.minecraft.util.ITickable;
|
||||||
import net.minecraft.util.NonNullList;
|
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
@ -42,15 +40,6 @@ public abstract class TilePeripheralBase extends TileGeneric implements IPeriphe
|
|||||||
return (BlockPeripheral) super.getBlock();
|
return (BlockPeripheral) super.getBlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void getDroppedItems( @Nonnull NonNullList<ItemStack> drops, boolean creative )
|
|
||||||
{
|
|
||||||
if( !creative )
|
|
||||||
{
|
|
||||||
drops.add( PeripheralItemFactory.create( this ) );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final PeripheralType getPeripheralType()
|
public final PeripheralType getPeripheralType()
|
||||||
{
|
{
|
||||||
|
@ -14,6 +14,7 @@ import dan200.computercraft.shared.common.TileGeneric;
|
|||||||
import dan200.computercraft.shared.peripheral.PeripheralType;
|
import dan200.computercraft.shared.peripheral.PeripheralType;
|
||||||
import dan200.computercraft.shared.peripheral.common.PeripheralItemFactory;
|
import dan200.computercraft.shared.peripheral.common.PeripheralItemFactory;
|
||||||
import dan200.computercraft.shared.util.WorldUtil;
|
import dan200.computercraft.shared.util.WorldUtil;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.block.properties.PropertyBool;
|
import net.minecraft.block.properties.PropertyBool;
|
||||||
import net.minecraft.block.properties.PropertyEnum;
|
import net.minecraft.block.properties.PropertyEnum;
|
||||||
@ -26,6 +27,7 @@ import net.minecraft.entity.player.EntityPlayer;
|
|||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraft.util.NonNullList;
|
||||||
import net.minecraft.util.math.AxisAlignedBB;
|
import net.minecraft.util.math.AxisAlignedBB;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.RayTraceResult;
|
import net.minecraft.util.math.RayTraceResult;
|
||||||
@ -322,7 +324,10 @@ public class BlockCable extends BlockGeneric
|
|||||||
|
|
||||||
cable.modemChanged();
|
cable.modemChanged();
|
||||||
cable.connectionsChanged();
|
cable.connectionsChanged();
|
||||||
if( !world.isRemote && !player.capabilities.isCreativeMode ) dropItem( world, pos, item );
|
if( !world.isRemote && !player.capabilities.isCreativeMode )
|
||||||
|
{
|
||||||
|
Block.spawnAsEntity( world, pos, item );
|
||||||
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -332,6 +337,23 @@ public class BlockCable extends BlockGeneric
|
|||||||
return super.removedByPlayer( state, world, pos, player, willHarvest );
|
return super.removedByPlayer( state, world, pos, player, willHarvest );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getDrops( @Nonnull NonNullList<ItemStack> drops, IBlockAccess world, BlockPos pos, @Nonnull IBlockState state, int fortune )
|
||||||
|
{
|
||||||
|
PeripheralType type = getPeripheralType( state );
|
||||||
|
switch( type )
|
||||||
|
{
|
||||||
|
case Cable:
|
||||||
|
case WiredModem:
|
||||||
|
drops.add( PeripheralItemFactory.create( type, null, 1 ) );
|
||||||
|
break;
|
||||||
|
case WiredModemWithCable:
|
||||||
|
drops.add( PeripheralItemFactory.create( PeripheralType.WiredModem, null, 1 ) );
|
||||||
|
drops.add( PeripheralItemFactory.create( PeripheralType.Cable, null, 1 ) );
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
@Override
|
@Override
|
||||||
public ItemStack getPickBlock( @Nonnull IBlockState state, RayTraceResult hit, @Nonnull World world, @Nonnull BlockPos pos, EntityPlayer player )
|
public ItemStack getPickBlock( @Nonnull IBlockState state, RayTraceResult hit, @Nonnull World world, @Nonnull BlockPos pos, EntityPlayer player )
|
||||||
|
@ -20,13 +20,12 @@ import dan200.computercraft.shared.peripheral.common.PeripheralItemFactory;
|
|||||||
import dan200.computercraft.shared.peripheral.modem.ModemState;
|
import dan200.computercraft.shared.peripheral.modem.ModemState;
|
||||||
import dan200.computercraft.shared.util.TickScheduler;
|
import dan200.computercraft.shared.util.TickScheduler;
|
||||||
import dan200.computercraft.shared.wired.CapabilityWiredElement;
|
import dan200.computercraft.shared.wired.CapabilityWiredElement;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraft.util.EnumHand;
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.NonNullList;
|
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
import net.minecraft.util.text.TextComponentTranslation;
|
import net.minecraft.util.text.TextComponentTranslation;
|
||||||
@ -177,44 +176,17 @@ public class TileCable extends TileGeneric implements IPeripheralTile
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void getDroppedItems( @Nonnull NonNullList<ItemStack> drops, boolean creative )
|
public void onNeighbourChange( @Nonnull BlockPos neighbour )
|
||||||
{
|
|
||||||
if( !creative )
|
|
||||||
{
|
|
||||||
PeripheralType type = getPeripheralType();
|
|
||||||
switch( type )
|
|
||||||
{
|
|
||||||
case Cable:
|
|
||||||
case WiredModem:
|
|
||||||
{
|
|
||||||
drops.add( PeripheralItemFactory.create( type, null, 1 ) );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case WiredModemWithCable:
|
|
||||||
{
|
|
||||||
drops.add( PeripheralItemFactory.create( PeripheralType.WiredModem, null, 1 ) );
|
|
||||||
drops.add( PeripheralItemFactory.create( PeripheralType.Cable, null, 1 ) );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onNeighbourChange()
|
|
||||||
{
|
{
|
||||||
EnumFacing dir = getDirection();
|
EnumFacing dir = getDirection();
|
||||||
if( !getWorld().isSideSolid(
|
if( neighbour.equals( getPos().offset( dir ) ) && !getWorld().isSideSolid( neighbour, dir.getOpposite() ) )
|
||||||
getPos().offset( dir ),
|
|
||||||
dir.getOpposite()
|
|
||||||
) )
|
|
||||||
{
|
{
|
||||||
switch( getPeripheralType() )
|
switch( getPeripheralType() )
|
||||||
{
|
{
|
||||||
case WiredModem:
|
case WiredModem:
|
||||||
{
|
{
|
||||||
// Drop everything and remove block
|
// Drop everything and remove block
|
||||||
getBlock().dropAllItems( getWorld(), getPos(), false );
|
getBlock().dropBlockAsItem( getWorld(), getPos(), getBlockState(), 0 );
|
||||||
getWorld().setBlockToAir( getPos() );
|
getWorld().setBlockToAir( getPos() );
|
||||||
|
|
||||||
// This'll call #destroy(), so we don't need to reset the network here.
|
// This'll call #destroy(), so we don't need to reset the network here.
|
||||||
@ -223,7 +195,7 @@ public class TileCable extends TileGeneric implements IPeripheralTile
|
|||||||
case WiredModemWithCable:
|
case WiredModemWithCable:
|
||||||
{
|
{
|
||||||
// Drop the modem and convert to cable
|
// Drop the modem and convert to cable
|
||||||
getBlock().dropItem( getWorld(), getPos(), PeripheralItemFactory.create( PeripheralType.WiredModem, null, 1 ) );
|
Block.spawnAsEntity( getWorld(), getPos(), PeripheralItemFactory.create( PeripheralType.WiredModem, null, 1 ) );
|
||||||
setBlockState( getBlockState().withProperty( BlockCable.Properties.MODEM, BlockCableModemVariant.None ) );
|
setBlockState( getBlockState().withProperty( BlockCable.Properties.MODEM, BlockCableModemVariant.None ) );
|
||||||
modemChanged();
|
modemChanged();
|
||||||
connectionsChanged();
|
connectionsChanged();
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
package dan200.computercraft.shared.peripheral.modem.wired;
|
package dan200.computercraft.shared.peripheral.modem.wired;
|
||||||
|
|
||||||
import com.google.common.base.Objects;
|
import com.google.common.base.Objects;
|
||||||
import dan200.computercraft.ComputerCraft;
|
|
||||||
import dan200.computercraft.api.ComputerCraftAPI;
|
import dan200.computercraft.api.ComputerCraftAPI;
|
||||||
import dan200.computercraft.api.network.wired.IWiredElement;
|
import dan200.computercraft.api.network.wired.IWiredElement;
|
||||||
import dan200.computercraft.api.network.wired.IWiredNode;
|
import dan200.computercraft.api.network.wired.IWiredNode;
|
||||||
@ -19,11 +18,9 @@ import dan200.computercraft.shared.peripheral.modem.ModemState;
|
|||||||
import dan200.computercraft.shared.util.TickScheduler;
|
import dan200.computercraft.shared.util.TickScheduler;
|
||||||
import dan200.computercraft.shared.wired.CapabilityWiredElement;
|
import dan200.computercraft.shared.wired.CapabilityWiredElement;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraft.util.EnumHand;
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.NonNullList;
|
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
import net.minecraft.util.text.TextComponentString;
|
import net.minecraft.util.text.TextComponentString;
|
||||||
@ -136,24 +133,9 @@ public class TileWiredModemFull extends TileGeneric implements IPeripheralTile
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void getDroppedItems( @Nonnull NonNullList<ItemStack> drops, boolean creative )
|
public void onNeighbourChange( @Nonnull BlockPos neighbour )
|
||||||
{
|
{
|
||||||
drops.add( new ItemStack( ComputerCraft.Items.wiredModemFull ) );
|
onNeighbourTileEntityChange( neighbour );
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onNeighbourChange()
|
|
||||||
{
|
|
||||||
if( !world.isRemote && m_peripheralAccessAllowed )
|
|
||||||
{
|
|
||||||
boolean hasChanged = false;
|
|
||||||
for( EnumFacing facing : EnumFacing.VALUES )
|
|
||||||
{
|
|
||||||
hasChanged |= m_peripherals[facing.ordinal()].attach( world, getPos(), facing );
|
|
||||||
}
|
|
||||||
|
|
||||||
if( hasChanged ) updateConnectedPeripherals();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -6,12 +6,7 @@
|
|||||||
|
|
||||||
package dan200.computercraft.shared.peripheral.modem.wireless;
|
package dan200.computercraft.shared.peripheral.modem.wireless;
|
||||||
|
|
||||||
import dan200.computercraft.ComputerCraft;
|
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraft.util.NonNullList;
|
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
|
||||||
|
|
||||||
public class TileAdvancedModem extends TileWirelessModemBase
|
public class TileAdvancedModem extends TileWirelessModemBase
|
||||||
{
|
{
|
||||||
@ -25,10 +20,4 @@ public class TileAdvancedModem extends TileWirelessModemBase
|
|||||||
{
|
{
|
||||||
return getBlockState().getValue( BlockAdvancedModem.Properties.FACING );
|
return getBlockState().getValue( BlockAdvancedModem.Properties.FACING );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void getDroppedItems( @Nonnull NonNullList<ItemStack> drops, boolean creative )
|
|
||||||
{
|
|
||||||
if( !creative ) drops.add( new ItemStack( ComputerCraft.Items.advancedModem ) );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -12,11 +12,8 @@ import dan200.computercraft.shared.peripheral.PeripheralType;
|
|||||||
import dan200.computercraft.shared.peripheral.common.BlockPeripheral;
|
import dan200.computercraft.shared.peripheral.common.BlockPeripheral;
|
||||||
import dan200.computercraft.shared.peripheral.common.BlockPeripheralVariant;
|
import dan200.computercraft.shared.peripheral.common.BlockPeripheralVariant;
|
||||||
import dan200.computercraft.shared.peripheral.common.ITilePeripheral;
|
import dan200.computercraft.shared.peripheral.common.ITilePeripheral;
|
||||||
import dan200.computercraft.shared.peripheral.common.PeripheralItemFactory;
|
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraft.util.NonNullList;
|
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
@ -80,12 +77,6 @@ public class TileWirelessModem extends TileWirelessModemBase implements IDirecti
|
|||||||
return super.shouldRefresh( world, pos, oldState, newState ) || ComputerCraft.Blocks.peripheral.getPeripheralType( newState ) != PeripheralType.WirelessModem;
|
return super.shouldRefresh( world, pos, oldState, newState ) || ComputerCraft.Blocks.peripheral.getPeripheralType( newState ) != PeripheralType.WirelessModem;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void getDroppedItems( @Nonnull NonNullList<ItemStack> drops, boolean creative )
|
|
||||||
{
|
|
||||||
if( !creative ) drops.add( PeripheralItemFactory.create( PeripheralType.WirelessModem, null, 1 ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PeripheralType getPeripheralType()
|
public PeripheralType getPeripheralType()
|
||||||
{
|
{
|
||||||
|
@ -121,13 +121,13 @@ public abstract class TileWirelessModemBase extends TileGeneric implements IPeri
|
|||||||
protected abstract EnumFacing getDirection();
|
protected abstract EnumFacing getDirection();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNeighbourChange()
|
public void onNeighbourChange( @Nonnull BlockPos neighbour )
|
||||||
{
|
{
|
||||||
EnumFacing dir = getDirection();
|
EnumFacing dir = getDirection();
|
||||||
if( !getWorld().isSideSolid( getPos().offset( dir ), dir.getOpposite() ) )
|
if( neighbour.equals( getPos().offset( dir ) ) && !getWorld().isSideSolid( neighbour, dir.getOpposite() ) )
|
||||||
{
|
{
|
||||||
// Drop everything and remove block
|
// Drop everything and remove block
|
||||||
getBlock().dropAllItems( getWorld(), getPos(), false );
|
getBlock().dropBlockAsItem( getWorld(), getPos(), getBlockState(), 0 );
|
||||||
getWorld().setBlockToAir( getPos() );
|
getWorld().setBlockToAir( getPos() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,15 +16,12 @@ import dan200.computercraft.shared.peripheral.PeripheralType;
|
|||||||
import dan200.computercraft.shared.peripheral.common.BlockPeripheral;
|
import dan200.computercraft.shared.peripheral.common.BlockPeripheral;
|
||||||
import dan200.computercraft.shared.peripheral.common.IPeripheralTile;
|
import dan200.computercraft.shared.peripheral.common.IPeripheralTile;
|
||||||
import dan200.computercraft.shared.peripheral.common.ITilePeripheral;
|
import dan200.computercraft.shared.peripheral.common.ITilePeripheral;
|
||||||
import dan200.computercraft.shared.peripheral.common.PeripheralItemFactory;
|
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraft.util.EnumHand;
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.NonNullList;
|
|
||||||
import net.minecraft.util.math.AxisAlignedBB;
|
import net.minecraft.util.math.AxisAlignedBB;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
@ -757,10 +754,4 @@ public class TileMonitor extends TileGeneric implements ITilePeripheral, IPeriph
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void getDroppedItems( @Nonnull NonNullList<ItemStack> drops, boolean creative )
|
|
||||||
{
|
|
||||||
if( !creative ) drops.add( PeripheralItemFactory.create( this ) );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,6 @@ import net.minecraft.util.EnumBlockRenderType;
|
|||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraft.util.math.AxisAlignedBB;
|
import net.minecraft.util.math.AxisAlignedBB;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.RayTraceResult;
|
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
import net.minecraft.world.IBlockAccess;
|
import net.minecraft.world.IBlockAccess;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
@ -200,11 +199,10 @@ public class BlockTurtle extends BlockComputerBase
|
|||||||
return super.getExplosionResistance( exploder );
|
return super.getExplosionResistance( exploder );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
public ItemStack getPickBlock( @Nonnull IBlockState state, RayTraceResult target, @Nonnull World world, @Nonnull BlockPos pos, EntityPlayer player )
|
@Override
|
||||||
|
protected ItemStack getItem( TileComputerBase tile )
|
||||||
{
|
{
|
||||||
TileEntity tile = world.getTileEntity( pos );
|
return tile instanceof TileTurtle ? TurtleItemFactory.create( (TileTurtle) tile ) : ItemStack.EMPTY;
|
||||||
return tile instanceof TileTurtle ? TurtleItemFactory.create( (TileTurtle) tile ) : super.getPickBlock( state, target, world, pos, player );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,6 @@ import dan200.computercraft.shared.computer.core.ComputerFamily;
|
|||||||
import dan200.computercraft.shared.computer.core.ServerComputer;
|
import dan200.computercraft.shared.computer.core.ServerComputer;
|
||||||
import dan200.computercraft.shared.turtle.apis.TurtleAPI;
|
import dan200.computercraft.shared.turtle.apis.TurtleAPI;
|
||||||
import dan200.computercraft.shared.turtle.core.TurtleBrain;
|
import dan200.computercraft.shared.turtle.core.TurtleBrain;
|
||||||
import dan200.computercraft.shared.turtle.items.TurtleItemFactory;
|
|
||||||
import dan200.computercraft.shared.util.DefaultInventory;
|
import dan200.computercraft.shared.util.DefaultInventory;
|
||||||
import dan200.computercraft.shared.util.InventoryUtil;
|
import dan200.computercraft.shared.util.InventoryUtil;
|
||||||
import dan200.computercraft.shared.util.RedstoneUtil;
|
import dan200.computercraft.shared.util.RedstoneUtil;
|
||||||
@ -166,12 +165,6 @@ public class TileTurtle extends TileComputerBase implements ITurtleTile, Default
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void getDroppedItems( @Nonnull NonNullList<ItemStack> drops, boolean creative )
|
|
||||||
{
|
|
||||||
if( !creative || getLabel() != null ) drops.add( TurtleItemFactory.create( this ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onActivate( EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ )
|
public boolean onActivate( EntityPlayer player, EnumHand hand, EnumFacing side, float hitX, float hitY, float hitZ )
|
||||||
{
|
{
|
||||||
@ -262,38 +255,26 @@ public class TileTurtle extends TileComputerBase implements ITurtleTile, Default
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNeighbourChange()
|
public void onNeighbourChange( @Nonnull BlockPos neighbour )
|
||||||
{
|
{
|
||||||
if( m_moveState == MoveState.NOT_MOVED )
|
if( m_moveState == MoveState.NOT_MOVED ) super.onNeighbourChange( neighbour );
|
||||||
{
|
|
||||||
super.onNeighbourChange();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNeighbourTileEntityChange( @Nonnull BlockPos neighbour )
|
public void onNeighbourTileEntityChange( @Nonnull BlockPos neighbour )
|
||||||
{
|
{
|
||||||
if( m_moveState == MoveState.NOT_MOVED )
|
if( m_moveState == MoveState.NOT_MOVED ) super.onNeighbourTileEntityChange( neighbour );
|
||||||
{
|
|
||||||
super.onNeighbourTileEntityChange( neighbour );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void notifyMoveStart()
|
public void notifyMoveStart()
|
||||||
{
|
{
|
||||||
if( m_moveState == MoveState.NOT_MOVED )
|
if( m_moveState == MoveState.NOT_MOVED ) m_moveState = MoveState.IN_PROGRESS;
|
||||||
{
|
|
||||||
m_moveState = MoveState.IN_PROGRESS;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void notifyMoveEnd()
|
public void notifyMoveEnd()
|
||||||
{
|
{
|
||||||
// MoveState.MOVED is final
|
// MoveState.MOVED is final
|
||||||
if( m_moveState == MoveState.IN_PROGRESS )
|
if( m_moveState == MoveState.IN_PROGRESS ) m_moveState = MoveState.NOT_MOVED;
|
||||||
{
|
|
||||||
m_moveState = MoveState.NOT_MOVED;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -18,7 +18,7 @@ public class RedstoneUtil
|
|||||||
@Deprecated
|
@Deprecated
|
||||||
public static int getRedstoneOutput( World world, BlockPos pos, EnumFacing side )
|
public static int getRedstoneOutput( World world, BlockPos pos, EnumFacing side )
|
||||||
{
|
{
|
||||||
return world.getRedstonePower( pos, side );
|
return world.getRedstonePower( pos, side.getOpposite() );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Deprecated
|
@Deprecated
|
||||||
|
Loading…
x
Reference in New Issue
Block a user