[FUN] ChessCraft - Play Chess [BukkitDev]

Discussion in 'Archived: Plugin Releases' started by desht, Jul 4, 2011.

  1. Offline

    desht

    ChessCraft - play chess

    ChessCraft is now on dev.bukkit.org. This thread will remain open for now for general discussion, but please use dev.bukkit.org for reporting problems and feature requests.

    All documentation is now maintained on dev.bukkit.org. Nothing below here will be updated from now on (8th September 2011).

    ChessCraft lets you play games of chess in the world of Minecraft. It has support for multiple chessboards and multiple concurrent games. You can play against other humans, or against the computer.

    Download ChessCraft.jar 2.0.1
    View source code on github
    Read the User Manual on dev.bukkit.org

    Thanks to BrandonHopkins for this review & tutorial:


    And to the WoopaGaming folks for this one:


    Changelog
     
  2. Offline

    jascotty2

    large (7x7) (open)

    board:
    Code:
    # width/length of the board squares, in blocks
    square_size: 7
    # width in blocks of the frame surrounding the board
    frame_width: 3
    # height of the board - number of squares of clear air between board and enclosure roof
    height: 11
    # material/data for the white squares
    white_square: IRON_BLOCK
    # material/data for the black squares
    black_square: OBSIDIAN
    # material/data for the frame
    frame: '5'
    # material/data for the enclosure (if you don't use glass, then you better have lit = true!)
    enclosure: air
    # is the board lit up?
    lit: true
    # style of chess set to use (see ../pieces/*.yml)
    # the style chosen must fit within the square_size specified above
    piece_style: large
    
    pieces:
    Code:
    # Name for this set - should match the filename
    name: large
    
    # List of materials used in the set
    # Can be specified as plain integer (e.g. '0' - air), material name (e.g. iron_block)
    # or material plus data (e.g. 35:0, wool:white)
    # If you use plain integers, they must be quoted, or the set will not load!
    # If you use material names, they must match the org.bukkit.Material definitions exactly
    # - see http://jd.bukkit.org/apidocs/org/bukkit/Material.html
    materials:
      black:
        O: AIR
        X: OBSIDIAN
        P: '89'
        L: '65:5'
        K: '65:4'
        T: '50'
        Y: '50:4'
        U: '50:3'
        I: '50:1'
        R: '50:2'
      white:
        O: AIR
        X: IRON_BLOCK
        P: '89'
        L: '65:4'
        K: '65:5'
        T: '50'
        Y: '50:3'
        U: '50:4'
        I: '50:2'
        R: '50:1'
    
    # Piece definitions
    # This is a list of list of strings such that:
    # - definition[0] is the lowest layer on the Y-axis
    # - definition[0][0] is the northmost row on the lowest layer
    # - each string runs from west to east and consists of materials defined above
    #
    pieces:
      P: [ [OXXXO, XXXXX, XXXXX, XXXXX, OXXXO], [OOXOO, OXXXO, XXXXX, OXXXO, OOXOO], [OOOOO, OTXTO, OXXXO, OTXTO, OOOOO], [OOOOO, OXXXO, OXXXO, OXXXO, OOOOO], [OOOOO, OOOOO, OOXOO, OOOOO, OOOOO] ]
      N: [ [XOOOX, OXOXO, OOXOO, OXKXO, XOOOX], [XXPXX, XXXXX, XXXXX, XXKXX, XXOXX], [OOOOO, OXXXO, OXXXO, OXKXO, OXXXO], [OOXOO, OPXPO, OXXXO, OXKXO, OOXOO], [OOXOO, OOXOO, OOXOO, OOKOO, OOOOO], [OOOOO, OOXOO, OOOOO, OOOOO, OOOOO] ]
      B: [ [XXXXX, XXXXX, XXXXX, XXXXX, XXXXX], [OXXXO, XXXXX, XXXXX, XXXXX, OXXXO], [OOOOO, OXXXO, OXXXO, OXXXO, OOOOO], [OOOOO, OOOOO, OOXOO, OOOOO, OOOOO], [OOOOO, OPPPO, OPXPO, OPPPO, OOOOO], [OOOOO, OOOOO, OOXOO, OOOOO, OOOOO] ]
    #  R: [ [OOOOOOO, OXXOXXO, OXXOXXO, OXXLXXO, OXXXXXO, OXXXXXO, OOOOOOO], [OOOOOOO, OXXOXXO, OXXOXXO, OXXLXXO, OXXXXXO, OXXXXXO, OOOOOOO], [OOOOOOO, OXXXXXO, OXXXXXO, OXXLXXO, OXXXXXO, OXXXXXO, OOOOOOO], [OOROROO, OXXXXXO, YXXXXXU, OXXLXXO, YXXXXXU, OXXXXXO, OOIOIOO], [OOOOOOO, OXXXXXO, OXPXPXO, OXXLXXO, OXPXPXO, OXXXXXO, OOOOOOO], [OOOOOOO, OXOXOXO, OOOOOOO, OXOOOXO, OOOOOOO, OXOXOXO, OOOOOOO] ]
      R: [ [XXOXX, XXOXX, XXLXX, XXXXX, XXXXX], [XXOXX, XXOXX, XXLXX, XXXXX, XXXXX], [XXXXX, XXXXX, XXLXX, XXXXX, XXXXX], [XXXXX, XXXXX, XXLXX, XXXXX, XXXXX], [XXXXX, XPXPX, XXLXX, XPXPX, XXXXX], [XOXOX, OOOOO, XOOOX, OOOOO, XOXOX] ]
      Q: [ [XXXXX, XXXXX, XXXXX, XXXXX, XXXXX], [OXXXO, XXXXX, XXXXX, XXXXX, OXXXO], [OOOOO, OXXXO, OXXXO, OXXXO, OOOOO], [OOOOO, OXXXO, OXXXO, OXXXO, OOOOO], [OPPPO, PXXXP, PXXXP, PXXXP, OPPPO], [OOOOO, OXXXO, OXXXO, OXXXO, OOOOO], [OOOOO, OOOOO, OOXOO, OOOOO, OOOOO] ]
      K: [ [XXOXX, XXOXX, XXLXX, XXXXX, XXXXX], [OXOXO, XXOXX, XXLXX, XXXXX, OXXXO], [OOOOO, OXXXO, OXLXO, OXXXO, OOOOO], [OOOOO, OXXXO, OXLXO, OXXXO, OOOOO], [OPPPO, PXOXP, PXLXP, PXXXP, OPPPO], [OOOOO, OXOXO, OXLXO, OXXXO, OOOOO], [OOOOO, OOOOO, OOPOO, OOOOO, OOOOO], [OOOOO, OOOOO, OPPPO, OOOOO, OOOOO], [OOOOO, OOOOO, OOPOO, OOOOO, OOOOO] ]
    
    
    (torches version commented out so you can test the larger set without worrying about nonsolid blocks)

    Pieces Preview (White) (open)

    the king, knight, and rook all have ladders to the top for a better vantage point :)

    2011-07-20_14.28.08.png

    2011-07-20_14.28.41.png

     
  3. Offline

    desht

    Very nice! The ladders are an especially nice touch.

    I'm thinking the best way around the rook-with-torch problem is simply to relax piece size vs. square size restriction. If the pieces are allowed to be as wide as the squares, your rook works nicely...

    Except for the fact the torches pop off the south & west sides of the rooks, due to the block drawing order. Easily fixed though, and I've pushed a change - just ensuring that shouldPlaceLast() blocks really are placed last :)

    Oh, and your knight's ladder is slightly too tall :) It juts out one square above the knight body (and pops off depending on the piece orientation).

    Hoping for a v0.3 release early next week (would push something out sooner but I won't have a huge amount of time at the computer over the next few days and would hate to push out something buggy that I'm not around to fix).
     
  4. Offline

    fatmarley

    could you add a snapshot function, so that when i modify the outside of a chessboard, i can save its layout to file.

    Or looking at how you have it setup, could a roof be optional? then i can build my own?
     
  5. Offline

    desht

    Not quite sure what you mean by snapshot, but it's certainly possible to have an open layout - if you look at the board definition file(s) in the board_styles/ folder, you can change the enclosure material to air. This affects both walls and roof, though. In this way, you can create your own enclosure around the board, although it's of course then up to you to protect that somehow (WorldGuard etc.).

    Board styling is documented on the Wiki (see link in OP). And I will be including an "Open" style in the next release which is just like the default style but with no enclosure.
     
  6. Offline

    fatmarley

    Ta...I just ended up using worldguard to remove it all anyways and then built the wall one square out.
     
  7. Offline

    Nucleonic

    Hey, Great idea for chess on minecraft but my server doesnt seem to agree with it, (or mabey its just me being rubbish lol)
    Getting this out of the server

    Code:
    [INFO] Starting minecraft server version Beta 1.7.3
    2011-07-21 16:03:43 [INFO] Loading properties
    2011-07-21 16:03:43 [INFO] Starting Minecraft server on 192.168.1.6:25565
    2011-07-21 16:03:43 [INFO] This server is running Craftbukkit version git-Bukkit-0.0.0-945-g73697a4-b1000jnks (MC: 1.7.3)
    2011-07-21 16:03:43 [SEVERE] Could not load 'plugins\Chesspresso-lib.jar' in folder 'plugins':
    java.io.FileNotFoundException: Jar does not contain plugin.yml
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:64)
        at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:207)
        at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:130)
        at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:128)
        at org.bukkit.craftbukkit.CraftServer.<init>(CraftServer.java:97)
        at net.minecraft.server.ServerConfigurationManager.<init>(ServerConfigurationManager.java:51)
        at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:132)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:335)
        at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
    2011-07-21 16:03:43 [SEVERE] Could not load 'plugins\ChessCraft.jar' in folder 'plugins':
    java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:173)
        at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:207)
        at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:130)
        at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:128)
        at org.bukkit.craftbukkit.CraftServer.<init>(CraftServer.java:97)
        at net.minecraft.server.ServerConfigurationManager.<init>(ServerConfigurationManager.java:51)
        at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:132)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:335)
        at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
    Caused by: java.lang.NoClassDefFoundError: chesspresso/move/IllegalMoveException
        at me.desht.chesscraft.ChessCraft.<init>(ChessCraft.java:54)
        ... 13 more
    Caused by: java.lang.ClassNotFoundException: chesspresso.move.IllegalMoveException
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:36)
        at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:24)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 14 more
    Think you could help?
     
  8. Offline

    jascotty2

    that library jar should be located in the 'lib' folder (next to plugins in the server folder)
     
    Nucleonic likes this.
  9. Offline

    Nucleonic

    Thanks for the quick reply!
    I knew i would have made a simple mistake lol :) keep up the great work!
     
  10. Offline

    jascotty2

    thanks :) not much of a builder, but i did think getting to the top of a castle would be nice :)

    when i loaded the set on my own test server with the pre release build, i noticed the ladders were all wrong... as it turns out, i had all of the pieces facing east
    so, i've revised the original post for the fix that takes both colors' orientations into consideration (white north & black south)
     
  11. Offline

    _Hayleigh_

    How can you end a game of a user who has started a game but not invited anyone and gone offline.

    It leaves the chest board unuseable and because the game hasent started it never gets deleted by the timeout command.
     
  12. Offline

    desht

    Automatic deletion of not-started games will be in v0.3, which isn't far away now. In the meantime, someone with chesscraft.admin privileges will need to do /chess delete <game-name>.

    New release (and it's a big one!)

    v0.3 (29th July 2011)

    • ChessCraft is now licensed under the GPLv3 due to inclusion of GPL'd third party software.
    • Chesspresso library is now shipped as part of ChessCraft. No need for a separate download any more.
    • AI player support! Using the jchecs engine. AI pseudo-players can be invited to games. Multiple AI definitions with difficulty configurable by the server admin (see AI_settings.yml). Maximum number of concurrent AI games can be limited to protect CPU resources (default: 3).
    • Economy support: iConomy, legacy iConomy and BOSeconomy all supported. Players can set a stake on game creation (before another player is invited). Game winner takes double.
    • WorldEdit support. If WorldEdit is available, terrain is automatically saved when a board is created, and restored when the board is deleted.
    • Expanded and improved the control panel. More buttons to make game management easier, buttons now "grey out" if they're not applicable to the current game state.
    • Control panel can be made of a different material from the board frame now (optional "panel" setting in board style file)
    • Last-move highlighting, with configurable styles (part of the board style). Highlight the from and to squares of the last piece movedwith configurable material (default glowstone). Styles are corners (mark square corners), edges (mark all edges of the squares), checkerd/chequered (mark squares with chequerboard pattern), line (draw line between the two squares), and none.
    • Included @jascotty2's "large" 7x7 board & piece style.
    • Players on chessboards are by default immune to all damage (falling, burning, monster attacks, pvp...), and also unable to cause any damage. Configurable - see settings in config.yml.
    • Restructured data persistence files, no longer in a single persist.yml file. Existing data from v0.2 will be seamlessly migrated, no user intervention needed. All persisted data is now under the plugins/ChessCraft/data/ directory.
    • Deprecated right-click to move pieces has been removed. Arm-wave with configurable item (default: empty hand) is now the only way.
    • Players will be automatically displaced out of the way of chess pieces that are placed on them to avoid being entombed.
    • Players can now do "/chess delete game ..." on games they created if the game is not yet started and there is no other player.
    • Player are allowed to resign even if it's not their turn.
    • Boards are now redrawn when the plugin loads to ensure they are consistent with the game data.
    • Games will now auto-delete if not started within a configurable time window (default 3 minutes).
    • Fixed item duping issues when using piece styles with items like torches, ladders, etc.
    • Significant internal code restructure and cleanup.
    • @jascotty2 is now a major contributor - significant parts of this release are thanks to him!
    The Wiki docs have not been fully updated yet, but I have updated the Getting Started page. Full updates coming very soon...

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 17, 2016
  13. Offline

    marvinbek

    1) Translation into other languages is on both "High" and "Medium" on the to-do
    2) I'll help with Danish translation if you wish
     
  14. Offline

    niugnip

    When i try to create a board with highlight, it generates an error (With the examples large and sandwood)
    Code:
    Caused by: java.lang.NoSuchMethodError: com.sk89q.util.StringUtil.getLevenshteinDistance(Ljava/lang/String;Ljava/lang/String;)I
    
            at me.desht.chesscraft.enums.HighlightStyle.getStyle(HighlightStyle.java:15)
    
            at me.desht.chesscraft.BoardView.loadStyle(BoardView.java:274)
    
            at me.desht.chesscraft.BoardView._init(BoardView.java:84)
    
            at me.desht.chesscraft.BoardView.<init>(BoardView.java:66)
    
            at me.desht.chesscraft.ChessCommandExecutor.tryCreateBoard(ChessCommandExecutor.java:799)
    
            at me.desht.chesscraft.ChessCommandExecutor.createCommands(ChessCommandExecutor.java:221)
    
            at me.desht.chesscraft.ChessCommandExecutor.onCommand(ChessCommandExecutor.java:56)
    
            at org.bukkit.command.PluginCommand.execute(PluginCommand.java:35)
    
            ... 12 more
    
     
  15. Offline

    desht

    Hmm, think I might know what's going on there - will do some tests and let you know soon.

    Ok thanks - will let you know when I've got message strings into an external file. It should just be high priority, by the way :)

    New release:

    v0.3.1 (29 July 2011):
    • Fixed (hopefully) NoSuchMethod exception that some people would see.
    • Removed a spurious "in thaw" debug statement that was appearing on the console.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 17, 2016
  16. Offline

    Joy

    In 3.1:

    Code:
    12:31:03 [SEVERE] Could not pass event ENTITY_DAMAGE to ChessCraft
    java.lang.NullPointerException
            at me.desht.chesscraft.ChessEntityListener.onEntityDamage(ChessEntityListener.java:93)
            at org.bukkit.plugin.java.JavaPluginLoader$58.execute(JavaPluginLoader.java:649)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:58)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:338)
            at net.minecraft.server.EntityArrow.m_(EntityArrow.java:183)
            at net.minecraft.server.World.entityJoinedWorld(World.java:1198)
            at net.minecraft.server.WorldServer.entityJoinedWorld(WorldServer.java:48)
            at net.minecraft.server.World.playerJoinedWorld(World.java:1180)
            at net.minecraft.server.World.cleanUp(World.java:1104)
            at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:447)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:361)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
    
     
  17. Offline

    desht

    Hmm, odd. Looking at the code, we shouldn't be getting a NPE there (it's checking the location of the mob or player that just fired an arrow at you). Seems like the getDamager() method of the event is returning a null, which I wouldn't expect. But I guess it happens...

    I'll add an extra check for null in there, which should resolve that problem.

    I presume you're not seeing that exception all the time?

    New release:

    v0.3.2 (30 Jul 2011)
    • Fixed (hopefully) NPE reported by @Joy in the entity listener

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 17, 2016
  18. Offline

    Mr.Squeak

    I see you implimented my idea to track the movement of the peices, Very flattered. :D
     
  19. Offline

    maltazar1

    Great It's looking even better that before :D i love it!
    Btw if u would like i could make Polish translate for You :)
     
  20. Offline

    Mr_H4mm3r

    Suggestion:
    Add support for essentials groupmanager
    Thanks :)
     
  21. Offline

    desht

    New release:

    v0.3.3 (1 Aug 2011)
    • Fixed a nasty bug relating to persistence - saved games were not correctly reloaded (board and game state were inconsistent)

    Doesn't EssentialsGroupBridge work?

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 17, 2016
  22. Offline

    Mr_H4mm3r

    Maybe. I will try this nice plugin :D
     
  23. Offline

    desht

    Yes please :) I'll send you some information on what needs to be done soon... (just getting the messages infrastructure finalised now).
     
  24. Offline

    Joy

    On 3.3

    Code:
    20:18:14 [SEVERE] Could not pass event PLAYER_ANIMATION to ChessCraft
    java.lang.IllegalStateException: Start block missed in BlockIterator
            at org.bukkit.util.BlockIterator.<init>(BlockIterator.java:170)
            at org.bukkit.util.BlockIterator.<init>(BlockIterator.java:257)
            at org.bukkit.util.BlockIterator.<init>(BlockIterator.java:292)
            at org.bukkit.craftbukkit.entity.CraftLivingEntity.getLineOfSight(CraftLivingEntity.java:92)
            at org.bukkit.craftbukkit.entity.CraftLivingEntity.getTargetBlock(CraftLivingEntity.java:118)
            at me.desht.chesscraft.ChessPlayerListener.onPlayerAnimation(ChessPlayerListener.java:102)
            at org.bukkit.plugin.java.JavaPluginLoader$15.execute(JavaPluginLoader.java:342)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:58)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:338)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:787)
            at net.minecraft.server.Packet18ArmAnimation.a(SourceFile:35)
            at net.minecraft.server.NetworkManager.b(NetworkManager.java:226)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:85)
            at net.minecraft.server.NetworkListenThread.a(SourceFile:105)
            at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:451)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:361)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
    20:18:14 [SEVERE] Could not pass event PLAYER_ANIMATION to ChessCraft
    java.lang.IllegalStateException: Start block missed in BlockIterator
            at org.bukkit.util.BlockIterator.<init>(BlockIterator.java:170)
            at org.bukkit.util.BlockIterator.<init>(BlockIterator.java:257)
            at org.bukkit.util.BlockIterator.<init>(BlockIterator.java:292)
            at org.bukkit.craftbukkit.entity.CraftLivingEntity.getLineOfSight(CraftLivingEntity.java:92)
            at org.bukkit.craftbukkit.entity.CraftLivingEntity.getTargetBlock(CraftLivingEntity.java:118)
            at me.desht.chesscraft.ChessPlayerListener.onPlayerAnimation(ChessPlayerListener.java:102)
            at org.bukkit.plugin.java.JavaPluginLoader$15.execute(JavaPluginLoader.java:342)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:58)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:338)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:787)
            at net.minecraft.server.Packet18ArmAnimation.a(SourceFile:35)
            at net.minecraft.server.NetworkManager.b(NetworkManager.java:226)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:85)
            at net.minecraft.server.NetworkListenThread.a(SourceFile:105)
            at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:451)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:361)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:422)
    
     
  25. Offline

    desht

    That's a bug in Bukkit, and there's nothing I can do about it.
     
  26. Offline

    nixx62

    i get an internal eraror when i try to create a board
     
  27. Offline

    desht

    I need a lot more information than that. What command did you use, exactly? And what do you see on the console?
     
  28. Offline

    Richbellemare

    I played this with a friend that likes harry potter. She said it was like wizard chess and loved it! I also like the ability to move pieces with a click rather than complex commands feels very clean!
     
    desht likes this.
  29. Offline

    Taintedfilmz

    Would you like a free video / preview made for the plugin?
     
  30. Offline

    desht

    Certainly!

    Been planning to do a video but my video making skillz suck :)
     
  31. Offline

    Joy

    We're having issues starting games:

    [22:17] <%Tombomb> not allowed to do /chess start
    [22:18] <~Joymo> well everyone has chess start node
    [22:18] <%Tombomb> cant
    [22:18] <%Tombomb> tells me to do /game start
    [22:19] <%Tombomb> but /game is for casino signs
    [22:19] <~Joymo> eh /game start isnt a Chess cmd :S
    [22:19] <%Tombomb> it tells us to do /game start

    http://i.imgur.com/I9kGi.png

    Another issue we have, is that someone can start a game and not close it, and it just stays open. Aren't they supposed to time out? That's not working for us then :/
     

Share This Page