1
0
mirror of https://github.com/SquidDev-CC/CC-Tweaked synced 2024-12-13 11:40:29 +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
end return native.getType(peripheral)
for n = 1, #sides do
local side = sides[n]
if native.getType(side) == "modem" and not native.call(side, "isWireless") and
native.call(side, "isPresentRemote", name)
then
return native.call(side, "getTypeRemote", name)
end end
for n = 1, #sides do
local side = sides[n]
if native.getType(side) == "modem" and not native.call(side, "isWireless") and
native.call(side, "isPresentRemote", peripheral)
then
return native.call(side, "getTypeRemote", peripheral)
end
end
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
return nil
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",