<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Silabsoft</title>
	<atom:link href="http://silabsoft.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://silabsoft.org</link>
	<description>Just a pile of Silab</description>
	<lastBuildDate>Sun, 24 Mar 2013 20:27:49 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Oldschool Runescape downloadable client world list mod</title>
		<link>http://silabsoft.org/games/oldschool-runescape-downloadable-client-world-list-mod/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=oldschool-runescape-downloadable-client-world-list-mod</link>
		<comments>http://silabsoft.org/games/oldschool-runescape-downloadable-client-world-list-mod/#comments</comments>
		<pubDate>Mon, 11 Mar 2013 00:30:29 +0000</pubDate>
		<dc:creator>Silabsoft</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Runescape]]></category>

		<guid isPermaLink="false">http://silabsoft.org/?p=319</guid>
		<description><![CDATA[<p>This mod allows you to never have a &#8220;Full&#8221; world on the worldlist. setup is simple and does not Modify anything in the gameclient so should be safe to use. All you have to do is Follow the offical client setup tutorial: However when it says to use: http://oldschool.runescape.com/jav_config.ws Replace with: http://silabsoft.org/jav_config.ws Then enjoy never [...]</p><p>The post <a href="http://silabsoft.org/games/oldschool-runescape-downloadable-client-world-list-mod/">Oldschool Runescape downloadable client world list mod</a> appeared first on <a href="http://silabsoft.org">Silabsoft</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>This mod allows you to never have a &#8220;Full&#8221; world on the worldlist. setup is simple and does not Modify anything in the gameclient so should be safe to use.</p>
<p>All you have to do is Follow the offical client setup tutorial: <a href="http://services.runescape.com/m=rswiki/en/Accessing_Old_School_RuneScape_on_the_Client" title="Accessing old school runescape on the client" target="_blank"></a></p>
<p>However when it says to use: http://oldschool.runescape.com/jav_config.ws</p>
<p>Replace with: http://silabsoft.org/jav_config.ws</p>
<p>Then enjoy never having to deal with the &#8220;Full&#8221; message on the worldlist again.</p>
<p><img src="http://i.imgur.com/ZRlO1jv.png" width="823" height="673" class="aligncenter" title="Oldschool Runescape downloadable client world list mod" alt="ZRlO1jv Oldschool Runescape downloadable client world list mod" /></p>
<p>The post <a href="http://silabsoft.org/games/oldschool-runescape-downloadable-client-world-list-mod/">Oldschool Runescape downloadable client world list mod</a> appeared first on <a href="http://silabsoft.org">Silabsoft</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://silabsoft.org/games/oldschool-runescape-downloadable-client-world-list-mod/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simple Oldschool Runescape worldlist grabber</title>
		<link>http://silabsoft.org/programming/java/simple-oldschool-runescape-worldlist-grabber/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=simple-oldschool-runescape-worldlist-grabber</link>
		<comments>http://silabsoft.org/programming/java/simple-oldschool-runescape-worldlist-grabber/#comments</comments>
		<pubDate>Wed, 06 Mar 2013 19:03:27 +0000</pubDate>
		<dc:creator>Silabsoft</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Runescape]]></category>
		<category><![CDATA[Oldschool]]></category>

		<guid isPermaLink="false">http://silabsoft.org/?p=305</guid>
		<description><![CDATA[<p>This is a simple Java application that grabs the Runescape wordlist data the same way the client does. HoustCountry.java: /** * * @author Silabsoft */ public enum HostCountry &#123; &#160; USA, UK, GERMANY, UNKNOWN; &#160; public static HostCountry getHostCountry&#40;int countryId&#41; &#123; switch &#40;countryId&#41; &#123; case 0: return HostCountry.USA; case 1: return HostCountry.UK; case 7: return [...]</p><p>The post <a href="http://silabsoft.org/programming/java/simple-oldschool-runescape-worldlist-grabber/">Simple Oldschool Runescape worldlist grabber</a> appeared first on <a href="http://silabsoft.org">Silabsoft</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>This is a simple Java application that grabs the Runescape wordlist data the same way the client does.</p>
<p><strong>HoustCountry.java:</strong></p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="java"><pre class="de1"><span class="co3">/**
 *
 * @author Silabsoft
 */</span>
<span class="kw1">public</span> <span class="kw1">enum</span> HostCountry <span class="br0">&#123;</span>
&nbsp;
    USA,
    UK,
    GERMANY,
    <span class="kw3">UNKNOWN</span><span class="sy0">;</span>
&nbsp;
    <span class="kw1">public</span> <span class="kw1">static</span> HostCountry getHostCountry<span class="br0">&#40;</span><span class="kw4">int</span> countryId<span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">switch</span> <span class="br0">&#40;</span>countryId<span class="br0">&#41;</span> <span class="br0">&#123;</span>
            <span class="kw1">case</span> <span class="nu0">0</span><span class="sy0">:</span>
                <span class="kw1">return</span> HostCountry.<span class="me1">USA</span><span class="sy0">;</span>
            <span class="kw1">case</span> <span class="nu0">1</span><span class="sy0">:</span>
                <span class="kw1">return</span> HostCountry.<span class="me1">UK</span><span class="sy0">;</span>
            <span class="kw1">case</span> <span class="nu0">7</span><span class="sy0">:</span>
                <span class="kw1">return</span> HostCountry.<span class="me1">GERMANY</span><span class="sy0">;</span>
            <span class="kw1">default</span><span class="sy0">:</span>
                <span class="kw1">return</span> HostCountry.<span class="kw3">UNKNOWN</span><span class="sy0">;</span>
        <span class="br0">&#125;</span>
    <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div></div></div></div></div></div></div>


<p><strong>ByteStream.java:</strong></p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="java"><pre class="de1"><span class="co3">/**
 *
 * @author Silabsoft
 */</span>
<span class="kw1">public</span> <span class="kw1">class</span> ByteStream <span class="br0">&#123;</span>
&nbsp;
    <span class="kw1">private</span> ByteStream<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">public</span> ByteStream<span class="br0">&#40;</span><span class="kw4">byte</span> abyte0<span class="br0">&#91;</span><span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        data <span class="sy0">=</span> abyte0<span class="sy0">;</span>
        caret <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">public</span> <span class="kw4">int</span> g1<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">return</span> data<span class="br0">&#91;</span>caret<span class="sy0">++</span><span class="br0">&#93;</span> <span class="sy0">&amp;</span> 0xff<span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">public</span> <span class="kw4">byte</span> g1b<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">return</span> data<span class="br0">&#91;</span>caret<span class="sy0">++</span><span class="br0">&#93;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">public</span> <span class="kw4">int</span> g2<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        caret <span class="sy0">+=</span> <span class="nu0">2</span><span class="sy0">;</span>
        <span class="kw1">return</span> <span class="br0">&#40;</span><span class="br0">&#40;</span>data<span class="br0">&#91;</span>caret <span class="sy0">-</span> <span class="nu0">2</span><span class="br0">&#93;</span> <span class="sy0">&amp;</span> 0xff<span class="br0">&#41;</span> <span class="sy0">&lt;&lt;</span> <span class="nu0">8</span><span class="br0">&#41;</span> <span class="sy0">+</span> <span class="br0">&#40;</span>data<span class="br0">&#91;</span>caret <span class="sy0">-</span> <span class="nu0">1</span><span class="br0">&#93;</span> <span class="sy0">&amp;</span> 0xff<span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">public</span> <span class="kw4">int</span> g2b<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        caret <span class="sy0">+=</span> <span class="nu0">2</span><span class="sy0">;</span>
        <span class="kw4">int</span> i <span class="sy0">=</span> <span class="br0">&#40;</span><span class="br0">&#40;</span>data<span class="br0">&#91;</span>caret <span class="sy0">-</span> <span class="nu0">2</span><span class="br0">&#93;</span> <span class="sy0">&amp;</span> 0xff<span class="br0">&#41;</span> <span class="sy0">&lt;&lt;</span> <span class="nu0">8</span><span class="br0">&#41;</span> <span class="sy0">+</span> <span class="br0">&#40;</span>data<span class="br0">&#91;</span>caret <span class="sy0">-</span> <span class="nu0">1</span><span class="br0">&#93;</span> <span class="sy0">&amp;</span> 0xff<span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="kw1">if</span> <span class="br0">&#40;</span>i <span class="sy0">&gt;</span> <span class="nu0">32767</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
            i <span class="sy0">-=</span> 0x10000<span class="sy0">;</span>
        <span class="br0">&#125;</span>
        <span class="kw1">return</span> i<span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">public</span> <span class="kw4">int</span> g3<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        caret <span class="sy0">+=</span> <span class="nu0">3</span><span class="sy0">;</span>
        <span class="kw1">return</span> <span class="br0">&#40;</span><span class="br0">&#40;</span>data<span class="br0">&#91;</span>caret <span class="sy0">-</span> <span class="nu0">3</span><span class="br0">&#93;</span> <span class="sy0">&amp;</span> 0xff<span class="br0">&#41;</span> <span class="sy0">&lt;&lt;</span> <span class="nu0">16</span><span class="br0">&#41;</span> <span class="sy0">+</span> <span class="br0">&#40;</span><span class="br0">&#40;</span>data<span class="br0">&#91;</span>caret <span class="sy0">-</span> <span class="nu0">2</span><span class="br0">&#93;</span> <span class="sy0">&amp;</span> 0xff<span class="br0">&#41;</span> <span class="sy0">&lt;&lt;</span> <span class="nu0">8</span><span class="br0">&#41;</span> <span class="sy0">+</span> <span class="br0">&#40;</span>data<span class="br0">&#91;</span>caret <span class="sy0">-</span> <span class="nu0">1</span><span class="br0">&#93;</span> <span class="sy0">&amp;</span> 0xff<span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">public</span> <span class="kw4">int</span> g4<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        caret <span class="sy0">+=</span> <span class="nu0">4</span><span class="sy0">;</span>
        <span class="kw1">return</span> <span class="br0">&#40;</span><span class="br0">&#40;</span>data<span class="br0">&#91;</span>caret <span class="sy0">-</span> <span class="nu0">4</span><span class="br0">&#93;</span> <span class="sy0">&amp;</span> 0xff<span class="br0">&#41;</span> <span class="sy0">&lt;&lt;</span> <span class="nu0">24</span><span class="br0">&#41;</span> <span class="sy0">+</span> <span class="br0">&#40;</span><span class="br0">&#40;</span>data<span class="br0">&#91;</span>caret <span class="sy0">-</span> <span class="nu0">3</span><span class="br0">&#93;</span> <span class="sy0">&amp;</span> 0xff<span class="br0">&#41;</span> <span class="sy0">&lt;&lt;</span> <span class="nu0">16</span><span class="br0">&#41;</span> <span class="sy0">+</span> <span class="br0">&#40;</span><span class="br0">&#40;</span>data<span class="br0">&#91;</span>caret <span class="sy0">-</span> <span class="nu0">2</span><span class="br0">&#93;</span> <span class="sy0">&amp;</span> 0xff<span class="br0">&#41;</span> <span class="sy0">&lt;&lt;</span> <span class="nu0">8</span><span class="br0">&#41;</span> <span class="sy0">+</span> <span class="br0">&#40;</span>data<span class="br0">&#91;</span>caret <span class="sy0">-</span> <span class="nu0">1</span><span class="br0">&#93;</span> <span class="sy0">&amp;</span> 0xff<span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">public</span> <span class="kw3">String</span> gstr<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw4">int</span> i <span class="sy0">=</span> caret<span class="sy0">;</span>
        <span class="kw1">while</span> <span class="br0">&#40;</span>data<span class="br0">&#91;</span>caret<span class="sy0">++</span><span class="br0">&#93;</span> <span class="sy0">!=</span> <span class="nu0">0</span><span class="br0">&#41;</span> <span class="sy0">;</span>
        <span class="kw1">return</span> <span class="kw1">new</span> <span class="kw3">String</span><span class="br0">&#40;</span>data, i, caret <span class="sy0">-</span> i <span class="sy0">-</span> <span class="nu0">1</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
    <span class="kw1">public</span> <span class="kw4">byte</span> data<span class="br0">&#91;</span><span class="br0">&#93;</span><span class="sy0">;</span>
    <span class="kw1">public</span> <span class="kw4">int</span> caret<span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div></div></div></div></div></div>


<p><strong>World.java:</strong></p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="java"><pre class="de1">&nbsp;
<span class="co3">/**
 *
 * @author Silabsoft
 */</span>
<span class="kw1">public</span> <span class="kw1">class</span> World <span class="br0">&#123;</span>
&nbsp;
    <span class="kw1">private</span> <span class="kw1">final</span> <span class="kw4">int</span> worldId<span class="sy0">;</span>
    <span class="kw1">private</span> <span class="kw1">final</span> <span class="kw4">boolean</span> members<span class="sy0">;</span>
    <span class="kw1">private</span> <span class="kw1">final</span> HostCountry hostCountry<span class="sy0">;</span>
    <span class="kw1">private</span> <span class="kw1">final</span> <span class="kw3">String</span> host<span class="sy0">;</span>
    <span class="kw1">private</span> <span class="kw4">int</span> players<span class="sy0">;</span>
&nbsp;
    World<span class="br0">&#40;</span><span class="kw4">int</span> worldId, <span class="kw3">String</span> host, <span class="kw4">boolean</span> members, HostCountry hostCountry, <span class="kw4">int</span> numberOfPlayers<span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">this</span>.<span class="me1">worldId</span> <span class="sy0">=</span> worldId<span class="sy0">;</span>
        <span class="kw1">this</span>.<span class="me1">host</span> <span class="sy0">=</span> host<span class="sy0">;</span>
        <span class="kw1">this</span>.<span class="me1">members</span> <span class="sy0">=</span> members<span class="sy0">;</span>
        <span class="kw1">this</span>.<span class="me1">hostCountry</span> <span class="sy0">=</span> hostCountry<span class="sy0">;</span>
        <span class="kw1">this</span>.<span class="me1">players</span> <span class="sy0">=</span> numberOfPlayers<span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">public</span> <span class="kw3">String</span> getHost<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">return</span> host<span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">public</span> HostCountry getHostCountry<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">return</span> hostCountry<span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">public</span> <span class="kw4">boolean</span> isMembers<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">return</span> members<span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">public</span> <span class="kw4">int</span> getPlayers<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">return</span> players<span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">public</span> <span class="kw4">int</span> getWorldId<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">return</span> worldId<span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">public</span> <span class="kw4">void</span> setPlayers<span class="br0">&#40;</span><span class="kw4">int</span> players<span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">this</span>.<span class="me1">players</span> <span class="sy0">=</span> players<span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
    @Override
    <span class="kw1">public</span> <span class="kw3">String</span> toString<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">return</span> <span class="st0">&quot;World{&quot;</span> <span class="sy0">+</span> <span class="st0">&quot;worldId=&quot;</span> <span class="sy0">+</span> worldId <span class="sy0">+</span> <span class="st0">&quot;, members=&quot;</span> <span class="sy0">+</span> members <span class="sy0">+</span> <span class="st0">&quot;, hostCountry=&quot;</span> <span class="sy0">+</span> hostCountry <span class="sy0">+</span> <span class="st0">&quot;, host=&quot;</span> <span class="sy0">+</span> host <span class="sy0">+</span> <span class="st0">&quot;, players=&quot;</span> <span class="sy0">+</span> players <span class="sy0">+</span> <span class="st0">'}'</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div></div></div></div></div></div></div>


<p><strong>WorldList.java:</strong></p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="java"><pre class="de1">&nbsp;
<span class="co3">/**
 *
 * @author Silabsoft
 */</span>
<span class="kw1">import</span> <span class="co2">java.io.DataInputStream</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.io.IOException</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.net.HttpURLConnection</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.net.URL</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.util.HashMap</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">public</span> <span class="kw1">class</span> WorldList <span class="br0">&#123;</span>
&nbsp;
    <span class="kw1">private</span> <span class="kw1">final</span> HashMap<span class="sy0">&lt;</span><span class="kw3">Integer</span>, World<span class="sy0">&gt;</span> worlds<span class="sy0">;</span>
    <span class="kw1">private</span> <span class="kw4">int</span> worldCount<span class="sy0">;</span>
    <span class="kw1">private</span> <span class="kw1">final</span> <span class="kw3">String</span> worldListAddress<span class="sy0">;</span>
    <span class="kw1">private</span> <span class="kw4">int</span> numberOfPlayers<span class="sy0">;</span>
&nbsp;
    <span class="kw1">public</span> WorldList<span class="br0">&#40;</span><span class="kw3">String</span> worldListAddress<span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">this</span>.<span class="me1">worldListAddress</span> <span class="sy0">=</span> worldListAddress<span class="sy0">;</span>
        <span class="kw1">this</span>.<span class="me1">worlds</span> <span class="sy0">=</span> <span class="kw1">new</span> HashMap<span class="sy0">&lt;</span><span class="kw3">Integer</span>, World<span class="sy0">&gt;</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">public</span> <span class="kw4">void</span> updateWorldList<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="kw1">throws</span> <span class="kw3">IOException</span> <span class="br0">&#123;</span>
        numberOfPlayers <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
        <span class="kw3">HttpURLConnection</span> url <span class="sy0">=</span> <span class="br0">&#40;</span><span class="kw3">HttpURLConnection</span><span class="br0">&#41;</span> <span class="kw1">new</span> <span class="kw3">URL</span><span class="br0">&#40;</span>worldListAddress<span class="br0">&#41;</span>.<span class="me1">openConnection</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="kw3">DataInputStream</span> in <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw3">DataInputStream</span><span class="br0">&#40;</span>url.<span class="me1">getInputStream</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="kw4">byte</span> data<span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw4">byte</span><span class="br0">&#91;</span>url.<span class="me1">getContentLength</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#93;</span><span class="sy0">;</span>
        in.<span class="me1">readFully</span><span class="br0">&#40;</span>data<span class="br0">&#41;</span><span class="sy0">;</span>
        ByteStream p <span class="sy0">=</span> <span class="kw1">new</span> ByteStream<span class="br0">&#40;</span>data<span class="br0">&#41;</span><span class="sy0">;</span>
        p.<span class="me1">caret</span> <span class="sy0">=</span> <span class="nu0">4</span><span class="sy0">;</span> <span class="co1">//skip first 4, might be a session id or timestamp</span>
        <span class="kw4">int</span> count <span class="sy0">=</span> p.<span class="me1">g2</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">//   aq = dl1.ag(0x804d807d) * 0x54db551e;</span>
&nbsp;
&nbsp;
        <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw4">int</span> i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0">&lt;</span> count<span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
            <span class="kw4">int</span> j1 <span class="sy0">=</span> p.<span class="me1">g2</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>  <span class="co1">// int j1 = dl1.ag(0x83d47af5);</span>
            <span class="kw4">int</span> worldId <span class="sy0">=</span> <span class="br0">&#40;</span>j1 <span class="sy0">&amp;</span> 0x7fff<span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">// n1.c = 0xbe183a66 * (j1 &amp; 0x7fff);</span>
            <span class="kw4">boolean</span> isMembers <span class="sy0">=</span> j1 <span class="sy0">!=</span> <span class="nu0">0</span><span class="sy0">;</span><span class="co1">// n1.e = 0 != (j1 &amp; 0xc5af3c81);</span>
            <span class="kw3">String</span> host <span class="sy0">=</span> p.<span class="me1">gstr</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">// n1.f = dl1.ai(0x3bd62f26);</span>
            <span class="kw4">int</span> countryId <span class="sy0">=</span> p.<span class="me1">g1</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><span class="co1">// n1.y = dl1.az(0xdb8be48a) * 0x5932670f;</span>
            <span class="kw4">int</span> numberOfPlayers <span class="sy0">=</span> p.<span class="me1">g2b</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">// n1.j = dl1.am((byte)-30) * 0xa5d501b;</span>
            <span class="co1">// n1.x = i1 * 0x53f5e1ef; </span>
            World w <span class="sy0">=</span> <span class="kw1">new</span> World<span class="br0">&#40;</span>worldId, host, isMembers, HostCountry.<span class="me1">getHostCountry</span><span class="br0">&#40;</span>countryId<span class="br0">&#41;</span>, numberOfPlayers<span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="kw1">this</span>.<span class="me1">worlds</span>.<span class="me1">put</span><span class="br0">&#40;</span>worldId, w<span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="kw1">this</span>.<span class="me1">numberOfPlayers</span> <span class="sy0">+=</span> numberOfPlayers<span class="sy0">;</span>
&nbsp;
        <span class="br0">&#125;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">public</span> <span class="kw4">int</span> getNumberOfPlayers<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">return</span> numberOfPlayers<span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">public</span> <span class="kw4">int</span> getWorldCount<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">return</span> worldCount<span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">public</span> <span class="kw3">String</span> getWorldListAddress<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">return</span> worldListAddress<span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">public</span> HashMap<span class="sy0">&lt;</span><span class="kw3">Integer</span>, World<span class="sy0">&gt;</span> getWorlds<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">return</span> worlds<span class="sy0">;</span>
    <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div></div></div></div></div></div></div>


<p><strong>Test Run:</strong></p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="java"><pre class="de1">&nbsp;
<span class="co3">/**
 *
 * @author Silabsoft
 */</span>
<span class="kw1">public</span> <span class="kw1">class</span> Main <span class="br0">&#123;</span>
&nbsp;
    <span class="kw1">public</span> <span class="kw1">static</span> <span class="kw4">void</span> main<span class="br0">&#40;</span><span class="kw3">String</span><span class="br0">&#91;</span><span class="br0">&#93;</span> args<span class="br0">&#41;</span> <span class="kw1">throws</span> <span class="kw3">Exception</span> <span class="br0">&#123;</span>
&nbsp;
        WorldList l <span class="sy0">=</span> <span class="kw1">new</span> WorldList<span class="br0">&#40;</span><span class="st0">&quot;http://www.runescape.com/slr.ws?order=LPWM&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        l.<span class="me1">updateWorldList</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="kw3">System</span>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">&#40;</span><span class="st0">&quot;total number of players: &quot;</span> <span class="sy0">+</span> l.<span class="me1">getNumberOfPlayers</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        l.<span class="me1">updateWorldList</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="kw3">System</span>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">&#40;</span><span class="st0">&quot;total number of players: &quot;</span> <span class="sy0">+</span> l.<span class="me1">getNumberOfPlayers</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
        <span class="kw3">System</span>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">&#40;</span>l.<span class="me1">getWorlds</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="nu0">318</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div></div></div></div></div></div></div>


<p>The post <a href="http://silabsoft.org/programming/java/simple-oldschool-runescape-worldlist-grabber/">Simple Oldschool Runescape worldlist grabber</a> appeared first on <a href="http://silabsoft.org">Silabsoft</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://silabsoft.org/programming/java/simple-oldschool-runescape-worldlist-grabber/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Java Runescape Bestiary Viewer</title>
		<link>http://silabsoft.org/programming/java/java-runescape-bestiary-viewer/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=java-runescape-bestiary-viewer</link>
		<comments>http://silabsoft.org/programming/java/java-runescape-bestiary-viewer/#comments</comments>
		<pubDate>Fri, 01 Mar 2013 10:38:13 +0000</pubDate>
		<dc:creator>Silabsoft</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Runescape]]></category>

		<guid isPermaLink="false">http://silabsoft.org/?p=298</guid>
		<description><![CDATA[<p>Runescape recently released a new Bestiary displaying part of the all new Runetek 7 engine, Although It&#8217;s fun to look at it currently only supports google chrome. (inb4 google fanboys comment after my next statement) Myself I really don&#8217;t like using chrome and can&#8217;t really see myself just using 1 browser to view a bestiary [...]</p><p>The post <a href="http://silabsoft.org/programming/java/java-runescape-bestiary-viewer/">Java Runescape Bestiary Viewer</a> appeared first on <a href="http://silabsoft.org">Silabsoft</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Runescape recently released a new Bestiary displaying part of the all new Runetek 7 engine, Although It&#8217;s fun to look at it currently only supports google chrome. (inb4 google fanboys comment after my next statement) Myself I really don&#8217;t like using chrome and can&#8217;t really see myself just using 1 browser to view a bestiary for a game I don&#8217;t play. Due to the technical limitations of my firefox not being support by the bestiary I decided I would write a viewer in Java.  Currently it only grabs the npc details but I hope to have it also be able to view the models and animations in the future.  Google GSON made easy work of the json parsing and everything else is just standard swing using netbeans form builder.  </p>
<p><a href="http://silabsoft.org/wp-content/uploads/rsbv.png"><img class="aligncenter size-large wp-image-299" alt="rsbv 1024x619 Java Runescape Bestiary Viewer" src="http://silabsoft.org/wp-content/uploads/rsbv-1024x619.png" width="651" height="393" title="Java Runescape Bestiary Viewer" /></a></p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="java"><pre class="de1"><span class="coMULTI">/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */</span>
<span class="kw1">package</span> <span class="co2">org.silabsoft.runescape.bestiary</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">import</span> <span class="co2">com.google.gson.*</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.beans.PropertyChangeEvent</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.beans.PropertyChangeListener</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.io.BufferedReader</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.io.InputStreamReader</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.net.URL</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.util.Map.Entry</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.util.concurrent.ExecutionException</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">javax.swing.SwingWorker</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">javax.swing.tree.DefaultMutableTreeNode</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">javax.swing.tree.DefaultTreeModel</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">org.silabsoft.runescape.bestiary.model.BestiaryName</span><span class="sy0">;</span>
&nbsp;
<span class="co3">/**
 *
 * @author Silabsoft
 */</span>
<span class="kw1">public</span> <span class="kw1">class</span> RunescapeBestiary <span class="kw1">extends</span> javax.<span class="me1">swing</span>.<span class="kw3">JFrame</span> <span class="br0">&#123;</span>
&nbsp;
    <span class="kw1">public</span> <span class="kw1">static</span> <span class="kw1">final</span> <span class="kw3">String</span> TITLE <span class="sy0">=</span> <span class="st0">&quot;Silabsoft's Runescape Bestiary Viewer&quot;</span><span class="sy0">;</span>
    <span class="kw1">private</span> <span class="kw1">final</span> <span class="kw3">DefaultMutableTreeNode</span> bestiaryRootNode<span class="sy0">;</span>
    <span class="kw1">public</span> <span class="kw1">static</span> <span class="kw1">final</span> <span class="kw3">String</span> alphabet<span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw3">String</span><span class="br0">&#91;</span><span class="br0">&#93;</span><span class="br0">&#123;</span><span class="st0">&quot;A&quot;</span>, <span class="st0">&quot;B&quot;</span>, <span class="st0">&quot;C&quot;</span>, <span class="st0">&quot;D&quot;</span>, <span class="st0">&quot;E&quot;</span>, <span class="st0">&quot;F&quot;</span>, <span class="st0">&quot;G&quot;</span>, <span class="st0">&quot;H&quot;</span>, <span class="st0">&quot;I&quot;</span>, <span class="st0">&quot;J&quot;</span>, <span class="st0">&quot;K&quot;</span>, <span class="st0">&quot;L&quot;</span>, <span class="st0">&quot;M&quot;</span>, <span class="st0">&quot;N&quot;</span>, <span class="st0">&quot;O&quot;</span>, <span class="st0">&quot;P&quot;</span>, <span class="st0">&quot;Q&quot;</span>, <span class="st0">&quot;R&quot;</span>, <span class="st0">&quot;S&quot;</span>, <span class="st0">&quot;T&quot;</span>, <span class="st0">&quot;U&quot;</span>, <span class="st0">&quot;V&quot;</span>, <span class="st0">&quot;W&quot;</span>, <span class="st0">&quot;X&quot;</span>, <span class="st0">&quot;Y&quot;</span>, <span class="st0">&quot;Z&quot;</span><span class="br0">&#125;</span><span class="sy0">;</span>
&nbsp;
    <span class="co3">/**
     * Creates new form RunescapeBestiary
     */</span>
    <span class="kw1">public</span> RunescapeBestiary<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        bestiaryRootNode <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw3">DefaultMutableTreeNode</span><span class="br0">&#40;</span><span class="st0">&quot;Bestiary List&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
        <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw3">String</span> s <span class="sy0">:</span> alphabet<span class="br0">&#41;</span> <span class="br0">&#123;</span>
            bestiaryRootNode.<span class="me1">add</span><span class="br0">&#40;</span><span class="kw1">new</span> <span class="kw3">DefaultMutableTreeNode</span><span class="br0">&#40;</span>s<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="br0">&#125;</span>
        initComponents<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
    <span class="br0">&#125;</span>
&nbsp;
    <span class="co3">/**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */</span>
    @SuppressWarnings<span class="br0">&#40;</span><span class="st0">&quot;unchecked&quot;</span><span class="br0">&#41;</span>
    <span class="co1">//                          </span>
    <span class="kw1">private</span> <span class="kw4">void</span> initComponents<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp;
        jScrollPane1 <span class="sy0">=</span> <span class="kw1">new</span> javax.<span class="me1">swing</span>.<span class="kw3">JScrollPane</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        jTree1 <span class="sy0">=</span> <span class="kw1">new</span> javax.<span class="me1">swing</span>.<span class="kw3">JTree</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        jProgressBar1 <span class="sy0">=</span> <span class="kw1">new</span> javax.<span class="me1">swing</span>.<span class="kw3">JProgressBar</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        jMenuBar1 <span class="sy0">=</span> <span class="kw1">new</span> javax.<span class="me1">swing</span>.<span class="kw3">JMenuBar</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        jMenu1 <span class="sy0">=</span> <span class="kw1">new</span> javax.<span class="me1">swing</span>.<span class="kw3">JMenu</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        updateMenuItem <span class="sy0">=</span> <span class="kw1">new</span> javax.<span class="me1">swing</span>.<span class="kw3">JMenuItem</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
        setDefaultCloseOperation<span class="br0">&#40;</span>javax.<span class="me1">swing</span>.<span class="kw3">WindowConstants</span>.<span class="me1">EXIT_ON_CLOSE</span><span class="br0">&#41;</span><span class="sy0">;</span>
        setTitle<span class="br0">&#40;</span>TITLE<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
        jTree1.<span class="me1">setModel</span><span class="br0">&#40;</span><span class="kw1">new</span> javax.<span class="me1">swing</span>.<span class="me1">tree</span>.<span class="kw3">DefaultTreeModel</span><span class="br0">&#40;</span>bestiaryRootNode<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        jScrollPane1.<span class="me1">setViewportView</span><span class="br0">&#40;</span>jTree1<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
        jMenu1.<span class="me1">setText</span><span class="br0">&#40;</span><span class="st0">&quot;File&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
        updateMenuItem.<span class="me1">setAccelerator</span><span class="br0">&#40;</span>javax.<span class="me1">swing</span>.<span class="kw3">KeyStroke</span>.<span class="me1">getKeyStroke</span><span class="br0">&#40;</span>java.<span class="me1">awt</span>.<span class="me1">event</span>.<span class="kw3">KeyEvent</span>.<span class="me1">VK_U</span>, java.<span class="me1">awt</span>.<span class="me1">event</span>.<span class="kw3">InputEvent</span>.<span class="me1">CTRL_MASK</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        updateMenuItem.<span class="me1">setText</span><span class="br0">&#40;</span><span class="st0">&quot;Update&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        updateMenuItem.<span class="me1">addActionListener</span><span class="br0">&#40;</span><span class="kw1">new</span> java.<span class="me1">awt</span>.<span class="me1">event</span>.<span class="kw3">ActionListener</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
            <span class="kw1">public</span> <span class="kw4">void</span> actionPerformed<span class="br0">&#40;</span>java.<span class="me1">awt</span>.<span class="me1">event</span>.<span class="kw3">ActionEvent</span> evt<span class="br0">&#41;</span> <span class="br0">&#123;</span>
                updateMenuItemActionPerformed<span class="br0">&#40;</span>evt<span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="br0">&#125;</span>
        <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        jMenu1.<span class="me1">add</span><span class="br0">&#40;</span>updateMenuItem<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
        jMenuBar1.<span class="me1">add</span><span class="br0">&#40;</span>jMenu1<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
        setJMenuBar<span class="br0">&#40;</span>jMenuBar1<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
        javax.<span class="me1">swing</span>.<span class="me1">GroupLayout</span> layout <span class="sy0">=</span> <span class="kw1">new</span> javax.<span class="me1">swing</span>.<span class="me1">GroupLayout</span><span class="br0">&#40;</span>getContentPane<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        getContentPane<span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">setLayout</span><span class="br0">&#40;</span>layout<span class="br0">&#41;</span><span class="sy0">;</span>
        layout.<span class="me1">setHorizontalGroup</span><span class="br0">&#40;</span>
            layout.<span class="me1">createParallelGroup</span><span class="br0">&#40;</span>javax.<span class="me1">swing</span>.<span class="me1">GroupLayout</span>.<span class="me1">Alignment</span>.<span class="me1">LEADING</span><span class="br0">&#41;</span>
            .<span class="me1">addComponent</span><span class="br0">&#40;</span>jProgressBar1, javax.<span class="me1">swing</span>.<span class="me1">GroupLayout</span>.<span class="me1">DEFAULT_SIZE</span>, <span class="nu0">529</span>, <span class="kw3">Short</span>.<span class="me1">MAX_VALUE</span><span class="br0">&#41;</span>
            .<span class="me1">addComponent</span><span class="br0">&#40;</span>jScrollPane1<span class="br0">&#41;</span>
        <span class="br0">&#41;</span><span class="sy0">;</span>
        layout.<span class="me1">setVerticalGroup</span><span class="br0">&#40;</span>
            layout.<span class="me1">createParallelGroup</span><span class="br0">&#40;</span>javax.<span class="me1">swing</span>.<span class="me1">GroupLayout</span>.<span class="me1">Alignment</span>.<span class="me1">LEADING</span><span class="br0">&#41;</span>
            .<span class="me1">addGroup</span><span class="br0">&#40;</span>layout.<span class="me1">createSequentialGroup</span><span class="br0">&#40;</span><span class="br0">&#41;</span>
                .<span class="me1">addComponent</span><span class="br0">&#40;</span>jScrollPane1, javax.<span class="me1">swing</span>.<span class="me1">GroupLayout</span>.<span class="me1">DEFAULT_SIZE</span>, <span class="nu0">254</span>, <span class="kw3">Short</span>.<span class="me1">MAX_VALUE</span><span class="br0">&#41;</span>
                .<span class="me1">addPreferredGap</span><span class="br0">&#40;</span>javax.<span class="me1">swing</span>.<span class="me1">LayoutStyle</span>.<span class="me1">ComponentPlacement</span>.<span class="me1">RELATED</span><span class="br0">&#41;</span>
                .<span class="me1">addComponent</span><span class="br0">&#40;</span>jProgressBar1, javax.<span class="me1">swing</span>.<span class="me1">GroupLayout</span>.<span class="me1">PREFERRED_SIZE</span>, javax.<span class="me1">swing</span>.<span class="me1">GroupLayout</span>.<span class="me1">DEFAULT_SIZE</span>, javax.<span class="me1">swing</span>.<span class="me1">GroupLayout</span>.<span class="me1">PREFERRED_SIZE</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
        <span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
        pack<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span><span class="co1">//                        </span>
    <span class="kw4">int</span> index <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
    <span class="kw1">private</span> <span class="kw4">void</span> updateMenuItemActionPerformed<span class="br0">&#40;</span>java.<span class="me1">awt</span>.<span class="me1">event</span>.<span class="kw3">ActionEvent</span> evt<span class="br0">&#41;</span> <span class="br0">&#123;</span>                                               
        UpdateTask updateTask <span class="sy0">=</span> <span class="kw1">new</span> UpdateTask<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        updateTask.<span class="me1">addPropertyChangeListener</span><span class="br0">&#40;</span>
                <span class="kw1">new</span> <span class="kw3">PropertyChangeListener</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp;
                    <span class="kw1">public</span> <span class="kw4">void</span> propertyChange<span class="br0">&#40;</span><span class="kw3">PropertyChangeEvent</span> evt<span class="br0">&#41;</span> <span class="br0">&#123;</span>
                        <span class="kw1">if</span> <span class="br0">&#40;</span><span class="st0">&quot;progress&quot;</span>.<span class="me1">equals</span><span class="br0">&#40;</span>evt.<span class="me1">getPropertyName</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                            jProgressBar1.<span class="me1">setValue</span><span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw3">Integer</span><span class="br0">&#41;</span> evt.<span class="me1">getNewValue</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                        <span class="br0">&#125;</span>
                    <span class="br0">&#125;</span>
                <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        updateTask.<span class="me1">execute</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>                                              
&nbsp;
    <span class="co3">/**
     * @param args the command line arguments
     */</span>
    <span class="kw1">public</span> <span class="kw1">static</span> <span class="kw4">void</span> main<span class="br0">&#40;</span><span class="kw3">String</span> args<span class="br0">&#91;</span><span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="coMULTI">/*
         * Set the Nimbus look and feel
         */</span>
        <span class="co1">//</span>
        <span class="coMULTI">/*
         * If Nimbus (introduced in Java SE 6) is not available, stay with the
         * default look and feel. For details see
         * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */</span>
        <span class="kw1">try</span> <span class="br0">&#123;</span>
            <span class="kw1">for</span> <span class="br0">&#40;</span>javax.<span class="me1">swing</span>.<span class="kw3">UIManager.<span class="me1">LookAndFeelInfo</span></span> info <span class="sy0">:</span> javax.<span class="me1">swing</span>.<span class="kw3">UIManager</span>.<span class="me1">getInstalledLookAndFeels</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                <span class="kw1">if</span> <span class="br0">&#40;</span><span class="st0">&quot;Nimbus&quot;</span>.<span class="me1">equals</span><span class="br0">&#40;</span>info.<span class="me1">getName</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                    javax.<span class="me1">swing</span>.<span class="kw3">UIManager</span>.<span class="me1">setLookAndFeel</span><span class="br0">&#40;</span>info.<span class="me1">getClassName</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                    <span class="kw1">break</span><span class="sy0">;</span>
                <span class="br0">&#125;</span>
            <span class="br0">&#125;</span>
        <span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span><span class="kw3">ClassNotFoundException</span> ex<span class="br0">&#41;</span> <span class="br0">&#123;</span>
            java.<span class="me1">util</span>.<span class="me1">logging</span>.<span class="me1">Logger</span>.<span class="me1">getLogger</span><span class="br0">&#40;</span>RunescapeBestiary.<span class="kw1">class</span>.<span class="me1">getName</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">log</span><span class="br0">&#40;</span>java.<span class="me1">util</span>.<span class="me1">logging</span>.<span class="me1">Level</span>.<span class="me1">SEVERE</span>, <span class="kw2">null</span>, ex<span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span><span class="kw3">InstantiationException</span> ex<span class="br0">&#41;</span> <span class="br0">&#123;</span>
            java.<span class="me1">util</span>.<span class="me1">logging</span>.<span class="me1">Logger</span>.<span class="me1">getLogger</span><span class="br0">&#40;</span>RunescapeBestiary.<span class="kw1">class</span>.<span class="me1">getName</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">log</span><span class="br0">&#40;</span>java.<span class="me1">util</span>.<span class="me1">logging</span>.<span class="me1">Level</span>.<span class="me1">SEVERE</span>, <span class="kw2">null</span>, ex<span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span><span class="kw3">IllegalAccessException</span> ex<span class="br0">&#41;</span> <span class="br0">&#123;</span>
            java.<span class="me1">util</span>.<span class="me1">logging</span>.<span class="me1">Logger</span>.<span class="me1">getLogger</span><span class="br0">&#40;</span>RunescapeBestiary.<span class="kw1">class</span>.<span class="me1">getName</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">log</span><span class="br0">&#40;</span>java.<span class="me1">util</span>.<span class="me1">logging</span>.<span class="me1">Level</span>.<span class="me1">SEVERE</span>, <span class="kw2">null</span>, ex<span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span>javax.<span class="me1">swing</span>.<span class="kw3">UnsupportedLookAndFeelException</span> ex<span class="br0">&#41;</span> <span class="br0">&#123;</span>
            java.<span class="me1">util</span>.<span class="me1">logging</span>.<span class="me1">Logger</span>.<span class="me1">getLogger</span><span class="br0">&#40;</span>RunescapeBestiary.<span class="kw1">class</span>.<span class="me1">getName</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">log</span><span class="br0">&#40;</span>java.<span class="me1">util</span>.<span class="me1">logging</span>.<span class="me1">Level</span>.<span class="me1">SEVERE</span>, <span class="kw2">null</span>, ex<span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="br0">&#125;</span>
        <span class="co1">//</span>
&nbsp;
        <span class="coMULTI">/*
         * Create and display the form
         */</span>
        java.<span class="me1">awt</span>.<span class="kw3">EventQueue</span>.<span class="me1">invokeLater</span><span class="br0">&#40;</span><span class="kw1">new</span> <span class="kw3">Runnable</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp;
            <span class="kw1">public</span> <span class="kw4">void</span> run<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                <span class="kw1">new</span> RunescapeBestiary<span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">setVisible</span><span class="br0">&#40;</span><span class="kw2">true</span><span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="br0">&#125;</span>
        <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">private</span> <span class="kw1">static</span> <span class="kw3">String</span> readUrl<span class="br0">&#40;</span><span class="kw3">String</span> urlString<span class="br0">&#41;</span> <span class="kw1">throws</span> <span class="kw3">Exception</span> <span class="br0">&#123;</span>
        <span class="kw3">BufferedReader</span> reader <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">;</span>
        <span class="kw1">try</span> <span class="br0">&#123;</span>
            <span class="kw3">URL</span> url <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw3">URL</span><span class="br0">&#40;</span>urlString<span class="br0">&#41;</span><span class="sy0">;</span>
            reader <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw3">BufferedReader</span><span class="br0">&#40;</span><span class="kw1">new</span> <span class="kw3">InputStreamReader</span><span class="br0">&#40;</span>url.<span class="me1">openStream</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            StringBuilder buffer <span class="sy0">=</span> <span class="kw1">new</span> StringBuilder<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="kw4">int</span> read<span class="sy0">;</span>
            <span class="kw4">char</span><span class="br0">&#91;</span><span class="br0">&#93;</span> chars <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw4">char</span><span class="br0">&#91;</span><span class="nu0">1024</span><span class="br0">&#93;</span><span class="sy0">;</span>
            <span class="kw1">while</span> <span class="br0">&#40;</span><span class="br0">&#40;</span>read <span class="sy0">=</span> reader.<span class="me1">read</span><span class="br0">&#40;</span>chars<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="sy0">!=</span> <span class="sy0">-</span><span class="nu0">1</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                buffer.<span class="me1">append</span><span class="br0">&#40;</span>chars, <span class="nu0">0</span>, read<span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="br0">&#125;</span>
&nbsp;
            <span class="kw1">return</span> buffer.<span class="me1">toString</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="br0">&#125;</span> <span class="kw1">finally</span> <span class="br0">&#123;</span>
            <span class="kw1">if</span> <span class="br0">&#40;</span>reader <span class="sy0">!=</span> <span class="kw2">null</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                reader.<span class="me1">close</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="br0">&#125;</span>
        <span class="br0">&#125;</span>
    <span class="br0">&#125;</span>
    <span class="co1">// Variables declaration - do not modify                     </span>
    <span class="kw1">private</span> javax.<span class="me1">swing</span>.<span class="kw3">JMenu</span> jMenu1<span class="sy0">;</span>
    <span class="kw1">private</span> javax.<span class="me1">swing</span>.<span class="kw3">JMenuBar</span> jMenuBar1<span class="sy0">;</span>
    <span class="kw1">private</span> javax.<span class="me1">swing</span>.<span class="kw3">JProgressBar</span> jProgressBar1<span class="sy0">;</span>
    <span class="kw1">private</span> javax.<span class="me1">swing</span>.<span class="kw3">JScrollPane</span> jScrollPane1<span class="sy0">;</span>
    <span class="kw1">private</span> javax.<span class="me1">swing</span>.<span class="kw3">JTree</span> jTree1<span class="sy0">;</span>
    <span class="kw1">private</span> javax.<span class="me1">swing</span>.<span class="kw3">JMenuItem</span> updateMenuItem<span class="sy0">;</span>
    <span class="co1">// End of variables declaration                   </span>
&nbsp;
    <span class="kw1">class</span> UpdateTask <span class="kw1">extends</span> SwingWorker<span class="sy0">&amp;</span>lt<span class="sy0">;</span><span class="kw3">Integer</span>, Object<span class="sy0">&amp;</span>gt<span class="sy0">;</span> <span class="br0">&#123;</span>
&nbsp;
        <span class="kw4">int</span> count<span class="sy0">;</span>
&nbsp;
        @Override
        <span class="kw1">public</span> <span class="kw3">Integer</span> doInBackground<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
            updateMenuItem.<span class="me1">setEnabled</span><span class="br0">&#40;</span><span class="kw2">false</span><span class="br0">&#41;</span><span class="sy0">;</span>
            setTitle<span class="br0">&#40;</span>TITLE <span class="sy0">+</span> <span class="st0">&quot; UPDATING LIST&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw4">int</span> i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0">&amp;</span>lt<span class="sy0">;</span> <span class="nu0">26</span><span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp;
                updateNode<span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw3">DefaultMutableTreeNode</span><span class="br0">&#41;</span> <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw3">DefaultTreeModel</span><span class="br0">&#41;</span> jTree1.<span class="me1">getModel</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">getChild</span><span class="br0">&#40;</span>bestiaryRootNode, i<span class="br0">&#41;</span>, i<span class="br0">&#41;</span><span class="sy0">;</span>
                <span class="kw1">this</span>.<span class="me1">setProgress</span><span class="br0">&#40;</span><span class="nu0">100</span> <span class="sy0">*</span> i <span class="sy0">/</span> <span class="nu0">25</span><span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="br0">&#125;</span>
&nbsp;
            setTitle<span class="br0">&#40;</span>TITLE <span class="sy0">+</span> <span class="st0">&quot; UPDATING Bestiary Data&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw4">int</span> i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0">&amp;</span>lt<span class="sy0">;</span> <span class="nu0">26</span><span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                updateBeastData<span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw3">DefaultMutableTreeNode</span><span class="br0">&#41;</span> <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw3">DefaultTreeModel</span><span class="br0">&#41;</span> jTree1.<span class="me1">getModel</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">getChild</span><span class="br0">&#40;</span>bestiaryRootNode, i<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                <span class="kw1">this</span>.<span class="me1">setProgress</span><span class="br0">&#40;</span><span class="nu0">100</span> <span class="sy0">*</span> i <span class="sy0">/</span> <span class="nu0">25</span><span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="br0">&#125;</span>
            <span class="kw1">return</span> count<span class="sy0">;</span>
        <span class="br0">&#125;</span>
&nbsp;
        @Override
        <span class="kw1">protected</span> <span class="kw4">void</span> done<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp;
            <span class="kw1">try</span> <span class="br0">&#123;</span>
                setTitle<span class="br0">&#40;</span>TITLE <span class="sy0">+</span> <span class="st0">&quot; Mob Count: &quot;</span> <span class="sy0">+</span> get<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span><span class="kw3">InterruptedException</span> ex<span class="br0">&#41;</span> <span class="br0">&#123;</span>
            <span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span>ExecutionException ex<span class="br0">&#41;</span> <span class="br0">&#123;</span>
            <span class="br0">&#125;</span>
            updateMenuItem.<span class="me1">setEnabled</span><span class="br0">&#40;</span><span class="kw2">true</span><span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="br0">&#125;</span>
&nbsp;
        <span class="kw1">private</span> <span class="kw4">void</span> updateNode<span class="br0">&#40;</span><span class="kw3">DefaultMutableTreeNode</span> child, <span class="kw4">int</span> index<span class="br0">&#41;</span> <span class="br0">&#123;</span>
            Gson gson <span class="sy0">=</span> <span class="kw1">new</span> Gson<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            JsonParser jp <span class="sy0">=</span> <span class="kw1">new</span> JsonParser<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
            JsonArray ja <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">;</span>
            <span class="kw1">try</span> <span class="br0">&#123;</span>
                ja <span class="sy0">=</span> jp.<span class="me1">parse</span><span class="br0">&#40;</span>readUrl<span class="br0">&#40;</span><span class="st0">&quot;http://services.runescape.com/m=itemdb_rs/bestiary/bestiaryNames.json?letter=&quot;</span> <span class="sy0">+</span> alphabet<span class="br0">&#91;</span>index<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">getAsJsonArray</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span><span class="kw3">Exception</span> ex<span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp;
                <span class="kw1">return</span><span class="sy0">;</span>
            <span class="br0">&#125;</span>
            <span class="kw4">int</span> size <span class="sy0">=</span> ja.<span class="me1">size</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="kw4">int</span> idx <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
            <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw4">int</span> i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0">&amp;</span>lt<span class="sy0">;</span> size<span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                JsonObject jo <span class="sy0">=</span> ja.<span class="me1">get</span><span class="br0">&#40;</span>i<span class="br0">&#41;</span>.<span class="me1">getAsJsonObject</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
                <span class="kw1">if</span> <span class="br0">&#40;</span>jo.<span class="me1">has</span><span class="br0">&#40;</span><span class="st0">&quot;npcs&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                    JsonArray npcArray <span class="sy0">=</span> jo.<span class="me1">getAsJsonArray</span><span class="br0">&#40;</span><span class="st0">&quot;npcs&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                    <span class="kw3">DefaultMutableTreeNode</span> groupNode <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw3">DefaultMutableTreeNode</span><span class="br0">&#40;</span>jo.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">&quot;dupe&quot;</span><span class="br0">&#41;</span>.<span class="me1">getAsString</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                    <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw3">DefaultTreeModel</span><span class="br0">&#41;</span> jTree1.<span class="me1">getModel</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">insertNodeInto</span><span class="br0">&#40;</span>groupNode, child, idx<span class="sy0">++</span><span class="br0">&#41;</span><span class="sy0">;</span>
                    <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw4">int</span> x <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> x <span class="sy0">&amp;</span>lt<span class="sy0">;</span> npcArray.<span class="me1">size</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span> x<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                        BestiaryName bn <span class="sy0">=</span> gson.<span class="me1">fromJson</span><span class="br0">&#40;</span>npcArray.<span class="me1">get</span><span class="br0">&#40;</span>x<span class="br0">&#41;</span>, BestiaryName.<span class="kw1">class</span><span class="br0">&#41;</span><span class="sy0">;</span>
                        <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw3">DefaultTreeModel</span><span class="br0">&#41;</span> jTree1.<span class="me1">getModel</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">insertNodeInto</span><span class="br0">&#40;</span><span class="kw1">new</span> <span class="kw3">DefaultMutableTreeNode</span><span class="br0">&#40;</span>bn<span class="br0">&#41;</span>, groupNode, x<span class="br0">&#41;</span><span class="sy0">;</span>
                        count<span class="sy0">++;</span>
                    <span class="br0">&#125;</span>
                <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span>
&nbsp;
                    BestiaryName bn <span class="sy0">=</span> gson.<span class="me1">fromJson</span><span class="br0">&#40;</span>jo, BestiaryName.<span class="kw1">class</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
                    <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw3">DefaultTreeModel</span><span class="br0">&#41;</span> jTree1.<span class="me1">getModel</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">insertNodeInto</span><span class="br0">&#40;</span><span class="kw1">new</span> <span class="kw3">DefaultMutableTreeNode</span><span class="br0">&#40;</span>bn<span class="br0">&#41;</span>, child, idx<span class="sy0">++</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
                    count<span class="sy0">++;</span>
                <span class="br0">&#125;</span>
&nbsp;
            <span class="br0">&#125;</span>
&nbsp;
        <span class="br0">&#125;</span>
&nbsp;
        <span class="kw1">private</span> <span class="kw4">void</span> updateBeastData<span class="br0">&#40;</span><span class="kw3">DefaultMutableTreeNode</span> child<span class="br0">&#41;</span> <span class="br0">&#123;</span>
            <span class="kw4">int</span> size <span class="sy0">=</span> child.<span class="me1">getChildCount</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw4">int</span> i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0">&amp;</span>lt<span class="sy0">;</span> size<span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>                 <span class="kw3">Object</span> o <span class="sy0">=</span> child.<span class="me1">getChildAt</span><span class="br0">&#40;</span>i<span class="br0">&#41;</span><span class="sy0">;</span>                 <span class="kw1">if</span> <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw3">DefaultMutableTreeNode</span><span class="br0">&#41;</span> o<span class="br0">&#41;</span>.<span class="me1">getChildCount</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">&amp;</span>gt<span class="sy0">;</span> <span class="nu0">0</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                    updateBeastData<span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw3">DefaultMutableTreeNode</span><span class="br0">&#41;</span> o<span class="br0">&#41;</span><span class="sy0">;</span>
                <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span>
&nbsp;
                    parseBeastData<span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw3">DefaultMutableTreeNode</span><span class="br0">&#41;</span> o<span class="br0">&#41;</span><span class="sy0">;</span>
                <span class="br0">&#125;</span>
            <span class="br0">&#125;</span>
        <span class="br0">&#125;</span>
&nbsp;
        <span class="kw1">private</span> <span class="kw4">void</span> parseBeastData<span class="br0">&#40;</span><span class="kw3">DefaultMutableTreeNode</span> node<span class="br0">&#41;</span> <span class="br0">&#123;</span>
            JsonParser jp <span class="sy0">=</span> <span class="kw1">new</span> JsonParser<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
            JsonObject jo <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">;</span>
            <span class="kw1">try</span> <span class="br0">&#123;</span>
                jo <span class="sy0">=</span> jp.<span class="me1">parse</span><span class="br0">&#40;</span>readUrl<span class="br0">&#40;</span><span class="st0">&quot;http://services.runescape.com/m=itemdb_rs/bestiary/beastData.json?beastid=&quot;</span> <span class="sy0">+</span> <span class="br0">&#40;</span><span class="br0">&#40;</span>BestiaryName<span class="br0">&#41;</span> node.<span class="me1">getUserObject</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">getValue</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">getAsJsonObject</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
            <span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span><span class="kw3">Exception</span> ex<span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp;
                <span class="kw1">return</span><span class="sy0">;</span>
            <span class="br0">&#125;</span>
            <span class="kw4">int</span> idx <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
            <span class="kw1">for</span> <span class="br0">&#40;</span>Entry<span class="sy0">&amp;</span>lt<span class="sy0">;</span><span class="kw3">String</span>, JsonElement<span class="sy0">&amp;</span>gt<span class="sy0">;</span> e <span class="sy0">:</span> jo.<span class="me1">entrySet</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                insertBeastDataNode<span class="br0">&#40;</span>node, e.<span class="me1">getKey</span><span class="br0">&#40;</span><span class="br0">&#41;</span>, e.<span class="me1">getValue</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
            <span class="br0">&#125;</span>
        <span class="br0">&#125;</span>
&nbsp;
        <span class="kw1">private</span> <span class="kw4">void</span> insertBeastDataNode<span class="br0">&#40;</span><span class="kw3">DefaultMutableTreeNode</span> parent, <span class="kw3">String</span> key, JsonElement value<span class="br0">&#41;</span> <span class="br0">&#123;</span>
            <span class="kw1">if</span> <span class="br0">&#40;</span>value.<span class="me1">isJsonObject</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                <span class="kw3">DefaultMutableTreeNode</span> dataCat <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw3">DefaultMutableTreeNode</span><span class="br0">&#40;</span>key<span class="br0">&#41;</span><span class="sy0">;</span>
                <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw3">DefaultTreeModel</span><span class="br0">&#41;</span> jTree1.<span class="me1">getModel</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">insertNodeInto</span><span class="br0">&#40;</span>dataCat, parent, parent.<span class="me1">getChildCount</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                <span class="kw1">for</span> <span class="br0">&#40;</span>Entry<span class="sy0">&amp;</span>lt<span class="sy0">;</span><span class="kw3">String</span>, JsonElement<span class="sy0">&amp;</span>gt<span class="sy0">;</span> e <span class="sy0">:</span> value.<span class="me1">getAsJsonObject</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">entrySet</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp;
                    insertBeastDataNode<span class="br0">&#40;</span>dataCat, e.<span class="me1">getKey</span><span class="br0">&#40;</span><span class="br0">&#41;</span>, e.<span class="me1">getValue</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                <span class="br0">&#125;</span>
            <span class="br0">&#125;</span>
            <span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>value.<span class="me1">isJsonArray</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
                <span class="kw3">DefaultMutableTreeNode</span> dataCat <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw3">DefaultMutableTreeNode</span><span class="br0">&#40;</span>key<span class="br0">&#41;</span><span class="sy0">;</span>
                <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw3">DefaultTreeModel</span><span class="br0">&#41;</span> jTree1.<span class="me1">getModel</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">insertNodeInto</span><span class="br0">&#40;</span>dataCat, parent, parent.<span class="me1">getChildCount</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                JsonArray a <span class="sy0">=</span> value.<span class="me1">getAsJsonArray</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                <span class="kw4">int</span> size <span class="sy0">=</span> a.<span class="me1">size</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                <span class="kw1">for</span><span class="br0">&#40;</span><span class="kw4">int</span> i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0">&amp;</span>lt<span class="sy0">;</span> size<span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
&nbsp;
                     <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw3">DefaultTreeModel</span><span class="br0">&#41;</span> jTree1.<span class="me1">getModel</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">insertNodeInto</span><span class="br0">&#40;</span><span class="kw1">new</span> <span class="kw3">DefaultMutableTreeNode</span><span class="br0">&#40;</span>a.<span class="me1">get</span><span class="br0">&#40;</span>i<span class="br0">&#41;</span><span class="br0">&#41;</span>, dataCat,i<span class="br0">&#41;</span><span class="sy0">;</span>
                <span class="br0">&#125;</span>
            <span class="br0">&#125;</span>
            <span class="kw1">else</span> <span class="br0">&#123;</span>
                <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw3">DefaultTreeModel</span><span class="br0">&#41;</span> jTree1.<span class="me1">getModel</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">insertNodeInto</span><span class="br0">&#40;</span><span class="kw1">new</span> <span class="kw3">DefaultMutableTreeNode</span><span class="br0">&#40;</span>key <span class="sy0">+</span> <span class="st0">&quot;:&quot;</span> <span class="sy0">+</span> value<span class="br0">&#41;</span>, parent, parent.<span class="me1">getChildCount</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="br0">&#125;</span>
        <span class="br0">&#125;</span>
    <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div></div></div></div></div></div></div>




<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="java"><pre class="de1"><span class="kw1">package</span> <span class="co2">org.silabsoft.runescape.bestiary</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">import</span> <span class="co2">com.google.gson.*</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.beans.PropertyChangeEvent</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.beans.PropertyChangeListener</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.io.BufferedReader</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.io.InputStreamReader</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.net.URL</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.util.Map.Entry</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.util.concurrent.ExecutionException</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">javax.swing.SwingWorker</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">javax.swing.tree.DefaultMutableTreeNode</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">javax.swing.tree.DefaultTreeModel</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">org.silabsoft.runescape.bestiary.model.BestiaryName</span><span class="sy0">;</span>
&nbsp;
<span class="co3">/**
 *
 * @author Silabsoft
 */</span>
<span class="kw1">public</span> <span class="kw1">class</span> RunescapeBestiary <span class="kw1">extends</span> javax.<span class="me1">swing</span>.<span class="kw3">JFrame</span> <span class="br0">&#123;</span>
&nbsp;
    <span class="kw1">public</span> <span class="kw1">static</span> <span class="kw1">final</span> <span class="kw3">String</span> TITLE <span class="sy0">=</span> <span class="st0">&quot;Silabsoft's Runescape Bestiary Viewer&quot;</span><span class="sy0">;</span>
    <span class="kw1">private</span> <span class="kw1">final</span> <span class="kw3">DefaultMutableTreeNode</span> bestiaryRootNode<span class="sy0">;</span>
    <span class="kw1">public</span> <span class="kw1">static</span> <span class="kw1">final</span> <span class="kw3">String</span> alphabet<span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw3">String</span><span class="br0">&#91;</span><span class="br0">&#93;</span><span class="br0">&#123;</span><span class="st0">&quot;A&quot;</span>, <span class="st0">&quot;B&quot;</span>, <span class="st0">&quot;C&quot;</span>, <span class="st0">&quot;D&quot;</span>, <span class="st0">&quot;E&quot;</span>, <span class="st0">&quot;F&quot;</span>, <span class="st0">&quot;G&quot;</span>, <span class="st0">&quot;H&quot;</span>, <span class="st0">&quot;I&quot;</span>, <span class="st0">&quot;J&quot;</span>, <span class="st0">&quot;K&quot;</span>, <span class="st0">&quot;L&quot;</span>, <span class="st0">&quot;M&quot;</span>, <span class="st0">&quot;N&quot;</span>, <span class="st0">&quot;O&quot;</span>, <span class="st0">&quot;P&quot;</span>, <span class="st0">&quot;Q&quot;</span>, <span class="st0">&quot;R&quot;</span>, <span class="st0">&quot;S&quot;</span>, <span class="st0">&quot;T&quot;</span>, <span class="st0">&quot;U&quot;</span>, <span class="st0">&quot;V&quot;</span>, <span class="st0">&quot;W&quot;</span>, <span class="st0">&quot;X&quot;</span>, <span class="st0">&quot;Y&quot;</span>, <span class="st0">&quot;Z&quot;</span><span class="br0">&#125;</span><span class="sy0">;</span>
&nbsp;
    <span class="co3">/**
     * Creates new form RunescapeBestiary
     */</span>
    <span class="kw1">public</span> RunescapeBestiary<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        bestiaryRootNode <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw3">DefaultMutableTreeNode</span><span class="br0">&#40;</span><span class="st0">&quot;Bestiary List&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
        <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw3">String</span> s <span class="sy0">:</span> alphabet<span class="br0">&#41;</span> <span class="br0">&#123;</span>
            bestiaryRootNode.<span class="me1">add</span><span class="br0">&#40;</span><span class="kw1">new</span> <span class="kw3">DefaultMutableTreeNode</span><span class="br0">&#40;</span>s<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="br0">&#125;</span>
        initComponents<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
    <span class="br0">&#125;</span>
&nbsp;
    <span class="co3">/**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */</span>
    @SuppressWarnings<span class="br0">&#40;</span><span class="st0">&quot;unchecked&quot;</span><span class="br0">&#41;</span>
    <span class="co1">//                           </span>
    <span class="kw1">private</span> <span class="kw4">void</span> initComponents<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp;
        jScrollPane1 <span class="sy0">=</span> <span class="kw1">new</span> javax.<span class="me1">swing</span>.<span class="kw3">JScrollPane</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        jTree1 <span class="sy0">=</span> <span class="kw1">new</span> javax.<span class="me1">swing</span>.<span class="kw3">JTree</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        jProgressBar1 <span class="sy0">=</span> <span class="kw1">new</span> javax.<span class="me1">swing</span>.<span class="kw3">JProgressBar</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        jMenuBar1 <span class="sy0">=</span> <span class="kw1">new</span> javax.<span class="me1">swing</span>.<span class="kw3">JMenuBar</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        jMenu1 <span class="sy0">=</span> <span class="kw1">new</span> javax.<span class="me1">swing</span>.<span class="kw3">JMenu</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        updateMenuItem <span class="sy0">=</span> <span class="kw1">new</span> javax.<span class="me1">swing</span>.<span class="kw3">JMenuItem</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
        setDefaultCloseOperation<span class="br0">&#40;</span>javax.<span class="me1">swing</span>.<span class="kw3">WindowConstants</span>.<span class="me1">EXIT_ON_CLOSE</span><span class="br0">&#41;</span><span class="sy0">;</span>
        setTitle<span class="br0">&#40;</span>TITLE<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
        jTree1.<span class="me1">setModel</span><span class="br0">&#40;</span><span class="kw1">new</span> javax.<span class="me1">swing</span>.<span class="me1">tree</span>.<span class="kw3">DefaultTreeModel</span><span class="br0">&#40;</span>bestiaryRootNode<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        jScrollPane1.<span class="me1">setViewportView</span><span class="br0">&#40;</span>jTree1<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
        jMenu1.<span class="me1">setText</span><span class="br0">&#40;</span><span class="st0">&quot;File&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
        updateMenuItem.<span class="me1">setAccelerator</span><span class="br0">&#40;</span>javax.<span class="me1">swing</span>.<span class="kw3">KeyStroke</span>.<span class="me1">getKeyStroke</span><span class="br0">&#40;</span>java.<span class="me1">awt</span>.<span class="me1">event</span>.<span class="kw3">KeyEvent</span>.<span class="me1">VK_U</span>, java.<span class="me1">awt</span>.<span class="me1">event</span>.<span class="kw3">InputEvent</span>.<span class="me1">CTRL_MASK</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        updateMenuItem.<span class="me1">setText</span><span class="br0">&#40;</span><span class="st0">&quot;Update&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        updateMenuItem.<span class="me1">addActionListener</span><span class="br0">&#40;</span><span class="kw1">new</span> java.<span class="me1">awt</span>.<span class="me1">event</span>.<span class="kw3">ActionListener</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
            <span class="kw1">public</span> <span class="kw4">void</span> actionPerformed<span class="br0">&#40;</span>java.<span class="me1">awt</span>.<span class="me1">event</span>.<span class="kw3">ActionEvent</span> evt<span class="br0">&#41;</span> <span class="br0">&#123;</span>
                updateMenuItemActionPerformed<span class="br0">&#40;</span>evt<span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="br0">&#125;</span>
        <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        jMenu1.<span class="me1">add</span><span class="br0">&#40;</span>updateMenuItem<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
        jMenuBar1.<span class="me1">add</span><span class="br0">&#40;</span>jMenu1<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
        setJMenuBar<span class="br0">&#40;</span>jMenuBar1<span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
        javax.<span class="me1">swing</span>.<span class="me1">GroupLayout</span> layout <span class="sy0">=</span> <span class="kw1">new</span> javax.<span class="me1">swing</span>.<span class="me1">GroupLayout</span><span class="br0">&#40;</span>getContentPane<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        getContentPane<span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">setLayout</span><span class="br0">&#40;</span>layout<span class="br0">&#41;</span><span class="sy0">;</span>
        layout.<span class="me1">setHorizontalGroup</span><span class="br0">&#40;</span>
            layout.<span class="me1">createParallelGroup</span><span class="br0">&#40;</span>javax.<span class="me1">swing</span>.<span class="me1">GroupLayout</span>.<span class="me1">Alignment</span>.<span class="me1">LEADING</span><span class="br0">&#41;</span>
            .<span class="me1">addComponent</span><span class="br0">&#40;</span>jProgressBar1, javax.<span class="me1">swing</span>.<span class="me1">GroupLayout</span>.<span class="me1">DEFAULT_SIZE</span>, <span class="nu0">529</span>, <span class="kw3">Short</span>.<span class="me1">MAX_VALUE</span><span class="br0">&#41;</span>
            .<span class="me1">addComponent</span><span class="br0">&#40;</span>jScrollPane1<span class="br0">&#41;</span>
        <span class="br0">&#41;</span><span class="sy0">;</span>
        layout.<span class="me1">setVerticalGroup</span><span class="br0">&#40;</span>
            layout.<span class="me1">createParallelGroup</span><span class="br0">&#40;</span>javax.<span class="me1">swing</span>.<span class="me1">GroupLayout</span>.<span class="me1">Alignment</span>.<span class="me1">LEADING</span><span class="br0">&#41;</span>
            .<span class="me1">addGroup</span><span class="br0">&#40;</span>layout.<span class="me1">createSequentialGroup</span><span class="br0">&#40;</span><span class="br0">&#41;</span>
                .<span class="me1">addComponent</span><span class="br0">&#40;</span>jScrollPane1, javax.<span class="me1">swing</span>.<span class="me1">GroupLayout</span>.<span class="me1">DEFAULT_SIZE</span>, <span class="nu0">254</span>, <span class="kw3">Short</span>.<span class="me1">MAX_VALUE</span><span class="br0">&#41;</span>
                .<span class="me1">addPreferredGap</span><span class="br0">&#40;</span>javax.<span class="me1">swing</span>.<span class="me1">LayoutStyle</span>.<span class="me1">ComponentPlacement</span>.<span class="me1">RELATED</span><span class="br0">&#41;</span>
                .<span class="me1">addComponent</span><span class="br0">&#40;</span>jProgressBar1, javax.<span class="me1">swing</span>.<span class="me1">GroupLayout</span>.<span class="me1">PREFERRED_SIZE</span>, javax.<span class="me1">swing</span>.<span class="me1">GroupLayout</span>.<span class="me1">DEFAULT_SIZE</span>, javax.<span class="me1">swing</span>.<span class="me1">GroupLayout</span>.<span class="me1">PREFERRED_SIZE</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
        <span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
        pack<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span><span class="co1">//                         </span>
    <span class="kw4">int</span> index <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
    <span class="kw1">private</span> <span class="kw4">void</span> updateMenuItemActionPerformed<span class="br0">&#40;</span>java.<span class="me1">awt</span>.<span class="me1">event</span>.<span class="kw3">ActionEvent</span> evt<span class="br0">&#41;</span> <span class="br0">&#123;</span>                                               
        UpdateTask updateTask <span class="sy0">=</span> <span class="kw1">new</span> UpdateTask<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        updateTask.<span class="me1">addPropertyChangeListener</span><span class="br0">&#40;</span>
                <span class="kw1">new</span> <span class="kw3">PropertyChangeListener</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp;
                    <span class="kw1">public</span> <span class="kw4">void</span> propertyChange<span class="br0">&#40;</span><span class="kw3">PropertyChangeEvent</span> evt<span class="br0">&#41;</span> <span class="br0">&#123;</span>
                        <span class="kw1">if</span> <span class="br0">&#40;</span><span class="st0">&quot;progress&quot;</span>.<span class="me1">equals</span><span class="br0">&#40;</span>evt.<span class="me1">getPropertyName</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                            jProgressBar1.<span class="me1">setValue</span><span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw3">Integer</span><span class="br0">&#41;</span> evt.<span class="me1">getNewValue</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                        <span class="br0">&#125;</span>
                    <span class="br0">&#125;</span>
                <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        updateTask.<span class="me1">execute</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>                                              
&nbsp;
    <span class="co3">/**
     * @param args the command line arguments
     */</span>
    <span class="kw1">public</span> <span class="kw1">static</span> <span class="kw4">void</span> main<span class="br0">&#40;</span><span class="kw3">String</span> args<span class="br0">&#91;</span><span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="coMULTI">/*
         * Set the Nimbus look and feel
         */</span>
        <span class="co1">//</span>
        <span class="coMULTI">/*
         * If Nimbus (introduced in Java SE 6) is not available, stay with the
         * default look and feel. For details see
         * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */</span>
        <span class="kw1">try</span> <span class="br0">&#123;</span>
            <span class="kw1">for</span> <span class="br0">&#40;</span>javax.<span class="me1">swing</span>.<span class="kw3">UIManager.<span class="me1">LookAndFeelInfo</span></span> info <span class="sy0">:</span> javax.<span class="me1">swing</span>.<span class="kw3">UIManager</span>.<span class="me1">getInstalledLookAndFeels</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                <span class="kw1">if</span> <span class="br0">&#40;</span><span class="st0">&quot;Nimbus&quot;</span>.<span class="me1">equals</span><span class="br0">&#40;</span>info.<span class="me1">getName</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                    javax.<span class="me1">swing</span>.<span class="kw3">UIManager</span>.<span class="me1">setLookAndFeel</span><span class="br0">&#40;</span>info.<span class="me1">getClassName</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                    <span class="kw1">break</span><span class="sy0">;</span>
                <span class="br0">&#125;</span>
            <span class="br0">&#125;</span>
        <span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span><span class="kw3">ClassNotFoundException</span> ex<span class="br0">&#41;</span> <span class="br0">&#123;</span>
            java.<span class="me1">util</span>.<span class="me1">logging</span>.<span class="me1">Logger</span>.<span class="me1">getLogger</span><span class="br0">&#40;</span>RunescapeBestiary.<span class="kw1">class</span>.<span class="me1">getName</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">log</span><span class="br0">&#40;</span>java.<span class="me1">util</span>.<span class="me1">logging</span>.<span class="me1">Level</span>.<span class="me1">SEVERE</span>, <span class="kw2">null</span>, ex<span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span><span class="kw3">InstantiationException</span> ex<span class="br0">&#41;</span> <span class="br0">&#123;</span>
            java.<span class="me1">util</span>.<span class="me1">logging</span>.<span class="me1">Logger</span>.<span class="me1">getLogger</span><span class="br0">&#40;</span>RunescapeBestiary.<span class="kw1">class</span>.<span class="me1">getName</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">log</span><span class="br0">&#40;</span>java.<span class="me1">util</span>.<span class="me1">logging</span>.<span class="me1">Level</span>.<span class="me1">SEVERE</span>, <span class="kw2">null</span>, ex<span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span><span class="kw3">IllegalAccessException</span> ex<span class="br0">&#41;</span> <span class="br0">&#123;</span>
            java.<span class="me1">util</span>.<span class="me1">logging</span>.<span class="me1">Logger</span>.<span class="me1">getLogger</span><span class="br0">&#40;</span>RunescapeBestiary.<span class="kw1">class</span>.<span class="me1">getName</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">log</span><span class="br0">&#40;</span>java.<span class="me1">util</span>.<span class="me1">logging</span>.<span class="me1">Level</span>.<span class="me1">SEVERE</span>, <span class="kw2">null</span>, ex<span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span>javax.<span class="me1">swing</span>.<span class="kw3">UnsupportedLookAndFeelException</span> ex<span class="br0">&#41;</span> <span class="br0">&#123;</span>
            java.<span class="me1">util</span>.<span class="me1">logging</span>.<span class="me1">Logger</span>.<span class="me1">getLogger</span><span class="br0">&#40;</span>RunescapeBestiary.<span class="kw1">class</span>.<span class="me1">getName</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">log</span><span class="br0">&#40;</span>java.<span class="me1">util</span>.<span class="me1">logging</span>.<span class="me1">Level</span>.<span class="me1">SEVERE</span>, <span class="kw2">null</span>, ex<span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="br0">&#125;</span>
        <span class="co1">//</span>
&nbsp;
        <span class="coMULTI">/*
         * Create and display the form
         */</span>
        java.<span class="me1">awt</span>.<span class="kw3">EventQueue</span>.<span class="me1">invokeLater</span><span class="br0">&#40;</span><span class="kw1">new</span> <span class="kw3">Runnable</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp;
            <span class="kw1">public</span> <span class="kw4">void</span> run<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                <span class="kw1">new</span> RunescapeBestiary<span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">setVisible</span><span class="br0">&#40;</span><span class="kw2">true</span><span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="br0">&#125;</span>
        <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">private</span> <span class="kw1">static</span> <span class="kw3">String</span> readUrl<span class="br0">&#40;</span><span class="kw3">String</span> urlString<span class="br0">&#41;</span> <span class="kw1">throws</span> <span class="kw3">Exception</span> <span class="br0">&#123;</span>
        <span class="kw3">BufferedReader</span> reader <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">;</span>
        <span class="kw1">try</span> <span class="br0">&#123;</span>
            <span class="kw3">URL</span> url <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw3">URL</span><span class="br0">&#40;</span>urlString<span class="br0">&#41;</span><span class="sy0">;</span>
            reader <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw3">BufferedReader</span><span class="br0">&#40;</span><span class="kw1">new</span> <span class="kw3">InputStreamReader</span><span class="br0">&#40;</span>url.<span class="me1">openStream</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            StringBuilder buffer <span class="sy0">=</span> <span class="kw1">new</span> StringBuilder<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="kw4">int</span> read<span class="sy0">;</span>
            <span class="kw4">char</span><span class="br0">&#91;</span><span class="br0">&#93;</span> chars <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw4">char</span><span class="br0">&#91;</span><span class="nu0">1024</span><span class="br0">&#93;</span><span class="sy0">;</span>
            <span class="kw1">while</span> <span class="br0">&#40;</span><span class="br0">&#40;</span>read <span class="sy0">=</span> reader.<span class="me1">read</span><span class="br0">&#40;</span>chars<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="sy0">!=</span> <span class="sy0">-</span><span class="nu0">1</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                buffer.<span class="me1">append</span><span class="br0">&#40;</span>chars, <span class="nu0">0</span>, read<span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="br0">&#125;</span>
&nbsp;
            <span class="kw1">return</span> buffer.<span class="me1">toString</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="br0">&#125;</span> <span class="kw1">finally</span> <span class="br0">&#123;</span>
            <span class="kw1">if</span> <span class="br0">&#40;</span>reader <span class="sy0">!=</span> <span class="kw2">null</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                reader.<span class="me1">close</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="br0">&#125;</span>
        <span class="br0">&#125;</span>
    <span class="br0">&#125;</span>
    <span class="co1">// Variables declaration - do not modify                     </span>
    <span class="kw1">private</span> javax.<span class="me1">swing</span>.<span class="kw3">JMenu</span> jMenu1<span class="sy0">;</span>
    <span class="kw1">private</span> javax.<span class="me1">swing</span>.<span class="kw3">JMenuBar</span> jMenuBar1<span class="sy0">;</span>
    <span class="kw1">private</span> javax.<span class="me1">swing</span>.<span class="kw3">JProgressBar</span> jProgressBar1<span class="sy0">;</span>
    <span class="kw1">private</span> javax.<span class="me1">swing</span>.<span class="kw3">JScrollPane</span> jScrollPane1<span class="sy0">;</span>
    <span class="kw1">private</span> javax.<span class="me1">swing</span>.<span class="kw3">JTree</span> jTree1<span class="sy0">;</span>
    <span class="kw1">private</span> javax.<span class="me1">swing</span>.<span class="kw3">JMenuItem</span> updateMenuItem<span class="sy0">;</span>
    <span class="co1">// End of variables declaration                   </span>
&nbsp;
    <span class="kw1">class</span> UpdateTask <span class="kw1">extends</span> SwingWorker<span class="sy0">&amp;</span>lt<span class="sy0">;</span><span class="kw3">Integer</span>, Object<span class="sy0">&amp;</span>gt<span class="sy0">;</span> <span class="br0">&#123;</span>
&nbsp;
        <span class="kw4">int</span> count<span class="sy0">;</span>
&nbsp;
        @Override
        <span class="kw1">public</span> <span class="kw3">Integer</span> doInBackground<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
            updateMenuItem.<span class="me1">setEnabled</span><span class="br0">&#40;</span><span class="kw2">false</span><span class="br0">&#41;</span><span class="sy0">;</span>
            setTitle<span class="br0">&#40;</span>TITLE <span class="sy0">+</span> <span class="st0">&quot; UPDATING LIST&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw4">int</span> i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0">&amp;</span>lt<span class="sy0">;</span> <span class="nu0">26</span><span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp;
                updateNode<span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw3">DefaultMutableTreeNode</span><span class="br0">&#41;</span> <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw3">DefaultTreeModel</span><span class="br0">&#41;</span> jTree1.<span class="me1">getModel</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">getChild</span><span class="br0">&#40;</span>bestiaryRootNode, i<span class="br0">&#41;</span>, i<span class="br0">&#41;</span><span class="sy0">;</span>
                <span class="kw1">this</span>.<span class="me1">setProgress</span><span class="br0">&#40;</span><span class="nu0">100</span> <span class="sy0">*</span> i <span class="sy0">/</span> <span class="nu0">25</span><span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="br0">&#125;</span>
&nbsp;
            setTitle<span class="br0">&#40;</span>TITLE <span class="sy0">+</span> <span class="st0">&quot; UPDATING Bestiary Data&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw4">int</span> i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0">&amp;</span>lt<span class="sy0">;</span> <span class="nu0">26</span><span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                updateBeastData<span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw3">DefaultMutableTreeNode</span><span class="br0">&#41;</span> <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw3">DefaultTreeModel</span><span class="br0">&#41;</span> jTree1.<span class="me1">getModel</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">getChild</span><span class="br0">&#40;</span>bestiaryRootNode, i<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                <span class="kw1">this</span>.<span class="me1">setProgress</span><span class="br0">&#40;</span><span class="nu0">100</span> <span class="sy0">*</span> i <span class="sy0">/</span> <span class="nu0">25</span><span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="br0">&#125;</span>
            <span class="kw1">return</span> count<span class="sy0">;</span>
        <span class="br0">&#125;</span>
&nbsp;
        @Override
        <span class="kw1">protected</span> <span class="kw4">void</span> done<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp;
            <span class="kw1">try</span> <span class="br0">&#123;</span>
                setTitle<span class="br0">&#40;</span>TITLE <span class="sy0">+</span> <span class="st0">&quot; Mob Count: &quot;</span> <span class="sy0">+</span> get<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span><span class="kw3">InterruptedException</span> ex<span class="br0">&#41;</span> <span class="br0">&#123;</span>
            <span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span>ExecutionException ex<span class="br0">&#41;</span> <span class="br0">&#123;</span>
            <span class="br0">&#125;</span>
            updateMenuItem.<span class="me1">setEnabled</span><span class="br0">&#40;</span><span class="kw2">true</span><span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="br0">&#125;</span>
&nbsp;
        <span class="kw1">private</span> <span class="kw4">void</span> updateNode<span class="br0">&#40;</span><span class="kw3">DefaultMutableTreeNode</span> child, <span class="kw4">int</span> index<span class="br0">&#41;</span> <span class="br0">&#123;</span>
            Gson gson <span class="sy0">=</span> <span class="kw1">new</span> Gson<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            JsonParser jp <span class="sy0">=</span> <span class="kw1">new</span> JsonParser<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
            JsonArray ja <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">;</span>
            <span class="kw1">try</span> <span class="br0">&#123;</span>
                ja <span class="sy0">=</span> jp.<span class="me1">parse</span><span class="br0">&#40;</span>readUrl<span class="br0">&#40;</span><span class="st0">&quot;http://services.runescape.com/m=itemdb_rs/bestiary/bestiaryNames.json?letter=&quot;</span> <span class="sy0">+</span> alphabet<span class="br0">&#91;</span>index<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">getAsJsonArray</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span><span class="kw3">Exception</span> ex<span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp;
                <span class="kw1">return</span><span class="sy0">;</span>
            <span class="br0">&#125;</span>
            <span class="kw4">int</span> size <span class="sy0">=</span> ja.<span class="me1">size</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="kw4">int</span> idx <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
            <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw4">int</span> i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0">&amp;</span>lt<span class="sy0">;</span> size<span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                JsonObject jo <span class="sy0">=</span> ja.<span class="me1">get</span><span class="br0">&#40;</span>i<span class="br0">&#41;</span>.<span class="me1">getAsJsonObject</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
                <span class="kw1">if</span> <span class="br0">&#40;</span>jo.<span class="me1">has</span><span class="br0">&#40;</span><span class="st0">&quot;npcs&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                    JsonArray npcArray <span class="sy0">=</span> jo.<span class="me1">getAsJsonArray</span><span class="br0">&#40;</span><span class="st0">&quot;npcs&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                    <span class="kw3">DefaultMutableTreeNode</span> groupNode <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw3">DefaultMutableTreeNode</span><span class="br0">&#40;</span>jo.<span class="me1">get</span><span class="br0">&#40;</span><span class="st0">&quot;dupe&quot;</span><span class="br0">&#41;</span>.<span class="me1">getAsString</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                    <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw3">DefaultTreeModel</span><span class="br0">&#41;</span> jTree1.<span class="me1">getModel</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">insertNodeInto</span><span class="br0">&#40;</span>groupNode, child, idx<span class="sy0">++</span><span class="br0">&#41;</span><span class="sy0">;</span>
                    <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw4">int</span> x <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> x <span class="sy0">&amp;</span>lt<span class="sy0">;</span> npcArray.<span class="me1">size</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span> x<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                        BestiaryName bn <span class="sy0">=</span> gson.<span class="me1">fromJson</span><span class="br0">&#40;</span>npcArray.<span class="me1">get</span><span class="br0">&#40;</span>x<span class="br0">&#41;</span>, BestiaryName.<span class="kw1">class</span><span class="br0">&#41;</span><span class="sy0">;</span>
                        <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw3">DefaultTreeModel</span><span class="br0">&#41;</span> jTree1.<span class="me1">getModel</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">insertNodeInto</span><span class="br0">&#40;</span><span class="kw1">new</span> <span class="kw3">DefaultMutableTreeNode</span><span class="br0">&#40;</span>bn<span class="br0">&#41;</span>, groupNode, x<span class="br0">&#41;</span><span class="sy0">;</span>
                        count<span class="sy0">++;</span>
                    <span class="br0">&#125;</span>
                <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span>
&nbsp;
                    BestiaryName bn <span class="sy0">=</span> gson.<span class="me1">fromJson</span><span class="br0">&#40;</span>jo, BestiaryName.<span class="kw1">class</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
                    <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw3">DefaultTreeModel</span><span class="br0">&#41;</span> jTree1.<span class="me1">getModel</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">insertNodeInto</span><span class="br0">&#40;</span><span class="kw1">new</span> <span class="kw3">DefaultMutableTreeNode</span><span class="br0">&#40;</span>bn<span class="br0">&#41;</span>, child, idx<span class="sy0">++</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
                    count<span class="sy0">++;</span>
                <span class="br0">&#125;</span>
&nbsp;
            <span class="br0">&#125;</span>
&nbsp;
        <span class="br0">&#125;</span>
&nbsp;
        <span class="kw1">private</span> <span class="kw4">void</span> updateBeastData<span class="br0">&#40;</span><span class="kw3">DefaultMutableTreeNode</span> child<span class="br0">&#41;</span> <span class="br0">&#123;</span>
            <span class="kw4">int</span> size <span class="sy0">=</span> child.<span class="me1">getChildCount</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw4">int</span> i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0">&amp;</span>lt<span class="sy0">;</span> size<span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>                 <span class="kw3">Object</span> o <span class="sy0">=</span> child.<span class="me1">getChildAt</span><span class="br0">&#40;</span>i<span class="br0">&#41;</span><span class="sy0">;</span>                 <span class="kw1">if</span> <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw3">DefaultMutableTreeNode</span><span class="br0">&#41;</span> o<span class="br0">&#41;</span>.<span class="me1">getChildCount</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">&amp;</span>gt<span class="sy0">;</span> <span class="nu0">0</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                    updateBeastData<span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw3">DefaultMutableTreeNode</span><span class="br0">&#41;</span> o<span class="br0">&#41;</span><span class="sy0">;</span>
                <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span>
&nbsp;
                    parseBeastData<span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw3">DefaultMutableTreeNode</span><span class="br0">&#41;</span> o<span class="br0">&#41;</span><span class="sy0">;</span>
                <span class="br0">&#125;</span>
            <span class="br0">&#125;</span>
        <span class="br0">&#125;</span>
&nbsp;
        <span class="kw1">private</span> <span class="kw4">void</span> parseBeastData<span class="br0">&#40;</span><span class="kw3">DefaultMutableTreeNode</span> node<span class="br0">&#41;</span> <span class="br0">&#123;</span>
            JsonParser jp <span class="sy0">=</span> <span class="kw1">new</span> JsonParser<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
            JsonObject jo <span class="sy0">=</span> <span class="kw2">null</span><span class="sy0">;</span>
            <span class="kw1">try</span> <span class="br0">&#123;</span>
                jo <span class="sy0">=</span> jp.<span class="me1">parse</span><span class="br0">&#40;</span>readUrl<span class="br0">&#40;</span><span class="st0">&quot;http://services.runescape.com/m=itemdb_rs/bestiary/beastData.json?beastid=&quot;</span> <span class="sy0">+</span> <span class="br0">&#40;</span><span class="br0">&#40;</span>BestiaryName<span class="br0">&#41;</span> node.<span class="me1">getUserObject</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">getValue</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">getAsJsonObject</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
            <span class="br0">&#125;</span> <span class="kw1">catch</span> <span class="br0">&#40;</span><span class="kw3">Exception</span> ex<span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp;
                <span class="kw1">return</span><span class="sy0">;</span>
            <span class="br0">&#125;</span>
            <span class="kw4">int</span> idx <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
            <span class="kw1">for</span> <span class="br0">&#40;</span>Entry<span class="sy0">&amp;</span>lt<span class="sy0">;</span><span class="kw3">String</span>, JsonElement<span class="sy0">&amp;</span>gt<span class="sy0">;</span> e <span class="sy0">:</span> jo.<span class="me1">entrySet</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                insertBeastDataNode<span class="br0">&#40;</span>node, e.<span class="me1">getKey</span><span class="br0">&#40;</span><span class="br0">&#41;</span>, e.<span class="me1">getValue</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
            <span class="br0">&#125;</span>
        <span class="br0">&#125;</span>
&nbsp;
        <span class="kw1">private</span> <span class="kw4">void</span> insertBeastDataNode<span class="br0">&#40;</span><span class="kw3">DefaultMutableTreeNode</span> parent, <span class="kw3">String</span> key, JsonElement value<span class="br0">&#41;</span> <span class="br0">&#123;</span>
            <span class="kw1">if</span> <span class="br0">&#40;</span>value.<span class="me1">isJsonObject</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                <span class="kw3">DefaultMutableTreeNode</span> dataCat <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw3">DefaultMutableTreeNode</span><span class="br0">&#40;</span>key<span class="br0">&#41;</span><span class="sy0">;</span>
                <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw3">DefaultTreeModel</span><span class="br0">&#41;</span> jTree1.<span class="me1">getModel</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">insertNodeInto</span><span class="br0">&#40;</span>dataCat, parent, parent.<span class="me1">getChildCount</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                <span class="kw1">for</span> <span class="br0">&#40;</span>Entry<span class="sy0">&amp;</span>lt<span class="sy0">;</span><span class="kw3">String</span>, JsonElement<span class="sy0">&amp;</span>gt<span class="sy0">;</span> e <span class="sy0">:</span> value.<span class="me1">getAsJsonObject</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">entrySet</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
&nbsp;
                    insertBeastDataNode<span class="br0">&#40;</span>dataCat, e.<span class="me1">getKey</span><span class="br0">&#40;</span><span class="br0">&#41;</span>, e.<span class="me1">getValue</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                <span class="br0">&#125;</span>
            <span class="br0">&#125;</span>
            <span class="kw1">else</span> <span class="kw1">if</span><span class="br0">&#40;</span>value.<span class="me1">isJsonArray</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
                <span class="kw3">DefaultMutableTreeNode</span> dataCat <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw3">DefaultMutableTreeNode</span><span class="br0">&#40;</span>key<span class="br0">&#41;</span><span class="sy0">;</span>
                <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw3">DefaultTreeModel</span><span class="br0">&#41;</span> jTree1.<span class="me1">getModel</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">insertNodeInto</span><span class="br0">&#40;</span>dataCat, parent, parent.<span class="me1">getChildCount</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                JsonArray a <span class="sy0">=</span> value.<span class="me1">getAsJsonArray</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                <span class="kw4">int</span> size <span class="sy0">=</span> a.<span class="me1">size</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                <span class="kw1">for</span><span class="br0">&#40;</span><span class="kw4">int</span> i <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0">&amp;</span>lt<span class="sy0">;</span> size<span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">&#41;</span><span class="br0">&#123;</span>
&nbsp;
                     <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw3">DefaultTreeModel</span><span class="br0">&#41;</span> jTree1.<span class="me1">getModel</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">insertNodeInto</span><span class="br0">&#40;</span><span class="kw1">new</span> <span class="kw3">DefaultMutableTreeNode</span><span class="br0">&#40;</span>a.<span class="me1">get</span><span class="br0">&#40;</span>i<span class="br0">&#41;</span><span class="br0">&#41;</span>, dataCat,i<span class="br0">&#41;</span><span class="sy0">;</span>
                <span class="br0">&#125;</span>
            <span class="br0">&#125;</span>
            <span class="kw1">else</span> <span class="br0">&#123;</span>
                <span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw3">DefaultTreeModel</span><span class="br0">&#41;</span> jTree1.<span class="me1">getModel</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">insertNodeInto</span><span class="br0">&#40;</span><span class="kw1">new</span> <span class="kw3">DefaultMutableTreeNode</span><span class="br0">&#40;</span>key <span class="sy0">+</span> <span class="st0">&quot;:&quot;</span> <span class="sy0">+</span> value<span class="br0">&#41;</span>, parent, parent.<span class="me1">getChildCount</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
            <span class="br0">&#125;</span>
        <span class="br0">&#125;</span>
    <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div></div></div></div></div></div></div>


<p>The post <a href="http://silabsoft.org/programming/java/java-runescape-bestiary-viewer/">Java Runescape Bestiary Viewer</a> appeared first on <a href="http://silabsoft.org">Silabsoft</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://silabsoft.org/programming/java/java-runescape-bestiary-viewer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oldschool Runescape Revision 3</title>
		<link>http://silabsoft.org/uncategorized/oldschool-runescape-revision-3/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=oldschool-runescape-revision-3</link>
		<comments>http://silabsoft.org/uncategorized/oldschool-runescape-revision-3/#comments</comments>
		<pubDate>Mon, 25 Feb 2013 21:02:36 +0000</pubDate>
		<dc:creator>Silabsoft</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://silabsoft.org/?p=292</guid>
		<description><![CDATA[<p>Revision 3 was released today known changes include The change for herbs from &#8220;unidentified&#8221; to &#8220;grimy&#8221; was reverted, by popular request. Trade/Challenge offers will work more reliably for players with spaces in their names. Behind-the-scenes preparatory work for a downloadable client was completed (see Accessing Old School RuneScape on the Client). Download: revision_003</p><p>The post <a href="http://silabsoft.org/uncategorized/oldschool-runescape-revision-3/">Oldschool Runescape Revision 3</a> appeared first on <a href="http://silabsoft.org">Silabsoft</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Revision 3 was released today known changes include</p>
<blockquote><p>
    The change for herbs from &#8220;unidentified&#8221; to &#8220;grimy&#8221; was reverted, by popular request.<br />
    Trade/Challenge offers will work more reliably for players with spaces in their names.<br />
    Behind-the-scenes preparatory work for a downloadable client was completed (see Accessing Old School RuneScape on the Client).</p></blockquote>
<p>Download: <a href="http://silabsoft.org/wp-content/uploads/revision_003.zip">revision_003</a></p>
<p>The post <a href="http://silabsoft.org/uncategorized/oldschool-runescape-revision-3/">Oldschool Runescape Revision 3</a> appeared first on <a href="http://silabsoft.org">Silabsoft</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://silabsoft.org/uncategorized/oldschool-runescape-revision-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>98rock log disabled</title>
		<link>http://silabsoft.org/programming/web-design/98rock-log-disabled/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=98rock-log-disabled</link>
		<comments>http://silabsoft.org/programming/web-design/98rock-log-disabled/#comments</comments>
		<pubDate>Tue, 19 Feb 2013 07:15:27 +0000</pubDate>
		<dc:creator>Silabsoft</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://silabsoft.org/?p=280</guid>
		<description><![CDATA[<p>Due to recent updates on the 98rock website I can no longer access the new log page without a proxy (U.S. copyright protection at its best) When I have time to view the new log page I will update my script. I will also release a download of the old database for anyone that is [...]</p><p>The post <a href="http://silabsoft.org/programming/web-design/98rock-log-disabled/">98rock log disabled</a> appeared first on <a href="http://silabsoft.org">Silabsoft</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Due to recent updates on the 98rock website I can no longer access the new log page without a proxy (U.S. copyright protection at its best) When I have time to view the new log page I will update my script. I will also release a download of the old database for anyone that is interested.</p>
<p>The post <a href="http://silabsoft.org/programming/web-design/98rock-log-disabled/">98rock log disabled</a> appeared first on <a href="http://silabsoft.org">Silabsoft</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://silabsoft.org/programming/web-design/98rock-log-disabled/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shearing sheep without Shears</title>
		<link>http://silabsoft.org/programming/java/project-rs06/shearing-sheep-without-shears/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=shearing-sheep-without-shears</link>
		<comments>http://silabsoft.org/programming/java/project-rs06/shearing-sheep-without-shears/#comments</comments>
		<pubDate>Thu, 24 Jan 2013 06:57:20 +0000</pubDate>
		<dc:creator>Silabsoft</dc:creator>
				<category><![CDATA[Project RS06]]></category>

		<guid isPermaLink="false">http://silabsoft.org/?p=271</guid>
		<description><![CDATA[<p>So have you ever needed wool but forgot your shears? Maybe you simply needed to take 28 and didn&#8217;t want to drop them. Have no fear ProjectRS06 does not check if you have shears anyway Feel Free to send the following packet: and enjoy the results:</p><p>The post <a href="http://silabsoft.org/programming/java/project-rs06/shearing-sheep-without-shears/">Shearing sheep without Shears</a> appeared first on <a href="http://silabsoft.org">Silabsoft</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>So have you ever needed wool but forgot your shears? Maybe you simply needed to take 28 and didn&#8217;t want to drop them. Have no fear ProjectRS06 does not check if you have shears anyway</p>
<p>Feel Free to send the following packet:<br />
<a href="http://silabsoft.org/wp-content/uploads/ss.png"><img src="http://silabsoft.org/wp-content/uploads/ss.png" alt="ss Shearing sheep without Shears" width="170" height="205" class="aligncenter size-full wp-image-272" title="Shearing sheep without Shears" /></a></p>
<p>and enjoy the results:</p>
<p><a href="http://silabsoft.org/wp-content/uploads/ss2.png"><img src="http://silabsoft.org/wp-content/uploads/ss2-300x144.png" alt="ss2 300x144 Shearing sheep without Shears" width="300" height="144" class="aligncenter size-medium wp-image-273" title="Shearing sheep without Shears" /></a></p>
<p>The post <a href="http://silabsoft.org/programming/java/project-rs06/shearing-sheep-without-shears/">Shearing sheep without Shears</a> appeared first on <a href="http://silabsoft.org">Silabsoft</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://silabsoft.org/programming/java/project-rs06/shearing-sheep-without-shears/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Recent Updates</title>
		<link>http://silabsoft.org/uncategorized/recent-updates/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=recent-updates</link>
		<comments>http://silabsoft.org/uncategorized/recent-updates/#comments</comments>
		<pubDate>Tue, 15 Jan 2013 15:43:30 +0000</pubDate>
		<dc:creator>Silabsoft</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://silabsoft.org/?p=264</guid>
		<description><![CDATA[<p>Tonight I finished a few updates so I though I would take a moment and post about them. 1) thanks to HcoJustin I have updated the WordPress RS Highscore widget. I hadn&#8217;t realized but three new activities had been added to Runescape since I initially wrote the plugin. 2) Although I use the forums mostly [...]</p><p>The post <a href="http://silabsoft.org/uncategorized/recent-updates/">Recent Updates</a> appeared first on <a href="http://silabsoft.org">Silabsoft</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>Tonight I finished a few updates so I though I would take a moment and post about them.</p>
<p>1) thanks to HcoJustin I have updated the WordPress RS Highscore widget. I hadn&#8217;t realized but three new activities had been added to Runescape since I initially wrote the plugin.</p>
<p>2) Although I use the forums mostly to entertain myself with spam bots I did switch to fluxBB for a future project I am currently working on. you can see it at <a href="http://silabsoft.org/forums/index.php">http://silabsoft.org/forums</a></p>
<p>3) Added a page for the rs-web API it&#8217;s always been available but details on how to use have been vague I hope the 5 minutes of effort I put into writing the page will help some of you out there.</p>
<p>The post <a href="http://silabsoft.org/uncategorized/recent-updates/">Recent Updates</a> appeared first on <a href="http://silabsoft.org">Silabsoft</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://silabsoft.org/uncategorized/recent-updates/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Character change exploit.</title>
		<link>http://silabsoft.org/programming/java/project-rs06/character-change-exploit/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=character-change-exploit</link>
		<comments>http://silabsoft.org/programming/java/project-rs06/character-change-exploit/#comments</comments>
		<pubDate>Sat, 12 Jan 2013 07:54:53 +0000</pubDate>
		<dc:creator>Silabsoft</dc:creator>
				<category><![CDATA[Project RS06]]></category>

		<guid isPermaLink="false">http://silabsoft.org/?p=244</guid>
		<description><![CDATA[<p>You should never have open public commands on your server and if you do you should at least limit how many times they can be used. Here is a perfect example as to why. This client that I am releasing abuses rapidly sending 3 packets The first packet it sends is ID: 103 &#8211; in [...]</p><p>The post <a href="http://silabsoft.org/programming/java/project-rs06/character-change-exploit/">Character change exploit.</a> appeared first on <a href="http://silabsoft.org">Silabsoft</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>You should never have open public commands on your server and if you do you should at least limit how many times they can be used. Here is a perfect example as to why. This client that I am releasing abuses rapidly sending 3 packets</p>
<p>The first packet it sends is <strong>ID: 103</strong> &#8211; in the 317 client this is the command packet. I am sending the &#8220;::outfit command&#8221;</p>
<p>The second packet to be sent is the Character Design packet <strong>ID: 101</strong></p>
<p>Finally the last packet to be sent is the button click packet <strong>ID: 85</strong> YOu also need to know which button you have clicked for this example it happens to be button <strong>ID: 3651</strong></p>
<p>The source of the CharacterChangeScape is included the jar the client jar is slightly modified to include some hooks of the stream class if you don&#8217;t trust it don&#8217;t use it.<br />
<a href="http://silabsoft.org/wp-content/uploads/Somepeople_zps8bc04ad0.png"><img src="http://silabsoft.org/wp-content/uploads/Somepeople_zps8bc04ad0-300x196.png" alt="Somepeople zps8bc04ad0 300x196 Character change exploit." width="300" height="196" class="aligncenter size-medium wp-image-246" title="Character change exploit." /></a><br />
<a href="http://silabsoft.org/wp-content/uploads/charChangeScape.zip">charChangeScape</a></p>
<p>The post <a href="http://silabsoft.org/programming/java/project-rs06/character-change-exploit/">Character change exploit.</a> appeared first on <a href="http://silabsoft.org">Silabsoft</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://silabsoft.org/programming/java/project-rs06/character-change-exploit/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>HPAnnouncer for projectrs06</title>
		<link>http://silabsoft.org/programming/java/project-rs06/hpannouncer-for-projectrs06/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=hpannouncer-for-projectrs06</link>
		<comments>http://silabsoft.org/programming/java/project-rs06/hpannouncer-for-projectrs06/#comments</comments>
		<pubDate>Thu, 10 Jan 2013 20:38:15 +0000</pubDate>
		<dc:creator>Silabsoft</dc:creator>
				<category><![CDATA[Project RS06]]></category>

		<guid isPermaLink="false">http://silabsoft.org/?p=240</guid>
		<description><![CDATA[<p>HPAnnouncer Just for those who wanted it.</p><p>The post <a href="http://silabsoft.org/programming/java/project-rs06/hpannouncer-for-projectrs06/">HPAnnouncer for projectrs06</a> appeared first on <a href="http://silabsoft.org">Silabsoft</a>.</p>]]></description>
				<content:encoded><![CDATA[<p><a href="http://silabsoft.org/wp-content/uploads/HPAnnouncer.zip">HPAnnouncer</a></p>
<p>Just for those who wanted it.</p>
<p>The post <a href="http://silabsoft.org/programming/java/project-rs06/hpannouncer-for-projectrs06/">HPAnnouncer for projectrs06</a> appeared first on <a href="http://silabsoft.org">Silabsoft</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://silabsoft.org/programming/java/project-rs06/hpannouncer-for-projectrs06/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>jMonopoly  &#8211; Java  Monopoly game.</title>
		<link>http://silabsoft.org/programming/jmonopoly/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=jmonopoly</link>
		<comments>http://silabsoft.org/programming/jmonopoly/#comments</comments>
		<pubDate>Sat, 05 Jan 2013 15:04:22 +0000</pubDate>
		<dc:creator>Silabsoft</dc:creator>
				<category><![CDATA[Game Programming]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://silabsoft.org/?p=235</guid>
		<description><![CDATA[<p>So I was sitting in my house today and was thinking about how long its been since I last played Monopoly and started to get the itch to play. As I was searching online to find some Monopoly game to download I though about what a great idea it would be to write my own. [...]</p><p>The post <a href="http://silabsoft.org/programming/jmonopoly/">jMonopoly  &#8211; Java  Monopoly game.</a> appeared first on <a href="http://silabsoft.org">Silabsoft</a>.</p>]]></description>
				<content:encoded><![CDATA[<p>So I was sitting in my house today and was thinking about how long its been since I last played Monopoly and started to get the itch to play. As I was searching online to find some Monopoly game to download I though about what a great idea it would be to write my own. So I have spent a few hours today and though I would share my progress. Also since silabsoft.org is my homepage I hoped this post would motivate me to continue working on it</p>
<p><a href="http://silabsoft.org/wp-content/uploads/jMonopoly.png"><img src="http://silabsoft.org/wp-content/uploads/jMonopoly.png" alt="jMonopoly jMonopoly    Java  Monopoly game." width="657" height="680" class="alignnone size-full wp-image-236" title="jMonopoly    Java  Monopoly game." /></a></p>
<p><strong>The Dice Class:</strong></p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="java"><pre class="de1"><span class="coMULTI">/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */</span>
<span class="kw1">package</span> <span class="co2">org.silabsoft.jmonopoly.model</span><span class="sy0">;</span>
&nbsp;
<span class="kw1">import</span> <span class="co2">java.awt.Image</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.awt.image.BufferedImage</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.util.Comparator</span><span class="sy0">;</span>
<span class="kw1">import</span> <span class="co2">java.util.Random</span><span class="sy0">;</span>
&nbsp;
<span class="co3">/**
 *
 * @author Silabsoft
 */</span>
<span class="kw1">public</span> <span class="kw1">class</span> Dice <span class="kw1">extends</span> BoardEntity <span class="br0">&#123;</span>
&nbsp;
    <span class="kw1">private</span> <span class="kw1">final</span> <span class="kw3">BufferedImage</span><span class="br0">&#91;</span><span class="br0">&#93;</span> diceImages<span class="sy0">;</span>
    <span class="kw1">private</span> <span class="kw1">final</span> <span class="kw3">Random</span> random <span class="sy0">=</span> <span class="kw1">new</span> <span class="kw3">Random</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="kw1">private</span> <span class="kw4">int</span> value<span class="sy0">;</span>
    <span class="kw1">public</span> <span class="kw1">static</span> <span class="kw4">int</span> t<span class="sy0">;</span>
&nbsp;
    <span class="kw1">public</span> Dice<span class="br0">&#40;</span><span class="kw4">int</span> x, <span class="kw4">int</span> y, <span class="kw3">BufferedImage</span> diceImages<span class="br0">&#91;</span><span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        drawX <span class="sy0">=</span> x<span class="sy0">;</span>
        drawY <span class="sy0">=</span> y<span class="sy0">;</span>
        <span class="kw1">this</span>.<span class="me1">diceImages</span> <span class="sy0">=</span> diceImages<span class="sy0">;</span>
&nbsp;
        rollDice<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">public</span> <span class="kw3">Image</span> getImage<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">return</span> diceImages<span class="br0">&#91;</span>value <span class="sy0">-</span> <span class="nu0">1</span><span class="br0">&#93;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">public</span> <span class="kw4">void</span> rollDice<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        value <span class="sy0">=</span> <span class="nu0">1</span> <span class="sy0">+</span> random.<span class="me1">nextInt</span><span class="br0">&#40;</span><span class="nu0">6</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">public</span> <span class="kw4">int</span> getValue<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">return</span> value<span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">public</span> <span class="kw1">static</span> <span class="kw4">boolean</span> isDouble<span class="br0">&#40;</span>Dice a, Dice b<span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">return</span> a.<span class="me1">getValue</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">==</span> b.<span class="me1">getValue</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">public</span> <span class="kw4">boolean</span> isDouble<span class="br0">&#40;</span>Dice compare<span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">return</span> <span class="kw1">this</span>.<span class="me1">getValue</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">==</span> compare.<span class="me1">getValue</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">public</span> <span class="kw4">int</span> getTotal<span class="br0">&#40;</span>Dice dice<span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">return</span> <span class="kw1">this</span>.<span class="me1">getValue</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">+</span> dice.<span class="me1">getValue</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
    <span class="kw1">public</span> <span class="kw1">static</span> <span class="kw4">int</span> getTotal<span class="br0">&#40;</span>Dice a, Dice b<span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">return</span> a.<span class="me1">getValue</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">+</span> b.<span class="me1">getValue</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div></div></div></div></div></div></div>


<p>The post <a href="http://silabsoft.org/programming/jmonopoly/">jMonopoly  &#8211; Java  Monopoly game.</a> appeared first on <a href="http://silabsoft.org">Silabsoft</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://silabsoft.org/programming/jmonopoly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
