1
0
mirror of https://github.com/SquidDev-CC/CC-Tweaked synced 2024-06-25 22:53:22 +00:00
CC-Tweaked/src/main/java/dan200/computercraft/shared/computer/items/ItemComputerBase.java

95 lines
2.8 KiB
Java
Raw Normal View History

/*
* This file is part of ComputerCraft - http://www.computercraft.info
2019-01-01 01:10:18 +00:00
* Copyright Daniel Ratcliffe, 2011-2019. Do not distribute without permission.
* Send enquiries to dratcliffe@gmail.com
*/
package dan200.computercraft.shared.computer.items;
import dan200.computercraft.ComputerCraft;
import dan200.computercraft.api.ComputerCraftAPI;
import dan200.computercraft.api.filesystem.IMount;
import dan200.computercraft.api.media.IMedia;
import dan200.computercraft.shared.computer.blocks.BlockComputerBase;
import dan200.computercraft.shared.computer.core.ComputerFamily;
2019-04-03 22:27:10 +00:00
import net.minecraft.client.item.TooltipContext;
import net.minecraft.item.ItemStack;
2019-04-03 22:27:10 +00:00
import net.minecraft.item.block.BlockItem;
import net.minecraft.text.StringTextComponent;
import net.minecraft.text.TextComponent;
import net.minecraft.text.TextFormat;
import net.minecraft.text.TranslatableTextComponent;
import net.minecraft.world.World;
2017-05-06 23:07:42 +00:00
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.List;
2019-04-03 22:27:10 +00:00
public abstract class ItemComputerBase extends BlockItem implements IComputerItem, IMedia
{
private final ComputerFamily family;
2019-04-03 22:27:10 +00:00
public ItemComputerBase( BlockComputerBase<?> block, Settings settings )
{
super( block, settings );
family = block.getFamily();
}
@Override
2019-04-03 22:27:10 +00:00
public void buildTooltip( @Nonnull ItemStack stack, @Nullable World world, @Nonnull List<TextComponent> list, @Nonnull TooltipContext options )
{
if( options.isAdvanced() )
{
int id = getComputerID( stack );
if( id >= 0 )
{
2019-04-03 22:27:10 +00:00
list.add( new TranslatableTextComponent( "gui.computercraft.tooltip.computer_id", id )
.applyFormat( TextFormat.GRAY ) );
}
}
}
@Override
2017-05-06 23:07:42 +00:00
public String getLabel( @Nonnull ItemStack stack )
{
2019-04-03 22:27:10 +00:00
return stack.hasDisplayName() ? stack.getDisplayName().getString() : null;
}
@Override
public final ComputerFamily getFamily()
{
return family;
}
// IMedia implementation
@Override
2017-05-06 23:07:42 +00:00
public boolean setLabel( @Nonnull ItemStack stack, String label )
{
if( label != null )
{
2019-04-03 22:27:10 +00:00
stack.setDisplayName( new StringTextComponent( label ) );
}
else
{
2019-04-03 22:27:10 +00:00
stack.removeDisplayName();
}
return true;
}
@Override
2017-05-06 23:07:42 +00:00
public IMount createDataMount( @Nonnull ItemStack stack, @Nonnull World world )
{
ComputerFamily family = getFamily();
if( family != ComputerFamily.Command )
{
int id = getComputerID( stack );
if( id >= 0 )
{
return ComputerCraftAPI.createSaveDirMount( world, "computer/" + id, ComputerCraft.computerSpaceLimit );
}
}
return null;
}
}