diff --git a/src/main/java/net/rptools/maptool/language/I18N.java b/src/main/java/net/rptools/maptool/language/I18N.java
index 3e54044bc5..66ab6143d5 100644
--- a/src/main/java/net/rptools/maptool/language/I18N.java
+++ b/src/main/java/net/rptools/maptool/language/I18N.java
@@ -170,6 +170,11 @@ public static String getString(String key) {
* @return the String found with mnemonics removed, or the input key if not found
*/
public static String getText(String key) {
+ if (key == null || key.isBlank()) {
+ // No benefit to doing a lookup
+ return key;
+ }
+
String value = getString(key);
if (value == null) {
log.debug("Cannot find key '" + key + "' in properties file.");
diff --git a/src/main/java/net/rptools/maptool/model/Asset.java b/src/main/java/net/rptools/maptool/model/Asset.java
index 0434e5bc82..6c10df0a18 100644
--- a/src/main/java/net/rptools/maptool/model/Asset.java
+++ b/src/main/java/net/rptools/maptool/model/Asset.java
@@ -16,6 +16,7 @@
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
+import com.google.protobuf.ByteString;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamConverter;
import java.awt.image.BufferedImage;
@@ -791,22 +792,29 @@ private boolean isBroken() {
}
public static Asset fromDto(AssetDto dto) {
+ var dtoData = dto.getData().toByteArray();
var asset =
new Asset(
new MD5Key(dto.getMd5Key()),
dto.getName(),
+ dtoData,
dto.getExtension(),
Asset.Type.valueOf(dto.getType().name()),
- false);
+ dtoData.length == 0);
return asset;
}
public AssetDto toDto() {
- return AssetDto.newBuilder()
- .setMd5Key(getMD5Key().toString())
- .setName(getName())
- .setExtension(getExtension())
- .setType(AssetDtoType.valueOf(getType().name()))
- .build();
+ var builder =
+ AssetDto.newBuilder()
+ .setMd5Key(getMD5Key().toString())
+ .setName(getName())
+ .setExtension(getExtension())
+ .setType(AssetDtoType.valueOf(getType().name()));
+
+ if (getData() != null) {
+ builder.setData(ByteString.copyFrom(data));
+ }
+ return builder.build();
}
}
diff --git a/src/main/proto/data_transfer_objects.proto b/src/main/proto/data_transfer_objects.proto
index 62cb56cf33..d922aa8997 100644
--- a/src/main/proto/data_transfer_objects.proto
+++ b/src/main/proto/data_transfer_objects.proto
@@ -466,6 +466,7 @@ message AssetDto {
string name = 2;
string extension = 3;
AssetDtoType type = 4;
+ bytes data = 5;
}
message LabelDto {
diff --git a/src/main/resources/net/rptools/maptool/client/ui/forms/tokenPropertiesDialog.xml b/src/main/resources/net/rptools/maptool/client/ui/forms/tokenPropertiesDialog.xml
index 3e7d163615..05ab2c3aec 100644
--- a/src/main/resources/net/rptools/maptool/client/ui/forms/tokenPropertiesDialog.xml
+++ b/src/main/resources/net/rptools/maptool/client/ui/forms/tokenPropertiesDialog.xml
@@ -747,7 +747,7 @@
propertiesTable
1161
- EditTokenDialog.table.properties
+
ownershipList
1161
- EditTokenDialog.label.Ownership
+
xmlStatblockRTextScrollPane
1110
- EditTokenDialog.label.hero.statBlockRTextScroll.xml
+
textStatblockRTextScrollPane
1110
- EditTokenDialog.label.hero.statBlockRTextScroll.text
+
summaryText
850
- EditTokenDialog.valueNotSet.hero.summary
+