[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

    ppp

    Here's some very basic ones - just switching materials, but they work well together.

    Working on 3+ material and different size/shape pieces and boards - had a question about piece alignment/orientation: With the Knight piece you have a 'nose' - and it flips for the other color - which color is the base for, White facing north?

    obs.yml - Pieces - Obsidian and Iron Blocks (Default Model) (open)


    # Name for this set - should match the filename
    name: obs

    # 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
    white:
    O: air
    X: iron_block

    # 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: [ [ OXO, XXX, OXO ], [ OXO, XXX, OXO ], [ OOO, OXO, OOO ] ]
    N: [ [ XXX, XXX, XXX ], [ OXO, XXX, OXO ], [ OOO, OXO, OOO ], [ OXO, OXO, OOO ], [ OOO, OXO, OOO ] ]
    B: [ [ XXX, XXX, XXX ], [ OXO, XXX, OXO ], [ OOO, OXO, OOO ], [ OXO, XXX, OXO ], [ OOO, OXO, OOO ] ]
    R: [ [ XXX, XXX, XXX ], [ XXX, XXX, XXX ], [ OXO, XXX, OXO ], [ XXX, XXX, XXX ], [ XOX, OOO, XOX ] ]
    Q: [ [ XXX, XXX, XXX ], [ OXO, XXX, OXO ], [ OXO, XXX, OXO ], [ OOO, OXO, OOO ], [ OXO, XXX, OXO ], [ OOO, OXO, OOO ] ]
    K: [ [ XXX, XXX, XXX ], [ OXO, XXX, OXO ], [ OXO, XXX, OXO ], [ OXO, XXX, OXO ], [ XXX, XXX, XXX ], [ XOX, OOO, XOX ] ]


    mudsand.yml - Pieces - Slowsand and Sandstone (Default Model) (open)

    # Name for this set - should match the filename
    name: mudsand

    # 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: '88'
    white:
    O: air
    X: sandstone

    # 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: [ [ OXO, XXX, OXO ], [ OXO, XXX, OXO ], [ OOO, OXO, OOO ] ]
    N: [ [ XXX, XXX, XXX ], [ OXO, XXX, OXO ], [ OOO, OXO, OOO ], [ OXO, OXO, OOO ], [ OOO, OXO, OOO ] ]
    B: [ [ XXX, XXX, XXX ], [ OXO, XXX, OXO ], [ OOO, OXO, OOO ], [ OXO, XXX, OXO ], [ OOO, OXO, OOO ] ]
    R: [ [ XXX, XXX, XXX ], [ XXX, XXX, XXX ], [ OXO, XXX, OXO ], [ XXX, XXX, XXX ], [ XOX, OOO, XOX ] ]
    Q: [ [ XXX, XXX, XXX ], [ OXO, XXX, OXO ], [ OXO, XXX, OXO ], [ OOO, OXO, OOO ], [ OXO, XXX, OXO ], [ OOO, OXO, OOO ] ]
    K: [ [ XXX, XXX, XXX ], [ OXO, XXX, OXO ], [ OXO, XXX, OXO ], [ OXO, XXX, OXO ], [ XXX, XXX, XXX ], [ XOX, OOO, XOX ] ]


    netherobs.yml - Board - Netherrack and Obsidian (Default Sizes) (open)

    # Chess board style definition

    # Materials can be specified as plain integer (e.g. '0' - air), material name
    # (e.g. 'sandstone'), or material plus data (e.g. '35:0' or 'wool:white')
    # If you use plain integers, they must be quoted, or the style 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

    # Overall height of the board bounding box will be <height> + 2
    # Overall width/length of the board bounding box will be <square_size> * 8 + <frame_width> * 2

    # width/length of the board squares, in blocks
    square_size: 5
    # 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: 6
    # material/data for the white squares
    white_square: '87'
    # material/data for the black squares
    black_square: '49'
    # material/data for the frame
    frame: '1'
    # 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: mudsand


    lapsnow.yml - Board - Lapis and Snow (Default Sizes) (open)

    # Chess board style definition

    # Materials can be specified as plain integer (e.g. '0' - air), material name
    # (e.g. 'sandstone'), or material plus data (e.g. '35:0' or 'wool:white')
    # If you use plain integers, they must be quoted, or the style 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

    # Overall height of the board bounding box will be <height> + 2
    # Overall width/length of the board bounding box will be <square_size> * 8 + <frame_width> * 2

    # width/length of the board squares, in blocks
    square_size: 5
    # 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: 6
    # material/data for the white squares
    white_square: '80'
    # material/data for the black squares
    black_square: '22'
    # material/data for the frame
    frame: '1'
    # 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: obs
     
    desht likes this.
  3. Offline

    jascotty2

    love the plugin idea :D

    of course, a few suggestions...
    1. check if player in center of a square a piece is being moved to. if so, move to the edge first
      • or simply disable all player damage while inside a game.. probably a better solution
    2. allow queen-side castling
    3. allow en-pessant (broken for black)
    4. signs on the outside of the playing area
      • for joining (remove join sign when game full)
    5. create sign on board for "offer draw" - a 'yes/accept' or 'no/decline'
      • (in general, using signs instead of making players remember/type commands is nicer)
    6. partial game-name matching ("/chess join 35hgp04hb-1" (just for example.. i know a few equally complex names) is alot to type
    7. terrain-saving (including containers) for restoring from when deleting a board
      • (you could use worldedit & schematics for this)
    8. chess board orientation (so not forced to face east)
    9. players joining a game have their inventories removed & saved
      • save to a file, in case of server crash.. then on player join, check if file exists -> restore & remove file
    10. allow any promotion (not just queen; allow promote to bishop, knight, rook as well)
      • maybe make a pillar with 4 signs on the square to ask what to promote to?
    thanks for this plugin! :D
    this has a 95% chance of making it on my server once i get around to working on it again :)
     
  4. Offline

    Estevo-Aleixo

    Vertical and horrizontal upside down Boards would be nice if you are reconfiguring your board gen code.
     
  5. Offline

    RoxyLuffer

    I built a Chess board with glowstone and Obsidian, and use coloured wool for the pieces :confused:
     
  6. Offline

    desht

    Thanks for the suggestions, always welcome...
    1. Yeah on the TODO list already. Probably option 1, move players out of the way if they're about to be squashed.
    2. Should be working already, are you having problems?
    3. Yeah, I had a feeling something was screwy there. Will look into a fix for it.
    4. I'll have a think about the nicest way to do that.
    5. There's already a "Offer Draw" sign in v0.2. I can add "Yes" & "No" signs too, possibly.
    6. Good idea.
    7. On the TODO list, I need to learn how to use WorldEdit's API :)
    8. Yeah... I originally started coding that, but it was getting very complex so I abandoned the idea. I might consider re-introducing it, but to be honest it's not a priority for me.
    9. Why? What would be the advantage in doing that?
    10. Already implemented via /chess promo command - adding signs for it is a good idea. I'm a bit worried about having a huge wall of signs though.
     
  7. Offline

    ppp

    Aside from people with chesscraft.admin - is there anyway of removing a game that someone created - but never ended up inviting someone? We have 3 boards, and someone created a game on each...and then left, until I was able to log on to nuke them, no one was able to play. Perhaps a 5 minute timer from start to invite (and have accepted) and then perhaps a further couple mins to start the game.
     
  8. Offline

    desht

    Yeah, good idea. I can see how that would become a problem. Will look at implementing some timeouts for that sort of situation.
     
  9. Offline

    ppp

    twist.yml - Pieces - 3x3x6 - multi-material (open)

    # Name for this set - should match the filename
    name: twist

    # 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
    Y: '57'
    Z: '41'
    G: '20'
    W: '9'
    L: '11'
    white:
    O: air
    X: iron_block
    Y: '57'
    Z: '41'
    G: '20'
    W: '9'
    L: '11'

    # 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: [ [ XOX, XXX, XOX ], [ OOO, OXO, OOO ], [ OOO, OXO, OOO ] ]
    N: [ [ XOX, OOO, XOX ], [ OOO, OXO, OXO ], [ OOO, OXO, OOO ], [ OXO, OXO, OOO ] ]
    B: [ [ OXO, XXX, XXX ], [ OXO, XXX, XXX ], [ OOO, OXO, OXO ], [ OOO, OXO, OXO ], [ OOO, OOO, OXO ] ]
    R: [ [ XOX, OXO, XOX ], [ XOX, OXO, XOX ], [ XXX, XXX, XXX ], [ XOX, OOO, XOX ] ]
    Q: [ [ XXX, XXX, XXX ], [ OOO, OXO, OOO ], [ XOX, OXO, OOO ], [ OOO, OXO, OOO ], [ OGO, GWG, OGO ], [ OOO, OYO, OOO ] ]
    K: [ [ XXX, XOX, XXX ], [ XOX, OOO, XOX ], [ XXX, XOX, XXX ], [ OOO, OXO, OOO ], [ OGO, GLG, OGO ], [ OOO, OZO, OOO ] ]
     
  10. Offline

    jascotty2

    1. thought about it for a bit, and i now think disable all damage while in a game (and standing on the board)
      .. that way, if a player "accidentally" damages their opponent, you don't have to worry about putting the respawned player on the board
    2. king-side castling works, but queen-side castling does not
    3. :)
    4. you could even put one on the inside panel (say, if there aren't walls & the player walks in)
    5. the "offer draw" could be disabled, and underneath the offered color's clock make 2 new signs for accept/reject
    6. :)
    7. :)
    8. *
    9. your selection method only allows for holding nothing. if the person has a full inventory, then they can't do anything (not to mention, they may try to bring tools/weapons/etc
    10. it wouldn't be on the main board, but on the board, at the square the piece will be placed (after the player did the promotion move)
      the idea is a 4-block high post with a sign with a piece name on each
      (of course, the command could maybe be translated to signs if the map is setup to play chess from vantage points higher up
    11. i agree with the join timeout... didn't notice it at my fist post, but then i had problems removing some test boards because they were still in staging (& i couldn't cancel them, so i just removed them from the datafile)
    if i finish what i'm working on right now, i'll fork & try to help out :)
    don't know why i never thought of this :D
     
  11. Error in latest version:

    Code:
    23:21:07 [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:93)
            at org.bukkit.craftbukkit.entity.CraftLivingEntity.getTargetBlock(CraftLivingEntity.java:119)
            at me.desht.chesscraft.ChessPlayerListener.onPlayerAnimation(ChessPlayerListener.java:99)
            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:321)
            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)
    
    Without even playing, dont think we even have a chess board yet.
     
  12. Offline

    niugnip

    <3 I had some really nice games once i installed it :D
    The features i'd like to see most are overall highscores and ingame-statistics.
    (List of recent (own) games, avg draws...)
    I'd also like to see some sort of message saying which figure has been beaten.
    iConomy support would be really nice. (maybe smth defined before match started)
     
  13. Offline

    desht

    Glad you're enjoying it!

    Iconomy support: my thought is to allow the game creator to set a stake when the game is created but before anyone is invited. The invitee will then see what the stake is before joining. Stake is charged to each player when the game starts, and the winner takes double the stake.

    Leaderboard and stats are definitely planned. Would like to get tournaments in there too but that's quite hard to test without lots of players :)
     
    niugnip likes this.
  14. Offline

    Pantheis

    Just wanted to post and say that queen side castling does indeed work, at least for Black. My friend did it in the last game we played. I have not yet tried it.
     
  15. Offline

    fryedrice945

    can you please explain to me what the bukkit lib/ folder is ? sorry, im a noob. :3
     
  16. Offline

    desht

    If your main Bukkit folder is where you have craftbukkit-0.0.1-SNAPSHOT.jar, then the lib folder should be created in that folder. You might already have that folder, if not, then create it and put Chesspresso-lib.jar in there.

    I've seen this problem before from other plugins, it sometimes gets triggered by the getTargetBlock() call (ChessCraft uses this to find which piece you're waving at). It seems to be a Bukkit problem but I don't know what causes it to occur.

    What exactly were you doing when the above exception got triggered?

    Nice! I'll include that in the next release.

    Yep, the definition in the template file has the knight's nose pointing north, which is for White. When the template is loaded, a copy is made for Black which is a 180 degree rotation around the Y axis. The knight is the only assymetrical piece in my default set, but the template loading code rotates a copy of all pieces anyway, so there's nothing to stop other sets defining assymetrical shapes for any piece (I believe your "twist" set does this already :) )

    (Right now White always faces north and Black always faces south - one day I may implement boards with other orientations but it's not a priority).

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 17, 2016
  17. I was watching the console for errors.

    But as I said, we have no chess area installed for example...just the plugin is loaded currently.
     
  18. Offline

    desht

    1. I think both approaches will be needed. Disable all damage to prevent griefing while on the board, but also move players out of the way to prevent them being entombed - if they're right in the middle of the square when a piece is placed, they could be trapped for a long time...
    2. Yeah... but how difficult is it to free up one slot? A full inventory generally means players are carrying a lot of junk (dirt/gravel etc.) I'm a bit loath to implement code which messes with people's inventories, especially when persistence needs to be done. The other problems is open boards - players positions would need to be checked every time they moved (onMoveEvent) which adds a lot of processing requirement for something I'm not convinced is truly necessary.
    3. Possibly a little tricky, given the way moves are calculated (and not something I can totally change since some of this code is in Chesspresso) - the promotion piece is specified before the move is carried out, not after. Another option might be a sign on the control panel for each player which can be cycled queen->knight->rook->bishop (although who would ever want to promote to a rook or bishop?)
    4. My thought on this is just to have a configurable timeout where newly created games get auto-deleted if they're not started (i.e. game status as shown by /chess list game is SETTING_UP). Maybe 3 minutes by default?
    And any assistance is totally welcome :)

    New release:

    v0.2.2 (18 Jul 2011)
    • Fixed a problem with en passant moves for Black
    • Fixed a problem with queen's side castling (was checking for King move to B file instead of C file - /facepalm)
    • Included twist.yml piece style by @ppp
    • When creating boards, you can now also add a '-pstyle <style>' option to override the board's default piece style. Should reduce the need to create new board definitions just to try out a different piece style.

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

    fryedrice945

    thanks so much! i finally got it to work!
     
  20. Offline

    ppp

    One of the guys on the server designed these pieces to go with this material set:

    sandwood.yml - Pieces - 3x3x6 - Sand/wood/diamond/gold (open)

    # Name for this set - should match the filename
    name: sandwood

    # 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:
    G: '41'
    O: '0'
    N: wood
    white:
    G: '57'
    O: air
    N: sandstone

    # 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: [ [ OGO, GGG, OGO ], [ OOO, ONO, OOO ] ]
    N: [ [ GOG, ONO, GOG ], [ OOO, ONO, ONO ], [ ONO, ONO, OOO ] ]
    B: [ [ GGG, GGG, GGG ], [ ONO, NNN, ONO ], [ OOO, ONO, ONO ], [ OOO, OOO, ONO ] ]
    R: [ [ GGG, GGG, GGG ], [ ONO, NNN, ONO ], [ NNN, ONO, NNN ], [ NON, OOO, NON ] ]
    Q: [ [ GGG, GGG, GGG ], [ ONO, NNN, ONO ], [ NON, ONO, NON ], [ NON, ONO, NON ], [ ONO, NNN, ONO ], [ OOO, OGO, OOO ] ]
    K: [ [ GGG, GGG, GGG ], [ ONO, NNN, ONO ], [ OOO, ONO, OOO ], [ ONO, NNN, ONO ], [ GOG, OOO, GOG ], [ OOO, OGO, OOO ] ]

    woodsand - Board - default size - Wood/Sandstone/Obsidian (open)

    # Chess board style definition

    # Materials can be specified as plain integer (e.g. '0' - air), material name
    # (e.g. 'sandstone'), or material plus data (e.g. '35:0' or 'wool:white')
    # If you use plain integers, they must be quoted, or the style 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

    # Overall height of the board bounding box will be <height> + 2
    # Overall width/length of the board bounding box will be <square_size> * 8 + <frame_width> * 2

    # width/length of the board squares, in blocks
    square_size: 5
    # 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: 6
    # material/data for the white squares
    white_square: sandstone
    # material/data for the black squares
    black_square: wood
    # material/data for the frame
    frame: '49'
    # 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: sandwood
     
    desht likes this.
  21. Offline

    Pantheis

    Could I make a request for people posting alternate board and chess piece styles? Could you include a screenshot of the new board style (empty) and a screenshot of the board (default or otherwise) with all of the new styled pieces in their starting positions? It's hard to judge if I want to bother adding a board / piece configuration based on the config file description alone. :)
     
  22. Offline

    Mr.Squeak

    Maybe a lil suggestion, don't know how pheasable it is. But I've noticed that if you are not paying a lot of attention and you don't know how to decipher the movement code it is difficult to keep track of movement of peices on the board. I suggest a configurable or maybe even toggle-able, like a switch or something, glowstone line that shows the last move. It could consist of a single line of glowstone that travels down the patch that the peice took, i.e. if you move a knight then there will be a single block wide glowstone "L" that shows that the knight moved. Or you could possible light up the two squares that make up the difference. i.e. you light up the square where the peice started and light up the square where the peice ended, maybe have the four corners light up for the origin and the border light up for the destination. Just a stupid suggestion, but i thought i'd post it anyways :D
     
  23. Offline

    desht

    Nice idea, probably quite difficult to implement well. But I'll have a think about it :)
     
  24. Still error on latest:

    Code:
    15:46:27 [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:99)
            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:332)
            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)
    
    Again, no one is playing, we have no chess board installed yet...
     
  25. Offline

    desht

    As I said, I don't believe this is a problem with ChessCraft. And I still need to know what you were doing to trigger the exception. I haven't been able to reproduce it at all.
     
  26. Offline

    EvilofCredo

    AWESOME THE BESZ BUKKIT PLUGIN I'VE EVER SEEN
     
    desht likes this.
  27. What do you mean I am doing...we have 100 players online, I can hardly know what everyone is doing, I aint even online, just see the error in console...
     
  28. Offline

    desht

    OK. Well, there isn't a lot I can do without any means of reproducing the problem. The plugin code will make a call to player.getTargetBlock() if anyone left-clicks while empty-handed (assuming you haven't changed "wand_item" in the config). That call has been known to throw that exception in the past (do a search for "Start block missed in BlockIterator" on the forums), but I've never seen an explanation or cause for that.

    Sorry I can't be of more help. I will keep an eye out for the exception on my own servers (dev server with just me, and a small private "production" server), though.

    I should also ask, how frequently are you seeing the exception?
     
  29. Very rarely, like once per day, but I am used to reporting any plugin exception, as even rare ones start getting annoying if you run as many plugins as we do :p

    And I enjoy bugfree plugins, of course ;)
     
  30. Offline

    jascotty2

    another suggestion...
    on the board definition, you allow larger squares, so it would stand to reason that you should be able to make a larger set to go on a larger board ;)

    i designed a set of pieces to go onto squares 7x7, but the plugin says the pieces are too large to fit on the board
    (another note: i have torches on the side of the rook, so my definition for it is 7x7, although it would still fit with room to walk... just something else to maybe look for when expanding the size checking methods)
     
  31. Offline

    desht

    Ah good, someone's gotten around to making a bigger set :) I started but got sidetracked (although I plan to have a basic "piece designer" built into the next release to make it easier to create piece definitions)

    The plugin does expect the piece footprint to be at least 1 square smaller than the square size, and yeah, I don't account for "passable" blocks like torches at the moment. But that's a good idea - I'll see what I can do. Any chance you could send me a copy of your set so I can test with it?
     

Share This Page