2017-05-07 00:18:59 +00:00
|
|
|
/*
|
2017-05-01 13:32:39 +00:00
|
|
|
* This file is part of ComputerCraft - http://www.computercraft.info
|
2017-05-13 18:20:39 +00:00
|
|
|
* Copyright Daniel Ratcliffe, 2011-2017. Do not distribute without permission.
|
2017-05-01 13:32:39 +00:00
|
|
|
* Send enquiries to dratcliffe@gmail.com
|
|
|
|
*/
|
|
|
|
|
|
|
|
package dan200.computercraft.shared.computer.items;
|
|
|
|
|
|
|
|
import dan200.computercraft.ComputerCraft;
|
|
|
|
import dan200.computercraft.api.filesystem.IMount;
|
|
|
|
import dan200.computercraft.api.media.IMedia;
|
|
|
|
import dan200.computercraft.shared.computer.core.ComputerFamily;
|
|
|
|
import net.minecraft.block.Block;
|
|
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
|
|
import net.minecraft.item.ItemBlock;
|
|
|
|
import net.minecraft.item.ItemStack;
|
2017-05-01 13:51:26 +00:00
|
|
|
import net.minecraft.util.SoundEvent;
|
2017-05-01 13:32:39 +00:00
|
|
|
import net.minecraft.world.World;
|
|
|
|
|
2017-05-06 23:07:42 +00:00
|
|
|
import javax.annotation.Nonnull;
|
2017-05-01 13:32:39 +00:00
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
public abstract class ItemComputerBase extends ItemBlock implements IComputerItem, IMedia
|
|
|
|
{
|
|
|
|
protected ItemComputerBase( Block block )
|
|
|
|
{
|
|
|
|
super( block );
|
|
|
|
}
|
|
|
|
|
|
|
|
public abstract ComputerFamily getFamily( int damage );
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public final int getMetadata( int damage )
|
|
|
|
{
|
|
|
|
return damage;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2017-05-07 00:16:08 +00:00
|
|
|
public void addInformation( @Nonnull ItemStack stack, @Nonnull EntityPlayer player, @Nonnull List<String> list, boolean debug )
|
2017-05-01 13:32:39 +00:00
|
|
|
{
|
|
|
|
if( debug )
|
|
|
|
{
|
|
|
|
int id = getComputerID( stack );
|
|
|
|
if( id >= 0 )
|
|
|
|
{
|
|
|
|
list.add( "(Computer ID: " + id + ")" );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// IComputerItem implementation
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public abstract int getComputerID( ItemStack stack );
|
|
|
|
|
|
|
|
@Override
|
2017-05-06 23:07:42 +00:00
|
|
|
public String getLabel( @Nonnull ItemStack stack )
|
2017-05-01 13:32:39 +00:00
|
|
|
{
|
|
|
|
if( stack.hasDisplayName() )
|
|
|
|
{
|
|
|
|
return stack.getDisplayName();
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public final ComputerFamily getFamily( ItemStack stack )
|
|
|
|
{
|
|
|
|
int damage = stack.getItemDamage();
|
|
|
|
return getFamily( damage );
|
|
|
|
}
|
|
|
|
|
|
|
|
// IMedia implementation
|
|
|
|
|
|
|
|
@Override
|
2017-05-06 23:07:42 +00:00
|
|
|
public boolean setLabel( @Nonnull ItemStack stack, String label )
|
2017-05-01 13:32:39 +00:00
|
|
|
{
|
|
|
|
if( label != null )
|
|
|
|
{
|
|
|
|
stack.setStackDisplayName( label );
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
stack.clearCustomName();
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2017-05-06 23:07:42 +00:00
|
|
|
public String getAudioTitle( @Nonnull ItemStack stack )
|
2017-05-01 13:32:39 +00:00
|
|
|
{
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2017-05-06 23:07:42 +00:00
|
|
|
public SoundEvent getAudio( @Nonnull ItemStack stack )
|
2017-05-01 13:32:39 +00:00
|
|
|
{
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2017-05-06 23:07:42 +00:00
|
|
|
public IMount createDataMount( @Nonnull ItemStack stack, @Nonnull World world )
|
2017-05-01 13:32:39 +00:00
|
|
|
{
|
|
|
|
ComputerFamily family = getFamily( stack );
|
|
|
|
if( family != ComputerFamily.Command )
|
|
|
|
{
|
|
|
|
int id = getComputerID( stack );
|
|
|
|
if( id >= 0 )
|
|
|
|
{
|
|
|
|
return ComputerCraft.createSaveDirMount( world, "computer/" + id, ComputerCraft.computerSpaceLimit );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
}
|