diff --git a/src/main/java/dan200/computercraft/core/apis/OSAPI.java b/src/main/java/dan200/computercraft/core/apis/OSAPI.java index 4b3a11a11..f2d5e70b7 100644 --- a/src/main/java/dan200/computercraft/core/apis/OSAPI.java +++ b/src/main/java/dan200/computercraft/core/apis/OSAPI.java @@ -8,6 +8,7 @@ import dan200.computercraft.api.lua.ILuaContext; import dan200.computercraft.api.lua.LuaException; +import dan200.computercraft.shared.util.StringUtil; import java.util.Arrays; import java.util.HashMap; @@ -266,11 +267,7 @@ public Object[] callMethod( ILuaContext context, int method, Object[] args ) thr { throw new LuaException( "Expected string or nil" ); } - label = (String)args[0]; - if( label.length() > 32 ) - { - label = label.substring( 0, 32 ); - } + label = StringUtil.normaliseLabel( (String) args[0] ); } m_apiEnvironment.setLabel( label ); return null; diff --git a/src/main/java/dan200/computercraft/shared/peripheral/diskdrive/DiskDrivePeripheral.java b/src/main/java/dan200/computercraft/shared/peripheral/diskdrive/DiskDrivePeripheral.java index d797ad5c0..36a945456 100644 --- a/src/main/java/dan200/computercraft/shared/peripheral/diskdrive/DiskDrivePeripheral.java +++ b/src/main/java/dan200/computercraft/shared/peripheral/diskdrive/DiskDrivePeripheral.java @@ -12,6 +12,7 @@ import dan200.computercraft.api.peripheral.IComputerAccess; import dan200.computercraft.api.peripheral.IPeripheral; import dan200.computercraft.shared.media.items.ItemDiskLegacy; +import dan200.computercraft.shared.util.StringUtil; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -87,6 +88,7 @@ public Object[] callMethod( IComputerAccess computer, ILuaContext context, int m if( media != null ) { ItemStack disk = m_diskDrive.getDiskStack(); + label = StringUtil.normaliseLabel( label ); if( media.setLabel( disk, label ) ) { m_diskDrive.setDiskStack( disk ); diff --git a/src/main/java/dan200/computercraft/shared/util/StringUtil.java b/src/main/java/dan200/computercraft/shared/util/StringUtil.java new file mode 100644 index 000000000..7372e4575 --- /dev/null +++ b/src/main/java/dan200/computercraft/shared/util/StringUtil.java @@ -0,0 +1,20 @@ +package dan200.computercraft.shared.util; + +import java.util.regex.Pattern; + +public class StringUtil +{ + private static final Pattern INVALID_PATTERN = Pattern.compile( "[^ -~]" ); + + public static String normaliseLabel( String label ) + { + label = INVALID_PATTERN.matcher( label ).replaceAll( "" ); + + if( label.length() > 32 ) + { + label = label.substring( 0, 32 ); + } + + return label; + } +}