Fixed the tooltips for GUIs and added a 16MB version of memory and hard drives for use in more intensive applications. Also added a modern version of the floppy disk that holds 1.44MB.

This commit is contained in:
Jackson Abney
2024-05-25 15:05:20 -08:00
parent f8d7ba963f
commit d3c856ec3c
28 changed files with 509 additions and 188 deletions

View File

@@ -125,9 +125,9 @@ public abstract class AbstractMachineInventoryScreen<T extends AbstractMachineTe
protected void renderFg(final GuiGraphics graphics, final float partialTicks, final int mouseX, final int mouseY) {
super.renderFg(graphics, partialTicks, mouseX, mouseY);
//GuiUtils.renderMissingDeviceInfoIcon(graphics, this, DeviceTypes.FLASH_MEMORY, Sprites.WARN_ICON);
//GuiUtils.renderMissingDeviceInfoIcon(graphics, this, DeviceTypes.MEMORY, Sprites.WARN_ICON);
//GuiUtils.renderMissingDeviceInfoIcon(graphics, this, DeviceTypes.HARD_DRIVE, Sprites.INFO_ICON);
GuiUtils.renderMissingDeviceInfoIcon(graphics, this, DeviceTypes.FLASH_MEMORY, Sprites.WARN_ICON);
GuiUtils.renderMissingDeviceInfoIcon(graphics, this, DeviceTypes.MEMORY, Sprites.WARN_ICON);
GuiUtils.renderMissingDeviceInfoIcon(graphics, this, DeviceTypes.HARD_DRIVE, Sprites.INFO_ICON);
if (shouldRenderEnergyBar()) {
final int x = leftPos - Sprites.SIDEBAR_2.width + 4;

View File

@@ -55,8 +55,8 @@ public abstract class AbstractModContainerScreen<T extends AbstractContainerMenu
for (final Renderable widget : renderables) {
if (widget instanceof AbstractWidget abstractWidget) {
if(!abstractWidget.isHovered()) continue;
if(abstractWidget.getTooltip() == null) continue;
System.out.println(abstractWidget.getTooltip());
graphics.renderTooltip(Minecraft.getInstance().font, abstractWidget.getTooltip().toCharSequence(Minecraft.getInstance()), mouseX, mouseY);
}
}

View File

@@ -38,9 +38,9 @@ public final class GuiUtils {
///////////////////////////////////////////////////////////////////
public static <TContainer extends AbstractContainerMenu> void renderMissingDeviceInfoIcon(final GuiGraphics graphics, final AbstractContainerScreen<TContainer> screen, final DeviceType type, final Sprite icon) {
/*findFirstSlotOfTypeIfAllSlotsOfTypeEmpty(screen.getMenu(), type).ifPresent(slot -> icon.draw(graphics,
findFirstSlotOfTypeIfAllSlotsOfTypeEmpty(screen.getMenu(), type).ifPresent(slot -> icon.draw(graphics,
screen.getGuiLeft() + slot.x - 1 + RELATIVE_ICON_POSITION,
screen.getGuiTop() + slot.y - 1 + RELATIVE_ICON_POSITION));*/
screen.getGuiTop() + slot.y - 1 + RELATIVE_ICON_POSITION));
}
public static <TContainer extends AbstractContainerMenu> void renderMissingDeviceInfoTooltip(final GuiGraphics graphics, final AbstractContainerScreen<TContainer> screen, final int mouseX, final int mouseY, final DeviceType type) {

View File

@@ -9,10 +9,19 @@ import net.minecraft.ChatFormatting;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.components.AbstractButton;
import net.minecraft.client.gui.components.Tooltip;
import net.minecraft.client.gui.narration.NarrationElementOutput;
import net.minecraft.client.gui.screens.inventory.tooltip.ClientTooltipComponent;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.ComponentContents;
import net.minecraft.network.chat.Style;
import net.minecraft.util.FormattedCharSequence;
import net.minecraft.util.Mth;
import net.minecraft.world.inventory.tooltip.TooltipComponent;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import javax.annotation.Nullable;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
@@ -84,4 +93,17 @@ public abstract class ImageButton extends AbstractButton {
getFGColor() | Mth.ceil(alpha * 255) << 24);
}
}
@Override
@Nullable
public Tooltip getTooltip()
{
if (tooltip.stream().findFirst().isEmpty()) return null;
StringBuilder builder = new StringBuilder();
for(int i = 0; i < tooltip.size(); i++) {
builder.append(tooltip.get(i).getString() + (i == tooltip.size() - 1 ? "" : "\n"));
}
Component component = Component.literal(builder.toString());
return Tooltip.create(component);
}
}

View File

@@ -41,8 +41,10 @@ public final class CustomItemColors {
Items.HARD_DRIVE_SMALL.get(),
Items.HARD_DRIVE_MEDIUM.get(),
Items.HARD_DRIVE_LARGE.get(),
Items.HARD_DRIVE_EXTRA_LARGE.get(),
Items.HARD_DRIVE_CUSTOM.get(),
Items.FLOPPY.get());
Items.FLOPPY.get(),
Items.FLOPPY_MODERN.get());
}
public static int getColorByDye(final DyeColor dye) {

View File

@@ -19,9 +19,13 @@ public final class CustomItemModelProperties {
(stack, level, entity, seed) -> CustomItemColors.getColor(stack));
ItemProperties.register(Items.HARD_DRIVE_LARGE.get(), CustomItemModelProperties.COLOR_PROPERTY,
(stack, leve, entity, seed) -> CustomItemColors.getColor(stack));
ItemProperties.register(Items.HARD_DRIVE_EXTRA_LARGE.get(), CustomItemModelProperties.COLOR_PROPERTY,
(stack, leve, entity, seed) -> CustomItemColors.getColor(stack));
ItemProperties.register(Items.HARD_DRIVE_CUSTOM.get(), CustomItemModelProperties.COLOR_PROPERTY,
(stack, level, entity, seed) -> CustomItemColors.getColor(stack));
ItemProperties.register(Items.FLOPPY.get(), CustomItemModelProperties.COLOR_PROPERTY,
(stack, level, entity, seed) -> CustomItemColors.getColor(stack));
ItemProperties.register(Items.FLOPPY_MODERN.get(), CustomItemModelProperties.COLOR_PROPERTY,
(stack, level, entity, seed) -> CustomItemColors.getColor(stack));
}
}

View File

@@ -419,7 +419,7 @@ public final class ProjectorDepthRenderer {
0, 5000
);*/
RenderSystem.setProjectionMatrix(screenProjectionMatrix, VertexSorting.ORTHOGRAPHIC_Z);
RenderSystem.setProjectionMatrix(screenProjectionMatrix, VertexSorting.DISTANCE_TO_ORIGIN);
final PoseStack modelViewStack = RenderSystem.getModelViewStack();
modelViewStack.setIdentity();

View File

@@ -87,13 +87,16 @@ public final class ItemGroup {
output.accept(Items.MEMORY_SMALL.get());
output.accept(Items.MEMORY_MEDIUM.get());
output.accept(Items.MEMORY_LARGE.get());
output.accept(Items.MEMORY_EXTRA_LARGE.get());
output.accept(Items.HARD_DRIVE_SMALL.get());
output.accept(Items.HARD_DRIVE_MEDIUM.get());
output.accept(Items.HARD_DRIVE_LARGE.get());
output.accept(Items.HARD_DRIVE_EXTRA_LARGE.get());
output.accept(Items.HARD_DRIVE_CUSTOM.get());
output.accept(Items.FLASH_MEMORY.get());
output.accept(Items.FLASH_MEMORY_CUSTOM.get());
output.accept(Items.FLOPPY.get());
output.accept(Items.FLOPPY_MODERN.get());
output.accept(Items.REDSTONE_INTERFACE_CARD.get());
output.accept(Items.NETWORK_INTERFACE_CARD.get());
output.accept(Items.NETWORK_TUNNEL_CARD.get());

View File

@@ -54,6 +54,8 @@ public final class Items {
new MemoryItem(4 * Constants.MEGABYTE));
public static final RegistryObject<MemoryItem> MEMORY_LARGE = register("memory_large", () ->
new MemoryItem(8 * Constants.MEGABYTE));
public static final RegistryObject<MemoryItem> MEMORY_EXTRA_LARGE = register("memory_extra_large", () ->
new MemoryItem(16 * Constants.MEGABYTE));
public static final RegistryObject<HardDriveItem> HARD_DRIVE_SMALL = register("hard_drive_small", () ->
new HardDriveItem(2 * Constants.MEGABYTE, DyeColor.LIGHT_GRAY));
@@ -61,6 +63,8 @@ public final class Items {
new HardDriveItem(4 * Constants.MEGABYTE, DyeColor.GREEN));
public static final RegistryObject<HardDriveItem> HARD_DRIVE_LARGE = register("hard_drive_large", () ->
new HardDriveItem(8 * Constants.MEGABYTE, DyeColor.CYAN));
public static final RegistryObject<HardDriveItem> HARD_DRIVE_EXTRA_LARGE = register("hard_drive_extra_large", () ->
new HardDriveItem(16 * Constants.MEGABYTE, DyeColor.YELLOW));
public static final RegistryObject<HardDriveWithExternalDataItem> HARD_DRIVE_CUSTOM = register("hard_drive_custom", () ->
new HardDriveWithExternalDataItem(BlockDeviceDataRegistry.BUILDROOT.getId(), DyeColor.BROWN));
@@ -71,6 +75,8 @@ public final class Items {
public static final RegistryObject<FloppyItem> FLOPPY = register("floppy", () ->
new FloppyItem(512 * Constants.KILOBYTE));
public static final RegistryObject<FloppyItem> FLOPPY_MODERN = register("floppy_modern", () ->
new FloppyItem(1440 * Constants.KILOBYTE));
public static final RegistryObject<Item> REDSTONE_INTERFACE_CARD = register("redstone_interface_card");
public static final RegistryObject<Item> NETWORK_INTERFACE_CARD = register("network_interface_card", NetworkInterfaceCardItem::new);

View File

@@ -29,18 +29,23 @@ public final class ModItemModelProvider extends ItemModelProvider {
simple(Items.MEMORY_SMALL);
simple(Items.MEMORY_MEDIUM);
simple(Items.MEMORY_LARGE);
simple(Items.MEMORY_EXTRA_LARGE);
simple(Items.HARD_DRIVE_SMALL, "item/hard_drive_base")
.texture("layer1", "item/hard_drive_tint");
simple(Items.HARD_DRIVE_MEDIUM, "item/hard_drive_base")
.texture("layer1", "item/hard_drive_tint");
simple(Items.HARD_DRIVE_LARGE, "item/hard_drive_base")
.texture("layer1", "item/hard_drive_tint");
simple(Items.HARD_DRIVE_EXTRA_LARGE, "item/hard_drive_base")
.texture("layer1", "item/hard_drive_tint");
simple(Items.HARD_DRIVE_CUSTOM, "item/hard_drive_base")
.texture("layer1", "item/hard_drive_tint");
simple(Items.FLASH_MEMORY);
simple(Items.FLASH_MEMORY_CUSTOM, "item/flash_memory");
simple(Items.FLOPPY, "item/floppy_base")
.texture("layer1", "item/floppy_tint");
simple(Items.FLOPPY_MODERN, "item/floppy_base")
.texture("layer1", "item/floppy_tint");
simple(Items.REDSTONE_INTERFACE_CARD);
simple(Items.NETWORK_INTERFACE_CARD);

View File

@@ -9,6 +9,7 @@ import net.minecraft.data.DataGenerator;
import net.minecraft.core.HolderLookup;
import net.minecraft.data.PackOutput;
import net.minecraft.data.tags.ItemTagsProvider;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block;
import net.minecraftforge.common.data.ExistingFileHelper;
@@ -45,12 +46,14 @@ public final class ModItemTagsProvider extends ItemTagsProvider {
tag(DEVICES_MEMORY).add(
Items.MEMORY_SMALL.get(),
Items.MEMORY_MEDIUM.get(),
Items.MEMORY_LARGE.get()
Items.MEMORY_LARGE.get(),
Items.MEMORY_EXTRA_LARGE.get()
);
tag(DEVICES_HARD_DRIVE).add(
Items.HARD_DRIVE_SMALL.get(),
Items.HARD_DRIVE_MEDIUM.get(),
Items.HARD_DRIVE_LARGE.get(),
Items.HARD_DRIVE_EXTRA_LARGE.get(),
Items.HARD_DRIVE_CUSTOM.get()
);
tag(DEVICES_FLASH_MEMORY).add(
@@ -58,7 +61,8 @@ public final class ModItemTagsProvider extends ItemTagsProvider {
Items.FLASH_MEMORY_CUSTOM.get()
);
tag(DEVICES_FLOPPY).add(
Items.FLOPPY.get()
Items.FLOPPY.get(),
Items.FLOPPY_MODERN.get()
);
tag(DEVICES_CARD).add(
Items.REDSTONE_INTERFACE_CARD.get(),
@@ -86,11 +90,13 @@ public final class ModItemTagsProvider extends ItemTagsProvider {
Items.HARD_DRIVE_SMALL.get(),
Items.HARD_DRIVE_MEDIUM.get(),
Items.HARD_DRIVE_LARGE.get(),
Items.HARD_DRIVE_EXTRA_LARGE.get(),
Items.HARD_DRIVE_CUSTOM.get(),
Items.KEYBOARD.get(),
Items.MEMORY_SMALL.get(),
Items.MEMORY_MEDIUM.get(),
Items.MEMORY_LARGE.get(),
Items.MEMORY_EXTRA_LARGE.get(),
Items.NETWORK_INTERFACE_CARD.get(),
Items.NETWORK_TUNNEL_CARD.get(),
Items.NETWORK_TUNNEL_MODULE.get(),

View File

@@ -219,6 +219,19 @@ public final class ModRecipesProvider extends RecipeProvider {
.unlockedBy("has_robot", inventoryChange(Items.ROBOT.get()))
.save(consumer);
ShapedRecipeBuilder
.shaped(RecipeCategory.MISC, Items.MEMORY_EXTRA_LARGE.get(), 2)
.pattern("DTD")
.pattern("EBE")
.pattern("DTD")
.define('D', Tags.Items.GEMS_DIAMOND)
.define('T', Items.TRANSISTOR.get())
.define('B', Items.CIRCUIT_BOARD.get())
.define('E', Tags.Items.GEMS_EMERALD)
.unlockedBy("has_computer", inventoryChange(Items.COMPUTER.get()))
.unlockedBy("has_robot", inventoryChange(Items.ROBOT.get()))
.save(consumer);
ShapedRecipeBuilder
.shaped(RecipeCategory.MISC, Items.HARD_DRIVE_SMALL.get())
.pattern("ITI")
@@ -255,6 +268,19 @@ public final class ModRecipesProvider extends RecipeProvider {
.unlockedBy("has_robot", inventoryChange(Items.ROBOT.get()))
.save(consumer);
ShapedRecipeBuilder
.shaped(RecipeCategory.MISC, Items.HARD_DRIVE_EXTRA_LARGE.get())
.pattern("ETE")
.pattern("DBD")
.pattern("EBE")
.define('D', Tags.Items.GEMS_DIAMOND)
.define('T', Items.TRANSISTOR.get())
.define('B', Items.CIRCUIT_BOARD.get())
.define('E', Tags.Items.GEMS_EMERALD)
.unlockedBy("has_computer", inventoryChange(Items.COMPUTER.get()))
.unlockedBy("has_robot", inventoryChange(Items.ROBOT.get()))
.save(consumer);
WrenchRecipeBuilder
.wrenchRecipe(Items.HARD_DRIVE_CUSTOM.get())
.requires(Items.HARD_DRIVE_LARGE.get())
@@ -347,6 +373,17 @@ public final class ModRecipesProvider extends RecipeProvider {
.unlockedBy("has_disk_drive", inventoryChange(Items.DISK_DRIVE.get()))
.save(consumer);
ShapedRecipeBuilder
.shaped(RecipeCategory.MISC, Items.FLOPPY_MODERN.get())
.pattern("ITI")
.pattern("QBQ")
.pattern("QBQ")
.define('I', Tags.Items.INGOTS_IRON)
.define('T', Items.TRANSISTOR.get())
.define('Q', Tags.Items.GEMS_QUARTZ)
.define('B', Items.CIRCUIT_BOARD.get())
.unlockedBy("has_disk_drive", inventoryChange(Items.DISK_DRIVE.get()))
.save(consumer);
ShapedRecipeBuilder
.shaped(RecipeCategory.MISC, Items.INVENTORY_OPERATIONS_MODULE.get())

View File

@@ -39,6 +39,8 @@
"item.oc2.hard_drive.desc": "Mass storage for operating systems and data.",
"item.oc2.floppy": "Floppy Disk",
"item.oc2.floppy.desc": "Portable storage used to transfer data between Computers.",
"item.oc2.floppy_modern": "Modern Floppy Disk",
"item.oc2.floppy_modern.desc": "Newer version of portable storage used to transfer data between Computers.",
"item.oc2.flash_memory": "Flash Memory",
"item.oc2.flash_memory.desc": "Readonly storage for firmware.",
"item.oc2.redstone_interface_card": "Redstone Interface Card",

View File

@@ -1,134 +1,120 @@
{
"item_group.oc2.common": "OpenComputers II",
"block.oc2.bus_cable": "Интерфейсный кабель",
"block.oc2.bus_cable.desc": "Соединяет интерфейсные шины.",
"block.oc2.charger": "Зарядное устройство",
"block.oc2.charger.desc": "Заряжает сущности и предметы в контейнерах над ним.",
"block.oc2.computer": "Компьютер",
"block.oc2.computer.desc": "Выполняет программы из карт памяти и жестких дисков.",
"block.oc2.computer.preconfigured": "Собранный компьютер",
"block.oc2.bus_cable": "Интерфейсный кабель",
"block.oc2.bus_cable.desc": "Соединяет интерфейсные шины.",
"block.oc2.network_connector": "Сетевой разъем",
"block.oc2.network_connector.desc": "Передает пакеты через сетевые кабели.",
"block.oc2.network_hub": "Сетевой концентратор",
"block.oc2.network_hub.desc": "Передает пакеты на все подключенные к нему сетевые разъемы.",
"block.oc2.redstone_interface": "Красный интерфейс",
"block.oc2.redstone_interface.desc": "Подает и считывает редстоун сигналы.",
"block.oc2.creative_energy": "Энергокуб бесконечности",
"block.oc2.creative_energy.desc": "Подает бесконечную энергию на соседние блоки. Применять только в тестовых целях.",
"block.oc2.disk_drive": "Дисковод",
"block.oc2.disk_drive.desc": "Нужен для работы с дискетами.",
"block.oc2.flash_memory_flasher": "Флэш-память",
"block.oc2.flash_memory_flasher.desc": "Используется для прошивки новой прошивки на чип флэш-памяти.",
"block.oc2.charger": "Зарядное устройство",
"block.oc2.charger.desc": "Заряжает сущности и предметы в контейнерах над ним.",
"block.oc2.creative_energy": "Энергокуб бесконечности",
"block.oc2.creative_energy.desc": "Подает бесконечную энергию на соседние блоки. Применять только в тестовых целях.",
"block.oc2.projector": "Проектор",
"block.oc2.projector.desc": "Проецирует изображения на поверхности перед ним.",
"block.oc2.keyboard": "Клавиатура",
"block.oc2.keyboard.desc": "Позволяет вводить текст при использовании проектора.",
"item.oc2.wrench": "Ключ",
"item.oc2.wrench.desc": "Конфигурирует и демонтирует (если присесть) устройства.",
"item.oc2.manual": "Справочник компьютерщика",
"item.oc2.manual.desc": "Содержит информацию о всем, что нужно для работы с компьютерами.",
"block.oc2.network_connector": "Сетевой разъем",
"block.oc2.network_connector.desc": "Передает пакеты через сетевые кабели.",
"block.oc2.network_hub": "Сетевой концентратор",
"block.oc2.network_hub.desc": "Передает пакеты на все подключенные к нему сетевые разъемы.",
"block.oc2.projector": "Проектор",
"block.oc2.projector.desc": "Проецирует изображения на поверхности перед ним.",
"block.oc2.redstone_interface": "Красный интерфейс",
"block.oc2.redstone_interface.desc": "Подает и считывает редстоун сигналы.",
"entity.oc2.robot": "Робот",
"gui.oc2.computer.bus_state.incomplete": "Шина не заполнена",
"gui.oc2.computer.bus_state.multiple_controllers": "Много контроллеров шины",
"gui.oc2.computer.bus_state.too_complex": "Слишком много устройств",
"gui.oc2.computer.capture_input.capt": "Захват ввода",
"gui.oc2.computer.capture_input.desc": "Пока курсор находится в пределах окна терминала, ввод (включая нажатие на ESC) будет захватываться.",
"gui.oc2.computer.error.insufficient_memory": "Недостаточно памяти",
"gui.oc2.computer.error.missing_firmware": "Отсутствует прошивка",
"gui.oc2.computer.error.not_enough_energy": "Недостаточно энергии",
"gui.oc2.computer.error.unknown": "Неизвестная ошибка",
"gui.oc2.computer.power.capt": "Кнопка питания",
"gui.oc2.computer.power.desc": "Включает или выключает компьютер.",
"gui.oc2.device_type.card": "Карта",
"gui.oc2.device_type.flash_memory": "Карта памяти",
"gui.oc2.device_type.hard_drive": "Жесткий диск",
"gui.oc2.device_type.memory": "Память",
"gui.oc2.file_chooser.cancel_button": "Отмена",
"gui.oc2.file_chooser.confirm_button.load": "Открыть",
"gui.oc2.file_chooser.confirm_button.overwrite": "Перезаписать",
"gui.oc2.file_chooser.confirm_button.save": "Сохранить",
"gui.oc2.file_chooser.text_field.filename": "Имя файла",
"gui.oc2.file_chooser.title.load": "Открыть файл",
"gui.oc2.file_chooser.title.save": "Сохранить файл",
"gui.oc2.keyboard.close_info": "Для закрытия нажмите ПКМ.",
"gui.oc2.machine.open_inventory.capt": "Открыть инвентарь",
"gui.oc2.machine.open_terminal.capt": "Открыть терминал",
"gui.oc2.network_interface_card.connectivity.disabled": "Выключено",
"gui.oc2.network_interface_card.connectivity.enabled": "Включено",
"gui.oc2.network_interface_card.info": "Потяните для поворота. Клик на сторону переключит соединение.",
"gui.oc2.network_interface_card.side_state": "Соединение: %s",
"gui.oc2.network_tunnel.link": "Привязать",
"item.oc2.block_operations_module": "Модуль управления блоками",
"item.oc2.block_operations_module.desc": "Ломает и ставит блоки.",
"item.oc2.bus_interface": "Интерфейсная шина",
"item.oc2.bus_interface.desc": "Соединяет внешние устройства с компьютерами.",
"item.oc2.network_cable": "Сетевой кабель",
"item.oc2.network_cable.desc": "Соединяет сетевые разъемы.",
"item.oc2.memory": "Память",
"item.oc2.memory.desc": "Оперативное Запоминающее Устройство (ОЗУ). Используется в компьютерах и роботах.",
"item.oc2.hard_drive": "Жесткий диск",
"item.oc2.hard_drive.desc": "Накопитель для операционных систем и данных.",
"item.oc2.floppy": "Дискета",
"item.oc2.floppy.desc": "Съемный накопитель для переноса данных между компьютерами.",
"item.oc2.circuit_board": "Печатная плата",
"item.oc2.circuit_board.desc": "Материал для крафта.",
"item.oc2.file_import_export_card": "Карта импорта/экспорта файлов",
"item.oc2.file_import_export_card.desc": "Импортирует и экспортирует файлы между вашим реальным компьютером.",
"item.oc2.flash_memory": "Карта памяти",
"item.oc2.flash_memory.desc": "Накопитель для прошивки.",
"item.oc2.redstone_interface_card": "Красная интерфейсная карта",
"item.oc2.redstone_interface_card.desc": "Подает и считывает редстоун сигналы от блока компьютера.",
"item.oc2.floppy": "Дискета",
"item.oc2.floppy.desc": "Съемный накопитель для переноса данных между компьютерами.",
"item.oc2.floppy_modern": "Современная дискета",
"item.oc2.floppy_modern.desc": "Новая версия портативного хранилища, используемого для передачи данных между компьютерами.",
"item.oc2.hard_drive": "Жесткий диск",
"item.oc2.hard_drive.desc": "Накопитель для операционных систем и данных.",
"item.oc2.inventory_operations_module": "Модуль управления инвентарем",
"item.oc2.inventory_operations_module.desc": "Позволяет роботу управлять своим инвентарем.",
"item.oc2.manual": "Справочник компьютерщика",
"item.oc2.manual.desc": "Содержит информацию о всем, что нужно для работы с компьютерами.",
"item.oc2.memory": "Память",
"item.oc2.memory.desc": "Оперативное Запоминающее Устройство (ОЗУ). Используется в компьютерах и роботах.",
"item.oc2.network_cable": "Сетевой кабель",
"item.oc2.network_cable.desc": "Соединяет сетевые разъемы.",
"item.oc2.network_interface_card": "Сетевая интерфейсная карта",
"item.oc2.network_interface_card.desc": "Отсылает и принимает пакеты через сетевой разъем.",
"item.oc2.network_interface_card.is_configured": "Установлены настройки соединения.",
"item.oc2.network_tunnel_card": "Сетевая туннельная карта",
"item.oc2.network_tunnel_card.desc": "Отсылает и принимает пакеты с привязанного устройства.",
"item.oc2.file_import_export_card": "Карта импорта/экспорта файлов",
"item.oc2.file_import_export_card.desc": "Импортирует и экспортирует файлы между вашим реальным компьютером.",
"item.oc2.robot": "Робот",
"item.oc2.robot.desc": "Портативный компьютер. Используйте ключ, чтобы убрать его",
"item.oc2.inventory_operations_module": "Модуль управления инвентарем",
"item.oc2.inventory_operations_module.desc": "Позволяет роботу управлять своим инвентарем.",
"item.oc2.block_operations_module": "Модуль управления блоками",
"item.oc2.block_operations_module.desc": "Ломает и ставит блоки.",
"item.oc2.sound_card": "Звуковая карта",
"item.oc2.sound_card.desc": "Проигрывает разные звуки из своих высококачественных звуковых банков.",
"item.oc2.network_tunnel_module": "Сетевой туннельный модуль",
"item.oc2.network_tunnel_module.desc": "Отсылает и принимает пакеты с привязанного устройства.",
"item.oc2.redstone_interface_card": "Красная интерфейсная карта",
"item.oc2.redstone_interface_card.desc": "Подает и считывает редстоун сигналы от блока компьютера.",
"item.oc2.robot": "Робот",
"item.oc2.robot.desc": "Портативный компьютер. Используйте ключ, чтобы убрать его",
"item.oc2.sound_card": "Звуковая карта",
"item.oc2.sound_card.desc": "Проигрывает разные звуки из своих высококачественных звуковых банков.",
"item.oc2.transistor": "Транзистор",
"item.oc2.transistor.desc": "Материал для крафта.",
"item.oc2.circuit_board": "Печатная плата",
"item.oc2.circuit_board.desc": "Материал для крафта.",
"entity.oc2.robot": "Робот",
"gui.oc2.computer.error.unknown": "Неизвестная ошибка",
"gui.oc2.computer.error.missing_firmware": "Отсутствует прошивка",
"gui.oc2.computer.error.insufficient_memory": "Недостаточно памяти",
"gui.oc2.computer.bus_state.incomplete": "Шина не заполнена",
"gui.oc2.computer.bus_state.too_complex": "Слишком много устройств",
"gui.oc2.computer.bus_state.multiple_controllers": "Много контроллеров шины",
"gui.oc2.computer.error.not_enough_energy": "Недостаточно энергии",
"gui.oc2.computer.capture_input.capt": "Захват ввода",
"gui.oc2.computer.capture_input.desc": "Пока курсор находится в пределах окна терминала, ввод (включая нажатие на ESC) будет захватываться.",
"gui.oc2.computer.power.capt": "Кнопка питания",
"gui.oc2.computer.power.desc": "Включает или выключает компьютер.",
"gui.oc2.machine.open_inventory.capt": "Открыть инвентарь",
"gui.oc2.machine.open_terminal.capt": "Открыть терминал",
"gui.oc2.device_type.memory": "Память",
"gui.oc2.device_type.hard_drive": "Жесткий диск",
"gui.oc2.device_type.flash_memory": "Карта памяти",
"gui.oc2.device_type.card": "Карта",
"gui.oc2.file_chooser.title.load": "Открыть файл",
"gui.oc2.file_chooser.title.save": "Сохранить файл",
"gui.oc2.file_chooser.text_field.filename": "Имя файла",
"gui.oc2.file_chooser.confirm_button.load": "Открыть",
"gui.oc2.file_chooser.confirm_button.save": "Сохранить",
"gui.oc2.file_chooser.confirm_button.overwrite": "Перезаписать",
"gui.oc2.file_chooser.cancel_button": "Отмена",
"gui.oc2.network_interface_card.side_state": "Соединение: %s",
"gui.oc2.network_interface_card.connectivity.enabled": "Включено",
"gui.oc2.network_interface_card.connectivity.disabled": "Выключено",
"gui.oc2.network_interface_card.info": "Потяните для поворота. Клик на сторону переключит соединение.",
"gui.oc2.keyboard.close_info": "Для закрытия нажмите ПКМ.",
"gui.oc2.network_tunnel.link": "Привязать",
"manual.oc2.home": "Главная страница",
"item.oc2.wrench": "Ключ",
"item.oc2.wrench.desc": "Конфигурирует и демонтирует (если присесть) устройства.",
"item_group.oc2.common": "OpenComputers II",
"manual.oc2.blocks": "Блоки",
"manual.oc2.home": "Главная страница",
"manual.oc2.items": "Предметы",
"message.oc2.connector.error.full": "Подключено слишком много кабелей.",
"message.oc2.connector.error.too_far": "Дистанция между разъемами слишком велика.",
"message.oc2.connector.error.obstructed": "Между разъемами присутствует преграда.",
"message.oc2.connector.error.too_far": "Дистанция между разъемами слишком велика.",
"message.oc2.import_file.file_too_large": "Файл слишком большой.",
"message.oc2.invalid_facade_block": "Этот блок нельзя использовать как фасад.",
"tooltip.oc2.device_needs_reboot": "Требуется перезагрузка",
"tooltip.oc2.flash_memory_missing": "Карта памяти содержит прошивку, необходимую для загрузки.",
"tooltip.oc2.memory_missing": "Оперативная память требуется для загрузки прошивки из карты памяти и последующей работы.",
"tooltip.oc2.hard_drive_missing": "Большинству ОС для загрузки необходима файловая система.",
"tooltip.oc2.energy": "Энергия: %s",
"tooltip.oc2.energyConsumption": "Потребление энергии: %s/t",
"tooltip.oc2.confirm": "Подтвердить",
"tooltip.oc2.cancel": "Отмена",
"tooltip.oc2.network_tunnel_id": "Туннель: %s",
"subtitles.oc2.computer": "Запуск вентиляторов",
"subtitles.oc2.floppy": "Жужжание дисковода",
"subtitles.oc2.floppy_eject": "Дискета извлечена",
"subtitles.oc2.floppy_insert": "Дискета вставлена",
"subtitles.oc2.hdd": "Шум жесткого диска"
"subtitles.oc2.hdd": "Шум жесткого диска",
"tooltip.oc2.cancel": "Отмена",
"tooltip.oc2.confirm": "Подтвердить",
"tooltip.oc2.device_needs_reboot": "Требуется перезагрузка",
"tooltip.oc2.energy": "Энергия: %s",
"tooltip.oc2.energyConsumption": "Потребление энергии: %s/t",
"tooltip.oc2.flash_memory_missing": "Карта памяти содержит прошивку, необходимую для загрузки.",
"tooltip.oc2.hard_drive_missing": "Большинству ОС для загрузки необходима файловая система.",
"tooltip.oc2.memory_missing": "Оперативная память требуется для загрузки прошивки из карты памяти и последующей работы.",
"tooltip.oc2.network_tunnel_id": "Туннель: %s"
}

View File

@@ -1,101 +1,120 @@
{
"item_group.oc2.common": "开放式电脑 II",
"block.oc2.bus_cable": "总线线缆",
"block.oc2.bus_cable.desc": "与总线接口结合使用,以将外部设备连接到电脑。",
"block.oc2.charger": "充电器",
"block.oc2.charger.desc": "通过站在上面给实体和物品充电。",
"block.oc2.computer": "电脑",
"block.oc2.computer.desc": "使用螺丝刀扳手或者兼容的扳手来添加或移除组件。",
"block.oc2.computer.preconfigured": "电脑(已经配置好的)",
"block.oc2.bus_cable": "总线线缆",
"block.oc2.bus_cable.desc": "与总线接口结合使用,以将外部设备连接到电脑。",
"block.oc2.network_connector": "网络连接口",
"block.oc2.network_hub": "网线集线器",
"block.oc2.redstone_interface": "红石接口",
"block.oc2.creative_energy": "无限能量方块",
"block.oc2.creative_energy.desc": "提供无限的能量给连接的方块。",
"block.oc2.disk_drive": "磁盘驱动器",
"block.oc2.disk_drive.desc": "使用这个来访问软盘。",
"block.oc2.flash_memory_flasher": "闪存闪存器",
"block.oc2.flash_memory_flasher.desc": "用于将新固件刷新到闪存芯片上。",
"block.oc2.charger": "充电器",
"block.oc2.charger.desc": "通过站在上面给实体和物品充电。",
"block.oc2.creative_energy": "无限能量方块",
"block.oc2.creative_energy.desc": "提供无限的能量给连接的方块。",
"item.oc2.wrench": "螺丝刀扳手",
"item.oc2.wrench.desc": "当潜行时用于配置设备和拆卸设备。",
"item.oc2.bus_interface": "总线接口",
"item.oc2.bus_interface.desc": "通过总线线缆来和外部设备通讯。",
"item.oc2.network_cable": "网线",
"item.oc2.memory": "内存条",
"item.oc2.hard_drive": "硬盘",
"item.oc2.floppy": "软盘",
"item.oc2.flash_memory": "固件",
"item.oc2.redstone_interface_card": "红石卡",
"item.oc2.network_interface_card": "网卡",
"item.oc2.file_import_export_card": "文件导入/导出卡",
"item.oc2.file_import_export_card.desc": "提供一个API来导入/导出文件。",
"item.oc2.robot": "机器人",
"item.oc2.robot.desc": "使用螺丝刀扳手或者兼容的扳手来添加或移除组件。",
"item.oc2.inventory_operations_module": "物品栏操作模块",
"item.oc2.inventory_operations_module.desc": "允许机器人存取物品。",
"item.oc2.block_operations_module": "方块操作模块",
"item.oc2.block_operations_module.desc": "允许机器人放置/破坏方块。",
"item.oc2.sound_card": "声卡",
"item.oc2.sound_card.desc": "可以从其高度逼真的音库播放各种声音。",
"item.oc2.transistor": "晶体管",
"item.oc2.circuit_board": "电路板",
"block.oc2.keyboard": "Keyboard",
"block.oc2.keyboard.desc": "Allows keyboard input when using a projector.",
"block.oc2.network_connector": "网络连接口",
"block.oc2.network_connector.desc": "Transmits network packets via Network Cables.",
"block.oc2.network_hub": "网线集线器",
"block.oc2.network_hub.desc": "Distributes network packets among all attached Network Connectors.",
"block.oc2.projector": "Projector",
"block.oc2.projector.desc": "Projects images onto surfaces in front of it.",
"block.oc2.redstone_interface": "红石接口",
"block.oc2.redstone_interface.desc": "Emits and reads redstone signals.",
"entity.oc2.robot": "机器人",
"gui.oc2.computer.error.unknown": "未知错误",
"gui.oc2.computer.error.missing_firmware": "丢失固件",
"gui.oc2.computer.error.insufficient_memory": "内存不足",
"gui.oc2.computer.bus_state.incomplete": "总线不完整",
"gui.oc2.computer.bus_state.too_complex": "总线太复杂",
"gui.oc2.computer.bus_state.multiple_controllers": "检测到多个总线控制器",
"gui.oc2.computer.error.not_enough_energy": "能量不足",
"gui.oc2.computer.bus_state.too_complex": "总线太复杂",
"gui.oc2.computer.capture_input.capt": "捕获输入",
"gui.oc2.computer.capture_input.desc": "当开启并且鼠标移动到终端内时将捕获所有的输入包括ESC键",
"gui.oc2.computer.error.insufficient_memory": "内存不足",
"gui.oc2.computer.error.missing_firmware": "丢失固件",
"gui.oc2.computer.error.not_enough_energy": "能量不足",
"gui.oc2.computer.error.unknown": "未知错误",
"gui.oc2.computer.power.capt": "电源",
"gui.oc2.computer.power.desc": "开启或关闭这台电脑。",
"gui.oc2.machine.open_inventory.capt": "打开物品栏",
"gui.oc2.machine.open_terminal.capt": "打开终端",
"gui.oc2.device_type.memory": "内存条",
"gui.oc2.device_type.hard_drive": "硬盘",
"gui.oc2.device_type.flash_memory": "固件",
"gui.oc2.device_type.card": "卡",
"gui.oc2.device_type.flash_memory": "固件",
"gui.oc2.device_type.hard_drive": "硬盘",
"gui.oc2.device_type.memory": "内存条",
"gui.oc2.file_chooser.cancel_button": "取消",
"gui.oc2.file_chooser.confirm_button.load": "打开",
"gui.oc2.file_chooser.confirm_button.overwrite": "覆盖",
"gui.oc2.file_chooser.confirm_button.save": "保存",
"gui.oc2.file_chooser.text_field.filename": "文件名称",
"gui.oc2.file_chooser.title.load": "打开文件",
"gui.oc2.file_chooser.title.save": "保存文件",
"gui.oc2.file_chooser.text_field.filename": "文件名称",
"gui.oc2.file_chooser.confirm_button.load": "打开",
"gui.oc2.file_chooser.confirm_button.save": "保存",
"gui.oc2.file_chooser.confirm_button.overwrite": "覆盖",
"gui.oc2.file_chooser.cancel_button": "取消",
"manual.oc2.home": "主页",
"gui.oc2.keyboard.close_info": "Right click to close.",
"gui.oc2.machine.open_inventory.capt": "打开物品栏",
"gui.oc2.machine.open_terminal.capt": "打开终端",
"gui.oc2.network_interface_card.connectivity.disabled": "Disabled",
"gui.oc2.network_interface_card.connectivity.enabled": "Enabled",
"gui.oc2.network_interface_card.info": "Drag to rotate. Click faces to toggle connectivity.",
"gui.oc2.network_interface_card.side_state": "Connectivity: %s",
"gui.oc2.network_tunnel.link": "Link",
"item.oc2.block_operations_module": "方块操作模块",
"item.oc2.block_operations_module.desc": "允许机器人放置/破坏方块。",
"item.oc2.bus_interface": "总线接口",
"item.oc2.bus_interface.desc": "通过总线线缆来和外部设备通讯。",
"item.oc2.circuit_board": "电路板",
"item.oc2.circuit_board.desc": "Crafting material.",
"item.oc2.file_import_export_card": "文件导入/导出卡",
"item.oc2.file_import_export_card.desc": "提供一个API来导入/导出文件。",
"item.oc2.flash_memory": "固件",
"item.oc2.flash_memory.desc": "Readonly storage for firmware.",
"item.oc2.floppy": "软盘",
"item.oc2.floppy.desc": "Portable storage used to transfer data between Computers.",
"item.oc2.floppy_modern": "现代软盘",
"item.oc2.floppy_modern.desc": "用于在计算机之间传输数据的较新版本的便携式存储。",
"item.oc2.hard_drive": "硬盘",
"item.oc2.hard_drive.desc": "Mass storage for operating systems and data.",
"item.oc2.inventory_operations_module": "物品栏操作模块",
"item.oc2.inventory_operations_module.desc": "允许机器人存取物品。",
"item.oc2.manual": "The Computerist's Handbook",
"item.oc2.manual.desc": "Holds information on all things needed when working with Computers.",
"item.oc2.memory": "内存条",
"item.oc2.memory.desc": "Random Access Memory (RAM) used in Computers and Robots.",
"item.oc2.network_cable": "网线",
"item.oc2.network_cable.desc": "Connects Network Connectors.",
"item.oc2.network_interface_card": "网卡",
"item.oc2.network_interface_card.desc": "Sends and receives network packets via attached Network Connectors.",
"item.oc2.network_interface_card.is_configured": "Has connectivity configuration.",
"item.oc2.network_tunnel_card": "Network Tunnel Card",
"item.oc2.network_tunnel_card.desc": "Sends and receives network packets to a linked device.",
"item.oc2.network_tunnel_module": "Network Tunnel Module",
"item.oc2.network_tunnel_module.desc": "Sends and receives network packets to a linked device.",
"item.oc2.redstone_interface_card": "红石卡",
"item.oc2.redstone_interface_card.desc": "Emits and reads redstone signals through the Computer.",
"item.oc2.robot": "机器人",
"item.oc2.robot.desc": "使用螺丝刀扳手或者兼容的扳手来添加或移除组件。",
"item.oc2.sound_card": "声卡",
"item.oc2.sound_card.desc": "可以从其高度逼真的音库播放各种声音。",
"item.oc2.transistor": "晶体管",
"item.oc2.transistor.desc": "Crafting material.",
"item.oc2.wrench": "螺丝刀扳手",
"item.oc2.wrench.desc": "当潜行时用于配置设备和拆卸设备。",
"item_group.oc2.common": "开放式电脑 II",
"manual.oc2.blocks": "方块",
"manual.oc2.home": "主页",
"manual.oc2.items": "物品",
"message.oc2.connector.error.full": "不能放置更多线缆。",
"message.oc2.connector.error.too_far": "距离太远了。",
"message.oc2.connector.error.obstructed": "直线内有方块",
"message.oc2.connector.error.too_far": "距离太远了。",
"message.oc2.import_file.file_too_large": "文件过大",
"message.oc2.invalid_facade_block": "该方块不能被用作一个面。",
"tooltip.oc2.device_needs_reboot": "需要重启",
"tooltip.oc2.flash_memory_missing": "启动时需要包含固件的闪存。",
"tooltip.oc2.memory_missing": "需要一些内存来加载闪存以执行引导.",
"tooltip.oc2.hard_drive_missing": "找不到硬盘。",
"tooltip.oc2.energy": "能量:%s",
"tooltip.oc2.energyConsumption": "能量使用:%s/t",
"tooltip.oc2.confirm": "确认",
"tooltip.oc2.cancel": "取消",
"subtitles.oc2.computer": "电脑:运行",
"subtitles.oc2.floppy": "软盘:访问",
"subtitles.oc2.floppy_eject": "软盘:弹出",
"subtitles.oc2.floppy_insert": "软盘:插入",
"subtitles.oc2.hdd": "硬盘:访问"
"subtitles.oc2.hdd": "硬盘:访问",
"tooltip.oc2.cancel": "取消",
"tooltip.oc2.confirm": "确认",
"tooltip.oc2.device_needs_reboot": "需要重启",
"tooltip.oc2.energy": "能量:%s",
"tooltip.oc2.energyConsumption": "能量使用:%s/t",
"tooltip.oc2.flash_memory_missing": "启动时需要包含固件的闪存。",
"tooltip.oc2.hard_drive_missing": "找不到硬盘。",
"tooltip.oc2.memory_missing": "需要一些内存来加载闪存以执行引导.",
"tooltip.oc2.network_tunnel_id": "Tunnel: %s"
}

View File

@@ -0,0 +1,7 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "oc2:item/floppy_base",
"layer1": "oc2:item/floppy_tint"
}
}

View File

@@ -0,0 +1,7 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "oc2:item/hard_drive_base",
"layer1": "oc2:item/hard_drive_tint"
}
}

View File

@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "oc2:item/memory_extra_large"
}
}

View File

@@ -0,0 +1,34 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"oc2:floppy_modern"
]
},
"criteria": {
"has_disk_drive": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"oc2:disk_drive"
]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "oc2:floppy_modern"
}
}
},
"requirements": [
[
"has_disk_drive",
"has_the_recipe"
]
]
}

View File

@@ -0,0 +1,47 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"oc2:hard_drive_extra_large"
]
},
"criteria": {
"has_computer": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"oc2:computer"
]
}
]
}
},
"has_robot": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"oc2:robot"
]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "oc2:hard_drive_extra_large"
}
}
},
"requirements": [
[
"has_computer",
"has_robot",
"has_the_recipe"
]
]
}

View File

@@ -0,0 +1,47 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"oc2:memory_extra_large"
]
},
"criteria": {
"has_computer": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"oc2:computer"
]
}
]
}
},
"has_robot": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"oc2:robot"
]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "oc2:memory_extra_large"
}
}
},
"requirements": [
[
"has_computer",
"has_robot",
"has_the_recipe"
]
]
}

View File

@@ -0,0 +1,25 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"ITI",
"QBQ",
"QBQ"
],
"key": {
"I": {
"tag": "forge:ingots/iron"
},
"T": {
"item": "oc2:transistor"
},
"Q": {
"tag": "forge:gems/quartz"
},
"B": {
"item": "oc2:circuit_board"
}
},
"result": {
"item": "oc2:floppy_modern"
}
}

View File

@@ -0,0 +1,25 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"ETE",
"DBD",
"EBE"
],
"key": {
"D": {
"tag": "forge:gems/diamond"
},
"T": {
"item": "oc2:transistor"
},
"B": {
"item": "oc2:circuit_board"
},
"E": {
"tag": "forge:gems/emerald"
}
},
"result": {
"item": "oc2:hard_drive_extra_large"
}
}

View File

@@ -0,0 +1,26 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"DTD",
"EBE",
"DTD"
],
"key": {
"D": {
"tag": "forge:gems/diamond"
},
"T": {
"item": "oc2:transistor"
},
"B": {
"item": "oc2:circuit_board"
},
"E": {
"tag": "forge:gems/emerald"
}
},
"result": {
"item": "oc2:memory_extra_large",
"count": 2
}
}

View File

@@ -7,14 +7,16 @@
"oc2:hard_drive_small",
"oc2:hard_drive_medium",
"oc2:hard_drive_large",
"oc2:hard_drive_extra_large",
"oc2:hard_drive_custom",
"oc2:keyboard",
"oc2:memory_small",
"oc2:memory_medium",
"oc2:memory_large",
"oc2:memory_extra_large",
"oc2:network_interface_card",
"oc2:network_tunnel_card",
"oc2:network_tunnel_module",
"oc2:projector"
]
}
}

View File

@@ -1,6 +1,7 @@
{
"replace": false,
"values": [
"oc2:floppy"
"oc2:floppy",
"oc2:floppy_modern"
]
}
}

View File

@@ -4,6 +4,7 @@
"oc2:hard_drive_small",
"oc2:hard_drive_medium",
"oc2:hard_drive_large",
"oc2:hard_drive_extra_large",
"oc2:hard_drive_custom"
]
}
}

View File

@@ -3,6 +3,7 @@
"values": [
"oc2:memory_small",
"oc2:memory_medium",
"oc2:memory_large"
"oc2:memory_large",
"oc2:memory_extra_large"
]
}
}