1
0
mirror of https://github.com/SquidDev-CC/CC-Tweaked synced 2025-09-10 22:35:59 +00:00

Expose printout contents to the API

Closes #2099
This commit is contained in:
Jonathan Coates
2025-02-14 18:13:20 +00:00
parent b185d088b3
commit 237a0ac3bb
4 changed files with 71 additions and 1 deletions

View File

@@ -12,6 +12,7 @@ import dan200.computercraft.api.filesystem.WritableMount;
import dan200.computercraft.api.lua.GenericSource;
import dan200.computercraft.api.lua.ILuaAPIFactory;
import dan200.computercraft.api.media.MediaProvider;
import dan200.computercraft.api.media.PrintoutContents;
import dan200.computercraft.api.network.PacketNetwork;
import dan200.computercraft.api.network.wired.WiredElement;
import dan200.computercraft.api.network.wired.WiredNode;
@@ -26,6 +27,7 @@ import dan200.computercraft.shared.computer.core.ResourceMount;
import dan200.computercraft.shared.computer.core.ServerContext;
import dan200.computercraft.shared.details.BlockDetails;
import dan200.computercraft.shared.details.ItemDetails;
import dan200.computercraft.shared.media.items.PrintoutItem;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.Registry;
@@ -39,6 +41,7 @@ import javax.annotation.Nullable;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.stream.Stream;
public abstract class AbstractComputerCraftAPI implements ComputerCraftAPIService {
private final DetailRegistry<ItemStack> itemStackDetails = new DetailRegistryImpl<>(ItemDetails::fillBasic);
@@ -134,4 +137,21 @@ public abstract class AbstractComputerCraftAPI implements ComputerCraftAPIServic
public final DetailRegistry<BlockReference> getBlockInWorldDetailRegistry() {
return blockDetails;
}
@Override
public @Nullable PrintoutContents getPrintoutContents(ItemStack stack) {
return stack.getItem() instanceof PrintoutItem ? new PrintoutContentsImpl(stack) : null;
}
public record PrintoutContentsImpl(ItemStack stack) implements PrintoutContents {
@Override
public String getTitle() {
return PrintoutItem.getTitle(stack);
}
@Override
public Stream<String> getTextLines() {
return Stream.of(PrintoutItem.getText(stack));
}
}
}