triplea icon indicating copy to clipboard operation
triplea copied to clipboard

UnifiedInvocationHandler#invoke:57 - java.lang.reflect.UndeclaredThrowableException

Open tripleabuilderbot opened this issue 5 months ago • 4 comments

Map

cold_war_1965_rev02 / Cold War: 1965 rev02

Log Message

Exception on remote

TripleA Version

2.7.15138

Java Version

21.0.7

Operating System

Windows 11

Heap Size

1954M

Stack Trace

Exception: java.lang.RuntimeException Exception on remote
java.lang.Exception
	at games.strategy.engine.message.UnifiedInvocationHandler.invoke(UnifiedInvocationHandler.java:57)
	at jdk.proxy2/jdk.proxy2.$Proxy16.fightBattle(Unknown Source)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at games.strategy.engine.player.PlayerBridge$GameOverInvocationHandler.invoke(PlayerBridge.java:154)
	at jdk.proxy2/jdk.proxy2.$Proxy16.fightBattle(Unknown Source)
	at games.strategy.triplea.ai.AbstractAi.battle(AbstractAi.java:613)
	at games.strategy.triplea.ai.AbstractAi.start(AbstractAi.java:520)
	at games.strategy.engine.framework.ServerGame.waitForPlayerToFinishStep(ServerGame.java:614)
	at games.strategy.engine.framework.ServerGame.runStep(ServerGame.java:463)
	at games.strategy.engine.framework.ServerGame.runNextStep(ServerGame.java:350)
	at games.strategy.engine.framework.ServerGame.startGame(ServerGame.java:317)
	at games.strategy.engine.framework.startup.launcher.LocalLauncher.launchInternal(LocalLauncher.java:92)
	at games.strategy.engine.framework.startup.launcher.LocalLauncher.lambda$launch$0(LocalLauncher.java:60)
	at java.base/java.lang.Thread.run(Thread.java:1583)


Exception: java.lang.reflect.UndeclaredThrowableException 
java.lang.Exception
	at jdk.proxy2/jdk.proxy2.$Proxy31.selectCasualties(Unknown Source)
	at games.strategy.triplea.delegate.battle.casualty.CasualtySelector.selectCasualties(CasualtySelector.java:144)
	at games.strategy.triplea.delegate.battle.steps.fire.NavalBombardment$BombardmentCasualtySelector.apply(NavalBombardment.java:154)
	at games.strategy.triplea.delegate.battle.steps.fire.NavalBombardment$BombardmentCasualtySelector.apply(NavalBombardment.java:148)
	at games.strategy.triplea.delegate.battle.steps.fire.SelectCasualties.execute(SelectCasualties.java:71)
	at games.strategy.triplea.delegate.ExecutionStack.execute(ExecutionStack.java:34)
	at games.strategy.triplea.delegate.battle.MustFightBattle.fight(MustFightBattle.java:690)
	at games.strategy.triplea.delegate.battle.BattleDelegate.fightBattle(BattleDelegate.java:243)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at games.strategy.engine.delegate.DelegateExecutionManager$1.invoke(DelegateExecutionManager.java:120)
	at jdk.proxy2/jdk.proxy2.$Proxy16.fightBattle(Unknown Source)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at games.strategy.engine.message.unifiedmessenger.EndPoint.invokeSingle(EndPoint.java:137)
	at games.strategy.engine.message.unifiedmessenger.EndPoint.lambda$invokeMultiple$0(EndPoint.java:121)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:1024)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
	at games.strategy.engine.message.unifiedmessenger.EndPoint.invokeMultiple(EndPoint.java:122)
	at games.strategy.engine.message.unifiedmessenger.EndPoint.invokeLocal(EndPoint.java:112)
	at games.strategy.engine.message.unifiedmessenger.UnifiedMessenger.invokeAndWait(UnifiedMessenger.java:97)
	at games.strategy.engine.message.UnifiedInvocationHandler.invoke(UnifiedInvocationHandler.java:55)
	at jdk.proxy2/jdk.proxy2.$Proxy16.fightBattle(Unknown Source)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at games.strategy.engine.player.PlayerBridge$GameOverInvocationHandler.invoke(PlayerBridge.java:154)
	at jdk.proxy2/jdk.proxy2.$Proxy16.fightBattle(Unknown Source)
	at games.strategy.triplea.ai.AbstractAi.battle(AbstractAi.java:613)
	at games.strategy.triplea.ai.AbstractAi.start(AbstractAi.java:520)
	at games.strategy.engine.framework.ServerGame.waitForPlayerToFinishStep(ServerGame.java:614)
	at games.strategy.engine.framework.ServerGame.runStep(ServerGame.java:463)
	at games.strategy.engine.framework.ServerGame.runNextStep(ServerGame.java:350)
	at games.strategy.engine.framework.ServerGame.startGame(ServerGame.java:317)
	at games.strategy.engine.framework.startup.launcher.LocalLauncher.launchInternal(LocalLauncher.java:92)
	at games.strategy.engine.framework.startup.launcher.LocalLauncher.lambda$launch$0(LocalLauncher.java:60)
	at java.base/java.lang.Thread.run(Thread.java:1583)


Exception: java.lang.reflect.InvocationTargetException 
java.lang.Exception
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:118)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at games.strategy.engine.delegate.DelegateExecutionManager.lambda$newOutboundImplementation$1(DelegateExecutionManager.java:79)
	at jdk.proxy2/jdk.proxy2.$Proxy31.selectCasualties(Unknown Source)
	at games.strategy.triplea.delegate.battle.casualty.CasualtySelector.selectCasualties(CasualtySelector.java:144)
	at games.strategy.triplea.delegate.battle.steps.fire.NavalBombardment$BombardmentCasualtySelector.apply(NavalBombardment.java:154)
	at games.strategy.triplea.delegate.battle.steps.fire.NavalBombardment$BombardmentCasualtySelector.apply(NavalBombardment.java:148)
	at games.strategy.triplea.delegate.battle.steps.fire.SelectCasualties.execute(SelectCasualties.java:71)
	at games.strategy.triplea.delegate.ExecutionStack.execute(ExecutionStack.java:34)
	at games.strategy.triplea.delegate.battle.MustFightBattle.fight(MustFightBattle.java:690)
	at games.strategy.triplea.delegate.battle.BattleDelegate.fightBattle(BattleDelegate.java:243)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at games.strategy.engine.delegate.DelegateExecutionManager$1.invoke(DelegateExecutionManager.java:120)
	at jdk.proxy2/jdk.proxy2.$Proxy16.fightBattle(Unknown Source)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at games.strategy.engine.message.unifiedmessenger.EndPoint.invokeSingle(EndPoint.java:137)
	at games.strategy.engine.message.unifiedmessenger.EndPoint.lambda$invokeMultiple$0(EndPoint.java:121)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:1024)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
	at games.strategy.engine.message.unifiedmessenger.EndPoint.invokeMultiple(EndPoint.java:122)
	at games.strategy.engine.message.unifiedmessenger.EndPoint.invokeLocal(EndPoint.java:112)
	at games.strategy.engine.message.unifiedmessenger.UnifiedMessenger.invokeAndWait(UnifiedMessenger.java:97)
	at games.strategy.engine.message.UnifiedInvocationHandler.invoke(UnifiedInvocationHandler.java:55)
	at jdk.proxy2/jdk.proxy2.$Proxy16.fightBattle(Unknown Source)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at games.strategy.engine.player.PlayerBridge$GameOverInvocationHandler.invoke(PlayerBridge.java:154)
	at jdk.proxy2/jdk.proxy2.$Proxy16.fightBattle(Unknown Source)
	at games.strategy.triplea.ai.AbstractAi.battle(AbstractAi.java:613)
	at games.strategy.triplea.ai.AbstractAi.start(AbstractAi.java:520)
	at games.strategy.engine.framework.ServerGame.waitForPlayerToFinishStep(ServerGame.java:614)
	at games.strategy.engine.framework.ServerGame.runStep(ServerGame.java:463)
	at games.strategy.engine.framework.ServerGame.runNextStep(ServerGame.java:350)
	at games.strategy.engine.framework.ServerGame.startGame(ServerGame.java:317)
	at games.strategy.engine.framework.startup.launcher.LocalLauncher.launchInternal(LocalLauncher.java:92)
	at games.strategy.engine.framework.startup.launcher.LocalLauncher.lambda$launch$0(LocalLauncher.java:60)
	at java.base/java.lang.Thread.run(Thread.java:1583)


Exception: java.lang.RuntimeException Exception on remote
java.lang.Exception
	at games.strategy.engine.message.UnifiedInvocationHandler.invoke(UnifiedInvocationHandler.java:57)
	at jdk.proxy2/jdk.proxy2.$Proxy31.selectCasualties(Unknown Source)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at games.strategy.engine.delegate.DelegateExecutionManager.lambda$newOutboundImplementation$1(DelegateExecutionManager.java:79)
	at jdk.proxy2/jdk.proxy2.$Proxy31.selectCasualties(Unknown Source)
	at games.strategy.triplea.delegate.battle.casualty.CasualtySelector.selectCasualties(CasualtySelector.java:144)
	at games.strategy.triplea.delegate.battle.steps.fire.NavalBombardment$BombardmentCasualtySelector.apply(NavalBombardment.java:154)
	at games.strategy.triplea.delegate.battle.steps.fire.NavalBombardment$BombardmentCasualtySelector.apply(NavalBombardment.java:148)
	at games.strategy.triplea.delegate.battle.steps.fire.SelectCasualties.execute(SelectCasualties.java:71)
	at games.strategy.triplea.delegate.ExecutionStack.execute(ExecutionStack.java:34)
	at games.strategy.triplea.delegate.battle.MustFightBattle.fight(MustFightBattle.java:690)
	at games.strategy.triplea.delegate.battle.BattleDelegate.fightBattle(BattleDelegate.java:243)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at games.strategy.engine.delegate.DelegateExecutionManager$1.invoke(DelegateExecutionManager.java:120)
	at jdk.proxy2/jdk.proxy2.$Proxy16.fightBattle(Unknown Source)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at games.strategy.engine.message.unifiedmessenger.EndPoint.invokeSingle(EndPoint.java:137)
	at games.strategy.engine.message.unifiedmessenger.EndPoint.lambda$invokeMultiple$0(EndPoint.java:121)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:1024)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
	at games.strategy.engine.message.unifiedmessenger.EndPoint.invokeMultiple(EndPoint.java:122)
	at games.strategy.engine.message.unifiedmessenger.EndPoint.invokeLocal(EndPoint.java:112)
	at games.strategy.engine.message.unifiedmessenger.UnifiedMessenger.invokeAndWait(UnifiedMessenger.java:97)
	at games.strategy.engine.message.UnifiedInvocationHandler.invoke(UnifiedInvocationHandler.java:55)
	at jdk.proxy2/jdk.proxy2.$Proxy16.fightBattle(Unknown Source)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at games.strategy.engine.player.PlayerBridge$GameOverInvocationHandler.invoke(PlayerBridge.java:154)
	at jdk.proxy2/jdk.proxy2.$Proxy16.fightBattle(Unknown Source)
	at games.strategy.triplea.ai.AbstractAi.battle(AbstractAi.java:613)
	at games.strategy.triplea.ai.AbstractAi.start(AbstractAi.java:520)
	at games.strategy.engine.framework.ServerGame.waitForPlayerToFinishStep(ServerGame.java:614)
	at games.strategy.engine.framework.ServerGame.runStep(ServerGame.java:463)
	at games.strategy.engine.framework.ServerGame.runNextStep(ServerGame.java:350)
	at games.strategy.engine.framework.ServerGame.startGame(ServerGame.java:317)
	at games.strategy.engine.framework.startup.launcher.LocalLauncher.launchInternal(LocalLauncher.java:92)
	at games.strategy.engine.framework.startup.launcher.LocalLauncher.lambda$launch$0(LocalLauncher.java:60)
	at java.base/java.lang.Thread.run(Thread.java:1583)


Exception: java.lang.IllegalStateException Capital not found for: PlayerId named: Neutral-USA
java.lang.Exception
	at games.strategy.triplea.attachments.TerritoryAttachment.getFirstOwnedCapitalOrFirstUnownedCapital(TerritoryAttachment.java:133)
	at games.strategy.triplea.ai.pro.ProData.hiddenInitialize(ProData.java:81)
	at games.strategy.triplea.ai.pro.ProData.initialize(ProData.java:50)
	at games.strategy.triplea.ai.pro.AbstractProAi.initializeData(AbstractProAi.java:103)
	at games.strategy.triplea.ai.pro.AbstractProAi.selectCasualties(AbstractProAi.java:388)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at games.strategy.engine.message.unifiedmessenger.EndPoint.invokeSingle(EndPoint.java:137)
	at games.strategy.engine.message.unifiedmessenger.EndPoint.lambda$invokeMultiple$0(EndPoint.java:121)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:1024)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
	at games.strategy.engine.message.unifiedmessenger.EndPoint.invokeMultiple(EndPoint.java:122)
	at games.strategy.engine.message.unifiedmessenger.EndPoint.invokeLocal(EndPoint.java:112)
	at games.strategy.engine.message.unifiedmessenger.UnifiedMessenger.invokeAndWait(UnifiedMessenger.java:97)
	at games.strategy.engine.message.UnifiedInvocationHandler.invoke(UnifiedInvocationHandler.java:55)
	at jdk.proxy2/jdk.proxy2.$Proxy31.selectCasualties(Unknown Source)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at games.strategy.engine.delegate.DelegateExecutionManager.lambda$newOutboundImplementation$1(DelegateExecutionManager.java:79)
	at jdk.proxy2/jdk.proxy2.$Proxy31.selectCasualties(Unknown Source)
	at games.strategy.triplea.delegate.battle.casualty.CasualtySelector.selectCasualties(CasualtySelector.java:144)
	at games.strategy.triplea.delegate.battle.steps.fire.NavalBombardment$BombardmentCasualtySelector.apply(NavalBombardment.java:154)
	at games.strategy.triplea.delegate.battle.steps.fire.NavalBombardment$BombardmentCasualtySelector.apply(NavalBombardment.java:148)
	at games.strategy.triplea.delegate.battle.steps.fire.SelectCasualties.execute(SelectCasualties.java:71)
	at games.strategy.triplea.delegate.ExecutionStack.execute(ExecutionStack.java:34)
	at games.strategy.triplea.delegate.battle.MustFightBattle.fight(MustFightBattle.java:690)
	at games.strategy.triplea.delegate.battle.BattleDelegate.fightBattle(BattleDelegate.java:243)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at games.strategy.engine.delegate.DelegateExecutionManager$1.invoke(DelegateExecutionManager.java:120)
	at jdk.proxy2/jdk.proxy2.$Proxy16.fightBattle(Unknown Source)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at games.strategy.engine.message.unifiedmessenger.EndPoint.invokeSingle(EndPoint.java:137)
	at games.strategy.engine.message.unifiedmessenger.EndPoint.lambda$invokeMultiple$0(EndPoint.java:121)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:1024)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
	at games.strategy.engine.message.unifiedmessenger.EndPoint.invokeMultiple(EndPoint.java:122)
	at games.strategy.engine.message.unifiedmessenger.EndPoint.invokeLocal(EndPoint.java:112)
	at games.strategy.engine.message.unifiedmessenger.UnifiedMessenger.invokeAndWait(UnifiedMessenger.java:97)
	at games.strategy.engine.message.UnifiedInvocationHandler.invoke(UnifiedInvocationHandler.java:55)
	at jdk.proxy2/jdk.proxy2.$Proxy16.fightBattle(Unknown Source)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at games.strategy.engine.player.PlayerBridge$GameOverInvocationHandler.invoke(PlayerBridge.java:154)
	at jdk.proxy2/jdk.proxy2.$Proxy16.fightBattle(Unknown Source)
	at games.strategy.triplea.ai.AbstractAi.battle(AbstractAi.java:613)
	at games.strategy.triplea.ai.AbstractAi.start(AbstractAi.java:520)
	at games.strategy.engine.framework.ServerGame.waitForPlayerToFinishStep(ServerGame.java:614)
	at games.strategy.engine.framework.ServerGame.runStep(ServerGame.java:463)
	at games.strategy.engine.framework.ServerGame.runNextStep(ServerGame.java:350)
	at games.strategy.engine.framework.ServerGame.startGame(ServerGame.java:317)
	at games.strategy.engine.framework.startup.launcher.LocalLauncher.launchInternal(LocalLauncher.java:92)
	at games.strategy.engine.framework.startup.launcher.LocalLauncher.lambda$launch$0(LocalLauncher.java:60)
	at java.base/java.lang.Thread.run(Thread.java:1583)


tripleabuilderbot avatar Aug 17 '25 05:08 tripleabuilderbot

Closing as duplicate (indicated by same title) of #12852.

github-actions[bot] avatar Aug 17 '25 05:08 github-actions[bot]

Different exception and only same generic name.

frigoref avatar Aug 17 '25 09:08 frigoref

Closing as duplicate (indicated by same title) of #12852.

github-actions[bot] avatar Aug 17 '25 16:08 github-actions[bot]

@Author: The error is clearly stating "Capital not found for: PlayerId named: Neutral-USA". Furthermore, I checked against the games XML of "Cold War 1965" (ColdWar-1965.xml) as I could not find any revision 2. In this file the player list list the player "Neutral-USA" (3rd last line) as an optional player.

  <playerList>
    <!-- In turn order -->
    <player name="AI-China" optional="false"/>
    <player name="AI-SinoPact" optional="false"/>
    <player name="USSR" optional="false"/>
    <player name="USA" optional="false"/>
    <player name="NATO" optional="false"/>
    <player name="WarsawPact" optional="false"/>
    <player name="SEATO" optional="false"/>
    <player name="ArabLeague" optional="false"/>
    <player name="Neutral-USA" optional="true"/>
    <player name="Neutral-USSR" optional="true"/>
    <player name="Neutral-China" optional="true"/>

This would have hit the code lines of TerritoryAttachment.java that would have avoided this IllegalStateException from the last line.

    // Added check for optional players- no error thrown for them
    if (player.getOptional()) {
      return Optional.empty();
    }
    throw new IllegalStateException("Capital not found for: " + player);

Hence, I assume the new revised version of the map "cold_war_1965_rev02 / Cold War: 1965 rev02" refers to a map/game under construction missing this optiona-flag being set or the player having a capital.

Please let us know if this helps.

frigoref avatar Aug 17 '25 20:08 frigoref