mirror of
https://github.com/GeyserMC/Rainbow.git
synced 2025-12-19 14:59:16 +00:00
Add translation strings for text components, and more small things
This commit is contained in:
@@ -3,6 +3,7 @@ package org.geysermc.rainbow;
|
|||||||
import org.geysermc.rainbow.pack.BedrockPack;
|
import org.geysermc.rainbow.pack.BedrockPack;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Path;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
@@ -27,6 +28,10 @@ public final class PackManager {
|
|||||||
currentPack.ifPresentOrElse(consumer, runnable);
|
currentPack.ifPresentOrElse(consumer, runnable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Optional<Path> getExportPath() {
|
||||||
|
return currentPack.map(BedrockPack::getExportPath);
|
||||||
|
}
|
||||||
|
|
||||||
public Optional<Boolean> finish() {
|
public Optional<Boolean> finish() {
|
||||||
Optional<Boolean> success = currentPack.map(BedrockPack::save);
|
Optional<Boolean> success = currentPack.map(BedrockPack::save);
|
||||||
currentPack = Optional.empty();
|
currentPack = Optional.empty();
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ import com.mojang.brigadier.CommandDispatcher;
|
|||||||
import com.mojang.brigadier.arguments.StringArgumentType;
|
import com.mojang.brigadier.arguments.StringArgumentType;
|
||||||
import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager;
|
import net.fabricmc.fabric.api.client.command.v2.ClientCommandManager;
|
||||||
import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
|
import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
|
||||||
|
import net.minecraft.ChatFormatting;
|
||||||
|
import net.minecraft.network.chat.ClickEvent;
|
||||||
import net.minecraft.network.chat.Component;
|
import net.minecraft.network.chat.Component;
|
||||||
import net.minecraft.world.entity.player.Inventory;
|
import net.minecraft.world.entity.player.Inventory;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
@@ -13,10 +15,16 @@ import org.geysermc.rainbow.mapper.InventoryMapper;
|
|||||||
import org.geysermc.rainbow.mapper.PackMapper;
|
import org.geysermc.rainbow.mapper.PackMapper;
|
||||||
import org.geysermc.rainbow.pack.BedrockPack;
|
import org.geysermc.rainbow.pack.BedrockPack;
|
||||||
|
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.util.Optional;
|
||||||
import java.util.function.BiConsumer;
|
import java.util.function.BiConsumer;
|
||||||
|
|
||||||
public class PackGeneratorCommand {
|
public class PackGeneratorCommand {
|
||||||
|
|
||||||
|
private static final Component NO_PACK_CREATED = Component.translatable("commands.rainbow.no_pack", Component.literal("/rainbow create <name>")
|
||||||
|
.withStyle(style -> style.withColor(ChatFormatting.BLUE).withUnderlined(true)
|
||||||
|
.withClickEvent(new ClickEvent.SuggestCommand("/rainbow create "))));
|
||||||
|
|
||||||
public static void register(CommandDispatcher<FabricClientCommandSource> dispatcher, PackManager packManager, PackMapper packMapper) {
|
public static void register(CommandDispatcher<FabricClientCommandSource> dispatcher, PackManager packManager, PackMapper packMapper) {
|
||||||
dispatcher.register(ClientCommandManager.literal("rainbow")
|
dispatcher.register(ClientCommandManager.literal("rainbow")
|
||||||
.then(ClientCommandManager.literal("create")
|
.then(ClientCommandManager.literal("create")
|
||||||
@@ -26,10 +34,10 @@ public class PackGeneratorCommand {
|
|||||||
try {
|
try {
|
||||||
packManager.startPack(name);
|
packManager.startPack(name);
|
||||||
} catch (Exception exception) {
|
} catch (Exception exception) {
|
||||||
context.getSource().sendError(Component.literal("Failed to create new pack!"));
|
context.getSource().sendError(Component.translatable("commands.rainbow.create_pack_failed"));
|
||||||
throw new RuntimeException(exception);
|
throw new RuntimeException(exception);
|
||||||
}
|
}
|
||||||
context.getSource().sendFeedback(Component.literal("Created pack with name " + name));
|
context.getSource().sendFeedback(Component.translatable("commands.rainbow.pack_created", name));
|
||||||
return 0;
|
return 0;
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
@@ -38,9 +46,9 @@ public class PackGeneratorCommand {
|
|||||||
.executes(runWithPack(packManager, (source, pack) -> {
|
.executes(runWithPack(packManager, (source, pack) -> {
|
||||||
ItemStack heldItem = source.getPlayer().getMainHandItem();
|
ItemStack heldItem = source.getPlayer().getMainHandItem();
|
||||||
switch (pack.map(heldItem)) {
|
switch (pack.map(heldItem)) {
|
||||||
case NONE_MAPPED -> source.sendError(Component.literal("No item was mapped. Either no custom item was found, or it was already included in the pack"));
|
case NONE_MAPPED -> source.sendError(Component.translatable("commands.rainbow.no_item_mapped"));
|
||||||
case PROBLEMS_OCCURRED -> source.sendFeedback(Component.literal("The held item was mapped, however problems occurred whilst doing so. Read the pack report after finishing the pack for more information"));
|
case PROBLEMS_OCCURRED -> source.sendFeedback(Component.translatable("commands.rainbow.mapped_held_item_problems"));
|
||||||
case MAPPED_SUCCESSFULLY -> source.sendFeedback(Component.literal("The held item was mapped"));
|
case MAPPED_SUCCESSFULLY -> source.sendFeedback(Component.translatable("commands.rainbow.mapped_held_item"));
|
||||||
}
|
}
|
||||||
}))
|
}))
|
||||||
)
|
)
|
||||||
@@ -61,12 +69,12 @@ public class PackGeneratorCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (mapped > 0) {
|
if (mapped > 0) {
|
||||||
source.sendFeedback(Component.literal("Mapped " + mapped + " items from your inventory"));
|
source.sendFeedback(Component.translatable("commands.rainbow.mapped_items_from_inventory", mapped));
|
||||||
if (errors) {
|
if (errors) {
|
||||||
source.sendFeedback(Component.literal("Problems occurred whilst mapping items. Read the pack report after finishing the pack for more information"));
|
source.sendFeedback(Component.translatable("commands.rainbow.mapped_items_problems"));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
source.sendError(Component.literal("No items were mapped. Either no custom items were found, or they were already included in the pack"));
|
source.sendError(Component.translatable("commands.rainbow.no_items_mapped"));
|
||||||
}
|
}
|
||||||
}))
|
}))
|
||||||
)
|
)
|
||||||
@@ -92,25 +100,27 @@ public class PackGeneratorCommand {
|
|||||||
.then(ClientCommandManager.literal("inventory")
|
.then(ClientCommandManager.literal("inventory")
|
||||||
.executes(runWithPack(packManager, (source, pack) -> {
|
.executes(runWithPack(packManager, (source, pack) -> {
|
||||||
packMapper.setItemProvider(InventoryMapper.INSTANCE);
|
packMapper.setItemProvider(InventoryMapper.INSTANCE);
|
||||||
source.sendFeedback(Component.literal("Now watching inventories for custom items to map"));
|
source.sendFeedback(Component.translatable("commands.rainbow.automatic_inventory_mapping"));
|
||||||
}))
|
}))
|
||||||
)
|
)
|
||||||
.then(ClientCommandManager.literal("stop")
|
.then(ClientCommandManager.literal("stop")
|
||||||
.executes(runWithPack(packManager, (source, pack) -> {
|
.executes(runWithPack(packManager, (source, pack) -> {
|
||||||
packMapper.setItemProvider(null);
|
packMapper.setItemProvider(null);
|
||||||
source.sendFeedback(Component.literal("Stopped automatic mapping of custom items"));
|
source.sendFeedback(Component.translatable("commands.rainbow.stopped_automatic_mapping"));
|
||||||
}))
|
}))
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.then(ClientCommandManager.literal("finish")
|
.then(ClientCommandManager.literal("finish")
|
||||||
.executes(context -> {
|
.executes(context -> {
|
||||||
|
Optional<Path> exportPath = packManager.getExportPath();
|
||||||
packManager.finish().ifPresentOrElse(success -> {
|
packManager.finish().ifPresentOrElse(success -> {
|
||||||
if (!success) {
|
if (!success) {
|
||||||
context.getSource().sendError(Component.literal("Errors occurred whilst writing the pack to disk!"));
|
context.getSource().sendError(Component.translatable("commands.rainbow.pack_finished_error"));
|
||||||
} else {
|
} else {
|
||||||
context.getSource().sendFeedback(Component.literal("Wrote pack to disk"));
|
context.getSource().sendFeedback(Component.translatable("commands.rainbow.pack_finished_successfully")
|
||||||
|
.withStyle(style -> style.withUnderlined(true).withClickEvent(new ClickEvent.OpenFile(exportPath.orElseThrow()))));
|
||||||
}
|
}
|
||||||
}, () -> context.getSource().sendError(Component.literal("Create a pack first!")));
|
}, () -> context.getSource().sendError(NO_PACK_CREATED));
|
||||||
return 0;
|
return 0;
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
@@ -120,7 +130,7 @@ public class PackGeneratorCommand {
|
|||||||
private static Command<FabricClientCommandSource> runWithPack(PackManager manager, BiConsumer<FabricClientCommandSource, BedrockPack> executor) {
|
private static Command<FabricClientCommandSource> runWithPack(PackManager manager, BiConsumer<FabricClientCommandSource, BedrockPack> executor) {
|
||||||
return context -> {
|
return context -> {
|
||||||
manager.runOrElse(pack -> executor.accept(context.getSource(), pack),
|
manager.runOrElse(pack -> executor.accept(context.getSource(), pack),
|
||||||
() -> context.getSource().sendError(Component.literal("Create a pack first!")));
|
() -> context.getSource().sendError(NO_PACK_CREATED));
|
||||||
return 0;
|
return 0;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,10 +34,10 @@ public class PackMapper {
|
|||||||
.filter(result -> result != BedrockPack.MappingResult.NONE_MAPPED)
|
.filter(result -> result != BedrockPack.MappingResult.NONE_MAPPED)
|
||||||
.count();
|
.count();
|
||||||
if (mapped != 0) {
|
if (mapped != 0) {
|
||||||
player.displayClientMessage(Component.literal("Mapped " + mapped + " items"), false);
|
player.displayClientMessage(Component.translatable("chat.rainbow.mapped_items", mapped), false);
|
||||||
}
|
}
|
||||||
if (itemProvider.isDone()) {
|
if (itemProvider.isDone()) {
|
||||||
player.displayClientMessage(Component.literal("Finished mapping items from provider"), false);
|
player.displayClientMessage(Component.translatable("chat.rainbow.automatic_mapping_finished"), false);
|
||||||
itemProvider = null;
|
itemProvider = null;
|
||||||
}
|
}
|
||||||
}, () -> itemProvider = null);
|
}, () -> itemProvider = null);
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ public class GeometryRenderer {
|
|||||||
|
|
||||||
try (OversizedItemRenderer itemRenderer = new OversizedItemRenderer(Minecraft.getInstance().renderBuffers().bufferSource())) {
|
try (OversizedItemRenderer itemRenderer = new OversizedItemRenderer(Minecraft.getInstance().renderBuffers().bufferSource())) {
|
||||||
//noinspection DataFlowIssue
|
//noinspection DataFlowIssue
|
||||||
((PictureInPictureCopyRenderer) itemRenderer).geyser_mappings_generator$allowTextureCopy();
|
((PictureInPictureCopyRenderer) itemRenderer).rainbow$allowTextureCopy();
|
||||||
itemRenderer.prepare(oversizedRenderState, new GuiRenderState(), 4);
|
itemRenderer.prepare(oversizedRenderState, new GuiRenderState(), 4);
|
||||||
writeAsPNG(path, ((PictureInPictureRendererAccessor) itemRenderer).getTexture());
|
writeAsPNG(path, ((PictureInPictureRendererAccessor) itemRenderer).getTexture());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ public abstract class PictureInPictureRendererMixin implements AutoCloseable, Pi
|
|||||||
private boolean allowTextureCopy = false;
|
private boolean allowTextureCopy = false;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void geyser_mappings_generator$allowTextureCopy() {
|
public void rainbow$allowTextureCopy() {
|
||||||
if (texture != null) {
|
if (texture != null) {
|
||||||
throw new IllegalStateException("texture already created");
|
throw new IllegalStateException("texture already created");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -154,6 +154,10 @@ public class BedrockPack {
|
|||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Path getExportPath() {
|
||||||
|
return exportPath;
|
||||||
|
}
|
||||||
|
|
||||||
private String createPackSummary() {
|
private String createPackSummary() {
|
||||||
return """
|
return """
|
||||||
-- PACK GENERATION REPORT --
|
-- PACK GENERATION REPORT --
|
||||||
|
|||||||
@@ -2,5 +2,5 @@ package org.geysermc.rainbow.render;
|
|||||||
|
|
||||||
public interface PictureInPictureCopyRenderer {
|
public interface PictureInPictureCopyRenderer {
|
||||||
|
|
||||||
void geyser_mappings_generator$allowTextureCopy();
|
void rainbow$allowTextureCopy();
|
||||||
}
|
}
|
||||||
|
|||||||
17
src/main/resources/assets/rainbow/lang/en_us.json
Normal file
17
src/main/resources/assets/rainbow/lang/en_us.json
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"chat.rainbow.automatic_mapping_finished": "Finished mapping items from provider",
|
||||||
|
"chat.rainbow.mapped_items": "Mapped %d items",
|
||||||
|
"commands.rainbow.automatic_inventory_mapping": "Now watching inventories for custom items to map",
|
||||||
|
"commands.rainbow.create_pack_failed": "Failed to create new pack!",
|
||||||
|
"commands.rainbow.mapped_held_item": "The held item was mapped",
|
||||||
|
"commands.rainbow.mapped_held_item_problems": "The held item was mapped, however problems occurred whilst doing so. Read the pack report after finishing the pack for more information",
|
||||||
|
"commands.rainbow.mapped_items_from_inventory": "Mapped %d items from your inventory",
|
||||||
|
"commands.rainbow.mapped_items_problems": "Problems occurred whilst mapping items. Read the pack report after finishing the pack for more information",
|
||||||
|
"commands.rainbow.no_item_mapped": "No item was mapped. Either no custom item was found, or it was already included in the pack",
|
||||||
|
"commands.rainbow.no_items_mapped": "No items were mapped. Either no custom items were found, or they were already included in the pack",
|
||||||
|
"commands.rainbow.no_pack": "Create a pack first: %s",
|
||||||
|
"commands.rainbow.pack_created": "Created pack with name %s",
|
||||||
|
"commands.rainbow.pack_finished_error": "Errors occurred whilst writing the pack to disk!",
|
||||||
|
"commands.rainbow.pack_finished_successfully": "Wrote pack to disk",
|
||||||
|
"commands.rainbow.stopped_automatic_mapping": "Stopped automatic mapping of custom items"
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user