mirror of
				https://github.com/SquidDev-CC/CC-Tweaked
				synced 2025-11-03 23:22:59 +00:00 
			
		
		
		
	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
   dcc74e15c7) 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
			
			
This commit is contained in:
		@@ -44,11 +44,12 @@ public final class PocketBrain implements IPocketAccess {
 | 
			
		||||
    private int colour = -1;
 | 
			
		||||
    private int lightColour = -1;
 | 
			
		||||
 | 
			
		||||
    public PocketBrain(PocketHolder holder, @Nullable UpgradeData<IPocketUpgrade> upgrade, ServerComputer.Properties properties) {
 | 
			
		||||
    public PocketBrain(PocketHolder holder, @Nullable UpgradeData<IPocketUpgrade> upgrade, int colour, ServerComputer.Properties properties) {
 | 
			
		||||
        this.computer = new PocketServerComputer(this, holder, properties);
 | 
			
		||||
        this.holder = holder;
 | 
			
		||||
        this.position = holder.pos();
 | 
			
		||||
        this.upgrade = UpgradeData.copyOf(upgrade);
 | 
			
		||||
        this.colour = colour;
 | 
			
		||||
        invalidatePeripheral();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -272,7 +272,7 @@ public class PocketComputerItem extends Item implements IComputerItem, IColoured
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        var brain = new PocketBrain(
 | 
			
		||||
            holder, getUpgradeWithData(stack),
 | 
			
		||||
            holder, getUpgradeWithData(stack), getColour(stack),
 | 
			
		||||
            ServerComputer.properties(getComputerID(stack), getFamily()).label(getLabel(stack))
 | 
			
		||||
        );
 | 
			
		||||
        var computer = brain.computer();
 | 
			
		||||
@@ -314,10 +314,14 @@ public class PocketComputerItem extends Item implements IComputerItem, IColoured
 | 
			
		||||
        // item. However, if we've just crafted the computer with an upgrade, we should sync the other way, and update
 | 
			
		||||
        // the computer.
 | 
			
		||||
        var server = level.getServer();
 | 
			
		||||
        if (server != null) {
 | 
			
		||||
            var computer = getServerComputer(server, stack);
 | 
			
		||||
            if (computer != null) computer.getBrain().setUpgrade(getUpgradeWithData(stack));
 | 
			
		||||
        }
 | 
			
		||||
        if (server == null) return;
 | 
			
		||||
 | 
			
		||||
        var computer = getServerComputer(server, stack);
 | 
			
		||||
        if (computer == null) return;
 | 
			
		||||
 | 
			
		||||
        var brain = computer.getBrain();
 | 
			
		||||
        brain.setUpgrade(getUpgradeWithData(stack));
 | 
			
		||||
        brain.setColour(getColour(stack));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // IComputerItem implementation
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user