Skip to content

Commit 0e1e8a7

Browse files
committed
Fix syncing of colour between PocketBrain and item
- Actually set colour when constructing the brain. - Sync it back after crafting, much like we do for upgrades (see dcc74e1) for more details. We should take a proper look at this on 1.21.4 and make these methods main-thread only, so we can sync immediately. Fixes #2157
1 parent 7c1e8e1 commit 0e1e8a7

File tree

2 files changed

+11
-6
lines changed

2 files changed

+11
-6
lines changed

projects/common/src/main/java/dan200/computercraft/shared/pocket/core/PocketBrain.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,12 @@ public final class PocketBrain implements IPocketAccess {
4444
private int colour = -1;
4545
private int lightColour = -1;
4646

47-
public PocketBrain(PocketHolder holder, @Nullable UpgradeData<IPocketUpgrade> upgrade, ServerComputer.Properties properties) {
47+
public PocketBrain(PocketHolder holder, @Nullable UpgradeData<IPocketUpgrade> upgrade, int colour, ServerComputer.Properties properties) {
4848
this.computer = new PocketServerComputer(this, holder, properties);
4949
this.holder = holder;
5050
this.position = holder.pos();
5151
this.upgrade = UpgradeData.copyOf(upgrade);
52+
this.colour = colour;
5253
invalidatePeripheral();
5354
}
5455

projects/common/src/main/java/dan200/computercraft/shared/pocket/items/PocketComputerItem.java

+9-5
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ private PocketBrain getOrCreateBrain(ServerLevel level, PocketHolder holder, Ite
272272
}
273273

274274
var brain = new PocketBrain(
275-
holder, getUpgradeWithData(stack),
275+
holder, getUpgradeWithData(stack), getColour(stack),
276276
ServerComputer.properties(getComputerID(stack), getFamily()).label(getLabel(stack))
277277
);
278278
var computer = brain.computer();
@@ -314,10 +314,14 @@ public void onCraftedBy(ItemStack stack, Level level, Player player) {
314314
// item. However, if we've just crafted the computer with an upgrade, we should sync the other way, and update
315315
// the computer.
316316
var server = level.getServer();
317-
if (server != null) {
318-
var computer = getServerComputer(server, stack);
319-
if (computer != null) computer.getBrain().setUpgrade(getUpgradeWithData(stack));
320-
}
317+
if (server == null) return;
318+
319+
var computer = getServerComputer(server, stack);
320+
if (computer == null) return;
321+
322+
var brain = computer.getBrain();
323+
brain.setUpgrade(getUpgradeWithData(stack));
324+
brain.setColour(getColour(stack));
321325
}
322326

323327
// IComputerItem implementation

0 commit comments

Comments
 (0)