mage icon indicating copy to clipboard operation
mage copied to clipboard

Clicking view-other-side icon of a melded permanent causes a server error

Open catman123456 opened this issue 3 years ago • 2 comments

when I meld into [[Hanweir, the Writhing Township]] I got this message image

Here's a new messgae image

=>[AWT-EventQueue-0] CallbackClientImpl.handleException java.lang.ClassCastException: mage.view.CardView cannot be cast to mage.view.PermanentView at org.mage.card.arcane.CardPanel.getOriginalPermanent(CardPanel.java:832) at mage.client.game.BattlefieldPanel.update(BattlefieldPanel.java:159) at mage.client.game.PlayAreaPanel.update(PlayAreaPanel.java:522) at mage.client.game.GamePanel.updateGame(GamePanel.java:818) at mage.client.game.GamePanel.updateGame(GamePanel.java:713) at mage.client.game.GamePanel.updateGame(GamePanel.java:707) at mage.client.game.GamePanel.inform(GamePanel.java:1659) at mage.client.remote.CallbackClientImpl.lambda$processCallback$0(CallbackClientImpl.java:346) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) FATAL 2022-09-01 09:53:14,387 Client error =>[AWT-EventQueue-0] CallbackClientImpl.handleException java.lang.ClassCastException: mage.view.CardView cannot be cast to mage.view.PermanentView at org.mage.card.arcane.CardPanel.getOriginalPermanent(CardPanel.java:832) at mage.client.game.BattlefieldPanel.update(BattlefieldPanel.java:159) at mage.client.game.PlayAreaPanel.update(PlayAreaPanel.java:522) at mage.client.game.GamePanel.updateGame(GamePanel.java:818) at mage.client.game.GamePanel.updateGame(GamePanel.java:713) at mage.client.game.GamePanel.updateGame(GamePanel.java:707) at mage.client.game.GamePanel.inform(GamePanel.java:1659) at mage.client.remote.CallbackClientImpl.lambda$processCallback$0(CallbackClientImpl.java:346) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) FATAL 2022-09-01 09:53:32,433 Client error =>[AWT-EventQueue-0] CallbackClientImpl.handleException java.lang.ClassCastException: mage.view.CardView cannot be cast to mage.view.PermanentView at org.mage.card.arcane.CardPanel.getOriginalPermanent(CardPanel.java:832) at mage.client.game.BattlefieldPanel.update(BattlefieldPanel.java:159) at mage.client.game.PlayAreaPanel.update(PlayAreaPanel.java:522) at mage.client.game.GamePanel.updateGame(GamePanel.java:818) at mage.client.game.GamePanel.updateGame(GamePanel.java:713) at mage.client.game.GamePanel.ask(GamePanel.java:1362) at mage.client.remote.CallbackClientImpl.lambda$processCallback$0(CallbackClientImpl.java:208) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) FATAL 2022-09-01 09:58:33,177 Client error =>[AWT-EventQueue-0] CallbackClientImpl.handleException java.lang.ClassCastException: mage.view.CardView cannot be cast to mage.view.PermanentView at org.mage.card.arcane.CardPanel.getOriginalPermanent(CardPanel.java:832) at mage.client.game.BattlefieldPanel.update(BattlefieldPanel.java:159) at mage.client.game.PlayAreaPanel.update(PlayAreaPanel.java:522) at mage.client.game.GamePanel.updateGame(GamePanel.java:818) at mage.client.game.GamePanel.updateGame(GamePanel.java:713) at mage.client.game.GamePanel.ask(GamePanel.java:1362) at mage.client.remote.CallbackClientImpl.lambda$processCallback$0(CallbackClientImpl.java:208) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) FATAL 2022-09-01 09:59:23,897 Client error =>[AWT-EventQueue-0] CallbackClientImpl.handleException java.lang.ClassCastException: mage.view.CardView cannot be cast to mage.view.PermanentView at org.mage.card.arcane.CardPanel.getOriginalPermanent(CardPanel.java:832) at mage.client.game.BattlefieldPanel.update(BattlefieldPanel.java:159) at mage.client.game.PlayAreaPanel.update(PlayAreaPanel.java:522) at mage.client.game.GamePanel.updateGame(GamePanel.java:818) at mage.client.game.GamePanel.updateGame(GamePanel.java:713) at mage.client.game.GamePanel.ask(GamePanel.java:1362) at mage.client.remote.CallbackClientImpl.lambda$processCallback$0(CallbackClientImpl.java:208) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) FATAL 2022-09-01 09:59:29,803 Client error =>[AWT-EventQueue-0] CallbackClientImpl.handleException java.lang.ClassCastException

catman123456 avatar Sep 01 '22 14:09 catman123456

Hanweir, the Writhing Township - (Gatherer) (Scryfall) (EDHREC)

Legendary Creature — Eldrazi Ooze 7/4 Trample, haste Whenever Hanweir, the Writhing Township attacks, create two 3/2 colorless Eldrazi Horror creature tokens that are tapped and attacking.

github-actions[bot] avatar Sep 01 '22 14:09 github-actions[bot]

This error seems to be specifically caused by a player clicking on the sun/moon icon to see the other side of the melded permanent. Meld cards should not have the clickable icon if they do not support the view-other-side functionality.

awjackson avatar Sep 01 '22 23:09 awjackson

@awjackson are you fixed the original error or just disable clickable night icon? It works fine in old days as I know.

JayDi85 avatar Oct 16 '22 03:10 JayDi85

"In old days" (before the big TDFC rewrite for MID) DFCs on the battlefield didn't have a clickable icon to see the other side. Only cards off the battlefield (in your hand, etc) did. Melded cards never exist in any zone other than the battlefield, so there was never any way to click on them.

How would seeing "the other side" of a melded card even work? It would have to show you two cards.

Screenshot_20221016_004805

Screenshot from 1.4.50 showing battlefield and hand with DFCs and meld cards. None of the permanents on the battlefield (regular DFC werewolves both sides, meldable card, melded card) have an icon, and the meldable card in hand doesn't have one either. Only the regular DFC in hand has an icon.

awjackson avatar Oct 16 '22 04:10 awjackson

@awjackson well, I see... Then I'll start implementing it.

JayDi85 avatar Oct 16 '22 05:10 JayDi85

Even if you want to implement clicking to view the other side of melded cards, note that this change is correct according to the Comprehensive Rules. Meld cards are not DFCs and they do not transform. They exile themselves and then the melded version enters the game as a completely new object.

713.1b A meld card isn’t a double-faced card. Its back face can’t be cast or put onto the battlefield, and it can’t transform or enter the battlefield transformed. (See rule 712, “Double-Faced Cards.”)

awjackson avatar Oct 16 '22 05:10 awjackson

Yes, I know. MDFC also non transformable cards, so xmage supports such things already (diff logic for GUI and mtg rules/engine).

JayDi85 avatar Oct 16 '22 05:10 JayDi85