1
0
mirror of https://github.com/SquidDev-CC/CC-Tweaked synced 2025-06-27 15:43:11 +00:00

Merge branch 'mc-1.14.x' into mc-1.15.x

This commit is contained in:
SquidDev 2020-05-04 10:05:32 +01:00
commit e918f55b58
34 changed files with 550 additions and 528 deletions

View File

@ -17,6 +17,9 @@
{ {
"condition": "computercraft:block_named" "condition": "computercraft:block_named"
}, },
{
"condition": "computercraft:has_id"
},
{ {
"condition": "minecraft:inverted", "condition": "minecraft:inverted",
"term": { "term": {

View File

@ -17,6 +17,9 @@
{ {
"condition": "computercraft:block_named" "condition": "computercraft:block_named"
}, },
{
"condition": "computercraft:has_id"
},
{ {
"condition": "minecraft:inverted", "condition": "minecraft:inverted",
"term": { "term": {

View File

@ -17,6 +17,9 @@
{ {
"condition": "computercraft:block_named" "condition": "computercraft:block_named"
}, },
{
"condition": "computercraft:has_id"
},
{ {
"condition": "minecraft:inverted", "condition": "minecraft:inverted",
"term": { "term": {

View File

@ -17,6 +17,9 @@
{ {
"condition": "computercraft:block_named" "condition": "computercraft:block_named"
}, },
{
"condition": "computercraft:has_id"
},
{ {
"condition": "minecraft:inverted", "condition": "minecraft:inverted",
"term": { "term": {

View File

@ -46,10 +46,9 @@ public final class FixedWidthFontRenderer
return (float) ((rgb[0] + rgb[1] + rgb[2]) / 3); return (float) ((rgb[0] + rgb[1] + rgb[2]) / 3);
} }
private static int getColour( char c ) private static int getColour( char c, Colour def )
{ {
int i = "0123456789abcdef".indexOf( c ); return 15 - Terminal.getColour( c, def );
return i < 0 ? 0 : 15 - i;
} }
private static void drawChar( Matrix4f transform, IVertexBuilder buffer, float x, float y, int index, float r, float g, float b ) private static void drawChar( Matrix4f transform, IVertexBuilder buffer, float x, float y, int index, float r, float g, float b )
@ -83,7 +82,7 @@ public final class FixedWidthFontRenderer
private static void drawQuad( Matrix4f transform, IVertexBuilder buffer, float x, float y, float width, float height, Palette palette, boolean greyscale, char colourIndex ) private static void drawQuad( Matrix4f transform, IVertexBuilder buffer, float x, float y, float width, float height, Palette palette, boolean greyscale, char colourIndex )
{ {
double[] colour = palette.getColour( getColour( colourIndex ) ); double[] colour = palette.getColour( getColour( colourIndex, Colour.BLACK ) );
float r, g, b; float r, g, b;
if( greyscale ) if( greyscale )
{ {
@ -151,7 +150,7 @@ public final class FixedWidthFontRenderer
for( int i = 0; i < text.length(); i++ ) for( int i = 0; i < text.length(); i++ )
{ {
double[] colour = palette.getColour( 15 - "0123456789abcdef".indexOf( textColour.charAt( i ) ) ); double[] colour = palette.getColour( getColour( textColour.charAt( i ), Colour.BLACK ) );
float r, g, b; float r, g, b;
if( greyscale ) if( greyscale )
{ {

View File

@ -5,18 +5,20 @@
*/ */
package dan200.computercraft.core.terminal; package dan200.computercraft.core.terminal;
import dan200.computercraft.shared.util.Colour;
import dan200.computercraft.shared.util.Palette; import dan200.computercraft.shared.util.Palette;
import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.CompoundNBT;
import net.minecraft.network.PacketBuffer;
public class Terminal public class Terminal
{ {
private static final String base16 = "0123456789abcdef"; private static final String base16 = "0123456789abcdef";
private int m_cursorX; private int m_cursorX = 0;
private int m_cursorY; private int m_cursorY = 0;
private boolean m_cursorBlink; private boolean m_cursorBlink = false;
private int m_cursorColour; private int m_cursorColour = 0;
private int m_cursorBackgroundColour; private int m_cursorBackgroundColour = 15;
private int m_width; private int m_width;
private int m_height; private int m_height;
@ -25,9 +27,9 @@ public class Terminal
private TextBuffer[] m_textColour; private TextBuffer[] m_textColour;
private TextBuffer[] m_backgroundColour; private TextBuffer[] m_backgroundColour;
private final Palette m_palette; private final Palette m_palette = new Palette();
private boolean m_changed; private boolean m_changed = false;
private final Runnable onChanged; private final Runnable onChanged;
public Terminal( int width, int height ) public Terminal( int width, int height )
@ -41,9 +43,6 @@ public class Terminal
m_height = height; m_height = height;
onChanged = changedCallback; onChanged = changedCallback;
m_cursorColour = 0;
m_cursorBackgroundColour = 15;
m_text = new TextBuffer[m_height]; m_text = new TextBuffer[m_height];
m_textColour = new TextBuffer[m_height]; m_textColour = new TextBuffer[m_height];
m_backgroundColour = new TextBuffer[m_height]; m_backgroundColour = new TextBuffer[m_height];
@ -53,14 +52,6 @@ public class Terminal
m_textColour[i] = new TextBuffer( base16.charAt( m_cursorColour ), m_width ); m_textColour[i] = new TextBuffer( base16.charAt( m_cursorColour ), m_width );
m_backgroundColour[i] = new TextBuffer( base16.charAt( m_cursorBackgroundColour ), m_width ); m_backgroundColour[i] = new TextBuffer( base16.charAt( m_cursorBackgroundColour ), m_width );
} }
m_cursorX = 0;
m_cursorY = 0;
m_cursorBlink = false;
m_changed = false;
m_palette = new Palette();
} }
public synchronized void reset() public synchronized void reset()
@ -323,6 +314,62 @@ public class Terminal
m_changed = false; m_changed = false;
} }
public synchronized void write( PacketBuffer buffer )
{
buffer.writeInt( m_cursorX );
buffer.writeInt( m_cursorY );
buffer.writeBoolean( m_cursorBlink );
buffer.writeByte( m_cursorBackgroundColour << 4 | m_cursorColour );
for( int y = 0; y < m_height; y++ )
{
TextBuffer text = m_text[y];
TextBuffer textColour = m_textColour[y];
TextBuffer backColour = m_backgroundColour[y];
for( int x = 0; x < m_width; x++ )
{
buffer.writeByte( text.charAt( x ) & 0xFF );
buffer.writeByte( getColour(
backColour.charAt( x ), Colour.BLACK ) << 4 |
getColour( textColour.charAt( x ), Colour.WHITE )
);
}
}
m_palette.write( buffer );
}
public synchronized void read( PacketBuffer buffer )
{
m_cursorX = buffer.readInt();
m_cursorY = buffer.readInt();
m_cursorBlink = buffer.readBoolean();
byte cursorColour = buffer.readByte();
m_cursorBackgroundColour = (cursorColour >> 4) & 0xF;
m_cursorColour = cursorColour & 0xF;
for( int y = 0; y < m_height; y++ )
{
TextBuffer text = m_text[y];
TextBuffer textColour = m_textColour[y];
TextBuffer backColour = m_backgroundColour[y];
for( int x = 0; x < m_width; x++ )
{
text.setChar( x, (char) (buffer.readByte() & 0xFF) );
byte colour = buffer.readByte();
backColour.setChar( x, base16.charAt( (colour >> 4) & 0xF ) );
textColour.setChar( x, base16.charAt( colour & 0xF ) );
}
}
m_palette.read( buffer );
setChanged();
}
public synchronized CompoundNBT writeToNBT( CompoundNBT nbt ) public synchronized CompoundNBT writeToNBT( CompoundNBT nbt )
{ {
nbt.putInt( "term_cursorX", m_cursorX ); nbt.putInt( "term_cursorX", m_cursorX );
@ -336,10 +383,8 @@ public class Terminal
nbt.putString( "term_textColour_" + n, m_textColour[n].toString() ); nbt.putString( "term_textColour_" + n, m_textColour[n].toString() );
nbt.putString( "term_textBgColour_" + n, m_backgroundColour[n].toString() ); nbt.putString( "term_textBgColour_" + n, m_backgroundColour[n].toString() );
} }
if( m_palette != null )
{
m_palette.writeToNBT( nbt ); m_palette.writeToNBT( nbt );
}
return nbt; return nbt;
} }
@ -369,10 +414,15 @@ public class Terminal
m_backgroundColour[n].write( nbt.getString( "term_textBgColour_" + n ) ); m_backgroundColour[n].write( nbt.getString( "term_textBgColour_" + n ) );
} }
} }
if( m_palette != null )
{
m_palette.readFromNBT( nbt ); m_palette.readFromNBT( nbt );
}
setChanged(); setChanged();
} }
public static int getColour( char c, Colour def )
{
if( c >= '0' && c <= '9' ) return c - '0';
if( c >= 'a' && c <= 'f' ) return c - 'a' + 10;
return 15 - def.ordinal();
}
} }

View File

@ -8,6 +8,7 @@ package dan200.computercraft.data;
import dan200.computercraft.ComputerCraft; import dan200.computercraft.ComputerCraft;
import dan200.computercraft.shared.data.BlockNamedEntityLootCondition; import dan200.computercraft.shared.data.BlockNamedEntityLootCondition;
import dan200.computercraft.shared.data.HasComputerIdLootCondition;
import dan200.computercraft.shared.data.PlayerCreativeLootCondition; import dan200.computercraft.shared.data.PlayerCreativeLootCondition;
import dan200.computercraft.shared.proxy.ComputerCraftProxyCommon; import dan200.computercraft.shared.proxy.ComputerCraftProxyCommon;
import net.minecraft.block.Block; import net.minecraft.block.Block;
@ -73,6 +74,7 @@ public class LootTables extends LootTableProvider
.addEntry( DynamicLootEntry.func_216162_a( new ResourceLocation( ComputerCraft.MOD_ID, "computer" ) ) ) .addEntry( DynamicLootEntry.func_216162_a( new ResourceLocation( ComputerCraft.MOD_ID, "computer" ) ) )
.acceptCondition( Alternative.builder( .acceptCondition( Alternative.builder(
BlockNamedEntityLootCondition.builder(), BlockNamedEntityLootCondition.builder(),
HasComputerIdLootCondition.builder(),
PlayerCreativeLootCondition.builder().inverted() PlayerCreativeLootCondition.builder().inverted()
) ) ) )
).build() ); ).build() );

View File

@ -6,7 +6,9 @@
package dan200.computercraft.shared.common; package dan200.computercraft.shared.common;
import dan200.computercraft.core.terminal.Terminal; import dan200.computercraft.core.terminal.Terminal;
import io.netty.buffer.Unpooled;
import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.CompoundNBT;
import net.minecraft.network.PacketBuffer;
public class ClientTerminal implements ITerminal public class ClientTerminal implements ITerminal
{ {
@ -53,7 +55,7 @@ public class ClientTerminal implements ITerminal
{ {
CompoundNBT terminal = nbt.getCompound( "terminal" ); CompoundNBT terminal = nbt.getCompound( "terminal" );
resizeTerminal( terminal.getInt( "term_width" ), terminal.getInt( "term_height" ) ); resizeTerminal( terminal.getInt( "term_width" ), terminal.getInt( "term_height" ) );
m_terminal.readFromNBT( terminal ); m_terminal.read( new PacketBuffer( Unpooled.wrappedBuffer( terminal.getByteArray( "term_contents" ) ) ) );
} }
else else
{ {

View File

@ -5,8 +5,12 @@
*/ */
package dan200.computercraft.shared.common; package dan200.computercraft.shared.common;
import dan200.computercraft.ComputerCraft;
import dan200.computercraft.core.terminal.Terminal; import dan200.computercraft.core.terminal.Terminal;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.CompoundNBT;
import net.minecraft.network.PacketBuffer;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
@ -83,17 +87,28 @@ public class ServerTerminal implements ITerminal
return m_colour; return m_colour;
} }
// Networking stuff
public void writeDescription( CompoundNBT nbt ) public void writeDescription( CompoundNBT nbt )
{ {
nbt.putBoolean( "colour", m_colour ); nbt.putBoolean( "colour", m_colour );
if( m_terminal != null ) if( m_terminal != null )
{ {
// We have a 10 byte header (2 integer positions, then blinking and current colours), followed by the
// contents and palette.
// Yes, this serialisation code is terrible, but we need to serialise to NBT in order to work with monitors
// (or rather tile entity serialisation).
final int length = 10 + (2 * m_terminal.getWidth() * m_terminal.getHeight()) + (16 * 3);
ByteBuf buffer = Unpooled.buffer( length );
m_terminal.write( new PacketBuffer( buffer ) );
if( buffer.writableBytes() != 0 )
{
ComputerCraft.log.warn( "Should have written {} bytes, but have {} ({} remaining).", length, buffer.writerIndex(), buffer.writableBytes() );
}
CompoundNBT terminal = new CompoundNBT(); CompoundNBT terminal = new CompoundNBT();
terminal.putInt( "term_width", m_terminal.getWidth() ); terminal.putInt( "term_width", m_terminal.getWidth() );
terminal.putInt( "term_height", m_terminal.getHeight() ); terminal.putInt( "term_height", m_terminal.getHeight() );
m_terminal.writeToNBT( terminal ); terminal.putByteArray( "term_contents", buffer.array() );
nbt.put( "terminal", terminal ); nbt.put( "terminal", terminal );
} }
} }

View File

@ -19,9 +19,7 @@ public final class ComputerItemFactory
@Nonnull @Nonnull
public static ItemStack create( TileComputer tile ) public static ItemStack create( TileComputer tile )
{ {
String label = tile.getLabel(); return create( tile.getComputerID(), tile.getLabel(), tile.getFamily() );
int id = label != null ? tile.getComputerID() : -1;
return create( id, label, tile.getFamily() );
} }
@Nonnull @Nonnull

View File

@ -37,7 +37,7 @@ public abstract class ItemComputerBase extends BlockItem implements IComputerIte
@Override @Override
public void addInformation( @Nonnull ItemStack stack, @Nullable World world, @Nonnull List<ITextComponent> list, @Nonnull ITooltipFlag options ) public void addInformation( @Nonnull ItemStack stack, @Nullable World world, @Nonnull List<ITextComponent> list, @Nonnull ITooltipFlag options )
{ {
if( options.isAdvanced() ) if( options.isAdvanced() || getLabel( stack ) == null )
{ {
int id = getComputerID( stack ); int id = getComputerID( stack );
if( id >= 0 ) if( id >= 0 )

View File

@ -0,0 +1,48 @@
/*
* This file is part of ComputerCraft - http://www.computercraft.info
* Copyright Daniel Ratcliffe, 2011-2020. Do not distribute without permission.
* Send enquiries to dratcliffe@gmail.com
*/
package dan200.computercraft.shared.data;
import dan200.computercraft.shared.computer.blocks.IComputerTile;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.storage.loot.LootContext;
import net.minecraft.world.storage.loot.LootParameter;
import net.minecraft.world.storage.loot.LootParameters;
import net.minecraft.world.storage.loot.conditions.ILootCondition;
import javax.annotation.Nonnull;
import java.util.Collections;
import java.util.Set;
/**
* A loot condition which checks if the tile entity has has a non-0 ID.
*/
public final class HasComputerIdLootCondition implements ILootCondition
{
public static final HasComputerIdLootCondition INSTANCE = new HasComputerIdLootCondition();
private HasComputerIdLootCondition()
{
}
@Override
public boolean test( LootContext lootContext )
{
TileEntity tile = lootContext.get( LootParameters.BLOCK_ENTITY );
return tile instanceof IComputerTile && ((IComputerTile) tile).getComputerID() >= 0;
}
@Nonnull
@Override
public Set<LootParameter<?>> getRequiredParameters()
{
return Collections.singleton( LootParameters.BLOCK_ENTITY );
}
public static IBuilder builder()
{
return () -> INSTANCE;
}
}

View File

@ -184,7 +184,7 @@ public class ItemPocketComputer extends Item implements IComputerItem, IMedia, I
@Override @Override
public void addInformation( @Nonnull ItemStack stack, @Nullable World world, List<ITextComponent> list, ITooltipFlag flag ) public void addInformation( @Nonnull ItemStack stack, @Nullable World world, List<ITextComponent> list, ITooltipFlag flag )
{ {
if( flag.isAdvanced() ) if( flag.isAdvanced() || getLabel( stack ) == null )
{ {
int id = getComputerID( stack ); int id = getComputerID( stack );
if( id >= 0 ) if( id >= 0 )

View File

@ -19,6 +19,7 @@ import dan200.computercraft.shared.computer.core.IContainerComputer;
import dan200.computercraft.shared.computer.core.ServerComputer; import dan200.computercraft.shared.computer.core.ServerComputer;
import dan200.computercraft.shared.data.BlockNamedEntityLootCondition; import dan200.computercraft.shared.data.BlockNamedEntityLootCondition;
import dan200.computercraft.shared.data.ConstantLootConditionSerializer; import dan200.computercraft.shared.data.ConstantLootConditionSerializer;
import dan200.computercraft.shared.data.HasComputerIdLootCondition;
import dan200.computercraft.shared.data.PlayerCreativeLootCondition; import dan200.computercraft.shared.data.PlayerCreativeLootCondition;
import dan200.computercraft.shared.media.items.RecordMedia; import dan200.computercraft.shared.media.items.RecordMedia;
import dan200.computercraft.shared.network.NetworkHandler; import dan200.computercraft.shared.network.NetworkHandler;
@ -79,6 +80,12 @@ public final class ComputerCraftProxyCommon
PlayerCreativeLootCondition.class, PlayerCreativeLootCondition.class,
PlayerCreativeLootCondition.INSTANCE PlayerCreativeLootCondition.INSTANCE
) ); ) );
LootConditionManager.registerCondition( ConstantLootConditionSerializer.of(
new ResourceLocation( ComputerCraft.MOD_ID, "has_id" ),
HasComputerIdLootCondition.class,
HasComputerIdLootCondition.INSTANCE
) );
} }
private static void registerProviders() private static void registerProviders()

View File

@ -6,6 +6,7 @@
package dan200.computercraft.shared.turtle.items; package dan200.computercraft.shared.turtle.items;
import dan200.computercraft.ComputerCraft; import dan200.computercraft.ComputerCraft;
import dan200.computercraft.api.turtle.ITurtleAccess;
import dan200.computercraft.api.turtle.ITurtleUpgrade; import dan200.computercraft.api.turtle.ITurtleUpgrade;
import dan200.computercraft.api.turtle.TurtleSide; import dan200.computercraft.api.turtle.TurtleSide;
import dan200.computercraft.shared.computer.core.ComputerFamily; import dan200.computercraft.shared.computer.core.ComputerFamily;
@ -22,18 +23,13 @@ public final class TurtleItemFactory
@Nonnull @Nonnull
public static ItemStack create( ITurtleTile turtle ) public static ItemStack create( ITurtleTile turtle )
{ {
ITurtleUpgrade leftUpgrade = turtle.getAccess().getUpgrade( TurtleSide.LEFT ); ITurtleAccess access = turtle.getAccess();
ITurtleUpgrade rightUpgrade = turtle.getAccess().getUpgrade( TurtleSide.RIGHT );
String label = turtle.getLabel(); return create(
if( label == null ) turtle.getComputerID(), turtle.getLabel(), turtle.getColour(), turtle.getFamily(),
{ access.getUpgrade( TurtleSide.LEFT ), access.getUpgrade( TurtleSide.RIGHT ),
return create( -1, null, turtle.getColour(), turtle.getFamily(), leftUpgrade, rightUpgrade, 0, turtle.getOverlay() ); access.getFuelLevel(), turtle.getOverlay()
} );
int id = turtle.getComputerID();
int fuelLevel = turtle.getAccess().getFuelLevel();
return create( id, label, turtle.getColour(), turtle.getFamily(), leftUpgrade, rightUpgrade, fuelLevel, turtle.getOverlay() );
} }
@Nonnull @Nonnull

View File

@ -6,6 +6,7 @@
package dan200.computercraft.shared.util; package dan200.computercraft.shared.util;
import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.CompoundNBT;
import net.minecraft.network.PacketBuffer;
public class Palette public class Palette
{ {
@ -78,6 +79,22 @@ public class Palette
}; };
} }
public void write( PacketBuffer buffer )
{
for( double[] colour : colours )
{
for( double channel : colour ) buffer.writeByte( (int) (channel * 0xFF) & 0xFF );
}
}
public void read( PacketBuffer buffer )
{
for( double[] colour : colours )
{
for( int i = 0; i < colour.length; i++ ) colour[i] = buffer.readByte() * 255;
}
}
public CompoundNBT writeToNBT( CompoundNBT nbt ) public CompoundNBT writeToNBT( CompoundNBT nbt )
{ {
int[] rgb8 = new int[colours.length]; int[] rgb8 = new int[colours.length];

View File

@ -0,0 +1,55 @@
{
"block.computercraft.computer_normal": "Computer",
"block.computercraft.computer_advanced": "Avanceret Computer",
"block.computercraft.computer_command": "Kommandocomputer",
"block.computercraft.disk_drive": "Diskdrev",
"block.computercraft.printer": "Printer",
"block.computercraft.speaker": "Højttaler",
"block.computercraft.monitor_normal": "Skærm",
"block.computercraft.monitor_advanced": "Avanceret Skærm",
"block.computercraft.wireless_modem_normal": "Trådløst Modem",
"block.computercraft.wireless_modem_advanced": "Endermodem",
"block.computercraft.wired_modem": "Kablet Modem",
"block.computercraft.cable": "Netværkskabel",
"block.computercraft.turtle_normal": "Turtle",
"block.computercraft.turtle_normal.upgraded": "%s Turtle",
"block.computercraft.turtle_normal.upgraded_twice": "%s %s Turtle",
"block.computercraft.turtle_advanced": "Avanceret Turtle",
"block.computercraft.turtle_advanced.upgraded": "Avanceret %s Turtle",
"block.computercraft.turtle_advanced.upgraded_twice": "Avanceret %s %s Turtle",
"item.computercraft.disk": "Floppydisk",
"item.computercraft.treasure_disk": "Floppydisk",
"item.computercraft.printed_page": "Printet Side",
"item.computercraft.printed_pages": "Printede Sider",
"item.computercraft.printed_book": "Printet Bog",
"item.computercraft.pocket_computer_normal": "Lommecomputer",
"item.computercraft.pocket_computer_normal.upgraded": "%s Lommecomputer",
"item.computercraft.pocket_computer_advanced": "Avanceret Lommecomputer",
"item.computercraft.pocket_computer_advanced.upgraded": "Avanceret %s Lommecomputer",
"upgrade.minecraft.diamond_sword.adjective": "Kæmpende",
"upgrade.minecraft.diamond_shovel.adjective": "Gravende",
"upgrade.minecraft.diamond_pickaxe.adjective": "Brydende",
"upgrade.minecraft.diamond_axe.adjective": "Fældende",
"upgrade.minecraft.diamond_hoe.adjective": "Dyrkende",
"upgrade.minecraft.crafting_table.adjective": "Fremstillende",
"upgrade.computercraft.wireless_modem_normal.adjective": "Trådløs",
"upgrade.computercraft.wireless_modem_advanced.adjective": "Endertrådløs",
"upgrade.computercraft.speaker.adjective": "Larmende",
"chat.computercraft.wired_modem.peripheral_connected": "Perifer enhed \"%s\" koblet til netværk",
"chat.computercraft.wired_modem.peripheral_disconnected": "Perifer enhed \"%s\" koblet fra netværk",
"gui.computercraft.tooltip.copy": "Kopier til udklipsholder",
"gui.computercraft.tooltip.computer_id": "Computer-ID: %s",
"gui.computercraft.tooltip.disk_id": "Disk-ID: %s"
}

View File

@ -1,48 +0,0 @@
tile.computercraft:computer.name=Computer
tile.computercraft:advanced_computer.name=Avanceret Computer
tile.computercraft:drive.name=Diskdrev
tile.computercraft:printer.name=Printer
tile.computercraft:monitor.name=Skærm
tile.computercraft:advanced_monitor.name=Avanceret Skærm
tile.computercraft:wireless_modem.name=Trådløst Modem
tile.computercraft:wired_modem.name=Kablet Modem
tile.computercraft:cable.name=Netværkskabel
tile.computercraft:command_computer.name=Kommandocomputer
tile.computercraft:advanced_modem.name=Endermodem
tile.computercraft:speaker.name=Højttaler
tile.computercraft:turtle.name=Turtle
tile.computercraft:turtle.upgraded.name=%s Turtle
tile.computercraft:turtle.upgraded_twice.name=%s %s Turtle
tile.computercraft:advanced_turtle.name=Avanceret Turtle
tile.computercraft:advanced_turtle.upgraded.name=Avanceret %s Turtle
tile.computercraft:advanced_turtle.upgraded_twice.name=Avanceret %s %s Turtle
item.computercraft:disk.name=Floppydisk
item.computercraft:treasure_disk.name=Floppydisk
item.computercraft:page.name=Printet Side
item.computercraft:pages.name=Printede Sider
item.computercraft:book.name=Printet Bog
item.computercraft:pocket_computer.name=Lommecomputer
item.computercraft:pocket_computer.upgraded.name=%s Lommecomputer
item.computercraft:advanced_pocket_computer.name=Avanceret Lommecomputer
item.computercraft:advanced_pocket_computer.upgraded.name=Avanceret %s Lommecomputer
upgrade.minecraft:diamond_sword.adjective=Kæmpende
upgrade.minecraft:diamond_shovel.adjective=Gravende
upgrade.minecraft:diamond_pickaxe.adjective=Brydende
upgrade.minecraft:diamond_axe.adjective=Fældende
upgrade.minecraft:diamond_hoe.adjective=Dyrkende
upgrade.computercraft:wireless_modem.adjective=Trådløs
upgrade.minecraft:crafting_table.adjective=Fremstillende
upgrade.computercraft:advanced_modem.adjective=Endertrådløs
upgrade.computercraft:speaker.adjective=Larmende
chat.computercraft.wired_modem.peripheral_connected=Perifer enhed "%s" koblet til netværk
chat.computercraft.wired_modem.peripheral_disconnected=Perifer enhed "%s" koblet fra netværk
# Misc tooltips
gui.computercraft.tooltip.copy=Kopier til udklipsholder
gui.computercraft.tooltip.computer_id=(Computer-ID: %s)
gui.computercraft.tooltip.disk_id=(Disk-ID: %s)

View File

@ -141,8 +141,8 @@
"tracking_field.computercraft.coroutines_dead.name": "Koroutinen gelöscht", "tracking_field.computercraft.coroutines_dead.name": "Koroutinen gelöscht",
"gui.computercraft.tooltip.copy": "In die Zwischenablage kopieren", "gui.computercraft.tooltip.copy": "In die Zwischenablage kopieren",
"gui.computercraft.tooltip.computer_id": "(Computer ID: %s)", "gui.computercraft.tooltip.computer_id": "Computer ID: %s",
"gui.computercraft.tooltip.disk_id": "(Disketten ID: %s)", "gui.computercraft.tooltip.disk_id": "Disketten ID: %s",
"gui.computercraft.config.computer_space_limit": "Speicherplatz von Computern (bytes)", "gui.computercraft.config.computer_space_limit": "Speicherplatz von Computern (bytes)",
"gui.computercraft.config.floppy_space_limit": "Speicherplatz von Disketten (bytes)", "gui.computercraft.config.floppy_space_limit": "Speicherplatz von Disketten (bytes)",

View File

@ -143,8 +143,8 @@
"tracking_field.computercraft.coroutines_dead.name": "Coroutines disposed", "tracking_field.computercraft.coroutines_dead.name": "Coroutines disposed",
"gui.computercraft.tooltip.copy": "Copy to clipboard", "gui.computercraft.tooltip.copy": "Copy to clipboard",
"gui.computercraft.tooltip.computer_id": "(Computer ID: %s)", "gui.computercraft.tooltip.computer_id": "Computer ID: %s",
"gui.computercraft.tooltip.disk_id": "(Disk ID: %s)", "gui.computercraft.tooltip.disk_id": "Disk ID: %s",
"gui.computercraft.config.computer_space_limit": "Computer space limit (bytes)", "gui.computercraft.config.computer_space_limit": "Computer space limit (bytes)",
"gui.computercraft.config.floppy_space_limit": "Floppy Disk space limit (bytes)", "gui.computercraft.config.floppy_space_limit": "Floppy Disk space limit (bytes)",

View File

@ -0,0 +1,185 @@
{
"itemGroup.computercraft": "컴퓨터크래프트",
"block.computercraft.computer_normal": "컴퓨터",
"block.computercraft.computer_advanced": "고급 컴퓨터",
"block.computercraft.computer_command": "명령 컴퓨터",
"block.computercraft.disk_drive": "디스크 드라이브",
"block.computercraft.printer": "프린터",
"block.computercraft.speaker": "스피커",
"block.computercraft.monitor_normal": "모니터",
"block.computercraft.monitor_advanced": "고급 모니터",
"block.computercraft.wireless_modem_normal": "무선 모뎀",
"block.computercraft.wireless_modem_advanced": "엔더 모뎀",
"block.computercraft.wired_modem": "유선 모뎀",
"block.computercraft.cable": "네트워크 케이블",
"block.computercraft.turtle_normal": "터틀",
"block.computercraft.turtle_normal.upgraded": "%s 터틀",
"block.computercraft.turtle_normal.upgraded_twice": "%s %s 터틀",
"block.computercraft.turtle_advanced": "고급 터틀",
"block.computercraft.turtle_advanced.upgraded": "고급 %s 터틀",
"block.computercraft.turtle_advanced.upgraded_twice": "고급 %s %s 터틀",
"item.computercraft.disk": "플로피 디스크",
"item.computercraft.treasure_disk": "플로피 디스크",
"item.computercraft.printed_page": "인쇄된 페이지",
"item.computercraft.printed_pages": "인쇄된 페이지 모음",
"item.computercraft.printed_book": "인쇄된 책",
"item.computercraft.pocket_computer_normal": "포켓 컴퓨터",
"item.computercraft.pocket_computer_normal.upgraded": "%s 포켓 컴퓨터",
"item.computercraft.pocket_computer_advanced": "고급 포켓 컴퓨터",
"item.computercraft.pocket_computer_advanced.upgraded": "고급 %s 포켓 컴퓨터",
"upgrade.minecraft.diamond_sword.adjective": "난투",
"upgrade.minecraft.diamond_shovel.adjective": "굴착",
"upgrade.minecraft.diamond_pickaxe.adjective": "채굴",
"upgrade.minecraft.diamond_axe.adjective": "벌목",
"upgrade.minecraft.diamond_hoe.adjective": "농업",
"upgrade.minecraft.crafting_table.adjective": "조합",
"upgrade.computercraft.wireless_modem_normal.adjective": "무선",
"upgrade.computercraft.wireless_modem_advanced.adjective": "엔더",
"upgrade.computercraft.speaker.adjective": "소음",
"chat.computercraft.wired_modem.peripheral_connected": "주변 \"%s\"이 네트워크에 연결되었습니다.",
"chat.computercraft.wired_modem.peripheral_disconnected": "주변 \"%s\"이 네트워크로부터 분리되었습니다.",
"commands.computercraft.synopsis": "컴퓨터를 제어하기 위한 다양한 명령어",
"commands.computercraft.desc": "/computercraft 명령어는 컴퓨터를 제어하고 상호작용하기 위한 다양한 디버깅 및 관리자 도구를 제공합니다.",
"commands.computercraft.help.synopsis": "특정 명령어에 대한 도움말을 제공하기",
"commands.computercraft.help.desc": "",
"commands.computercraft.help.no_children": "%s에는 하위 명령어가 없습니다.",
"commands.computercraft.help.no_command": "'%s'라는 명령어가 없습니다.",
"commands.computercraft.dump.synopsis": "컴퓨터의 상태를 보여주기",
"commands.computercraft.dump.desc": "모든 시스템의 상태 또는 한 시스템에 대한 특정 정보를 표시합니다. 컴퓨터의 인스턴스 ID(예: 123)나 컴퓨터 ID(예: #123) 또는 라벨(예: \"@My Computer\")을 지정할 수 있습니다.",
"commands.computercraft.dump.action": "이 컴퓨터에 대한 추가 정보를 봅니다.",
"commands.computercraft.shutdown.synopsis": "시스템을 원격으로 종료하기",
"commands.computercraft.shutdown.desc": "나열된 시스템 또는 지정된 시스템이 없는 경우 모두 종료합니다. 컴퓨터의 인스턴스 ID(예: 123)나 컴퓨터 ID(예: #123) 또는 라벨(예: \"@My Computer\")을 지정할 수 있습니다.",
"commands.computercraft.shutdown.done": "%s/%s 컴퓨터 시스템 종료",
"commands.computercraft.turn_on.synopsis": "시스템을 원격으로 실행하기",
"commands.computercraft.turn_on.desc": "나열된 컴퓨터를 실행합니다. 컴퓨터의 인스턴스 ID(예: 123)나 컴퓨터 ID(예: #123) 또는 라벨(예: \"@My Computer\")을 지정할 수 있습니다.",
"commands.computercraft.turn_on.done": "%s/%s 컴퓨터 시스템 실행",
"commands.computercraft.tp.synopsis": "특정 컴퓨터로 순간이동하기",
"commands.computercraft.tp.desc": "컴퓨터의 위치로 순간이동합니다. 컴퓨터의 인스턴스 ID(예: 123) 또는 컴퓨터 ID(예: #123)를 지정할 수 있습니다.",
"commands.computercraft.tp.action": "이 컴퓨터로 순간이동하기",
"commands.computercraft.tp.not_there": "월드에서 컴퓨터를 위치시킬 수 없습니다.",
"commands.computercraft.view.synopsis": "컴퓨터의 터미널을 보기",
"commands.computercraft.view.desc": "컴퓨터의 원격 제어를 허용하는 컴퓨터의 터미널을 엽니다. 이것은 터틀의 인벤토리에 대한 접근을 제공하지 않습니다. 컴퓨터의 인스턴스 ID(예: 123) 또는 컴퓨터 ID(예: #123)를 지정할 수 있습니다.",
"commands.computercraft.view.action": "이 컴퓨터를 봅니다.",
"commands.computercraft.view.not_player": "비플레이어한테 터미널을 열 수 없습니다.",
"commands.computercraft.track.synopsis": "컴퓨터의 실행 시간을 추적하기",
"commands.computercraft.track.desc": "컴퓨터가 실행되는 기간과 처리되는 이벤트 수를 추적합니다. 이는 /forge 트랙과 유사한 방법으로 정보를 제공하며 지연 로그에 유용할 수 있습니다.",
"commands.computercraft.track.start.synopsis": "모든 컴퓨터의 추적을 시작하기",
"commands.computercraft.track.start.desc": "모든 컴퓨터의 이벤트 및 실행 시간 추적을 시작합니다. 이는 이전 실행의 결과를 폐기할 것입니다.",
"commands.computercraft.track.start.stop": "%s을(를) 실행하여 추적을 중지하고 결과를 확인합니다.",
"commands.computercraft.track.stop.synopsis": "모든 컴퓨터의 추적을 중지하기",
"commands.computercraft.track.stop.desc": "모든 컴퓨터의 이벤트 및 실행 시간 추적을 중지합니다.",
"commands.computercraft.track.stop.action": "추적을 중지하려면 클릭하세요.",
"commands.computercraft.track.stop.not_enabled": "현재 추적하는 컴퓨터가 없습니다.",
"commands.computercraft.track.dump.synopsis": "최신 추적 결과를 덤프하기",
"commands.computercraft.track.dump.desc": "최신 컴퓨터 추적의 결과를 덤프합니다.",
"commands.computercraft.track.dump.no_timings": "사용가능한 시간이 없습니다.",
"commands.computercraft.track.dump.computer": "컴퓨터",
"commands.computercraft.reload.synopsis": "컴퓨터크래프트 구성파일을 리로드하기",
"commands.computercraft.reload.desc": "컴퓨터크래프트 구성파일을 리로드합니다.",
"commands.computercraft.reload.done": "리로드된 구성",
"commands.computercraft.queue.synopsis": "computer_command 이벤트를 명령 컴퓨터에 보내기",
"commands.computercraft.queue.desc": "computer_command 이벤트를 명령 컴퓨터로 전송하여 추가 인수를 전달합니다. 이는 대부분 지도 제작자를 위해 설계되었으며, 보다 컴퓨터 친화적인 버전의 /trigger 역할을 합니다. 어떤 플레이어든 명령을 실행할 수 있으며, 이는 텍스트 구성 요소의 클릭 이벤트를 통해 수행될 가능성이 가장 높습니다.",
"commands.computercraft.generic.no_position": "<no pos>",
"commands.computercraft.generic.position": "%s, %s, %s",
"commands.computercraft.generic.yes": "Y",
"commands.computercraft.generic.no": "N",
"commands.computercraft.generic.exception": "처리되지 않은 예외 (%s)",
"commands.computercraft.generic.additional_rows": "%d개의 추가 행...",
"argument.computercraft.computer.no_matching": "'%s'와 일치하는 컴퓨터가 없습니다.",
"argument.computercraft.computer.many_matching": "'%s'와 일치하는 여러 컴퓨터 (인스턴스 %s)",
"tracking_field.computercraft.tasks.name": "작업",
"tracking_field.computercraft.total.name": "전체 시간",
"tracking_field.computercraft.average.name": "평균 시간",
"tracking_field.computercraft.max.name": "최대 시간",
"tracking_field.computercraft.server_count.name": "서버 작업 수",
"tracking_field.computercraft.server_time.name": "서버 작업 시간",
"tracking_field.computercraft.peripheral.name": "주변 호출",
"tracking_field.computercraft.fs.name": "파일시스템 작업",
"tracking_field.computercraft.turtle.name": "터틀 작업",
"tracking_field.computercraft.http.name": "HTTP 요청",
"tracking_field.computercraft.http_upload.name": "HTTP 업로드",
"tracking_field.computercraft.http_download.name": "HTTT 다운로드",
"tracking_field.computercraft.websocket_incoming.name": "웹소켓 수신",
"tracking_field.computercraft.websocket_outgoing.name": "웹소켓 송신",
"tracking_field.computercraft.coroutines_created.name": "코루틴 생성됨",
"tracking_field.computercraft.coroutines_dead.name": "코루틴 처리됨",
"gui.computercraft.tooltip.copy": "클립보드에 복사",
"gui.computercraft.tooltip.computer_id": "컴퓨터 ID: %s",
"gui.computercraft.tooltip.disk_id": "디스크 ID: %s",
"gui.computercraft.config.computer_space_limit": "컴퓨터 공간 제한 (바이트)",
"gui.computercraft.config.floppy_space_limit": "플로피 디스크 공간 제한 (바이트)",
"gui.computercraft.config.maximum_open_files": "컴퓨터당 최대 파일 열기",
"gui.computercraft.config.disable_lua51_features": "Lua 5.1 기능 미사용",
"gui.computercraft.config.default_computer_settings": "기본 컴퓨터 설정",
"gui.computercraft.config.debug_enabled": "디버그 라이브러리 사용",
"gui.computercraft.config.log_computer_errors": "컴퓨터 오류 로그",
"gui.computercraft.config.execution": "실행",
"gui.computercraft.config.execution.computer_threads": "컴퓨터 쓰레드",
"gui.computercraft.config.execution.max_main_global_time": "전역 시간 당 서버 제한",
"gui.computercraft.config.execution.max_main_computer_time": "컴퓨터 시간 당 서버 제한",
"gui.computercraft.config.http": "HTTP",
"gui.computercraft.config.http.enabled": "HTTP API 사용하기",
"gui.computercraft.config.http.websocket_enabled": "웹소켓 사용",
"gui.computercraft.config.http.timeout": "타임아웃",
"gui.computercraft.config.http.max_requests": "최대 동시 요청 수",
"gui.computercraft.config.http.max_download": "최대 응답 크기",
"gui.computercraft.config.http.max_upload": "최대 요청 크기",
"gui.computercraft.config.http.max_websockets": "최대 동시 웹소켓 수",
"gui.computercraft.config.http.max_websocket_message": "최대 웹 포켓 메시지 크기",
"gui.computercraft.config.peripheral": "주변",
"gui.computercraft.config.peripheral.command_block_enabled": "명령 블록 주변 장치 사용",
"gui.computercraft.config.peripheral.modem_range": "모뎀 범위(기본값)",
"gui.computercraft.config.peripheral.modem_high_altitude_range": "모뎀 범위(높은 고도)",
"gui.computercraft.config.peripheral.modem_range_during_storm": "모뎀 범위(나쁜 날씨)",
"gui.computercraft.config.peripheral.modem_high_altitude_range_during_storm": "모뎀 범위(높은 고도, 나쁜 날씨)",
"gui.computercraft.config.peripheral.max_notes_per_tick": "컴퓨터가 한 번에 재생할 수 있는 최대 소리 수",
"gui.computercraft.config.turtle": "터틀",
"gui.computercraft.config.turtle.need_fuel": "연료 사용",
"gui.computercraft.config.turtle.normal_fuel_limit": "터틀 연료 제한",
"gui.computercraft.config.turtle.advanced_fuel_limit": "고급 터틀 연료 제한",
"gui.computercraft.config.turtle.obey_block_protection": "터틀이 블록 보호에 따르기",
"gui.computercraft.config.turtle.can_push": "터틀이 엔티티 밀어내기",
"gui.computercraft.config.turtle.disabled_actions": "터틀 액션 미사용",
"gui.computercraft.config.http.allowed_domains": "허용된 도메인",
"gui.computercraft.config.http.blocked_domains": "차단된 도메인"
}

View File

@ -1,195 +0,0 @@
itemGroup.computercraft=컴퓨터크래프트
tile.computercraft:computer.name=컴퓨터
tile.computercraft:advanced_computer.name=고급 컴퓨터
tile.computercraft:drive.name=디스크 드라이브
tile.computercraft:printer.name=프린터
tile.computercraft:monitor.name=모니터
tile.computercraft:advanced_monitor.name=고급 모니터
tile.computercraft:wireless_modem.name=무선 모뎀
tile.computercraft:wired_modem.name=유선 모뎀
tile.computercraft:cable.name=네트워크 케이블
tile.computercraft:command_computer.name=명령 컴퓨터
tile.computercraft:advanced_modem.name=엔더 모뎀
tile.computercraft:speaker.name=스피커
tile.computercraft:turtle.name=터틀
tile.computercraft:turtle.upgraded.name=%s 터틀
tile.computercraft:turtle.upgraded_twice.name=%s %s 터틀
tile.computercraft:advanced_turtle.name=고급 터틀
tile.computercraft:advanced_turtle.upgraded.name=고급 %s 터틀
tile.computercraft:advanced_turtle.upgraded_twice.name=고급 %s %s 터틀
item.computercraft:disk.name=플로피 디스크
item.computercraft:treasure_disk.name=플로피 디스크
item.computercraft:page.name=인쇄된 페이지
item.computercraft:pages.name=인쇄된 페이지 모음
item.computercraft:book.name=인쇄된 책
item.computercraft:pocket_computer.name=포켓 컴퓨터
item.computercraft:pocket_computer.upgraded.name=%s 포켓 컴퓨터
item.computercraft:advanced_pocket_computer.name=고급 포켓 컴퓨터
item.computercraft:advanced_pocket_computer.upgraded.name=고급 %s 포켓 컴퓨터
upgrade.minecraft:diamond_sword.adjective=난투
upgrade.minecraft:diamond_shovel.adjective=굴착
upgrade.minecraft:diamond_pickaxe.adjective=채굴
upgrade.minecraft:diamond_axe.adjective=벌목
upgrade.minecraft:diamond_hoe.adjective=농업
upgrade.computercraft:wireless_modem.adjective=무선
upgrade.minecraft:crafting_table.adjective=조합
upgrade.computercraft:advanced_modem.adjective=엔더
upgrade.computercraft:speaker.adjective=소음
chat.computercraft.wired_modem.peripheral_connected=주변 "%s"이 네트워크에 연결되었습니다.
chat.computercraft.wired_modem.peripheral_disconnected=주변 "%s"이 네트워크로부터 분리되었습니다.
# Command descriptions, usage and any additional messages.
commands.computercraft.synopsis=컴퓨터를 제어하기 위한 다양한 명령어
commands.computercraft.desc=/computercraft 명령어는 컴퓨터를 제어하고 상호작용하기 위한 다양한 디버깅 및 관리자 도구를 제공합니다.
commands.computercraft.help.synopsis=특정 명령어에 대한 도움말을 제공하기
commands.computercraft.help.desc=
commands.computercraft.help.usage=[command]
commands.computercraft.help.no_children=%s에는 하위 명령어가 없습니다.
commands.computercraft.help.no_command='%s'라는 명령어가 없습니다.
commands.computercraft.dump.synopsis=컴퓨터의 상태를 보여주기
commands.computercraft.dump.desc=모든 시스템의 상태 또는 한 시스템에 대한 특정 정보를 표시합니다. 컴퓨터의 인스턴스 ID(예: 123)나 컴퓨터 ID(예: #123) 또는 라벨(예: "@My Computer")을 지정할 수 있습니다.
commands.computercraft.dump.usage=[id]
commands.computercraft.dump.action=이 컴퓨터에 대한 추가 정보를 봅니다.
commands.computercraft.shutdown.synopsis=시스템을 원격으로 종료하기
commands.computercraft.shutdown.desc=나열된 시스템 또는 지정된 시스템이 없는 경우 모두 종료합니다. 컴퓨터의 인스턴스 ID(예: 123)나 컴퓨터 ID(예: #123) 또는 라벨(예: "@My Computer")을 지정할 수 있습니다.
commands.computercraft.shutdown.usage=[ids...]
commands.computercraft.shutdown.done=%s/%s 컴퓨터 시스템 종료
commands.computercraft.turn_on.synopsis=시스템을 원격으로 실행하기
commands.computercraft.turn_on.desc=나열된 컴퓨터를 실행합니다. 컴퓨터의 인스턴스 ID(예: 123)나 컴퓨터 ID(예: #123) 또는 라벨(예: "@My Computer")을 지정할 수 있습니다.
commands.computercraft.turn_on.usage=[ids...]
commands.computercraft.turn_on.done=%s/%s 컴퓨터 시스템 실행
commands.computercraft.tp.synopsis=특정 컴퓨터로 순간이동하기
commands.computercraft.tp.desc=컴퓨터의 위치로 순간이동합니다. 컴퓨터의 인스턴스 ID(예: 123) 또는 컴퓨터 ID(예: #123)를 지정할 수 있습니다.
commands.computercraft.tp.usage=<id>
commands.computercraft.tp.action=이 컴퓨터로 순간이동하기
commands.computercraft.tp.not_entity=비플레이어한테 터미널을 열 수 없습니다.
commands.computercraft.tp.not_there=월드에서 컴퓨터를 위치시킬 수 없습니다.
commands.computercraft.view.synopsis=컴퓨터의 터미널을 보기
commands.computercraft.view.desc=컴퓨터의 원격 제어를 허용하는 컴퓨터의 터미널을 엽니다. 이것은 터틀의 인벤토리에 대한 접근을 제공하지 않습니다. 컴퓨터의 인스턴스 ID(예: 123) 또는 컴퓨터 ID(예: #123)를 지정할 수 있습니다.
commands.computercraft.view.usage=<id>
commands.computercraft.view.action=이 컴퓨터를 봅니다.
commands.computercraft.view.not_player=비플레이어한테 터미널을 열 수 없습니다.
commands.computercraft.track.synopsis=컴퓨터의 실행 시간을 추적하기
commands.computercraft.track.desc=컴퓨터가 실행되는 기간과 처리되는 이벤트 수를 추적합니다. 이는 /forge 트랙과 유사한 방법으로 정보를 제공하며 지연 로그에 유용할 수 있습니다.
commands.computercraft.track.start.synopsis=모든 컴퓨터의 추적을 시작하기
commands.computercraft.track.start.desc=모든 컴퓨터의 이벤트 및 실행 시간 추적을 시작합니다. 이는 이전 실행의 결과를 폐기할 것입니다.
commands.computercraft.track.start.usage=
commands.computercraft.track.start.stop=%s을(를) 실행하여 추적을 중지하고 결과를 확인합니다.
commands.computercraft.track.stop.synopsis=모든 컴퓨터의 추적을 중지하기
commands.computercraft.track.stop.desc=모든 컴퓨터의 이벤트 및 실행 시간 추적을 중지합니다.
commands.computercraft.track.stop.usage=
commands.computercraft.track.stop.action=추적을 중지하려면 클릭하세요.
commands.computercraft.track.stop.not_enabled=현재 추적하는 컴퓨터가 없습니다.
commands.computercraft.track.dump.synopsis=최신 추적 결과를 덤프하기
commands.computercraft.track.dump.desc=최신 컴퓨터 추적의 결과를 덤프합니다.
commands.computercraft.track.dump.usage=[kind]
commands.computercraft.track.dump.no_timings=사용가능한 시간이 없습니다.
commands.computercraft.track.dump.no_field=알 수 없는 필드 '%s'
commands.computercraft.track.dump.computer=컴퓨터
commands.computercraft.reload.synopsis=컴퓨터크래프트 구성파일을 리로드하기
commands.computercraft.reload.desc=컴퓨터크래프트 구성파일을 리로드합니다.
commands.computercraft.reload.usage=
commands.computercraft.reload.done=리로드된 구성
commands.computercraft.queue.synopsis=computer_command 이벤트를 명령 컴퓨터에 보내기
commands.computercraft.queue.desc=computer_command 이벤트를 명령 컴퓨터로 전송하여 추가 인수를 전달합니다. 이는 대부분 지도 제작자를 위해 설계되었으며, 보다 컴퓨터 친화적인 버전의 /trigger 역할을 합니다. 어떤 플레이어든 명령을 실행할 수 있으며, 이는 텍스트 구성 요소의 클릭 이벤트를 통해 수행될 가능성이 가장 높습니다.
commands.computercraft.queue.usage=<id> [args...]
commands.computercraft.generic.no_position=<no pos>
commands.computercraft.generic.position=%s, %s, %s
commands.computercraft.generic.yes=Y
commands.computercraft.generic.no=N
commands.computercraft.generic.exception=처리되지 않은 예외 (%s)
commands.computercraft.generic.additional_rows=%d개의 추가 행...
commands.computercraft.argument.no_matching='%s'와 일치하는 컴퓨터가 없습니다.
commands.computercraft.argument.many_matching='%s'와 일치하는 여러 컴퓨터 (인스턴스 %s)
commands.computercraft.argument.not_number='%s'는 숫자가 아닙니다.
# Names for the various tracking fields.
tracking_field.computercraft.tasks.name=작업
tracking_field.computercraft.total.name=전체 시간
tracking_field.computercraft.average.name=평균 시간
tracking_field.computercraft.max.name=최대 시간
tracking_field.computercraft.server_count.name=서버 작업 수
tracking_field.computercraft.server_time.name=서버 작업 시간
tracking_field.computercraft.peripheral.name=주변 호출
tracking_field.computercraft.fs.name=파일시스템 작업
tracking_field.computercraft.turtle.name=터틀 작업
tracking_field.computercraft.http.name=HTTP 요청
tracking_field.computercraft.http_upload.name=HTTP 업로드
tracking_field.computercraft.http_download.name=HTTT 다운로드
tracking_field.computercraft.websocket_incoming.name=웹소켓 수신
tracking_field.computercraft.websocket_outgoing.name=웹소켓 송신
tracking_field.computercraft.coroutines_created.name=코루틴 생성됨
tracking_field.computercraft.coroutines_dead.name=코루틴 처리됨
# Misc tooltips
gui.computercraft.tooltip.copy=클립보드에 복사
gui.computercraft.tooltip.computer_id=(컴퓨터 ID: %s)
gui.computercraft.tooltip.disk_id=(디스크 ID: %s)
# Config options
gui.computercraft:config.computer_space_limit=컴퓨터 공간 제한 (바이트)
gui.computercraft:config.floppy_space_limit=플로피 디스크 공간 제한 (바이트)
gui.computercraft:config.maximum_open_files=컴퓨터당 최대 파일 열기
gui.computercraft:config.disable_lua51_features=Lua 5.1 기능 미사용
gui.computercraft:config.default_computer_settings=기본 컴퓨터 설정
gui.computercraft:config.debug_enabled=디버그 라이브러리 사용
gui.computercraft:config.log_computer_errors=컴퓨터 오류 로그
gui.computercraft:config.execution=실행
gui.computercraft:config.execution.computer_threads=컴퓨터 쓰레드
gui.computercraft:config.execution.max_main_global_time=전역 시간 당 서버 제한
gui.computercraft:config.execution.max_main_computer_time=컴퓨터 시간 당 서버 제한
gui.computercraft:config.http=HTTP
gui.computercraft:config.http.enabled=HTTP API 사용하기
gui.computercraft:config.http.websocket_enabled=웹소켓 사용
gui.computercraft:config.http.allowed_domains=허용된 도메인
gui.computercraft:config.http.blocked_domains=차단된 도메인
gui.computercraft:config.http.timeout=타임아웃
gui.computercraft:config.http.max_requests=최대 동시 요청 수
gui.computercraft:config.http.max_download=최대 응답 크기
gui.computercraft:config.http.max_upload=최대 요청 크기
gui.computercraft:config.http.max_websockets=최대 동시 웹소켓 수
gui.computercraft:config.http.max_websocket_message=최대 웹 포켓 메시지 크기
gui.computercraft:config.peripheral=주변
gui.computercraft:config.peripheral.command_block_enabled=명령 블록 주변 장치 사용
gui.computercraft:config.peripheral.modem_range=모뎀 범위(기본값)
gui.computercraft:config.peripheral.modem_high_altitude_range=모뎀 범위(높은 고도)
gui.computercraft:config.peripheral.modem_range_during_storm=모뎀 범위(나쁜 날씨)
gui.computercraft:config.peripheral.modem_high_altitude_range_during_storm=모뎀 범위(높은 고도, 나쁜 날씨)
gui.computercraft:config.peripheral.max_notes_per_tick=컴퓨터가 한 번에 재생할 수 있는 최대 소리 수
gui.computercraft:config.turtle=터틀
gui.computercraft:config.turtle.need_fuel=연료 사용
gui.computercraft:config.turtle.normal_fuel_limit=터틀 연료 제한
gui.computercraft:config.turtle.advanced_fuel_limit=고급 터틀 연료 제한
gui.computercraft:config.turtle.obey_block_protection=터틀이 블록 보호에 따르기
gui.computercraft:config.turtle.can_push=터틀이 엔티티 밀어내기
gui.computercraft:config.turtle.disabled_actions=터틀 액션 미사용

View File

@ -143,8 +143,8 @@
"tracking_field.computercraft.coroutines_dead.name": "协同处理", "tracking_field.computercraft.coroutines_dead.name": "协同处理",
"gui.computercraft.tooltip.copy": "复制到剪贴板", "gui.computercraft.tooltip.copy": "复制到剪贴板",
"gui.computercraft.tooltip.computer_id": "(计算机ID: %s)", "gui.computercraft.tooltip.computer_id": "计算机ID: %s",
"gui.computercraft.tooltip.disk_id": "(磁盘ID: %s)", "gui.computercraft.tooltip.disk_id": "磁盘ID: %s",
"gui.computercraft.config.computer_space_limit": "计算机空间限制(字节)", "gui.computercraft.config.computer_space_limit": "计算机空间限制(字节)",
"gui.computercraft.config.floppy_space_limit": "软盘空间限制(字节)", "gui.computercraft.config.floppy_space_limit": "软盘空间限制(字节)",

View File

@ -1,195 +0,0 @@
itemGroup.computercraft=CC: Tweaked
tile.computercraft:computer.name=计算机
tile.computercraft:advanced_computer.name=高级计算机
tile.computercraft:drive.name=磁盘驱动器
tile.computercraft:printer.name=打印机
tile.computercraft:monitor.name=显示器
tile.computercraft:advanced_monitor.name=高级显示器
tile.computercraft:wireless_modem.name=无线调制解调器
tile.computercraft:wired_modem.name=有线调制解调器
tile.computercraft:cable.name=网络电缆
tile.computercraft:command_computer.name=命令电脑
tile.computercraft:advanced_modem.name=末影调制解调器
tile.computercraft:speaker.name=扬声器
tile.computercraft:turtle.name=海龟
tile.computercraft:turtle.upgraded.name=%s海龟
tile.computercraft:turtle.upgraded_twice.name=%s%s海龟
tile.computercraft:advanced_turtle.name=高级海龟
tile.computercraft:advanced_turtle.upgraded.name=高级%s海龟
tile.computercraft:advanced_turtle.upgraded_twice.name=高级%s%s海龟
item.computercraft:disk.name=软盘
item.computercraft:treasure_disk.name=软盘
item.computercraft:page.name=打印纸
item.computercraft:pages.name=打印纸
item.computercraft:book.name=打印书
item.computercraft:pocket_computer.name=手提计算机
item.computercraft:pocket_computer.upgraded.name=%s手提计算机
item.computercraft:advanced_pocket_computer.name=高级手提计算机
item.computercraft:advanced_pocket_computer.upgraded.name=高级%s手提计算机
upgrade.minecraft:diamond_sword.adjective=战斗
upgrade.minecraft:diamond_shovel.adjective=挖掘
upgrade.minecraft:diamond_pickaxe.adjective=采掘
upgrade.minecraft:diamond_axe.adjective=伐木
upgrade.minecraft:diamond_hoe.adjective=耕种
upgrade.computercraft:wireless_modem.adjective=无线
upgrade.minecraft:crafting_table.adjective=合成
upgrade.computercraft:advanced_modem.adjective=末影
upgrade.computercraft:speaker.adjective=喧闹
chat.computercraft.wired_modem.peripheral_connected=Peripheral "%s"连接到网络
chat.computercraft.wired_modem.peripheral_disconnected=Peripheral "%s"与网络断开连接
# Command descriptions, usage and any additional messages.
commands.computercraft.synopsis=各种控制计算机的命令.
commands.computercraft.desc=/computercraft命令提供各种调试和管理工具用于控制和与计算机交互.
commands.computercraft.help.synopsis=为特定的命令提供帮助
commands.computercraft.help.desc=
commands.computercraft.help.usage=[command]
commands.computercraft.help.no_children=%s没有子命令
commands.computercraft.help.no_command=没有这样的命令'%s'
commands.computercraft.dump.synopsis=显示计算机的状态.
commands.computercraft.dump.desc=显示所有计算机的状态或某台计算机的特定信息. 你可以指定计算机的实例id (例如. 123), 计算机id (例如. #123)或标签(例如. "@My Computer").
commands.computercraft.dump.usage=[id]
commands.computercraft.dump.action=查看有关此计算机的更多信息
commands.computercraft.shutdown.synopsis=远程关闭计算机.
commands.computercraft.shutdown.desc=关闭列出的计算机或全部计算机(如果未指定). 你可以指定计算机的实例id (例如. 123), 计算机id (例如. #123)或标签(例如. "@My Computer").
commands.computercraft.shutdown.usage=[ids...]
commands.computercraft.shutdown.done=关闭%s/%s计算机
commands.computercraft.turn_on.synopsis=远程打开计算机.
commands.computercraft.turn_on.desc=打开列出的计算机. 你可以指定计算机的实例id (例如. 123), 计算机id (例如. #123)或标签(例如. "@My Computer").
commands.computercraft.turn_on.usage=[ids...]
commands.computercraft.turn_on.done=打开%s/%s计算机
commands.computercraft.tp.synopsis=传送到特定的计算机.
commands.computercraft.tp.desc=传送到计算机的位置. 你可以指定计算机的实例id (例如. 123)或计算机id (例如. #123).
commands.computercraft.tp.usage=<id>
commands.computercraft.tp.action=传送到这台电脑
commands.computercraft.tp.not_entity=无法为非玩家打开终端
commands.computercraft.tp.not_there=无法在世界上定位电脑
commands.computercraft.view.synopsis=查看计算机的终端.
commands.computercraft.view.desc=打开计算机的终端,允许远程控制计算机. 这不提供对海龟库存的访问. 你可以指定计算机的实例id (例如. 123)或计算机id (例如. #123).
commands.computercraft.view.usage=<id>
commands.computercraft.view.action=查看此计算机
commands.computercraft.view.not_player=无法为非玩家打开终端
commands.computercraft.track.synopsis=跟踪计算机的执行时间.
commands.computercraft.track.desc=跟踪计算机执行的时间以及它们处理的事件数. 这以/forge track类似的方式呈现信息可用于诊断滞后.
commands.computercraft.track.start.synopsis=开始跟踪所有计算机
commands.computercraft.track.start.desc=开始跟踪所有计算机的执行时间和事件计数. 这将放弃先前运行的结果.
commands.computercraft.track.start.usage=
commands.computercraft.track.start.stop=运行%s以停止跟踪并查看结果
commands.computercraft.track.stop.synopsis=停止跟踪所有计算机
commands.computercraft.track.stop.desc=停止跟踪所有计算机的事件和执行时间
commands.computercraft.track.stop.usage=
commands.computercraft.track.stop.action=点击停止跟踪
commands.computercraft.track.stop.not_enabled=目前没有跟踪计算机
commands.computercraft.track.dump.synopsis=输出最新的跟踪结果
commands.computercraft.track.dump.desc=输出计算机跟踪的最新结果.
commands.computercraft.track.dump.usage=[kind]
commands.computercraft.track.dump.no_timings=没有时间可用
commands.computercraft.track.dump.no_field=未知字节'%s'
commands.computercraft.track.dump.computer=计算器
commands.computercraft.reload.synopsis=重新加载ComputerCraft配置文件
commands.computercraft.reload.desc=重新加载ComputerCraft配置文件
commands.computercraft.reload.usage=
commands.computercraft.reload.done=重新加载配置
commands.computercraft.queue.synopsis=将computer_command事件发送到命令计算机
commands.computercraft.queue.desc=发送computer_command事件到命令计算机,并传递其他参数. 这主要是为地图制作者设计的, 作为/trigger更加计算机友好的版本. 任何玩家都可以运行命令, 这很可能是通过文本组件的点击事件完成的.
commands.computercraft.queue.usage=<id> [args...]
commands.computercraft.generic.no_position=<无位置>
commands.computercraft.generic.position=%s, %s, %s
commands.computercraft.generic.yes=Y
commands.computercraft.generic.no=N
commands.computercraft.generic.exception=未处理的异常(%s)
commands.computercraft.generic.additional_rows=%d额外的行…
commands.computercraft.argument.no_matching=没有计算机匹配'%s'
commands.computercraft.argument.many_matching=多台计算机匹配'%s' (实例%s)
commands.computercraft.argument.not_number='%s'不是一个数字
# Names for the various tracking fields.
tracking_field.computercraft.tasks.name=任务
tracking_field.computercraft.total.name=总计时间
tracking_field.computercraft.average.name=平均时间
tracking_field.computercraft.max.name=最大时间
tracking_field.computercraft.server_count.name=服务器任务计数
tracking_field.computercraft.server_time.name=服务器任务时间
tracking_field.computercraft.peripheral.name=外围设备呼叫
tracking_field.computercraft.fs.name=文件系统操作
tracking_field.computercraft.turtle.name=海龟行动
tracking_field.computercraft.http.name=HTTP需求
tracking_field.computercraft.http_upload.name=HTTP上传
tracking_field.computercraft.http_download.name=HTTP下载
tracking_field.computercraft.websocket_incoming.name=Websocket传入
tracking_field.computercraft.websocket_outgoing.name=Websocket传出
tracking_field.computercraft.coroutines_created.name=协同创建
tracking_field.computercraft.coroutines_dead.name=协同处理
# Misc tooltips
gui.computercraft.tooltip.copy=复制到剪贴板
gui.computercraft.tooltip.computer_id=(计算机ID: %s)
gui.computercraft.tooltip.disk_id=(磁盘ID: %s)
# Config options
gui.computercraft:config.computer_space_limit=计算机空间限制(字节)
gui.computercraft:config.floppy_space_limit=软盘空间限制(字节)
gui.computercraft:config.maximum_open_files=每台计算机打开的最大文件数
gui.computercraft:config.disable_lua51_features=禁用Lua 5.1功能
gui.computercraft:config.default_computer_settings=默认计算机设置
gui.computercraft:config.debug_enabled=启用debug库
gui.computercraft:config.log_computer_errors=记录计算机错误
gui.computercraft:config.execution=执行
gui.computercraft:config.execution.computer_threads=计算机线程数
gui.computercraft:config.execution.max_main_global_time=服务器全局tick时间限制
gui.computercraft:config.execution.max_main_computer_time=服务器计算机tick时间限制
gui.computercraft:config.http=HTTP
gui.computercraft:config.http.enabled=启用HTTP API
gui.computercraft:config.http.websocket_enabled=启用websockets
gui.computercraft:config.http.whitelist=HTTP白名单
gui.computercraft:config.http.blacklist=HTTP黑名单
gui.computercraft:config.http.timeout=Timeout
gui.computercraft:config.http.max_requests=最大并发请求数
gui.computercraft:config.http.max_download=最大响应数据大小
gui.computercraft:config.http.max_upload=最大请求数据大小
gui.computercraft:config.http.max_websockets=最大并发websockets数
gui.computercraft:config.http.max_websocket_message=最大websockets消息大小
gui.computercraft:config.peripheral=外围设备
gui.computercraft:config.peripheral.command_block_enabled=启用命令方块外设
gui.computercraft:config.peripheral.modem_range=调制解调器范围(默认)
gui.computercraft:config.peripheral.modem_high_altitude_range=调制解调器范围(高海拔)
gui.computercraft:config.peripheral.modem_range_during_storm=调制解调器范围(恶劣天气)
gui.computercraft:config.peripheral.modem_high_altitude_range_during_storm=调制解调器范围(高海拔, 恶劣天气)
gui.computercraft:config.peripheral.max_notes_per_tick=计算机一次可以播放的最大音符数量
gui.computercraft:config.turtle=海龟
gui.computercraft:config.turtle.need_fuel=启用燃料
gui.computercraft:config.turtle.normal_fuel_limit=海龟燃料限制
gui.computercraft:config.turtle.advanced_fuel_limit=高级海龟燃料限制
gui.computercraft:config.turtle.obey_block_protection=海龟服从方块保护
gui.computercraft:config.turtle.can_push=海龟可以推动实体
gui.computercraft:config.turtle.disabled_actions=禁用海龟动作

View File

@ -64,24 +64,33 @@ function isPresent(name)
return false return false
end end
--- Get the type of the peripheral with the given name. --- Get the type of a wrapped peripheral, or a peripheral with the given name.
-- --
-- @tparam string name The name of the peripheral to find. -- @tparam string|table peripheral The name of the peripheral to find, or a
-- wrapped peripheral instance.
-- @treturn string|nil The peripheral's type, or `nil` if it is not present. -- @treturn string|nil The peripheral's type, or `nil` if it is not present.
function getType(name) function getType(peripheral)
expect(1, name, "string") expect(1, peripheral, "string", "table")
if native.isPresent(name) then if type(peripheral) == "string" then -- Peripheral name passed
return native.getType(name) if native.isPresent(peripheral) then
return native.getType(peripheral)
end end
for n = 1, #sides do for n = 1, #sides do
local side = sides[n] local side = sides[n]
if native.getType(side) == "modem" and not native.call(side, "isWireless") and if native.getType(side) == "modem" and not native.call(side, "isWireless") and
native.call(side, "isPresentRemote", name) native.call(side, "isPresentRemote", peripheral)
then then
return native.call(side, "getTypeRemote", name) return native.call(side, "getTypeRemote", peripheral)
end end
end end
return nil return nil
else
local mt = getmetatable(peripheral)
if not mt or mt.__name ~= "peripheral" or type(mt.type) ~= "string" then
error("bad argument #1 (table is not a peripheral)", 2)
end
return mt.type
end
end end
--- Get all available methods for the peripheral with the given name. --- Get all available methods for the peripheral with the given name.
@ -105,6 +114,19 @@ function getMethods(name)
return nil return nil
end end
--- Get the name of a peripheral wrapped with @{peripheral.wrap}.
--
-- @tparam table peripheral The peripheral to get the name of.
-- @treturn string The name of the given peripheral.
function getName(peripheral)
expect(1, peripheral, "table")
local mt = getmetatable(peripheral)
if not mt or mt.__name ~= "peripheral" or type(mt.name) ~= "string" then
error("bad argument #1 (table is not a peripheral)", 2)
end
return mt.name
end
--- Call a method on the peripheral with the given name. --- Call a method on the peripheral with the given name.
-- --
-- @tparam string name The name of the peripheral to invoke the method on. -- @tparam string name The name of the peripheral to invoke the method on.
@ -148,7 +170,11 @@ function wrap(name)
return nil return nil
end end
local result = {} local result = setmetatable({}, {
__name = "peripheral",
name = name,
type = peripheral.getType(name),
})
for _, method in ipairs(methods) do for _, method in ipairs(methods) do
result[method] = function(...) result[method] = function(...)
return peripheral.call(name, method, ...) return peripheral.call(name, method, ...)

View File

@ -29,7 +29,7 @@ local tReceivedMessageTimeouts = {}
local tHostnames = {} local tHostnames = {}
--- Opens a modem with the given @{peripheral} name, allowing it to send and --- Opens a modem with the given @{peripheral} name, allowing it to send and
--- receive messages over rednet. -- receive messages over rednet.
-- --
-- This will open the modem on two channels: one which has the same -- This will open the modem on two channels: one which has the same
-- @{os.getComputerID|ID} as the computer, and another on -- @{os.getComputerID|ID} as the computer, and another on
@ -246,7 +246,7 @@ function host(sProtocol, sHostname)
end end
--- Stop @{rednet.host|hosting} a specific protocol, meaning it will no longer --- Stop @{rednet.host|hosting} a specific protocol, meaning it will no longer
--- respond to @{rednet.lookup} requests. -- respond to @{rednet.lookup} requests.
-- --
-- @tparam string sProtocol The protocol to unregister your self from. -- @tparam string sProtocol The protocol to unregister your self from.
function unhost(sProtocol) function unhost(sProtocol)

View File

@ -3,6 +3,7 @@ The peripheral API is for interacting with external peripheral devices. Type "he
Functions in the peripheral API: Functions in the peripheral API:
peripheral.getNames() peripheral.getNames()
peripheral.isPresent( name ) peripheral.isPresent( name )
peripheral.getName( peripheral )
peripheral.getType( name ) peripheral.getType( name )
peripheral.getMethods( name ) peripheral.getMethods( name )
peripheral.call( name, methodName, param1, param2, etc ) peripheral.call( name, methodName, param1, param2, etc )

View File

@ -28,7 +28,7 @@ local monitor = peripheral.wrap(sName)
local previousTerm = term.redirect(monitor) local previousTerm = term.redirect(monitor)
local co = coroutine.create(function() local co = coroutine.create(function()
shell.run(sProgram, table.unpack(tArgs, 3)) (shell.execute or shell.run)(sProgram, table.unpack(tArgs, 3))
end) end)
local function resume(...) local function resume(...)

View File

@ -130,8 +130,25 @@ else
bgColour = colours.black bgColour = colours.black
end end
local function run(_sCommand, ...) --- Run a program with the supplied arguments.
local sPath = shell.resolveProgram(_sCommand) --
-- Unlike @{shell.run}, each argument is passed to the program verbatim. While
-- `shell.run("echo", "b c")` runs `echo` with `b` and `c`,
-- `shell.execute("echo", "b c")` runs `echo` with a single argument `b c`.
--
-- @tparam string command The program to execute.
-- @tparam string ... Arguments to this program.
-- @treturn boolean Whether the program exited successfully.
-- @usage Run `paint my-image` from within your program:
--
-- shell.execute("paint", "my-image")
function shell.execute(command, ...)
expect(1, command, "string")
for i = 1, select('#', ...) do
expect(i + 1, select(i, ...), "string")
end
local sPath = shell.resolveProgram(command)
if sPath ~= nil then if sPath ~= nil then
tProgramStack[#tProgramStack + 1] = sPath tProgramStack[#tProgramStack + 1] = sPath
if multishell then if multishell then
@ -144,7 +161,7 @@ local function run(_sCommand, ...)
local sDir = fs.getDir(sPath) local sDir = fs.getDir(sPath)
local env = createShellEnv(sDir) local env = createShellEnv(sDir)
env.arg = { [0] = _sCommand, ... } env.arg = { [0] = command, ... }
local result = os.run(env, sPath, ...) local result = os.run(env, sPath, ...)
tProgramStack[#tProgramStack] = nil tProgramStack[#tProgramStack] = nil
@ -196,11 +213,12 @@ end
-- @usage Run `paint my-image` from within your program: -- @usage Run `paint my-image` from within your program:
-- --
-- shell.run("paint", "my-image") -- shell.run("paint", "my-image")
-- @see shell.execute Run a program directly without parsing the arguments.
function shell.run(...) function shell.run(...)
local tWords = tokenise(...) local tWords = tokenise(...)
local sCommand = tWords[1] local sCommand = tWords[1]
if sCommand then if sCommand then
return run(sCommand, table.unpack(tWords, 2)) return shell.execute(sCommand, table.unpack(tWords, 2))
end end
return false return false
end end

View File

@ -0,0 +1 @@
_G.__arg = _ENV.arg

View File

@ -47,7 +47,7 @@ local function default_stub() end
--- Stub a table entry with a new value. --- Stub a table entry with a new value.
-- --
-- @tparam table -- @tparam table tbl The table whose field should be stubbed.
-- @tparam string key The variable to stub -- @tparam string key The variable to stub
-- @param[opt] value The value to stub it with. If this is a function, one can -- @param[opt] value The value to stub it with. If this is a function, one can
-- use the various stub expectation methods to determine what it was called -- use the various stub expectation methods to determine what it was called

View File

@ -8,10 +8,30 @@ describe("The peripheral library", function()
end) end)
end) end)
describe("peripheral.getName", function()
it("validates arguments", function()
expect.error(peripheral.getName, nil):eq("bad argument #1 (expected table, got nil)")
expect.error(peripheral.getName, {}):eq("bad argument #1 (table is not a peripheral)")
end)
it_modem("can get the name of a wrapped peripheral", function()
expect(peripheral.getName(peripheral.wrap("top"))):eq("top")
end)
end)
describe("peripheral.getType", function() describe("peripheral.getType", function()
it("validates arguments", function() it("validates arguments", function()
peripheral.getType("") peripheral.getType("")
expect.error(peripheral.getType, nil):eq("bad argument #1 (expected string, got nil)") expect.error(peripheral.getType, nil):eq("bad argument #1 (expected string or table, got nil)")
expect.error(peripheral.getType, {}):eq("bad argument #1 (table is not a peripheral)")
end)
it_modem("can get the type of a peripheral by side", function()
expect(peripheral.getType("top")):eq("modem")
end)
it_modem("can get the type of a wrapped peripheral", function()
expect(peripheral.getType(peripheral.wrap("top"))):eq("modem")
end) end)
end) end)

View File

@ -6,19 +6,25 @@ describe("The shell", function()
end) end)
end) end)
describe("shell.run", function() describe("shell.execute", function()
it("sets the arguments", function() it("parses in arguments verbatim", function()
local handle = fs.open("test-files/out.txt", "w") shell.execute("/test-rom/data/dump-args", "arg1", "arg 2")
handle.writeLine("_G.__arg = arg")
handle.close()
shell.run("/test-files/out.txt", "arg1", "arg2")
fs.delete("test-files/out.txt")
local args = _G.__arg local args = _G.__arg
_G.__arg = nil _G.__arg = nil
expect(args):same { [0] = "/test-files/out.txt", "arg1", "arg2" } expect(args):same { [0] = "/test-rom/data/dump-args", "arg1", "arg 2" }
end)
end)
describe("shell.run", function()
it("tokenises the arguments", function()
shell.run("/test-rom/data/dump-args", "arg1", "arg 2")
local args = _G.__arg
_G.__arg = nil
expect(args):same { [0] = "/test-rom/data/dump-args", "arg1", "arg", "2" }
end) end)
end) end)

View File

@ -19,10 +19,12 @@
local primary = "en_us" local primary = "en_us"
local secondary = { local secondary = {
"da_dk",
"de_de", "de_de",
"es_es", "es_es",
"fr_fr", "fr_fr",
"it_it", "it_it",
"ko_kr",
"pt_br", "pt_br",
"sv_se", "sv_se",
"zh_cn", "zh_cn",