Util methods for centralized local key and text component generation.
Future-proof item description id generation.
This commit is contained in:
@@ -18,6 +18,8 @@ import net.minecraft.util.math.vector.Vector3d;
|
||||
import net.minecraft.util.text.TranslationTextComponent;
|
||||
import org.lwjgl.glfw.GLFW;
|
||||
|
||||
import static li.cil.oc2.common.util.TranslationUtils.text;
|
||||
|
||||
public final class BusInterfaceScreen extends Screen {
|
||||
private static final ResourceLocation BACKGROUND_LOCATION = new ResourceLocation(API.MOD_ID, "textures/gui/screen/bus_interface.png");
|
||||
|
||||
@@ -60,7 +62,7 @@ public final class BusInterfaceScreen extends Screen {
|
||||
left = (width - BACKGROUND.width) / 2;
|
||||
top = (height - BACKGROUND.height) / 2;
|
||||
|
||||
nameField = new TextFieldWidget(font, left + TEXT_LEFT, top + TEXT_TOP, 192, 12, new TranslationTextComponent("oc2.gui.bus_interface_name"));
|
||||
nameField = new TextFieldWidget(font, left + TEXT_LEFT, top + TEXT_TOP, 192, 12, text("{mod}.gui.bus_interface_name"));
|
||||
nameField.setCanLoseFocus(false);
|
||||
nameField.setTextColor(0xFFFFFFFF);
|
||||
nameField.setBordered(false);
|
||||
|
||||
@@ -9,7 +9,6 @@ import net.minecraft.client.gui.widget.list.ExtendedList;
|
||||
import net.minecraft.util.text.Color;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
import net.minecraft.util.text.StringTextComponent;
|
||||
import net.minecraft.util.text.TranslationTextComponent;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -20,6 +19,8 @@ import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static li.cil.oc2.common.util.TranslationUtils.text;
|
||||
|
||||
public class FileChooserScreen extends Screen {
|
||||
private static final Logger LOGGER = LogManager.getLogger();
|
||||
|
||||
@@ -32,13 +33,13 @@ public class FileChooserScreen extends Screen {
|
||||
private static final int BUTTON_HEIGHT = 20;
|
||||
private static final int LIST_ENTRY_HEIGHT = 12;
|
||||
|
||||
private static final TranslationTextComponent OPEN_TITLE_TEXT = new TranslationTextComponent("gui.oc2.file_chooser.title.load");
|
||||
private static final TranslationTextComponent SAVE_TITLE_TEXT = new TranslationTextComponent("gui.oc2.file_chooser.title.save");
|
||||
private static final TranslationTextComponent FILE_NAME_TEXT = new TranslationTextComponent("gui.oc2.file_chooser.text_field.filename");
|
||||
private static final TranslationTextComponent LOAD_TEXT = new TranslationTextComponent("gui.oc2.file_chooser.confirm_button.load");
|
||||
private static final TranslationTextComponent SAVE_TEXT = new TranslationTextComponent("gui.oc2.file_chooser.confirm_button.save");
|
||||
private static final TranslationTextComponent OVERWRITE_TEXT = new TranslationTextComponent("gui.oc2.file_chooser.confirm_button.overwrite");
|
||||
private static final TranslationTextComponent CANCEL_TEXT = new TranslationTextComponent("gui.oc2.file_chooser.cancel_button");
|
||||
private static final ITextComponent OPEN_TITLE_TEXT = text("gui.{mod}.file_chooser.title.load");
|
||||
private static final ITextComponent SAVE_TITLE_TEXT = text("gui.{mod}.file_chooser.title.save");
|
||||
private static final ITextComponent FILE_NAME_TEXT = text("gui.{mod}.file_chooser.text_field.filename");
|
||||
private static final ITextComponent LOAD_TEXT = text("gui.{mod}.file_chooser.confirm_button.load");
|
||||
private static final ITextComponent SAVE_TEXT = text("gui.{mod}.file_chooser.confirm_button.save");
|
||||
private static final ITextComponent OVERWRITE_TEXT = text("gui.{mod}.file_chooser.confirm_button.overwrite");
|
||||
private static final ITextComponent CANCEL_TEXT = text("gui.{mod}.file_chooser.cancel_button");
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
@@ -19,6 +19,8 @@ import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
|
||||
import static li.cil.oc2.common.util.TranslationUtils.text;
|
||||
|
||||
public final class GuiUtils {
|
||||
public static final ResourceLocation WARN_ICON = new ResourceLocation(API.MOD_ID, "textures/gui/overlay/slot_warn.png");
|
||||
public static final ResourceLocation INFO_ICON = new ResourceLocation(API.MOD_ID, "textures/gui/overlay/slot_info.png");
|
||||
@@ -26,9 +28,9 @@ public final class GuiUtils {
|
||||
private static final Map<DeviceType, ITextComponent> WARNING_BY_DEVICE_TYPE = Util.make(() -> {
|
||||
final HashMap<DeviceType, ITextComponent> map = new HashMap<>();
|
||||
|
||||
map.put(DeviceTypes.FLASH_MEMORY, new TranslationTextComponent("tooltip.oc2.flash_memory_missing"));
|
||||
map.put(DeviceTypes.MEMORY, new TranslationTextComponent("tooltip.oc2.memory_missing"));
|
||||
map.put(DeviceTypes.HARD_DRIVE, new TranslationTextComponent("tooltip.oc2.hard_drive_missing"));
|
||||
map.put(DeviceTypes.FLASH_MEMORY, text("tooltip.{mod}.flash_memory_missing"));
|
||||
map.put(DeviceTypes.MEMORY, text("tooltip.{mod}.memory_missing"));
|
||||
map.put(DeviceTypes.HARD_DRIVE, text("tooltip.{mod}.hard_drive_missing"));
|
||||
|
||||
return map;
|
||||
});
|
||||
|
||||
@@ -3,6 +3,8 @@ package li.cil.oc2.common;
|
||||
import li.cil.oc2.api.API;
|
||||
import net.minecraft.util.Direction;
|
||||
|
||||
import static li.cil.oc2.common.util.TranslationUtils.key;
|
||||
|
||||
public final class Constants {
|
||||
public static final int KILOBYTE = 1024;
|
||||
public static final int MEGABYTE = 1024 * KILOBYTE;
|
||||
@@ -26,29 +28,29 @@ public final class Constants {
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
public static final String TOOLTIP_DESCRIPTION_SUFFIX = ".desc";
|
||||
public static final String TOOLTIP_DEVICE_NEEDS_REBOOT = "tooltip.oc2.device_needs_reboot";
|
||||
public static final String TOOLTIP_ENERGY = "tooltip.oc2.energy";
|
||||
public static final String TOOLTIP_ENERGY_CONSUMPTION = "tooltip.oc2.energyConsumption";
|
||||
public static final String TOOLTIP_CONFIRM = "tooltip.oc2.confirm";
|
||||
public static final String TOOLTIP_CANCEL = "tooltip.oc2.cancel";
|
||||
public static final String TOOLTIP_DEVICE_NEEDS_REBOOT = key("tooltip.{mod}.device_needs_reboot");
|
||||
public static final String TOOLTIP_ENERGY = key("tooltip.{mod}.energy");
|
||||
public static final String TOOLTIP_ENERGY_CONSUMPTION = key("tooltip.{mod}.energyConsumption");
|
||||
public static final String TOOLTIP_CONFIRM = key("tooltip.{mod}.confirm");
|
||||
public static final String TOOLTIP_CANCEL = key("tooltip.{mod}.cancel");
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
public static final String COMPUTER_SCREEN_CAPTURE_INPUT_CAPTION = "gui.oc2.computer.capture_input.capt";
|
||||
public static final String COMPUTER_SCREEN_CAPTURE_INPUT_DESCRIPTION = "gui.oc2.computer.capture_input.desc";
|
||||
public static final String COMPUTER_SCREEN_POWER_CAPTION = "gui.oc2.computer.power.capt";
|
||||
public static final String COMPUTER_SCREEN_POWER_DESCRIPTION = "gui.oc2.computer.power.desc";
|
||||
public static final String COMPUTER_ERROR_UNKNOWN = "gui.oc2.computer.error.unknown";
|
||||
public static final String COMPUTER_ERROR_MISSING_FIRMWARE = "gui.oc2.computer.error.missing_firmware";
|
||||
public static final String COMPUTER_ERROR_INSUFFICIENT_MEMORY = "gui.oc2.computer.error.insufficient_memory";
|
||||
public static final String COMPUTER_BUS_STATE_INCOMPLETE = "gui.oc2.computer.bus_state.incomplete";
|
||||
public static final String COMPUTER_BUS_STATE_TOO_COMPLEX = "gui.oc2.computer.bus_state.too_complex";
|
||||
public static final String COMPUTER_BUS_STATE_MULTIPLE_CONTROLLERS = "gui.oc2.computer.bus_state.multiple_controllers";
|
||||
public static final String COMPUTER_ERROR_NOT_ENOUGH_ENERGY = "gui.oc2.computer.error.not_enough_energy";
|
||||
public static final String COMPUTER_SCREEN_CAPTURE_INPUT_CAPTION = key("gui.{mod}.computer.capture_input.capt");
|
||||
public static final String COMPUTER_SCREEN_CAPTURE_INPUT_DESCRIPTION = key("gui.{mod}.computer.capture_input.desc");
|
||||
public static final String COMPUTER_SCREEN_POWER_CAPTION = key("gui.{mod}.computer.power.capt");
|
||||
public static final String COMPUTER_SCREEN_POWER_DESCRIPTION = key("gui.{mod}.computer.power.desc");
|
||||
public static final String COMPUTER_ERROR_UNKNOWN = key("gui.{mod}.computer.error.unknown");
|
||||
public static final String COMPUTER_ERROR_MISSING_FIRMWARE = key("gui.{mod}.computer.error.missing_firmware");
|
||||
public static final String COMPUTER_ERROR_INSUFFICIENT_MEMORY = key("gui.{mod}.computer.error.insufficient_memory");
|
||||
public static final String COMPUTER_BUS_STATE_INCOMPLETE = key("gui.{mod}.computer.bus_state.incomplete");
|
||||
public static final String COMPUTER_BUS_STATE_TOO_COMPLEX = key("gui.{mod}.computer.bus_state.too_complex");
|
||||
public static final String COMPUTER_BUS_STATE_MULTIPLE_CONTROLLERS = key("gui.{mod}.computer.bus_state.multiple_controllers");
|
||||
public static final String COMPUTER_ERROR_NOT_ENOUGH_ENERGY = key("gui.{mod}.computer.error.not_enough_energy");
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
public static final String CONNECTOR_ERROR_FULL = "message.oc2.connector.error.full";
|
||||
public static final String CONNECTOR_ERROR_TOO_FAR = "message.oc2.connector.error.too_far";
|
||||
public static final String CONNECTOR_ERROR_OBSTRUCTED = "message.oc2.connector.error.obstructed";
|
||||
public static final String CONNECTOR_ERROR_FULL = key("message.{mod}.connector.error.full");
|
||||
public static final String CONNECTOR_ERROR_TOO_FAR = key("message.{mod}.connector.error.too_far");
|
||||
public static final String CONNECTOR_ERROR_OBSTRUCTED = key("message.{mod}.connector.error.obstructed");
|
||||
}
|
||||
|
||||
@@ -5,13 +5,14 @@ import li.cil.oc2.api.bus.device.DeviceType;
|
||||
import li.cil.oc2.common.bus.device.util.DeviceTypeImpl;
|
||||
import li.cil.oc2.common.util.RegistryUtils;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.text.TranslationTextComponent;
|
||||
import net.minecraftforge.registries.DeferredRegister;
|
||||
import net.minecraftforge.registries.IForgeRegistry;
|
||||
import net.minecraftforge.registries.RegistryBuilder;
|
||||
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import static li.cil.oc2.common.util.TranslationUtils.text;
|
||||
|
||||
public final class DeviceTypes {
|
||||
private static final DeferredRegister<DeviceType> DEVICE_TYPES = RegistryUtils.create(DeviceType.class);
|
||||
|
||||
@@ -35,7 +36,7 @@ public final class DeviceTypes {
|
||||
private static void register(final String name) {
|
||||
DEVICE_TYPES.register(name, () -> new DeviceTypeImpl(
|
||||
new ResourceLocation(API.MOD_ID, "gui/icon/" + name),
|
||||
new TranslationTextComponent("gui.oc2.device_type." + name)
|
||||
text("gui.{mod}.device_type." + name)
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,10 +5,13 @@ import li.cil.oc2.common.bus.device.item.ByteBufferFlashMemoryVMDevice;
|
||||
import li.cil.oc2.common.util.NBTTagIds;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.CompoundNBT;
|
||||
import net.minecraft.util.Util;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public final class FlashMemoryItem extends AbstractStorageItem {
|
||||
@Nullable private String descriptionId;
|
||||
|
||||
public FlashMemoryItem(final int defaultCapacity) {
|
||||
super(createProperties().stacksTo(1), defaultCapacity);
|
||||
}
|
||||
@@ -29,6 +32,9 @@ public final class FlashMemoryItem extends AbstractStorageItem {
|
||||
|
||||
@Override
|
||||
protected String getOrCreateDescriptionId() {
|
||||
return "item.oc2.flash_memory";
|
||||
if (descriptionId == null) {
|
||||
descriptionId = Util.makeDescriptionId("item", Items.FLASH_MEMORY.getId());
|
||||
}
|
||||
return descriptionId;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.ResourceLocationException;
|
||||
import net.minecraft.util.StringUtils;
|
||||
import net.minecraft.util.Util;
|
||||
import net.minecraft.util.text.ITextComponent;
|
||||
import net.minecraft.util.text.StringTextComponent;
|
||||
|
||||
@@ -18,6 +19,7 @@ public final class FlashMemoryWithExternalDataItem extends ModItem {
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
private final ResourceLocation defaultData;
|
||||
@Nullable private String descriptionId;
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -84,6 +86,9 @@ public final class FlashMemoryWithExternalDataItem extends ModItem {
|
||||
|
||||
@Override
|
||||
protected String getOrCreateDescriptionId() {
|
||||
return "item.oc2.flash_memory";
|
||||
if (descriptionId == null) {
|
||||
descriptionId = Util.makeDescriptionId("item", Items.FLASH_MEMORY.getId());
|
||||
}
|
||||
return descriptionId;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,17 @@
|
||||
package li.cil.oc2.common.item;
|
||||
|
||||
import li.cil.oc2.api.API;
|
||||
import net.minecraft.item.DyeColor;
|
||||
import net.minecraft.item.IDyeableArmorItem;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.Util;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public final class HardDriveItem extends AbstractStorageItem implements IDyeableArmorItem {
|
||||
private final int defaultColor;
|
||||
@Nullable private String descriptionId;
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -25,6 +31,9 @@ public final class HardDriveItem extends AbstractStorageItem implements IDyeable
|
||||
|
||||
@Override
|
||||
protected String getOrCreateDescriptionId() {
|
||||
return "item.oc2.hard_drive";
|
||||
if (descriptionId == null) {
|
||||
descriptionId = Util.makeDescriptionId("item", new ResourceLocation(API.MOD_ID, "hard_drive"));
|
||||
}
|
||||
return descriptionId;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,17 @@
|
||||
package li.cil.oc2.common.item;
|
||||
|
||||
import li.cil.oc2.api.API;
|
||||
import net.minecraft.item.DyeColor;
|
||||
import net.minecraft.item.IDyeableArmorItem;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.Util;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public final class HardDriveWithExternalDataItem extends AbstractBlockDeviceItem implements IDyeableArmorItem {
|
||||
private final int defaultColor;
|
||||
@Nullable private String descriptionId;
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -26,6 +31,9 @@ public final class HardDriveWithExternalDataItem extends AbstractBlockDeviceItem
|
||||
|
||||
@Override
|
||||
protected String getOrCreateDescriptionId() {
|
||||
return "item.oc2.hard_drive";
|
||||
if (descriptionId == null) {
|
||||
descriptionId = Util.makeDescriptionId("item", new ResourceLocation(API.MOD_ID, "hard_drive"));
|
||||
}
|
||||
return descriptionId;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,16 @@
|
||||
package li.cil.oc2.common.item;
|
||||
|
||||
import li.cil.oc2.api.API;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.Util;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
public final class MemoryItem extends AbstractStorageItem {
|
||||
@Nullable private String descriptionId;
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
public MemoryItem(final int defaultCapacity) {
|
||||
super(defaultCapacity);
|
||||
}
|
||||
@@ -9,6 +19,9 @@ public final class MemoryItem extends AbstractStorageItem {
|
||||
|
||||
@Override
|
||||
protected String getOrCreateDescriptionId() {
|
||||
return "item.oc2.memory";
|
||||
if (descriptionId == null) {
|
||||
descriptionId = Util.makeDescriptionId("item", new ResourceLocation(API.MOD_ID, "memory"));
|
||||
}
|
||||
return descriptionId;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,9 +16,11 @@ import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import static li.cil.oc2.common.util.TranslationUtils.text;
|
||||
|
||||
public final class RequestImportedFileMessage {
|
||||
private static final Logger LOGGER = LogManager.getLogger();
|
||||
private static final TranslationTextComponent FILE_TOO_LARGE_TEXT = new TranslationTextComponent("message.oc2.import_file.file_too_large");
|
||||
private static final TranslationTextComponent FILE_TOO_LARGE_TEXT = text("message.{mod}.import_file.file_too_large");
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package li.cil.oc2.common.serialization;
|
||||
|
||||
import com.google.common.collect.HashMultimap;
|
||||
import li.cil.oc2.api.API;
|
||||
import li.cil.oc2.common.Constants;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.world.storage.FolderName;
|
||||
@@ -32,7 +33,7 @@ public final class BlobStorage {
|
||||
|
||||
///////////////////////////////////////////////////////////////////
|
||||
|
||||
private static final FolderName BLOBS_FOLDER_NAME = new FolderName("oc2-blobs");
|
||||
private static final FolderName BLOBS_FOLDER_NAME = new FolderName(API.MOD_ID + "-blobs");
|
||||
|
||||
private static final HashMultimap<UUID, Future<Void>> WRITE_HANDLES = HashMultimap.create();
|
||||
private static final HashMultimap<UUID, Future<Void>> READ_HANDLES = HashMultimap.create();
|
||||
|
||||
17
src/main/java/li/cil/oc2/common/util/TranslationUtils.java
Normal file
17
src/main/java/li/cil/oc2/common/util/TranslationUtils.java
Normal file
@@ -0,0 +1,17 @@
|
||||
package li.cil.oc2.common.util;
|
||||
|
||||
import li.cil.oc2.api.API;
|
||||
import net.minecraft.util.text.TranslationTextComponent;
|
||||
|
||||
public final class TranslationUtils {
|
||||
public static String key(final String pattern) {
|
||||
return pattern.replaceAll("\\{mod}", API.MOD_ID);
|
||||
}
|
||||
|
||||
public static TranslationTextComponent text(final String pattern) {
|
||||
return new TranslationTextComponent(key(pattern));
|
||||
}
|
||||
|
||||
private TranslationUtils() {
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user