View Javadoc

1   package cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages;
2    		
3    		// --- IMPORTS FROM /messages/settings/javasettings/javaimport BEGIN
4   			import java.util.*;import javax.vecmath.*;import cz.cuni.amis.pogamut.base.communication.messages.*;import cz.cuni.amis.pogamut.base.communication.worldview.*;import cz.cuni.amis.pogamut.base.communication.worldview.event.*;import cz.cuni.amis.pogamut.base.communication.worldview.object.*;import cz.cuni.amis.pogamut.multi.communication.worldview.object.*;import cz.cuni.amis.pogamut.base.communication.translator.event.*;import cz.cuni.amis.pogamut.multi.communication.translator.event.*;import cz.cuni.amis.pogamut.base3d.worldview.object.*;import cz.cuni.amis.pogamut.base3d.worldview.object.event.*;import cz.cuni.amis.pogamut.ut2004.communication.messages.*;import cz.cuni.amis.pogamut.ut2004.communication.worldview.objects.*;import cz.cuni.amis.pogamut.ut2004multi.communication.worldview.objects.*;import cz.cuni.amis.pogamut.ut2004.communication.translator.itemdescriptor.*;import cz.cuni.amis.pogamut.ut2004.communication.messages.ItemType.Category;import cz.cuni.amis.pogamut.unreal.communication.messages.UnrealId;import cz.cuni.amis.utils.exception.*;import cz.cuni.amis.pogamut.base.communication.translator.event.IWorldObjectUpdateResult.Result;import cz.cuni.amis.utils.SafeEquals;import cz.cuni.amis.pogamut.base.agent.*;import cz.cuni.amis.pogamut.multi.agent.*;import cz.cuni.amis.pogamut.multi.communication.worldview.property.*;import cz.cuni.amis.pogamut.ut2004multi.communication.worldview.property.*;import cz.cuni.amis.utils.token.*;import cz.cuni.amis.utils.*;
5   		// --- IMPORTS FROM /messages/settings/javasettings/javaimport END
6   		
7   		
8   		// --- IMPORTS FROM extra/code/java/javapart/classcategory[@name='all'] BEGIN
9   				
10  		// --- IMPORTS FROM extra/code/java/javapart/classcategory[@name='all'] END
11  		
12  		// --- IMPORTS FROM extra/code/java/javapart/classcategory[@name=static]+classtype[@name=impl] BEGIN
13  		
14  		// --- IMPORTS FROM extra/code/java/javapart/classcategory[@name=static]+classtype[@name=impl] END
15      
16   		/**
17           *  
18              				Implementation of the static part of the GameBots2004 message NAV.  
19              			
20           *
21           *  <p></p><p></p>
22           *  Complete message documentation:               
23           *  
24  		Synchronous message - however only NavPoints marking item pickup locations are exported synchronously. Other NavPoints are not exported synchronously at all, even if the bot can actually see them (but note that ALL NavPoints are exported in the handshake between bot and the server). Exporting NavPoints synchronously took a lot of UT server resources with limited information gain (in Pogamut there is now available visibility matrix holding static information which points can be seen from other points). NavPoint carries information about UT navigation point - location, paths and some additional information are stored there (if it is an ambush point, or sniper point, etc.).
25  	
26           */
27   	public class NavPointStaticImpl 
28    						extends
29    						NavPointStatic
30  	    {
31   	
32      	
33      	
34      	/**
35      	 * Parameter-less contructor for the message.
36      	 */
37  		public NavPointStaticImpl()
38  		{
39  		}
40  	
41      	
42      	
43      	
44      	/**
45  		 * Creates new instance of the message NavPoint.
46  		 * 
47  		Synchronous message - however only NavPoints marking item pickup locations are exported synchronously. Other NavPoints are not exported synchronously at all, even if the bot can actually see them (but note that ALL NavPoints are exported in the handshake between bot and the server). Exporting NavPoints synchronously took a lot of UT server resources with limited information gain (in Pogamut there is now available visibility matrix holding static information which points can be seen from other points). NavPoint carries information about UT navigation point - location, paths and some additional information are stored there (if it is an ambush point, or sniper point, etc.).
48  	
49  		 * Corresponding GameBots message
50  		 *   (static part)
51  		 *   is
52  		 *   NAV.
53  		 * 
54   	  	 * 
55  		 *   
56  		 *     @param Id 
57  			A unique Id of this navigation point assigned by the game.
58  		
59  		 *   
60  		 * 
61  		 *   
62  		 * 
63  		 *   
64  		 * 
65  		 *   
66  		 * 
67  		 *   
68  		 *     @param Item 
69  			Unique Id of the respawned item (the item respawns at this
70  			point). Not sent if point is not an inventory spot. Sent only in HandShake.
71  		
72  		 *   
73  		 * 
74  		 *   
75  		 *     @param ItemClass 
76              Class of the item (e.g. xWeapons.FlakCannonPickup). Not sent if point is not an inventory spot. Sent only in HandShake.
77          
78  		 *   
79  		 * 
80  		 *   
81  		 * 
82  		 *   
83  		 * 
84  		 *   
85  		 *     @param Mover 
86              If this NavPoint is marking some mover, the mover id will be here. Not sent if point is not a Door, a LiftCenter or a LiftExit. Sent only in HandShake.
87          
88  		 *   
89  		 * 
90  		 *   
91  		 *     @param LiftOffset 
92              Starting vector between MyLift location and LiftCenter location. Not sent if point is not a LiftCenter. Sent only in HandShake.
93          
94  		 *   
95  		 * 
96  		 *   
97  		 *     @param LiftJumpExit 
98              Boolean. If we can/should exit the lift by a jump when near the destination place. Not sent if point is not a LiftExit. Sent only in HandShake.
99          
100 		 *   
101 		 * 
102 		 *   
103 		 *     @param NoDoubleJump 
104             Boolean. If we should or not use double jump when exiting lift with a jump. Not sent if point is not a LiftExit. Sent only in HandShake.
105         
106 		 *   
107 		 * 
108 		 *   
109 		 *     @param InvSpot 
110 			If this is an inventory spot (item is respawned at this point).
111 		
112 		 *   
113 		 * 
114 		 *   
115 		 *     @param PlayerStart 
116 			If this is a player start (players and/or bots are respawned at this point).
117 		
118 		 *   
119 		 * 
120 		 *   
121 		 *     @param TeamNumber 
122 			Will be sent if this is a player start. In Team games (team deathmatch, capture the flag, domination) holds information about which team respawns at this player start spot. In non-team games will return 0!
123 		
124 		 *   
125 		 * 
126 		 *   
127 		 *     @param DomPoint If this point marks a DominationPoint (for BotDoubleDomination game).
128 		 *   
129 		 * 
130 		 *   
131 		 *     @param DomPointController Exported if this NavPoint is a DominationPoint (for BotDoubleDomination game) - which team controls this point.
132 		 *   
133 		 * 
134 		 *   
135 		 *     @param Door 
136 			If this point marks a door mover.
137 		
138 		 *   
139 		 * 
140 		 *   
141 		 *     @param LiftCenter 
142 			If this point marks a lift center (used to mark center of a lift mover, note that this point will be always moved with the lift).
143 		
144 		 *   
145 		 * 
146 		 *   
147 		 *     @param LiftExit 
148 			If this point marks a lift exit (used to mark exit point of a lift mover).
149 		
150 		 *   
151 		 * 
152 		 *   
153 		 *     @param AIMarker 
154 			If this point is an AI marker - marks an interesting spot in the environment. May be ambush point or sniping spot, etc.
155 		
156 		 *   
157 		 * 
158 		 *   
159 		 *     @param JumpSpot 
160 			If this point marks a jump spot (a special device that causes the bot to jump high or far).
161 		
162 		 *   
163 		 * 
164 		 *   
165 		 *     @param JumpPad 
166 			If this point marks a jump pad (a special device that causes the bot to jump high or far).
167 		
168 		 *   
169 		 * 
170 		 *   
171 		 *     @param JumpDest 
172 			If this point marks a jump destination - some place that can be reached by some special jump.
173 		
174 		 *   
175 		 * 
176 		 *   
177 		 *     @param Teleporter 
178 			If this point marks a teleport. 
179 		
180 		 *   
181 		 * 
182 		 *   
183 		 *     @param Rotation 
184 			If the type is AIMarker. The rotation the bot should be
185 			facing, when doing the action specified by AIMarker. Sent only in HandShake.
186 		
187 		 *   
188 		 * 
189 		 *   
190 		 *     @param RoamingSpot 
191 			Some ambush point, where is good chance to intercept
192 			approaching opponents. Sent only in HandShake.
193 		
194 		 *   
195 		 * 
196 		 *   
197 		 *     @param SnipingSpot Point good for sniping. Sent only in HandShake.
198 		 *   
199 		 * 
200 		 *   
201 		 *     @param ItemInstance If item should be present at this navpoint it's instance will be here.
202 		 *   
203 		 * 
204 		 *   
205 		 *     @param OutgoingEdges Maps edge-LEADING_TO-navpoint-UnrealId to neighbour link, those are outgoing edges (those edges that originates in this navpoint going to another one, those you may usually travel).
206 		 *   
207 		 * 
208 		 *   
209 		 *     @param IncomingEdges Maps edge-ORIGINATES_FROM-navpoint-UnrealId to neighbour link, those are incoming edges (those edges that originates in different navpoint and ends here, do not use this to ask whether you can get to navpoint of specific unreal id, use OutgoingEdges instead).
210 		 *   
211 		 * 
212 		 *   
213 		 *     @param PreferedWeapon 
214 			Class of the weapon that should be prefered when using this
215 			point for AIMarker specified action. Sent only in HandShake.
216 		
217 		 *   
218 		 * 
219 		 */
220 		public NavPointStaticImpl(
221 			UnrealId Id,  UnrealId Item,  ItemType ItemClass,  UnrealId Mover,  Vector3d LiftOffset,  boolean LiftJumpExit,  boolean NoDoubleJump,  boolean InvSpot,  boolean PlayerStart,  int TeamNumber,  boolean DomPoint,  int DomPointController,  boolean Door,  boolean LiftCenter,  boolean LiftExit,  boolean AIMarker,  boolean JumpSpot,  boolean JumpPad,  boolean JumpDest,  boolean Teleporter,  Rotation Rotation,  boolean RoamingSpot,  boolean SnipingSpot,  Item ItemInstance,  Map<UnrealId, NavPointNeighbourLink> OutgoingEdges,  Map<UnrealId, NavPointNeighbourLink> IncomingEdges,  String PreferedWeapon
222 		) {
223 			
224 					this.Id = Id;
225 				
226 					this.Item = Item;
227 				
228 					this.ItemClass = ItemClass;
229 				
230 					this.Mover = Mover;
231 				
232 					this.LiftOffset = LiftOffset;
233 				
234 					this.LiftJumpExit = LiftJumpExit;
235 				
236 					this.NoDoubleJump = NoDoubleJump;
237 				
238 					this.InvSpot = InvSpot;
239 				
240 					this.PlayerStart = PlayerStart;
241 				
242 					this.TeamNumber = TeamNumber;
243 				
244 					this.DomPoint = DomPoint;
245 				
246 					this.DomPointController = DomPointController;
247 				
248 					this.Door = Door;
249 				
250 					this.LiftCenter = LiftCenter;
251 				
252 					this.LiftExit = LiftExit;
253 				
254 					this.AIMarker = AIMarker;
255 				
256 					this.JumpSpot = JumpSpot;
257 				
258 					this.JumpPad = JumpPad;
259 				
260 					this.JumpDest = JumpDest;
261 				
262 					this.Teleporter = Teleporter;
263 				
264 					this.Rotation = Rotation;
265 				
266 					this.RoamingSpot = RoamingSpot;
267 				
268 					this.SnipingSpot = SnipingSpot;
269 				
270 					this.ItemInstance = ItemInstance;
271 				
272 					this.OutgoingEdges = OutgoingEdges;
273 				
274 					this.IncomingEdges = IncomingEdges;
275 				
276 					this.PreferedWeapon = PreferedWeapon;
277 				
278 		}
279     
280     	/**
281 		 * Cloning constructor from the full message.
282 		 *
283 		 * @param original
284 		 */
285 		public NavPointStaticImpl(NavPoint original) {		
286 			
287 					this.Id = original.getId()
288  	;
289 				
290 					this.Item = original.getItem()
291  	;
292 				
293 					this.ItemClass = original.getItemClass()
294  	;
295 				
296 					this.Mover = original.getMover()
297  	;
298 				
299 					this.LiftOffset = original.getLiftOffset()
300  	;
301 				
302 					this.LiftJumpExit = original.isLiftJumpExit()
303  	;
304 				
305 					this.NoDoubleJump = original.isNoDoubleJump()
306  	;
307 				
308 					this.InvSpot = original.isInvSpot()
309  	;
310 				
311 					this.PlayerStart = original.isPlayerStart()
312  	;
313 				
314 					this.TeamNumber = original.getTeamNumber()
315  	;
316 				
317 					this.DomPoint = original.isDomPoint()
318  	;
319 				
320 					this.DomPointController = original.getDomPointController()
321  	;
322 				
323 					this.Door = original.isDoor()
324  	;
325 				
326 					this.LiftCenter = original.isLiftCenter()
327  	;
328 				
329 					this.LiftExit = original.isLiftExit()
330  	;
331 				
332 					this.AIMarker = original.isAIMarker()
333  	;
334 				
335 					this.JumpSpot = original.isJumpSpot()
336  	;
337 				
338 					this.JumpPad = original.isJumpPad()
339  	;
340 				
341 					this.JumpDest = original.isJumpDest()
342  	;
343 				
344 					this.Teleporter = original.isTeleporter()
345  	;
346 				
347 					this.Rotation = original.getRotation()
348  	;
349 				
350 					this.RoamingSpot = original.isRoamingSpot()
351  	;
352 				
353 					this.SnipingSpot = original.isSnipingSpot()
354  	;
355 				
356 					this.ItemInstance = original.getItemInstance()
357  	;
358 				
359 					this.OutgoingEdges = original.getOutgoingEdges()
360  	;
361 				
362 					this.IncomingEdges = original.getIncomingEdges()
363  	;
364 				
365 					this.PreferedWeapon = original.getPreferedWeapon()
366  	;
367 				
368 			this.SimTime = original.getSimTime();			
369 		}
370 		
371 		/**
372 		 * Cloning constructor from the full message.
373 		 *
374 		 * @param original
375 		 */
376 		public NavPointStaticImpl(NavPointStaticImpl original) {		
377 			
378 					this.Id = original.getId()
379  	;
380 				
381 					this.Item = original.getItem()
382  	;
383 				
384 					this.ItemClass = original.getItemClass()
385  	;
386 				
387 					this.Mover = original.getMover()
388  	;
389 				
390 					this.LiftOffset = original.getLiftOffset()
391  	;
392 				
393 					this.LiftJumpExit = original.isLiftJumpExit()
394  	;
395 				
396 					this.NoDoubleJump = original.isNoDoubleJump()
397  	;
398 				
399 					this.InvSpot = original.isInvSpot()
400  	;
401 				
402 					this.PlayerStart = original.isPlayerStart()
403  	;
404 				
405 					this.TeamNumber = original.getTeamNumber()
406  	;
407 				
408 					this.DomPoint = original.isDomPoint()
409  	;
410 				
411 					this.DomPointController = original.getDomPointController()
412  	;
413 				
414 					this.Door = original.isDoor()
415  	;
416 				
417 					this.LiftCenter = original.isLiftCenter()
418  	;
419 				
420 					this.LiftExit = original.isLiftExit()
421  	;
422 				
423 					this.AIMarker = original.isAIMarker()
424  	;
425 				
426 					this.JumpSpot = original.isJumpSpot()
427  	;
428 				
429 					this.JumpPad = original.isJumpPad()
430  	;
431 				
432 					this.JumpDest = original.isJumpDest()
433  	;
434 				
435 					this.Teleporter = original.isTeleporter()
436  	;
437 				
438 					this.Rotation = original.getRotation()
439  	;
440 				
441 					this.RoamingSpot = original.isRoamingSpot()
442  	;
443 				
444 					this.SnipingSpot = original.isSnipingSpot()
445  	;
446 				
447 					this.ItemInstance = original.getItemInstance()
448  	;
449 				
450 					this.OutgoingEdges = original.getOutgoingEdges()
451  	;
452 				
453 					this.IncomingEdges = original.getIncomingEdges()
454  	;
455 				
456 					this.PreferedWeapon = original.getPreferedWeapon()
457  	;
458 				
459 			this.SimTime = original.getSimTime();
460 		}
461 		
462 			/**
463 			 * Cloning constructor from the message part.
464 			 *
465 			 * @param original
466 			 */
467 			public NavPointStaticImpl(NavPointStatic original) {
468 				
469 						this.Id = original.getId()
470  	;
471 					
472 						this.Item = original.getItem()
473  	;
474 					
475 						this.ItemClass = original.getItemClass()
476  	;
477 					
478 						this.Mover = original.getMover()
479  	;
480 					
481 						this.LiftOffset = original.getLiftOffset()
482  	;
483 					
484 						this.LiftJumpExit = original.isLiftJumpExit()
485  	;
486 					
487 						this.NoDoubleJump = original.isNoDoubleJump()
488  	;
489 					
490 						this.InvSpot = original.isInvSpot()
491  	;
492 					
493 						this.PlayerStart = original.isPlayerStart()
494  	;
495 					
496 						this.TeamNumber = original.getTeamNumber()
497  	;
498 					
499 						this.DomPoint = original.isDomPoint()
500  	;
501 					
502 						this.DomPointController = original.getDomPointController()
503  	;
504 					
505 						this.Door = original.isDoor()
506  	;
507 					
508 						this.LiftCenter = original.isLiftCenter()
509  	;
510 					
511 						this.LiftExit = original.isLiftExit()
512  	;
513 					
514 						this.AIMarker = original.isAIMarker()
515  	;
516 					
517 						this.JumpSpot = original.isJumpSpot()
518  	;
519 					
520 						this.JumpPad = original.isJumpPad()
521  	;
522 					
523 						this.JumpDest = original.isJumpDest()
524  	;
525 					
526 						this.Teleporter = original.isTeleporter()
527  	;
528 					
529 						this.Rotation = original.getRotation()
530  	;
531 					
532 						this.RoamingSpot = original.isRoamingSpot()
533  	;
534 					
535 						this.SnipingSpot = original.isSnipingSpot()
536  	;
537 					
538 						this.ItemInstance = original.getItemInstance()
539  	;
540 					
541 						this.OutgoingEdges = original.getOutgoingEdges()
542  	;
543 					
544 						this.IncomingEdges = original.getIncomingEdges()
545  	;
546 					
547 						this.PreferedWeapon = original.getPreferedWeapon()
548  	;
549 					
550 			}
551 		
552    				
553    				@Override
554    				public void setSimTime(long SimTime) {
555 					super.setSimTime(SimTime);
556 				}
557    			
558 	    				@Override
559 	    				public 
560 	    				NavPointStaticImpl clone() {
561 	    					return new 
562 	    					NavPointStaticImpl(this);
563 	    				}
564 	    				
565 	    				
566     	
567 	    /**
568          * 
569 			A unique Id of this navigation point assigned by the game.
570 		 
571          */
572         protected
573          UnrealId Id =
574        	null;
575 	
576  		/**
577          * 
578 			A unique Id of this navigation point assigned by the game.
579 		 
580          */
581         public  UnrealId getId()
582  	 {
583 				    					return Id;
584 				    				}
585 				    			
586     	
587 	    /**
588          * 
589 			Unique Id of the respawned item (the item respawns at this
590 			point). Not sent if point is not an inventory spot. Sent only in HandShake.
591 		 
592          */
593         protected
594          UnrealId Item =
595        	null;
596 	
597  		/**
598          * 
599 			Unique Id of the respawned item (the item respawns at this
600 			point). Not sent if point is not an inventory spot. Sent only in HandShake.
601 		 
602          */
603         public  UnrealId getItem()
604  	 {
605 				    					return Item;
606 				    				}
607 				    			
608     	
609 	    /**
610          * 
611             Class of the item (e.g. xWeapons.FlakCannonPickup). Not sent if point is not an inventory spot. Sent only in HandShake.
612          
613          */
614         protected
615          ItemType ItemClass =
616        	null;
617 	
618  		/**
619          * 
620             Class of the item (e.g. xWeapons.FlakCannonPickup). Not sent if point is not an inventory spot. Sent only in HandShake.
621          
622          */
623         public  ItemType getItemClass()
624  	 {
625 				    					return ItemClass;
626 				    				}
627 				    			
628     	
629 	    /**
630          * 
631             If this NavPoint is marking some mover, the mover id will be here. Not sent if point is not a Door, a LiftCenter or a LiftExit. Sent only in HandShake.
632          
633          */
634         protected
635          UnrealId Mover =
636        	null;
637 	
638  		/**
639          * 
640             If this NavPoint is marking some mover, the mover id will be here. Not sent if point is not a Door, a LiftCenter or a LiftExit. Sent only in HandShake.
641          
642          */
643         public  UnrealId getMover()
644  	 {
645 				    					return Mover;
646 				    				}
647 				    			
648     	
649 	    /**
650          * 
651             Starting vector between MyLift location and LiftCenter location. Not sent if point is not a LiftCenter. Sent only in HandShake.
652          
653          */
654         protected
655          Vector3d LiftOffset =
656        	null;
657 	
658  		/**
659          * 
660             Starting vector between MyLift location and LiftCenter location. Not sent if point is not a LiftCenter. Sent only in HandShake.
661          
662          */
663         public  Vector3d getLiftOffset()
664  	 {
665 				    					return LiftOffset;
666 				    				}
667 				    			
668     	
669 	    /**
670          * 
671             Boolean. If we can/should exit the lift by a jump when near the destination place. Not sent if point is not a LiftExit. Sent only in HandShake.
672          
673          */
674         protected
675          boolean LiftJumpExit =
676        	false;
677 	
678  		/**
679          * 
680             Boolean. If we can/should exit the lift by a jump when near the destination place. Not sent if point is not a LiftExit. Sent only in HandShake.
681          
682          */
683         public  boolean isLiftJumpExit()
684  	 {
685 				    					return LiftJumpExit;
686 				    				}
687 				    			
688     	
689 	    /**
690          * 
691             Boolean. If we should or not use double jump when exiting lift with a jump. Not sent if point is not a LiftExit. Sent only in HandShake.
692          
693          */
694         protected
695          boolean NoDoubleJump =
696        	false;
697 	
698  		/**
699          * 
700             Boolean. If we should or not use double jump when exiting lift with a jump. Not sent if point is not a LiftExit. Sent only in HandShake.
701          
702          */
703         public  boolean isNoDoubleJump()
704  	 {
705 				    					return NoDoubleJump;
706 				    				}
707 				    			
708     	
709 	    /**
710          * 
711 			If this is an inventory spot (item is respawned at this point).
712 		 
713          */
714         protected
715          boolean InvSpot =
716        	false;
717 	
718  		/**
719          * 
720 			If this is an inventory spot (item is respawned at this point).
721 		 
722          */
723         public  boolean isInvSpot()
724  	 {
725 				    					return InvSpot;
726 				    				}
727 				    			
728     	
729 	    /**
730          * 
731 			If this is a player start (players and/or bots are respawned at this point).
732 		 
733          */
734         protected
735          boolean PlayerStart =
736        	false;
737 	
738  		/**
739          * 
740 			If this is a player start (players and/or bots are respawned at this point).
741 		 
742          */
743         public  boolean isPlayerStart()
744  	 {
745 				    					return PlayerStart;
746 				    				}
747 				    			
748     	
749 	    /**
750          * 
751 			Will be sent if this is a player start. In Team games (team deathmatch, capture the flag, domination) holds information about which team respawns at this player start spot. In non-team games will return 0!
752 		 
753          */
754         protected
755          int TeamNumber =
756        	0;
757 	
758  		/**
759          * 
760 			Will be sent if this is a player start. In Team games (team deathmatch, capture the flag, domination) holds information about which team respawns at this player start spot. In non-team games will return 0!
761 		 
762          */
763         public  int getTeamNumber()
764  	 {
765 				    					return TeamNumber;
766 				    				}
767 				    			
768     	
769 	    /**
770          * If this point marks a DominationPoint (for BotDoubleDomination game). 
771          */
772         protected
773          boolean DomPoint =
774        	false;
775 	
776  		/**
777          * If this point marks a DominationPoint (for BotDoubleDomination game). 
778          */
779         public  boolean isDomPoint()
780  	 {
781 				    					return DomPoint;
782 				    				}
783 				    			
784     	
785 	    /**
786          * Exported if this NavPoint is a DominationPoint (for BotDoubleDomination game) - which team controls this point. 
787          */
788         protected
789          int DomPointController =
790        	0;
791 	
792  		/**
793          * Exported if this NavPoint is a DominationPoint (for BotDoubleDomination game) - which team controls this point. 
794          */
795         public  int getDomPointController()
796  	 {
797 				    					return DomPointController;
798 				    				}
799 				    			
800     	
801 	    /**
802          * 
803 			If this point marks a door mover.
804 		 
805          */
806         protected
807          boolean Door =
808        	false;
809 	
810  		/**
811          * 
812 			If this point marks a door mover.
813 		 
814          */
815         public  boolean isDoor()
816  	 {
817 				    					return Door;
818 				    				}
819 				    			
820     	
821 	    /**
822          * 
823 			If this point marks a lift center (used to mark center of a lift mover, note that this point will be always moved with the lift).
824 		 
825          */
826         protected
827          boolean LiftCenter =
828        	false;
829 	
830  		/**
831          * 
832 			If this point marks a lift center (used to mark center of a lift mover, note that this point will be always moved with the lift).
833 		 
834          */
835         public  boolean isLiftCenter()
836  	 {
837 				    					return LiftCenter;
838 				    				}
839 				    			
840     	
841 	    /**
842          * 
843 			If this point marks a lift exit (used to mark exit point of a lift mover).
844 		 
845          */
846         protected
847          boolean LiftExit =
848        	false;
849 	
850  		/**
851          * 
852 			If this point marks a lift exit (used to mark exit point of a lift mover).
853 		 
854          */
855         public  boolean isLiftExit()
856  	 {
857 				    					return LiftExit;
858 				    				}
859 				    			
860     	
861 	    /**
862          * 
863 			If this point is an AI marker - marks an interesting spot in the environment. May be ambush point or sniping spot, etc.
864 		 
865          */
866         protected
867          boolean AIMarker =
868        	false;
869 	
870  		/**
871          * 
872 			If this point is an AI marker - marks an interesting spot in the environment. May be ambush point or sniping spot, etc.
873 		 
874          */
875         public  boolean isAIMarker()
876  	 {
877 				    					return AIMarker;
878 				    				}
879 				    			
880     	
881 	    /**
882          * 
883 			If this point marks a jump spot (a special device that causes the bot to jump high or far).
884 		 
885          */
886         protected
887          boolean JumpSpot =
888        	false;
889 	
890  		/**
891          * 
892 			If this point marks a jump spot (a special device that causes the bot to jump high or far).
893 		 
894          */
895         public  boolean isJumpSpot()
896  	 {
897 				    					return JumpSpot;
898 				    				}
899 				    			
900     	
901 	    /**
902          * 
903 			If this point marks a jump pad (a special device that causes the bot to jump high or far).
904 		 
905          */
906         protected
907          boolean JumpPad =
908        	false;
909 	
910  		/**
911          * 
912 			If this point marks a jump pad (a special device that causes the bot to jump high or far).
913 		 
914          */
915         public  boolean isJumpPad()
916  	 {
917 				    					return JumpPad;
918 				    				}
919 				    			
920     	
921 	    /**
922          * 
923 			If this point marks a jump destination - some place that can be reached by some special jump.
924 		 
925          */
926         protected
927          boolean JumpDest =
928        	false;
929 	
930  		/**
931          * 
932 			If this point marks a jump destination - some place that can be reached by some special jump.
933 		 
934          */
935         public  boolean isJumpDest()
936  	 {
937 				    					return JumpDest;
938 				    				}
939 				    			
940     	
941 	    /**
942          * 
943 			If this point marks a teleport. 
944 		 
945          */
946         protected
947          boolean Teleporter =
948        	false;
949 	
950  		/**
951          * 
952 			If this point marks a teleport. 
953 		 
954          */
955         public  boolean isTeleporter()
956  	 {
957 				    					return Teleporter;
958 				    				}
959 				    			
960     	
961 	    /**
962          * 
963 			If the type is AIMarker. The rotation the bot should be
964 			facing, when doing the action specified by AIMarker. Sent only in HandShake.
965 		 
966          */
967         protected
968          Rotation Rotation =
969        	null;
970 	
971  		/**
972          * 
973 			If the type is AIMarker. The rotation the bot should be
974 			facing, when doing the action specified by AIMarker. Sent only in HandShake.
975 		 
976          */
977         public  Rotation getRotation()
978  	 {
979 				    					return Rotation;
980 				    				}
981 				    			
982     	
983 	    /**
984          * 
985 			Some ambush point, where is good chance to intercept
986 			approaching opponents. Sent only in HandShake.
987 		 
988          */
989         protected
990          boolean RoamingSpot =
991        	false;
992 	
993  		/**
994          * 
995 			Some ambush point, where is good chance to intercept
996 			approaching opponents. Sent only in HandShake.
997 		 
998          */
999         public  boolean isRoamingSpot()
1000  	 {
1001 				    					return RoamingSpot;
1002 				    				}
1003 				    			
1004     	
1005 	    /**
1006          * Point good for sniping. Sent only in HandShake. 
1007          */
1008         protected
1009          boolean SnipingSpot =
1010        	false;
1011 	
1012  		/**
1013          * Point good for sniping. Sent only in HandShake. 
1014          */
1015         public  boolean isSnipingSpot()
1016  	 {
1017 				    					return SnipingSpot;
1018 				    				}
1019 				    			
1020     	
1021 	    /**
1022          * If item should be present at this navpoint it's instance will be here. 
1023          */
1024         protected
1025          Item ItemInstance =
1026        	null;
1027 	
1028  		/**
1029          * If item should be present at this navpoint it's instance will be here. 
1030          */
1031         public  Item getItemInstance()
1032  	 {
1033 				    					return ItemInstance;
1034 				    				}
1035 				    			
1036     	
1037 	    /**
1038          * Maps edge-LEADING_TO-navpoint-UnrealId to neighbour link, those are outgoing edges (those edges that originates in this navpoint going to another one, those you may usually travel). 
1039          */
1040         protected
1041          Map<UnrealId, NavPointNeighbourLink> OutgoingEdges =
1042        	new HashMap<UnrealId, NavPointNeighbourLink>();
1043 	
1044  		/**
1045          * Maps edge-LEADING_TO-navpoint-UnrealId to neighbour link, those are outgoing edges (those edges that originates in this navpoint going to another one, those you may usually travel). 
1046          */
1047         public  Map<UnrealId, NavPointNeighbourLink> getOutgoingEdges()
1048  	 {
1049 				    					return OutgoingEdges;
1050 				    				}
1051 				    			
1052     	
1053 	    /**
1054          * Maps edge-ORIGINATES_FROM-navpoint-UnrealId to neighbour link, those are incoming edges (those edges that originates in different navpoint and ends here, do not use this to ask whether you can get to navpoint of specific unreal id, use OutgoingEdges instead). 
1055          */
1056         protected
1057          Map<UnrealId, NavPointNeighbourLink> IncomingEdges =
1058        	new HashMap<UnrealId, NavPointNeighbourLink>();
1059 	
1060  		/**
1061          * Maps edge-ORIGINATES_FROM-navpoint-UnrealId to neighbour link, those are incoming edges (those edges that originates in different navpoint and ends here, do not use this to ask whether you can get to navpoint of specific unreal id, use OutgoingEdges instead). 
1062          */
1063         public  Map<UnrealId, NavPointNeighbourLink> getIncomingEdges()
1064  	 {
1065 				    					return IncomingEdges;
1066 				    				}
1067 				    			
1068     	
1069 	    /**
1070          * 
1071 			Class of the weapon that should be prefered when using this
1072 			point for AIMarker specified action. Sent only in HandShake.
1073 		 
1074          */
1075         protected
1076          String PreferedWeapon =
1077        	null;
1078 	
1079  		/**
1080          * 
1081 			Class of the weapon that should be prefered when using this
1082 			point for AIMarker specified action. Sent only in HandShake.
1083 		 
1084          */
1085         public  String getPreferedWeapon()
1086  	 {
1087 				    					return PreferedWeapon;
1088 				    				}
1089 				    			
1090     	
1091     	
1092     	public static class NavPointStaticUpdate
1093      implements IStaticWorldObjectUpdatedEvent
1094 		{
1095 			
1096 			private NavPointStatic data;
1097 			private long time;
1098 			
1099 			public NavPointStaticUpdate
1100     (NavPointStatic source, long time)
1101 			{
1102 				this.data = source;
1103 				this.time = time;
1104 			}
1105 			
1106 			/**
1107 			 * Simulation time in MILLI SECONDS !!!
1108 			 */
1109 			@Override
1110 			public long getSimTime() {
1111 				return time;
1112 			}
1113 	
1114 			@Override
1115 			public WorldObjectId getId() {
1116 				return data.getId();
1117 			}
1118 			
1119 			@Override
1120 			public IWorldObjectUpdateResult<IStaticWorldObject> update(
1121 					IStaticWorldObject object) {
1122 				if ( object == null)
1123 				{
1124 					data = new NavPointStaticImpl(data);
1125 					return new IWorldObjectUpdateResult.WorldObjectUpdateResult<IStaticWorldObject>(IWorldObjectUpdateResult.Result.CREATED, data);
1126 				}
1127 				//since static objects can't be updated, we'll just check that the object stays the same
1128 				if ( object instanceof NavPointStaticImpl)
1129 				{
1130 					NavPointStaticImpl orig = (NavPointStaticImpl)object;
1131 					//since these errors usually mean error in gamebots, we will just print an error message
1132 					if ( data.isDifferentFrom(orig) )
1133 					{
1134 						//data.isDifferentFrom(orig);
1135 						//throw new PogamutException("Trying to modify static object " + this.data.getId().toString() , this);
1136 						System.out.println("!!!!!ERROR!!!!!! in static object modification. Object class : NavPointStaticImpl to see which property was different see !!!!PROPERTY UPDATE ERROR!!!!");
1137 					}
1138 					return new IWorldObjectUpdateResult.WorldObjectUpdateResult<IStaticWorldObject>(IWorldObjectUpdateResult.Result.SAME, data);
1139 				}				
1140 				throw new PogamutException("Unexpected object type for update, NavPointStaticImpl expected not class " + object.getClass().getSimpleName() + ".", this);
1141 			}
1142 		}
1143 	
1144     
1145  		
1146  		@Override
1147  		public boolean isDifferentFrom(IStaticWorldObject other)
1148  		{
1149  			if (other == null) //early fail
1150  			{
1151  				return true;
1152  			}
1153  			else if (other == this) //early out
1154  			{
1155  				return false;
1156  			}
1157  			else
1158  			{
1159  				NavPointStatic obj = (NavPointStatic) other;
1160 
1161  				
1162  						if ( !(
1163  	 			AdvancedEquals.equalsOrNull(this.getId()
1164  	, obj.getId()
1165  	)
1166  	 		) )
1167 						{
1168 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property Id on object class NavPointStatic");
1169 							return true;
1170 						}
1171  					
1172  						if ( !(
1173  	 			AdvancedEquals.equalsOrNull(this.getItem()
1174  	, obj.getItem()
1175  	)
1176  	 		) )
1177 						{
1178 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property Item on object class NavPointStatic");
1179 							return true;
1180 						}
1181  					
1182  						if ( !(
1183  	 			AdvancedEquals.equalsOrNull(this.getItemClass()
1184  	, obj.getItemClass()
1185  	)
1186  	 		) )
1187 						{
1188 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property ItemClass on object class NavPointStatic");
1189 							return true;
1190 						}
1191  					
1192  						if ( !(
1193  	 			AdvancedEquals.equalsOrNull(this.getMover()
1194  	, obj.getMover()
1195  	)
1196  	 		) )
1197 						{
1198 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property Mover on object class NavPointStatic");
1199 							return true;
1200 						}
1201  					
1202  						if ( !(
1203  	 			AdvancedEquals.equalsOrNull(this.getLiftOffset()
1204  	, obj.getLiftOffset()
1205  	)
1206  	 		) )
1207 						{
1208 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property LiftOffset on object class NavPointStatic");
1209 							return true;
1210 						}
1211  					
1212  						if ( !(this.isLiftJumpExit()
1213  	
1214  	 			== obj.isLiftJumpExit()
1215  	) )
1216 						{
1217 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property LiftJumpExit on object class NavPointStatic");
1218 							return true;
1219 						}
1220  					
1221  						if ( !(this.isNoDoubleJump()
1222  	
1223  	 			== obj.isNoDoubleJump()
1224  	) )
1225 						{
1226 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property NoDoubleJump on object class NavPointStatic");
1227 							return true;
1228 						}
1229  					
1230  						if ( !(this.isInvSpot()
1231  	
1232  	 			== obj.isInvSpot()
1233  	) )
1234 						{
1235 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property InvSpot on object class NavPointStatic");
1236 							return true;
1237 						}
1238  					
1239  						if ( !(this.isPlayerStart()
1240  	
1241  	 			== obj.isPlayerStart()
1242  	) )
1243 						{
1244 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property PlayerStart on object class NavPointStatic");
1245 							return true;
1246 						}
1247  					
1248  						if ( !(this.getTeamNumber()
1249  	
1250  	 			== obj.getTeamNumber()
1251  	) )
1252 						{
1253 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property TeamNumber on object class NavPointStatic");
1254 							return true;
1255 						}
1256  					
1257  						if ( !(this.isDomPoint()
1258  	
1259  	 			== obj.isDomPoint()
1260  	) )
1261 						{
1262 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property DomPoint on object class NavPointStatic");
1263 							return true;
1264 						}
1265  					
1266  						if ( !(this.getDomPointController()
1267  	
1268  	 			== obj.getDomPointController()
1269  	) )
1270 						{
1271 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property DomPointController on object class NavPointStatic");
1272 							return true;
1273 						}
1274  					
1275  						if ( !(this.isDoor()
1276  	
1277  	 			== obj.isDoor()
1278  	) )
1279 						{
1280 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property Door on object class NavPointStatic");
1281 							return true;
1282 						}
1283  					
1284  						if ( !(this.isLiftCenter()
1285  	
1286  	 			== obj.isLiftCenter()
1287  	) )
1288 						{
1289 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property LiftCenter on object class NavPointStatic");
1290 							return true;
1291 						}
1292  					
1293  						if ( !(this.isLiftExit()
1294  	
1295  	 			== obj.isLiftExit()
1296  	) )
1297 						{
1298 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property LiftExit on object class NavPointStatic");
1299 							return true;
1300 						}
1301  					
1302  						if ( !(this.isAIMarker()
1303  	
1304  	 			== obj.isAIMarker()
1305  	) )
1306 						{
1307 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property AIMarker on object class NavPointStatic");
1308 							return true;
1309 						}
1310  					
1311  						if ( !(this.isJumpSpot()
1312  	
1313  	 			== obj.isJumpSpot()
1314  	) )
1315 						{
1316 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property JumpSpot on object class NavPointStatic");
1317 							return true;
1318 						}
1319  					
1320  						if ( !(this.isJumpPad()
1321  	
1322  	 			== obj.isJumpPad()
1323  	) )
1324 						{
1325 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property JumpPad on object class NavPointStatic");
1326 							return true;
1327 						}
1328  					
1329  						if ( !(this.isJumpDest()
1330  	
1331  	 			== obj.isJumpDest()
1332  	) )
1333 						{
1334 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property JumpDest on object class NavPointStatic");
1335 							return true;
1336 						}
1337  					
1338  						if ( !(this.isTeleporter()
1339  	
1340  	 			== obj.isTeleporter()
1341  	) )
1342 						{
1343 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property Teleporter on object class NavPointStatic");
1344 							return true;
1345 						}
1346  					
1347  						if ( !(
1348  	 			AdvancedEquals.equalsOrNull(this.getRotation()
1349  	, obj.getRotation()
1350  	)
1351  	 		) )
1352 						{
1353 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property Rotation on object class NavPointStatic");
1354 							return true;
1355 						}
1356  					
1357  						if ( !(this.isRoamingSpot()
1358  	
1359  	 			== obj.isRoamingSpot()
1360  	) )
1361 						{
1362 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property RoamingSpot on object class NavPointStatic");
1363 							return true;
1364 						}
1365  					
1366  						if ( !(this.isSnipingSpot()
1367  	
1368  	 			== obj.isSnipingSpot()
1369  	) )
1370 						{
1371 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property SnipingSpot on object class NavPointStatic");
1372 							return true;
1373 						}
1374  					
1375  						if ( !(
1376  	 			AdvancedEquals.equalsOrNull(this.getItemInstance()
1377  	, obj.getItemInstance()
1378  	)
1379  	 		) )
1380 						{
1381 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property ItemInstance on object class NavPointStatic");
1382 							return true;
1383 						}
1384  					
1385  						//Skipping outgoing and incoming edges tests because the navGraph is sent only once
1386  					
1387  						//Skipping outgoing and incoming edges tests because the navGraph is sent only once
1388  					
1389  						if ( !(
1390  	 			AdvancedEquals.equalsOrNull(this.getPreferedWeapon()
1391  	, obj.getPreferedWeapon()
1392  	)
1393  	 		) )
1394 						{
1395 							System.out.println("!!!!!PROPERTY UPDATE ERROR!!!! on property PreferedWeapon on object class NavPointStatic");
1396 							return true;
1397 						}
1398  					
1399  			}
1400  			return false;
1401  		}
1402  	 
1403  		
1404  	    public String toString() {
1405             return
1406             	super.toString() + "[" +
1407             	
1408 		              			"Id = " + String.valueOf(getId()
1409  	) + " | " + 
1410 		              		
1411 		              			"Item = " + String.valueOf(getItem()
1412  	) + " | " + 
1413 		              		
1414 		              			"ItemClass = " + String.valueOf(getItemClass()
1415  	) + " | " + 
1416 		              		
1417 		              			"Mover = " + String.valueOf(getMover()
1418  	) + " | " + 
1419 		              		
1420 		              			"LiftOffset = " + String.valueOf(getLiftOffset()
1421  	) + " | " + 
1422 		              		
1423 		              			"LiftJumpExit = " + String.valueOf(isLiftJumpExit()
1424  	) + " | " + 
1425 		              		
1426 		              			"NoDoubleJump = " + String.valueOf(isNoDoubleJump()
1427  	) + " | " + 
1428 		              		
1429 		              			"InvSpot = " + String.valueOf(isInvSpot()
1430  	) + " | " + 
1431 		              		
1432 		              			"PlayerStart = " + String.valueOf(isPlayerStart()
1433  	) + " | " + 
1434 		              		
1435 		              			"TeamNumber = " + String.valueOf(getTeamNumber()
1436  	) + " | " + 
1437 		              		
1438 		              			"DomPoint = " + String.valueOf(isDomPoint()
1439  	) + " | " + 
1440 		              		
1441 		              			"DomPointController = " + String.valueOf(getDomPointController()
1442  	) + " | " + 
1443 		              		
1444 		              			"Door = " + String.valueOf(isDoor()
1445  	) + " | " + 
1446 		              		
1447 		              			"LiftCenter = " + String.valueOf(isLiftCenter()
1448  	) + " | " + 
1449 		              		
1450 		              			"LiftExit = " + String.valueOf(isLiftExit()
1451  	) + " | " + 
1452 		              		
1453 		              			"AIMarker = " + String.valueOf(isAIMarker()
1454  	) + " | " + 
1455 		              		
1456 		              			"JumpSpot = " + String.valueOf(isJumpSpot()
1457  	) + " | " + 
1458 		              		
1459 		              			"JumpPad = " + String.valueOf(isJumpPad()
1460  	) + " | " + 
1461 		              		
1462 		              			"JumpDest = " + String.valueOf(isJumpDest()
1463  	) + " | " + 
1464 		              		
1465 		              			"Teleporter = " + String.valueOf(isTeleporter()
1466  	) + " | " + 
1467 		              		
1468 		              			"Rotation = " + String.valueOf(getRotation()
1469  	) + " | " + 
1470 		              		
1471 		              			"RoamingSpot = " + String.valueOf(isRoamingSpot()
1472  	) + " | " + 
1473 		              		
1474 		              			"SnipingSpot = " + String.valueOf(isSnipingSpot()
1475  	) + " | " + 
1476 		              		
1477 		              			"PreferedWeapon = " + String.valueOf(getPreferedWeapon()
1478  	) + " | " + 
1479 		              		
1480 				"]";           		
1481         }
1482  	
1483  		
1484  		public String toHtmlString() {
1485  			return super.toString() + "[<br/>" +
1486             	
1487 		              			"<b>Id</b> = " + String.valueOf(getId()
1488  	) + " <br/> " + 
1489 		              		
1490 		              			"<b>Item</b> = " + String.valueOf(getItem()
1491  	) + " <br/> " + 
1492 		              		
1493 		              			"<b>ItemClass</b> = " + String.valueOf(getItemClass()
1494  	) + " <br/> " + 
1495 		              		
1496 		              			"<b>Mover</b> = " + String.valueOf(getMover()
1497  	) + " <br/> " + 
1498 		              		
1499 		              			"<b>LiftOffset</b> = " + String.valueOf(getLiftOffset()
1500  	) + " <br/> " + 
1501 		              		
1502 		              			"<b>LiftJumpExit</b> = " + String.valueOf(isLiftJumpExit()
1503  	) + " <br/> " + 
1504 		              		
1505 		              			"<b>NoDoubleJump</b> = " + String.valueOf(isNoDoubleJump()
1506  	) + " <br/> " + 
1507 		              		
1508 		              			"<b>InvSpot</b> = " + String.valueOf(isInvSpot()
1509  	) + " <br/> " + 
1510 		              		
1511 		              			"<b>PlayerStart</b> = " + String.valueOf(isPlayerStart()
1512  	) + " <br/> " + 
1513 		              		
1514 		              			"<b>TeamNumber</b> = " + String.valueOf(getTeamNumber()
1515  	) + " <br/> " + 
1516 		              		
1517 		              			"<b>DomPoint</b> = " + String.valueOf(isDomPoint()
1518  	) + " <br/> " + 
1519 		              		
1520 		              			"<b>DomPointController</b> = " + String.valueOf(getDomPointController()
1521  	) + " <br/> " + 
1522 		              		
1523 		              			"<b>Door</b> = " + String.valueOf(isDoor()
1524  	) + " <br/> " + 
1525 		              		
1526 		              			"<b>LiftCenter</b> = " + String.valueOf(isLiftCenter()
1527  	) + " <br/> " + 
1528 		              		
1529 		              			"<b>LiftExit</b> = " + String.valueOf(isLiftExit()
1530  	) + " <br/> " + 
1531 		              		
1532 		              			"<b>AIMarker</b> = " + String.valueOf(isAIMarker()
1533  	) + " <br/> " + 
1534 		              		
1535 		              			"<b>JumpSpot</b> = " + String.valueOf(isJumpSpot()
1536  	) + " <br/> " + 
1537 		              		
1538 		              			"<b>JumpPad</b> = " + String.valueOf(isJumpPad()
1539  	) + " <br/> " + 
1540 		              		
1541 		              			"<b>JumpDest</b> = " + String.valueOf(isJumpDest()
1542  	) + " <br/> " + 
1543 		              		
1544 		              			"<b>Teleporter</b> = " + String.valueOf(isTeleporter()
1545  	) + " <br/> " + 
1546 		              		
1547 		              			"<b>Rotation</b> = " + String.valueOf(getRotation()
1548  	) + " <br/> " + 
1549 		              		
1550 		              			"<b>RoamingSpot</b> = " + String.valueOf(isRoamingSpot()
1551  	) + " <br/> " + 
1552 		              		
1553 		              			"<b>SnipingSpot</b> = " + String.valueOf(isSnipingSpot()
1554  	) + " <br/> " + 
1555 		              		
1556 		              			"<b>PreferedWeapon</b> = " + String.valueOf(getPreferedWeapon()
1557  	) + " <br/> " + 
1558 		              		
1559 				"<br/>]";     
1560 		}
1561  	
1562  		
1563  		// --- Extra Java from XML BEGIN (extra/code/java/javapart/classcategory[@name=all]) ---
1564         	
1565 		// --- Extra Java from XML END (extra/code/java/javapart/classcategory[@name=all]) ---
1566 		
1567 	    // --- Extra Java from XML BEGIN (extra/code/java/javapart/classcategory[@name=static+classtype[@name=impl]) ---
1568 	                
1569          	  
1570          		    
1571          		    
1572          	            		   	
1573          	  
1574          		    
1575          		    
1576          	  
1577          	/**
1578 		     * DO NOT USE THIS METHOD! Reserved for GaviaLib (Pogamut core)! It's used
1579 		     * to set correct item instance into the NavPoint.
1580 		     */  	
1581 		    public void setItemInstance(Item item) {
1582 		        this.ItemInstance = item;
1583 		        if (item != null) {
1584 		        	this.Item = item.getId();
1585 		        }
1586 		    } 	
1587 		
1588 	    // --- Extra Java from XML END (extra/code/java/javapart/classcategory[@name=static+classtype[@name=impl]) ---        	            	
1589  	
1590 		}
1591