Crossfire JXClient, Trunk  R20561
AbstractCrossfireServerConnection.java
Go to the documentation of this file.
1 /*
2  * This file is part of JXClient, the Fullscreen Java Crossfire Client.
3  *
4  * JXClient is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * JXClient is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with JXClient; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17  *
18  * Copyright (C) 2005-2008 Yann Chachkoff.
19  * Copyright (C) 2006-2011 Andreas Kirschbaum.
20  */
21 
22 package com.realtime.crossfire.jxclient.server.crossfire;
23 
27 import java.nio.ByteBuffer;
28 import java.nio.charset.Charset;
29 import java.util.Iterator;
30 import org.jetbrains.annotations.NotNull;
31 
38 
43  @NotNull
44  protected static final Charset UTF8 = Charset.forName("UTF-8");
45 
49  @NotNull
50  private final Model model;
51 
56  @NotNull
58 
63  @NotNull
65 
70  @NotNull
72 
77  @NotNull
79 
84  @NotNull
86 
90  @NotNull
92 
97  @NotNull
99 
104  @NotNull
106 
110  @NotNull
112 
117  @NotNull
119 
123  @NotNull
125 
130  @NotNull
132 
137  @NotNull
139 
144  @NotNull
146 
151  protected AbstractCrossfireServerConnection(@NotNull final Model model) {
152  this.model = model;
153  }
154 
158  @Override
159  public void addCrossfireDrawinfoListener(@NotNull final CrossfireDrawinfoListener listener) {
160  drawinfoListeners.add(listener);
161  }
162 
166  @Override
167  public void removeCrossfireDrawinfoListener(@NotNull final CrossfireDrawinfoListener listener) {
168  drawinfoListeners.remove(listener);
169  }
170 
174  @Override
175  public void addCrossfireDrawextinfoListener(@NotNull final CrossfireDrawextinfoListener listener) {
176  drawextinfoListeners.add(listener);
177  }
178 
182  @Override
184  drawextinfoListeners.remove(listener);
185  }
186 
190  @Override
191  public void addCrossfireQueryListener(@NotNull final CrossfireQueryListener listener) {
192  queryListeners.add(listener);
193  }
194 
198  @Override
199  public void removeCrossfireQueryListener(@NotNull final CrossfireQueryListener listener) {
200  queryListeners.remove(listener);
201  }
202 
206  @Override
207  public void addCrossfireMagicmapListener(@NotNull final CrossfireMagicmapListener listener) {
208  magicmapListeners.add(listener);
209  }
210 
214  @Override
215  public void removeCrossfireMagicmapListener(@NotNull final CrossfireMagicmapListener listener) {
216  magicmapListeners.remove(listener);
217  }
218 
222  @Override
223  public void addCrossfireUpdateItemListener(@NotNull final CrossfireUpdateItemListener crossfireUpdateItemListener) {
224  crossfireUpdateItemListeners.add(crossfireUpdateItemListener);
225  }
226 
230  @Override
231  public void removeCrossfireUpdateItemListener(@NotNull final CrossfireUpdateItemListener crossfireUpdateItemListener) {
232  crossfireUpdateItemListeners.remove(crossfireUpdateItemListener);
233  }
234 
238  @Override
239  public void addCrossfireTickListener(@NotNull final CrossfireTickListener listener) {
240  crossfireTickListeners.add(listener);
241  }
242 
246  @Override
247  public void addCrossfireSoundListener(@NotNull final CrossfireSoundListener listener) {
248  crossfireSoundListeners.add(listener);
249  }
250 
254  @Override
255  public void addCrossfireMusicListener(@NotNull final CrossfireMusicListener listener) {
256  crossfireMusicListeners.add(listener);
257  }
258 
262  @Override
263  public void addCrossfireComcListener(@NotNull final CrossfireComcListener listener) {
264  crossfireComcListeners.add(listener);
265  }
266 
270  @Override
271  public void addPacketWatcherListener(@NotNull final ReceivedPacketListener listener) {
272  receivedPacketListeners.add(listener);
273  }
274 
278  @Override
279  public void addCrossfireAccountListener(@NotNull final CrossfireAccountListener listener) {
280  crossfireAccountListeners.add(listener);
281  }
282 
286  @Override
287  public void removeCrossfireAccountListener(@NotNull final CrossfireAccountListener listener) {
288  crossfireAccountListeners.remove(listener);
289  }
290 
294  @Override
295  public void removePacketWatcherListener(@NotNull final ReceivedPacketListener listener) {
296  receivedPacketListeners.remove(listener);
297  }
298 
302  @Override
303  public void addSentReplyListener(@NotNull final SentReplyListener listener) {
304  sentReplyListeners.add(listener);
305  }
306 
310  @Override
311  public void removeSentReplyListener(@NotNull final SentReplyListener listener) {
312  sentReplyListeners.remove(listener);
313  }
314 
318  @Override
319  public void addCrossfirePickupListener(@NotNull final CrossfirePickupListener listener) {
320  crossfirePickupListeners.add(listener);
321  }
322 
326  @Override
327  public void removeCrossfirePickupListener(@NotNull final CrossfirePickupListener listener) {
328  crossfirePickupListeners.remove(listener);
329  }
330 
334  @Override
335  public void addCrossfireFailureListener(@NotNull final CrossfireFailureListener listener) {
336  crossfireFailureListeners.add(listener);
337  }
338 
342  @Override
343  public void removeCrossfireFailureListener(@NotNull final CrossfireFailureListener listener) {
344  crossfireFailureListeners.remove(listener);
345  }
346 
347  protected void fireManageAccount() {
348  for (final CrossfireAccountListener crossfireAccountListener : crossfireAccountListeners) {
349  crossfireAccountListener.manageAccount();
350  }
351  }
352 
353  protected void fireStartAccountList(@NotNull final String accountName) {
354  for (final CrossfireAccountListener crossfireAccountListener : crossfireAccountListeners) {
355  crossfireAccountListener.startAccountList(accountName);
356  }
357  }
358 
359  protected void fireAddAccount(@NotNull final CharacterInformation characterInformation) {
360  for (final CrossfireAccountListener crossfireAccountListener : crossfireAccountListeners) {
361  crossfireAccountListener.addAccount(characterInformation);
362  }
363  }
364 
365  protected void fireEndAccountList(final int count) {
366  for (final CrossfireAccountListener crossfireAccountListener : crossfireAccountListeners) {
367  crossfireAccountListener.endAccountList(count);
368  }
369  }
370 
371  protected void fireStartPlaying() {
372  for (final CrossfireAccountListener crossfireAccountListener : crossfireAccountListeners) {
373  crossfireAccountListener.startPlaying();
374  }
375  }
376 
377  protected void fireCommandComcReceived(final int packetNo, final int time) {
378  for (final CrossfireComcListener listener : crossfireComcListeners) {
379  listener.commandComcReceived(packetNo, time);
380  }
381  }
382 
383  protected void fireDelinvReceived(final int tag) {
384  model.getItemsManager().delinvReceived(tag);
385  for (final CrossfireUpdateItemListener crossfireUpdateItemListener : crossfireUpdateItemListeners) {
386  crossfireUpdateItemListener.delinvReceived(tag);
387  }
388  }
389 
390  protected void fireDelitemReceived(@NotNull final int[] tags) {
391  model.getItemsManager().delitemReceived(tags);
392  for (final CrossfireUpdateItemListener crossfireUpdateItemListener : crossfireUpdateItemListeners) {
393  crossfireUpdateItemListener.delitemReceived(tags);
394  }
395  }
396 
397  protected void fireFaceReceived(final int faceNum, final int faceSetNum, final int faceChecksum, @NotNull final String faceName) {
398  model.getFaceCache().addFace(faceNum, faceSetNum, faceChecksum, faceName);
399  }
400 
401  protected void fireFailure(@NotNull final String command, @NotNull final String arguments) {
402  for (final CrossfireFailureListener crossfireFailureListener : crossfireFailureListeners) {
403  crossfireFailureListener.failure(command, arguments);
404  }
405  }
406 
411  protected void clearFailure() {
412  for (final CrossfireFailureListener crossfireFailureListener : crossfireFailureListeners) {
413  crossfireFailureListener.clearFailure();
414  }
415  }
416 
417  protected void fireAddItemReceived(final int location, final int tag, final int flags, final int weight, final int faceNum, final String name, final String namePl, final int anim, final int animSpeed, final int nrof, final int type) {
418  model.getItemsManager().addItemReceived(location, tag, flags, weight, faceNum, name, namePl, anim, animSpeed, nrof, type);
419  for (final CrossfireUpdateItemListener crossfireUpdateItemListener : crossfireUpdateItemListeners) {
420  crossfireUpdateItemListener.addItemReceived(location, tag, flags, weight, faceNum, name, namePl, anim, animSpeed, nrof, type);
421  }
422  }
423 
424  protected void fireMagicMap() {
425  for (final CrossfireMagicmapListener listener : magicmapListeners) {
426  listener.commandMagicmapReceived();
427  }
428  }
429 
430  protected void fireMusicReceived(@NotNull final String music) {
431  for (final CrossfireMusicListener listener : crossfireMusicListeners) {
432  listener.commandMusicReceived(music);
433  }
434  }
435 
436  protected void firePickupChanged(final int pickupOptions) {
437  for (final CrossfirePickupListener crossfirePickupListener : crossfirePickupListeners) {
438  crossfirePickupListener.pickupChanged(pickupOptions);
439  }
440  }
441 
442  protected void firePlayerReceived(final int tag, final int weight, final int faceNum, @NotNull final String name) {
443  model.getItemsManager().playerReceived(tag, weight, faceNum, name);
444  for (final CrossfireUpdateItemListener crossfireUpdateItemListener : crossfireUpdateItemListeners) {
445  crossfireUpdateItemListener.playerReceived(tag, weight, faceNum, name);
446  }
447  }
448 
449  protected void fireCommandQueryReceived(@NotNull final String prompt, final int queryType) {
450  for (final CrossfireQueryListener listener : queryListeners) {
451  listener.commandQueryReceived(prompt, queryType);
452  }
453  }
454 
455  protected void fireCommandSoundReceived(final int x, final int y, final int num, final int type) {
456  for (final CrossfireSoundListener listener : crossfireSoundListeners) {
457  listener.commandSoundReceived(x, y, num, type);
458  }
459  }
460 
461  protected void fireCommandSound2Received(final int x, final int y, final int dir, final int volume, final int type, @NotNull final String action, @NotNull final String name) {
462  for (final CrossfireSoundListener listener : crossfireSoundListeners) {
463  listener.commandSound2Received(x, y, dir, volume, type, action, name);
464  }
465  }
466 
467  protected void fireTick(final int tickNo) {
468  for (final CrossfireTickListener listener : crossfireTickListeners) {
469  listener.tick(tickNo);
470  }
471  }
472 
473  protected void fireUpditemReceived(final int flags, final int tag, final int valLocation, final int valFlags, final int valWeight, final int valFaceNum, @NotNull final String valName, @NotNull final String valNamePl, final int valAnim, final int valAnimSpeed, final int valNrof) {
474  model.getItemsManager().upditemReceived(flags, tag, valLocation, valFlags, valWeight, valFaceNum, valName, valNamePl, valAnim, valAnimSpeed, valNrof);
475  for (final CrossfireUpdateItemListener crossfireUpdateItemListener : crossfireUpdateItemListeners) {
476  crossfireUpdateItemListener.upditemReceived(flags, tag, valLocation, valFlags, valWeight, valFaceNum, valName, valNamePl, valAnim, valAnimSpeed, valNrof);
477  }
478  }
479 
483  @Override
484  public void drawInfo(@NotNull final String message, final int color) {
485  for (final CrossfireDrawinfoListener listener : drawinfoListeners) {
486  listener.commandDrawinfoReceived(message, color);
487  }
488  }
489 
493  @Override
494  public void drawextinfo(final int color, final int type, final int subtype, final String message) {
495  for (final CrossfireDrawextinfoListener listener : drawextinfoListeners) {
496  listener.commandDrawextinfoReceived(color, type, subtype, message);
497  }
498  }
499 
503  @Override
504  public void drawInfoSetDebugMode(final boolean printMessageTypes) {
505  for (final CrossfireDrawextinfoListener listener : drawextinfoListeners) {
506  listener.setDebugMode(printMessageTypes);
507  }
508  }
509 
510  protected void fireReplySent() {
511  for (final SentReplyListener sentReplyListener : sentReplyListeners) {
512  sentReplyListener.replySent();
513  }
514  }
515 
521  protected void notifyPacketWatcherListenersEmpty(@NotNull final String command) {
522  for (final ReceivedPacketListener receivedPacketListener : receivedPacketListeners) {
523  receivedPacketListener.processEmpty(command);
524  }
525  }
526 
534  protected void notifyPacketWatcherListenersAscii(@NotNull final ByteBuffer packet, final int args) {
535  final Iterator<ReceivedPacketListener> listeners = receivedPacketListeners.iterator();
536  if (listeners.hasNext()) {
537  final String command = extractCommand(packet);
538  if (packet.hasRemaining()) { // XXX: should check payload, not whole command?
539  while (listeners.hasNext()) {
540  final ReceivedPacketListener receivedPacketListener = listeners.next();
541  packet.position(args);
542  receivedPacketListener.processAscii(command, packet);
543  }
544  } else {
546  }
547  }
548  }
549 
557  protected void notifyPacketWatcherListenersShortArray(@NotNull final ByteBuffer packet, final int args) {
558  final Iterator<ReceivedPacketListener> listeners = receivedPacketListeners.iterator();
559  if (listeners.hasNext()) {
560  final String command = extractCommand(packet);
561  if (packet.hasRemaining()) { // XXX: should check payload, not whole command?
562  while (listeners.hasNext()) {
563  final ReceivedPacketListener receivedPacketListener = listeners.next();
564  packet.position(args);
565  receivedPacketListener.processShortArray(command, packet);
566  }
567  } else {
569  }
570  }
571  }
572 
580  protected void notifyPacketWatcherListenersIntArray(@NotNull final ByteBuffer packet, final int args) {
581  final Iterator<ReceivedPacketListener> listeners = receivedPacketListeners.iterator();
582  if (listeners.hasNext()) {
583  final String command = extractCommand(packet);
584  if (packet.hasRemaining()) { // XXX: should check payload, not whole command?
585  while (listeners.hasNext()) {
586  final ReceivedPacketListener receivedPacketListener = listeners.next();
587  packet.position(args);
588  receivedPacketListener.processIntArray(command, packet);
589  }
590  } else {
592  }
593  }
594  }
595 
603  protected void notifyPacketWatcherListenersShortInt(@NotNull final ByteBuffer packet, final int args) {
604  final Iterator<ReceivedPacketListener> listeners = receivedPacketListeners.iterator();
605  if (listeners.hasNext()) {
606  final String command = extractCommand(packet);
607  if (packet.hasRemaining()) { // XXX: should check payload, not whole command?
608  while (listeners.hasNext()) {
609  final ReceivedPacketListener receivedPacketListener = listeners.next();
610  packet.position(args);
611  receivedPacketListener.processShortInt(command, packet);
612  }
613  } else {
615  }
616  }
617  }
618 
626  protected void notifyPacketWatcherListenersMixed(@NotNull final ByteBuffer packet, final int args) {
627  final Iterator<ReceivedPacketListener> listeners = receivedPacketListeners.iterator();
628  if (listeners.hasNext()) {
629  final String command = extractCommand(packet);
630  if (packet.hasRemaining()) { // XXX: should check payload, not whole command?
631  while (listeners.hasNext()) {
632  final ReceivedPacketListener receivedPacketListener = listeners.next();
633  packet.position(args);
634  receivedPacketListener.processMixed(command, packet);
635  }
636  } else {
638  }
639  }
640  }
641 
649  protected void notifyPacketWatcherListenersStats(final int stat, @NotNull final Object... args) {
650  for (final ReceivedPacketListener receivedPacketListener : receivedPacketListeners) {
651  receivedPacketListener.processStats("stats", stat, args);
652  }
653  }
654 
662  protected void notifyPacketWatcherListenersNoData(@NotNull final ByteBuffer packet, final int args) {
663  final Iterator<ReceivedPacketListener> listeners = receivedPacketListeners.iterator();
664  if (listeners.hasNext()) {
665  final String command = extractCommand(packet);
666  if (packet.hasRemaining()) { // XXX: should check payload, not whole command?
667  while (listeners.hasNext()) {
668  final ReceivedPacketListener receivedPacketListener = listeners.next();
669  packet.position(args);
670  receivedPacketListener.processNoData(command, packet);
671  }
672  } else {
674  }
675  }
676  }
677 
683  protected static String extractCommand(@NotNull final ByteBuffer packet) {
684  int cmdLen;
685  for (cmdLen = 0; cmdLen < packet.limit(); cmdLen++) {
686  final byte ch = packet.get(cmdLen);
687  if ((ch&0xFF) <= 0x20 || (ch&0xFF) >= 0x80) {
688  break;
689  }
690  }
691  return newString(packet, 0, cmdLen);
692  }
693 
701  protected static String newString(final ByteBuffer byteBuffer, final int start, final int len) {
702  final byte[] tmp = new byte[len];
703  for (int i = 0; i < len; i++) {
704  tmp[i] = byteBuffer.get(start+i);
705  }
706  return new String(tmp, UTF8);
707  }
708 
709  protected void fireSelectCharacter(@NotNull final String accountName, @NotNull final String characterName) {
713  for (final CrossfireAccountListener crossfireAccountListener : crossfireAccountListeners) {
714  crossfireAccountListener.selectCharacter(accountName, characterName);
715  }
716  }
717 
718 }
final EventListenerList2< CrossfireDrawextinfoListener > drawextinfoListeners
The CrossfireDrawextinfoListeners to be notified.
void addCrossfireMagicmapListener(@NotNull final CrossfireMagicmapListener listener)
Adds a listener from the list of objects listening to magicmap messages.the listener to add ...
void processIntArray(@NotNull String command, @NotNull ByteBuffer packet)
A packet having an array of int parameters has been received.
void fireUpditemReceived(final int flags, final int tag, final int valLocation, final int valFlags, final int valWeight, final int valFaceNum, @NotNull final String valName, @NotNull final String valNamePl, final int valAnim, final int valAnimSpeed, final int valNrof)
Abstract base class for CrossfireServerConnection implementing classes.
void removeCrossfireDrawextinfoListener(@NotNull final CrossfireDrawextinfoListener listener)
Removes the given listener from the list of objects listening to the drawextinfo S->C messages...
void addCrossfireSoundListener(@NotNull final CrossfireSoundListener listener)
Adds a listener to be notified about received sound commands.the listener to add
void processShortArray(@NotNull String command, @NotNull ByteBuffer packet)
A packet having an array of short integer parameters has been received.
void addCrossfireTickListener(@NotNull final CrossfireTickListener listener)
Adds a listener to be notified about tick changes.the listener to add
final EventListenerList2< CrossfireSoundListener > crossfireSoundListeners
The CrossfireSoundListeners to be notified.
void addCrossfireComcListener(@NotNull final CrossfireComcListener listener)
Adds a listener to be notified about received comc commands.the listener to add
final EventListenerList2< ReceivedPacketListener > receivedPacketListeners
The ReceivedPacketListeners to be notified.
void addCrossfireFailureListener(@NotNull final CrossfireFailureListener listener)
Adds a listener to be notified of failure messages.the listener to add
void addPacketWatcherListener(@NotNull final ReceivedPacketListener listener)
Adds a listener to be notified about received packets.the listener to add
void removeCrossfireDrawinfoListener(@NotNull final CrossfireDrawinfoListener listener)
Removes the given listener from the list of objects listening to the drawinfo S->C messages...
void removeCrossfireAccountListener(@NotNull final CrossfireAccountListener listener)
Removes a listener to be notified about account events.the listener to remove
static final Charset UTF8
The Charset used for parsing or encoding strings received from or sent to the Crossfire server...
final EventListenerList2< CrossfireMusicListener > crossfireMusicListeners
The CrossfireMusicListeners to be notified.
Interface for listeners interested in drawinfo messages received from the Crossfire server...
void notifyPacketWatcherListenersShortInt(@NotNull final ByteBuffer packet, final int args)
Notifies all ReceivedPacketListeners about a packet having a short and an in value as parameters...
void selectCharacter()
An character name was sent to the server.
void addCrossfireDrawinfoListener(@NotNull final CrossfireDrawinfoListener listener)
Adds a new listener monitoring the drawinfo S->C messages.the listener to remove
void drawextinfo(final int color, final int type, final int subtype, final String message)
Pretends that a drawextinfo message has been received.the message type the message subtype the messag...
void upditemReceived(final int flags, final int tag, final int valLocation, final int valFlags, final int valWeight, final int valFaceNum, @NotNull final String valName, @NotNull final String valNamePl, final int valAnim, final int valAnimSpeed, final int valNrof)
An "upditem" command has been received.
Interface for listeners interested in "sound" commands.
void clearFailure()
Inform the various failure listeners that they can clean the last displayed failure.
Interface for listeners interested in "tick" commands.
void notifyPacketWatcherListenersMixed(@NotNull final ByteBuffer packet, final int args)
Notifies all ReceivedPacketListeners about a packet having mixed parameters.
final EventListenerList2< CrossfireMagicmapListener > magicmapListeners
The CrossfireMagicmapListeners to be notified of received magicmap commands.
void processMixed(@NotNull String command, @NotNull ByteBuffer packet)
A packet having mixed parameters has been received.
void addFace(@NotNull final Face face)
Adds a new face to the cache.
Definition: FaceCache.java:50
final EventListenerList2< CrossfireTickListener > crossfireTickListeners
The CrossfireTickListeners to be notified.
void addCrossfirePickupListener(@NotNull final CrossfirePickupListener listener)
Adds a listener to be notified about received "pickup" messages.the listener to add ...
void delitemReceived(@NotNull final int[] tags)
A "delitem" command has been received.
void addCrossfireDrawextinfoListener(@NotNull final CrossfireDrawextinfoListener listener)
Adds a new listener monitoring the drawextinfo S->C messages.the listener to remove ...
void processShortInt(@NotNull String command, @NotNull ByteBuffer packet)
A packet having a short and an int parameter has been received.
final EventListenerList2< CrossfireFailureListener > crossfireFailureListeners
The CrossfireFailureListeners to be notified.
void removePacketWatcherListener(@NotNull final ReceivedPacketListener listener)
Removes a listener to be notified about received packets.the listener to add
void processAscii(@NotNull String command, @NotNull ByteBuffer packet)
A packet having ascii parameters has been received.
Listener for classes interested in sent "reply" commands.
final EventListenerList2< CrossfireAccountListener > crossfireAccountListeners
The CrossfireAccountListeners to be notified.
void addSentReplyListener(@NotNull final SentReplyListener listener)
Adds a listener to be notified about sent reply packets.the listener to add
static String extractCommand(@NotNull final ByteBuffer packet)
Returns the command string for a received packet.
Combines all model classes that are updated.
Definition: Model.java:44
final EventListenerList2< CrossfireQueryListener > queryListeners
The CrossfireQueryListeners to be notified.
final EventListenerList2< CrossfireDrawinfoListener > drawinfoListeners
The CrossfireDrawinfoListeners to be notified.
void notifyPacketWatcherListenersShortArray(@NotNull final ByteBuffer packet, final int args)
Notifies all ReceivedPacketListeners about a packet having an array of short values as parameters...
Interface for listeners interested in "music" commands.
Interface for listeners interested in the "failure" messages received from the Crossfire server...
final EventListenerList2< CrossfireUpdateItemListener > crossfireUpdateItemListeners
The CrossfireUpdateItemListeners to be notified.
Interface for listeners interested in "pickup" messages.
void selectCharacter()
A character name was sent to the server.
void notifyPacketWatcherListenersNoData(@NotNull final ByteBuffer packet, final int args)
Notifies all ReceivedPacketListeners about a packet having unknown parameters.
void removeCrossfirePickupListener(@NotNull final CrossfirePickupListener listener)
Removes a listener to be notified about received "pickup" messages.the listener to remove ...
final EventListenerList2< SentReplyListener > sentReplyListeners
The SentReplyListeners to be notified.
void removeCrossfireUpdateItemListener(@NotNull final CrossfireUpdateItemListener crossfireUpdateItemListener)
Removes a listener to be notified about item changes.the listener to remove
Interface for listeners interested in received packets.
void add(@NotNull final T listener)
Adds a listener.
Interface for listeners interested in magicmap messages received from the Crossfire server...
void fireCommandSound2Received(final int x, final int y, final int dir, final int volume, final int type, @NotNull final String action, @NotNull final String name)
void notifyPacketWatcherListenersEmpty(@NotNull final String command)
Notifies all ReceivedPacketListeners about an empty packet.
void addCrossfireAccountListener(@NotNull final CrossfireAccountListener listener)
Adds a listener to be notified about account events.the listener to add
Interface for listeners interested in account information related messages received from the Crossfir...
void fireFaceReceived(final int faceNum, final int faceSetNum, final int faceChecksum, @NotNull final String faceName)
void notifyPacketWatcherListenersIntArray(@NotNull final ByteBuffer packet, final int args)
Notifies all ReceivedPacketListeners about a packet having an array of int values as parameters...
void fireFailure(@NotNull final String command, @NotNull final String arguments)
void removeSentReplyListener(@NotNull final SentReplyListener listener)
Removes a listener to be notified about sent reply packets.the listener to add
Interface for listeners interested in drawextinfo messages received from the Crossfire server...
void removeCrossfireQueryListener(@NotNull final CrossfireQueryListener listener)
Removes the given listener from the list of objects listening to the query S->C messages.the listener to remove
void addCrossfireQueryListener(@NotNull final CrossfireQueryListener listener)
Adds a new listener monitoring the query S->C messages.the listener to remove
void fireAddItemReceived(final int location, final int tag, final int flags, final int weight, final int faceNum, final String name, final String namePl, final int anim, final int animSpeed, final int nrof, final int type)
void firePlayerReceived(final int tag, final int weight, final int faceNum, @NotNull final String name)
static String newString(final ByteBuffer byteBuffer, final int start, final int len)
Extracts a string from a ByteBuffer range.
void fireSelectCharacter(@NotNull final String accountName, @NotNull final String characterName)
void addItemReceived(final int location, final int tag, final int flags, final int weight, final int faceNum, @NotNull final String name, @NotNull final String namePl, final int anim, final int animSpeed, final int nrof, final int type)
An "additem" has been received.
void addCrossfireMusicListener(@NotNull final CrossfireMusicListener listener)
Adds a listener to be notified about received music commands.the listener to add
Adds encoding/decoding of crossfire protocol packets to a ServerConnection.
void notifyPacketWatcherListenersStats(final int stat, @NotNull final Object... args)
Notifies all ReceivedPacketListeners about a packet having stat parameters.
Interface for listeners interested in comc commands received from the server.
void notifyPacketWatcherListenersAscii(@NotNull final ByteBuffer packet, final int args)
Notifies all ReceivedPacketListeners about a packet having ascii parameters.
void delinvReceived(final int tag)
A "delinv" command has been received.
void drawInfoSetDebugMode(final boolean printMessageTypes)
Enables or disables printing of message types.whether to enable or disable message types ...
void playerReceived(final int tag, final int weight, final int faceNum, @NotNull final String name)
A "player" command has been received.
Interface for listeners interested in query messages received from the Crossfire server.
final EventListenerList2< CrossfireComcListener > crossfireComcListeners
The CrossfireComcListeners to be notified.
void selectCharacter()
A character name was sent to the server.
void processNoData(@NotNull String command, @NotNull ByteBuffer packet)
A packet having unknown parameters has been received.
void remove(@NotNull final T listener)
Removes a listener.
void removeCrossfireFailureListener(@NotNull final CrossfireFailureListener listener)
Removes a listener to be notified of failure messages.the listener to remove
void removeCrossfireMagicmapListener(@NotNull final CrossfireMagicmapListener listener)
Removes a listener from the list of objects listening to magicmap messages.the listener to remove ...
void addCrossfireUpdateItemListener(@NotNull final CrossfireUpdateItemListener crossfireUpdateItemListener)
Adds a listener to be notified about item changes.the listener to add
void drawInfo(@NotNull final String message, final int color)
Pretends that a drawinfo message has been received.the message the color
final EventListenerList2< CrossfirePickupListener > crossfirePickupListeners
The CrossfirePickupListeners to be notified.