Skip to content

Commit 94bf289

Browse files
Fix CC integration with the monitor cover (#4143)
1 parent 403a90f commit 94bf289

File tree

8 files changed

+56
-4
lines changed

8 files changed

+56
-4
lines changed

src/generated/resources/assets/gtceu/lang/en_ud.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3528,6 +3528,9 @@
35283528
"gtceu.placeholder_info.block.0": "˙)█( ןoqɯʎs ʞɔoןq ǝɥʇ suɹnʇǝᴚ",
35293529
"gtceu.placeholder_info.block.1": ":ǝbɐs∩",
35303530
"gtceu.placeholder_info.block.2": ",█, >- }ʞɔoןq{ ",
3531+
"gtceu.placeholder_info.bufferText.0": "ʇɟɐɹƆɹǝʇndɯoƆ ʎq ǝןqıssǝɔɔɐ ɹǝɟɟnq ɐ ɯoɹɟ ʇxǝʇ ǝɥʇ suɹnʇǝᴚ",
3532+
"gtceu.placeholder_info.bufferText.1": ":ǝbɐs∩",
3533+
"gtceu.placeholder_info.bufferText.2": ")00Ɩ-Ɩ sı ǝuıן( ǝuıן pǝıɟıɔǝds ǝɥʇ uo ɹǝɟɟnq ǝɥʇ ɯoɹɟ ʇxǝʇ >- }>ǝuıן< ʇxǝ⟘ɹǝɟɟnq{ ",
35313534
"gtceu.placeholder_info.calc.0": "˙uoıʇɐɹǝdo ɹo uoıʇɔunɟ ɥʇɐɯ ɐ ɟo ʇןnsǝɹ ǝɥʇ suɹnʇǝᴚ",
35323535
"gtceu.placeholder_info.calc.1": ":ǝbɐs∩",
35333536
"gtceu.placeholder_info.calc.2": "buıɹʇs‾ʎuɐ >- }>buıɹʇs‾ʎuɐ< ɔןɐɔ{ ",

src/generated/resources/assets/gtceu/lang/en_us.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3528,6 +3528,9 @@
35283528
"gtceu.placeholder_info.block.0": "Returns the block symbol (█).",
35293529
"gtceu.placeholder_info.block.1": "Usage:",
35303530
"gtceu.placeholder_info.block.2": " {block} -> '█'",
3531+
"gtceu.placeholder_info.bufferText.0": "Returns the text from a buffer accessible by ComputerCraft",
3532+
"gtceu.placeholder_info.bufferText.1": "Usage:",
3533+
"gtceu.placeholder_info.bufferText.2": " {bufferText <line>} -> text from the buffer on the specified line (line is 1-100)",
35313534
"gtceu.placeholder_info.calc.0": "Returns the result of a math function or operation.",
35323535
"gtceu.placeholder_info.calc.1": "Usage:",
35333536
"gtceu.placeholder_info.calc.2": " {calc <any_string>} -> any_string",

src/main/java/com/gregtechceu/gtceu/api/placeholder/IPlaceholderInfoProviderCover.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,9 @@ public interface IPlaceholderInfoProviderCover {
1111

1212
List<? extends Component> getCreateDisplayTargetBuffer();
1313

14+
List<? extends Component> getComputerCraftTextBuffer();
15+
1416
void setDisplayTargetBufferLine(int line, MutableComponent component);
17+
18+
void setComputerCraftTextBufferLine(int line, MutableComponent component);
1519
}

src/main/java/com/gregtechceu/gtceu/common/cover/ComputerMonitorCover.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,13 +84,19 @@ public class ComputerMonitorCover extends CoverBehavior
8484
private final List<MutableComponent> createDisplayTargetBuffer = new ArrayList<>();
8585
@Persisted
8686
@Getter
87+
private final List<MutableComponent> computerCraftTextBuffer = new ArrayList<>();
88+
@Persisted
89+
@Getter
8790
private final UUID placeholderUUID;
8891

8992
public ComputerMonitorCover(CoverDefinition definition, ICoverable coverHolder, Direction attachedSide) {
9093
super(definition, coverHolder, attachedSide);
9194
renderer = new CoverTextRenderer(this::getText);
9295
placeholderUUID = UUID.randomUUID();
93-
for (int i = 0; i < 100; i++) createDisplayTargetBuffer.add(MutableComponent.create(ComponentContents.EMPTY));
96+
for (int i = 0; i < 100; i++) {
97+
createDisplayTargetBuffer.add(MutableComponent.create(ComponentContents.EMPTY));
98+
computerCraftTextBuffer.add(MutableComponent.create(ComponentContents.EMPTY));
99+
}
94100
}
95101

96102
public List<MutableComponent> getRenderedText() {
@@ -107,6 +113,11 @@ public void setDisplayTargetBufferLine(int line, MutableComponent component) {
107113
createDisplayTargetBuffer.set(line, component);
108114
}
109115

116+
@Override
117+
public void setComputerCraftTextBufferLine(int line, MutableComponent component) {
118+
computerCraftTextBuffer.set(line, component);
119+
}
120+
110121
@Override
111122
public boolean canPipePassThrough() {
112123
return false;

src/main/java/com/gregtechceu/gtceu/common/cover/WirelessTransmitterCover.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,15 @@ public class WirelessTransmitterCover extends CoverBehavior
3333

3434
@Getter
3535
private final List<MutableComponent> createDisplayTargetBuffer = new ArrayList<>();
36+
@Getter
37+
private final List<MutableComponent> computerCraftTextBuffer = new ArrayList<>();
3638

3739
public WirelessTransmitterCover(CoverDefinition definition, ICoverable coverHolder, Direction attachedSide) {
3840
super(definition, coverHolder, attachedSide);
39-
for (int i = 0; i < 100; i++) createDisplayTargetBuffer.add(MutableComponent.create(ComponentContents.EMPTY));
41+
for (int i = 0; i < 100; i++) {
42+
createDisplayTargetBuffer.add(MutableComponent.create(ComponentContents.EMPTY));
43+
computerCraftTextBuffer.add(MutableComponent.create(ComponentContents.EMPTY));
44+
}
4045
}
4146

4247
@Override
@@ -59,6 +64,11 @@ public void setDisplayTargetBufferLine(int line, MutableComponent component) {
5964
createDisplayTargetBuffer.set(line, component);
6065
}
6166

67+
@Override
68+
public void setComputerCraftTextBufferLine(int line, MutableComponent component) {
69+
computerCraftTextBuffer.set(line, component);
70+
}
71+
6272
@Override
6373
public ManagedFieldHolder getFieldHolder() {
6474
return MANAGED_FIELD_HOLDER;

src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1609,6 +1609,10 @@ public static void init(RegistrateLangProvider provider) {
16091609
" {eval \"repeating a: {repeat 5 \\\"a \\\"}\" -> repeating a: a a a a a ",
16101610
" {eval \\\"\"{some random text}\"\\\" -> {some random text}",
16111611
" {eval \"text \"\\\"\"{something with spaces}\"\\\"\" more text\" -> text {something with spaces} more text");
1612+
multiLang(provider, "gtceu.placeholder_info.bufferText",
1613+
"Returns the text from a buffer accessible by ComputerCraft",
1614+
"Usage:",
1615+
" {bufferText <line>} -> text from the buffer on the specified line (line is 1-100)");
16121616
provider.add("gtceu.ender_item_link_cover.title", "Ender Item Link");
16131617
provider.add("gtceu.ender_redstone_link_cover.title", "Ender Redstone Link");
16141618
provider.add("gtceu.ender_redstone_link_cover.label", "Redstone power: %d");

src/main/java/com/gregtechceu/gtceu/integration/cctweaked/CCTweakedPlugin.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
package com.gregtechceu.gtceu.integration.cctweaked;
22

33
import com.gregtechceu.gtceu.api.capability.forge.GTCapability;
4+
import com.gregtechceu.gtceu.api.placeholder.*;
5+
import com.gregtechceu.gtceu.api.placeholder.exceptions.NotSupportedException;
6+
import com.gregtechceu.gtceu.api.placeholder.exceptions.PlaceholderException;
47
import com.gregtechceu.gtceu.integration.cctweaked.peripherals.*;
58

69
import dan200.computercraft.api.ComputerCraftAPI;
710
import dan200.computercraft.api.ForgeComputerCraftAPI;
811

12+
import java.util.List;
13+
914
public class CCTweakedPlugin {
1015

1116
public static void init() {
@@ -21,5 +26,17 @@ public static void init() {
2126
ForgeComputerCraftAPI.registerGenericCapability(GTCapability.CAPABILITY_WORKABLE);
2227
ForgeComputerCraftAPI.registerGenericCapability(GTCapability.CAPABILITY_COVERABLE);
2328
ForgeComputerCraftAPI.registerGenericCapability(GTCapability.CAPABILITY_CENTRAL_MONITOR);
29+
PlaceholderHandler.addPlaceholder(new Placeholder("bufferText") {
30+
31+
@Override
32+
public MultiLineComponent apply(PlaceholderContext ctx,
33+
List<MultiLineComponent> args) throws PlaceholderException {
34+
PlaceholderUtils.checkArgs(args, 1);
35+
if (!(ctx.cover() instanceof IPlaceholderInfoProviderCover cover)) throw new NotSupportedException();
36+
int i = PlaceholderUtils.toInt(args.get(0));
37+
PlaceholderUtils.checkRange("line number", 1, 100, i);
38+
return MultiLineComponent.of(cover.getComputerCraftTextBuffer().get(i - 1));
39+
}
40+
});
2441
}
2542
}

src/main/java/com/gregtechceu/gtceu/integration/cctweaked/peripherals/CoverHolderPeripheral.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public static MethodResult setBufferedText(ICoverable coverable, String face, in
2727
if (direction == null) return MethodResult.of(false, "invalid face");
2828
if (line < 1 || line > 100) return MethodResult.of(false, "line must be from 1 to 100 (inclusive)");
2929
if (coverable.getCoverAtSide(direction) instanceof IPlaceholderInfoProviderCover cover) {
30-
cover.setDisplayTargetBufferLine(line, Component.literal(text));
30+
cover.setComputerCraftTextBufferLine(line - 1, Component.literal(text));
3131
return MethodResult.of(true, "success");
3232
} else return MethodResult.of(false, "invalid cover");
3333
}
@@ -44,7 +44,7 @@ public static MethodResult parsePlaceholders(ICoverable coverable, String face,
4444
cover.itemStackHandler,
4545
cover,
4646
new MultiLineComponent(cover.getText()),
47-
cover.getPlaceholderUUID())));
47+
cover.getPlaceholderUUID())).toString());
4848
} else return MethodResult.of(false, "invalid cover");
4949
}
5050
}

0 commit comments

Comments
 (0)