From 09e00fd032e35a179186c9bcbb8ee30db9ae947e Mon Sep 17 00:00:00 2001 From: Jacob Swehla <30414349+JacobSwehla@users.noreply.github.com> Date: Thu, 28 Dec 2017 16:40:53 -0600 Subject: [PATCH 01/24] maven work --- .gitignore | 1 + Server/pom.xml | 14 ++++ pom.xml | 15 ++++ target/plugins/plugin-biomassBlob-1.2a.jar | Bin 8966 -> 15210 bytes target/plugins/plugin-cubot-1.2a.jar | Bin 25472 -> 108416 bytes target/plugins/plugin-misc-hw-1.2a.jar | Bin 6243 -> 42273 bytes target/plugins/plugin-npc-1.2a.jar | Bin 13137 -> 29170 bytes target/server-1.2a.jar | Bin 143412 -> 145443 bytes target/server-1.2a/META-INF/MANIFEST.MF | 7 ++ .../net.simon987.server/server/pom.properties | 5 ++ .../maven/net.simon987.server/server/pom.xml | 77 ++++++++++++++++++ .../src/main/resources/plugin.properties | 3 + .../src/main/resources/plugin.properties | 3 + .../server-1.2a/Plugin NPC/plugin.properties | 3 + .../src/main/resources/plugin.properties | 3 + 15 files changed, 131 insertions(+) create mode 100644 target/server-1.2a/META-INF/MANIFEST.MF create mode 100644 target/server-1.2a/META-INF/maven/net.simon987.server/server/pom.properties create mode 100644 target/server-1.2a/META-INF/maven/net.simon987.server/server/pom.xml create mode 100644 target/server-1.2a/Plugin Cubot/src/main/resources/plugin.properties create mode 100644 target/server-1.2a/Plugin Misc HW/src/main/resources/plugin.properties create mode 100644 target/server-1.2a/Plugin NPC/plugin.properties create mode 100644 target/server-1.2a/Plugin Plant/src/main/resources/plugin.properties diff --git a/.gitignore b/.gitignore index 91faeca..3730c79 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ mar.log.lck plugins/*.jar save.json Server/Server.iml +target/server-1.2a.jar diff --git a/Server/pom.xml b/Server/pom.xml index 03a5739..4883186 100644 --- a/Server/pom.xml +++ b/Server/pom.xml @@ -11,6 +11,15 @@ + + + ../ + true + + **/*.properties + + + 3.6.2 @@ -26,6 +35,11 @@ maven-jar-plugin ../target + + + net.simon987.server.Main + + diff --git a/pom.xml b/pom.xml index 0ff00c0..ec845b1 100644 --- a/pom.xml +++ b/pom.xml @@ -11,6 +11,15 @@ + + + ../ + true + + **/*.properties + + + 3.6.2 @@ -35,6 +44,12 @@ maven-jar-plugin ../target/plugins + + + false + net.simon987.server.Main + + diff --git a/target/plugins/plugin-biomassBlob-1.2a.jar b/target/plugins/plugin-biomassBlob-1.2a.jar index a5486bed9b56b68887f611e154514584d0fdbfb8..aa5b237a9b667aced414a4a1ffb1bcc47e231d82 100644 GIT binary patch delta 7274 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 Hx8MB@fyCuT delta 1354 zcmaD=*5<|&;LXg!#Q*}$0TX#td7A>}c(2y;@XQ5?Oth1(|Ll9_w2!y0-bG$-U9EFx z&TkGfxMKX^X_1cCxf43xx=tMIPnLvD5z{`PQn7Q6mvOOI$y}|qB3;JCpFaZyx`Twh zgMtq@^|5xIlw8TRuQPRJCD*a4V^z}xcr|y$Y2H+@*7?Hoh}W05a%aU(24vUF@dmj{ z21I}W3lQg}mgplZnJmhv$U`2a^Z3y3}<`I!ww zuNTMyi%W|vXBBA%`n2_1K)wUe;2s|qQH$0g;h(hc!o)C!vx6*6b$ z{PgS<=?p0Do2;p(4YD;%%>_iwQ48ly^q=G1ae9qz5hDY`g-Pl@_4!Q(B5muRh6}vQ zyr?_VSafo%PUNDSlWJ4Sy<7RR7c9?Qy`z5rEkBkyzZ+J6p7;HW&79y9IpI?uPSZT= z=(AYSYte*Go+7=j%rAdRr27{~N(rn?IBO&vwf(~7jMSbv2{9LSg*&`vt(9O3ebD}! zb)QS8tttn9zxK>GCi$mc?Q*OC+Nv#~dQxD&-n0I1EnUZAGMrtH-FiC9f6M7}ii?jW z{<~#o^ZdrkJKY;UD@wbs%y!c{5&83x`ovv22W53R*j$2+ws&Vw1T$#(>7;xIDe0N*LQ@?!X#)ba-H5r@>yzk%MH*Esn#SWpG4jbvbU%!6bzE{8L zj!4XjNnDqi3jT#@zweqZqqXX*FXw5!&d>7`3-2=LpPZSZw7tC5c&^!Nt5fps8=L1i zwsJKrO8GX;aLYA?q~DyIQfyx=+vIw^@cYWyP0D*~s~3NHoD=-7`S0`4`OS6`{|{7e z`Wbv@-lJvt@7w>|U-pNk4p1_f5(5y}1q<2ryiz^)tM%Rgu#x zd*SRw9o*sHm?oF4X)F=?q*+nTy1oDUoes^!g{*Jb<#q^nr&WdTxWKcFd2Lnco2#7b z&U5x$T6;q?RlMTDr3DeeD?aYy@o`Pt&T3b_wrAhEzQyi(Ou>cvb56hi^D`m#hQafT z?ArSRycwB9m_b<#n1X@nWUHnrY9^cfUDFhlfb_Iv#Et=#K@vGk6If4zmJHJihRJnW z(jbMiwPYBDCo^ix@gd9xE0Z;nVe|n?=qW-!B}nT< zpw@f=uvU3(w#h=K>L5{TQyHe)!f;VP5y{EAraVg6G91j@C5HwUh-JxCh8nked8JLrVwM%aAexW{5S6!63l!|9_g)WCJTt1(ZAq3=Ai@B9K@1 ugG_ate9MX->}Pm-0V?uDQ8-ZssL)$1z?&5qB%s1VkfD*4fgxWO!~*~tx7Eb} diff --git a/target/plugins/plugin-cubot-1.2a.jar b/target/plugins/plugin-cubot-1.2a.jar index de096843b87ea43aa4d55ff9991494f74e915ad4..08a747782eff790cc962037cd684d5b1908c75d4 100644 GIT binary patch literal 108416 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�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 C&CP89 delta 4375 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 k*c7qdJPmR4I&K^8mZK4 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 e=;cyGGh^-&+$D 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 V0A3V=fS3UO$dZA8M19Yw{|~gHeUbnG delta 1317 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 SVo)(C8fZ>X{eYfBsQ&|R`A$Lr diff --git a/target/server-1.2a/META-INF/MANIFEST.MF b/target/server-1.2a/META-INF/MANIFEST.MF new file mode 100644 index 0000000..745ccf7 --- /dev/null +++ b/target/server-1.2a/META-INF/MANIFEST.MF @@ -0,0 +1,7 @@ +Manifest-Version: 1.0 +Archiver-Version: Plexus Archiver +Built-By: jacob.swehla +Created-By: Apache Maven 3.5.0 +Build-Jdk: 1.8.0_121 +Main-Class: net.simon987.server.Main + diff --git a/target/server-1.2a/META-INF/maven/net.simon987.server/server/pom.properties b/target/server-1.2a/META-INF/maven/net.simon987.server/server/pom.properties new file mode 100644 index 0000000..b5b936b --- /dev/null +++ b/target/server-1.2a/META-INF/maven/net.simon987.server/server/pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Thu Dec 28 16:28:27 CST 2017 +version=1.2a +groupId=net.simon987.server +artifactId=server diff --git a/target/server-1.2a/META-INF/maven/net.simon987.server/server/pom.xml b/target/server-1.2a/META-INF/maven/net.simon987.server/server/pom.xml new file mode 100644 index 0000000..4883186 --- /dev/null +++ b/target/server-1.2a/META-INF/maven/net.simon987.server/server/pom.xml @@ -0,0 +1,77 @@ + + + 4.0.0 + + + net.simon987.server + server_root + 1.2a + + + + + + ../ + true + + **/*.properties + + + + + + 3.6.2 + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + + + org.apache.maven.plugins + maven-jar-plugin + + ../target + + + net.simon987.server.Main + + + + + + + + net.simon987.server + server + 1.2a + + + + org.java-websocket + Java-WebSocket + 1.3.6 + + + junit + junit + 4.12 + test + + + mysql + mysql-connector-java + 5.1.42 + + + com.googlecode.json-simple + json-simple + 1.1.1 + + + + + \ No newline at end of file diff --git a/target/server-1.2a/Plugin Cubot/src/main/resources/plugin.properties b/target/server-1.2a/Plugin Cubot/src/main/resources/plugin.properties new file mode 100644 index 0000000..5460a2b --- /dev/null +++ b/target/server-1.2a/Plugin Cubot/src/main/resources/plugin.properties @@ -0,0 +1,3 @@ +classpath=net.simon987.cubotplugin.CubotPlugin +name=Cubot Plugin +version=1.0 \ No newline at end of file diff --git a/target/server-1.2a/Plugin Misc HW/src/main/resources/plugin.properties b/target/server-1.2a/Plugin Misc HW/src/main/resources/plugin.properties new file mode 100644 index 0000000..38fc991 --- /dev/null +++ b/target/server-1.2a/Plugin Misc HW/src/main/resources/plugin.properties @@ -0,0 +1,3 @@ +classpath=net.simon987.mischwplugin.MiscHWPlugin +name=Misc HW Plugin +version=1.0 \ No newline at end of file diff --git a/target/server-1.2a/Plugin NPC/plugin.properties b/target/server-1.2a/Plugin NPC/plugin.properties new file mode 100644 index 0000000..d2e105b --- /dev/null +++ b/target/server-1.2a/Plugin NPC/plugin.properties @@ -0,0 +1,3 @@ +classpath=net.simon987.npcplugin.NpcPlugin +name=NPC Plugin +version=1.0 \ No newline at end of file diff --git a/target/server-1.2a/Plugin Plant/src/main/resources/plugin.properties b/target/server-1.2a/Plugin Plant/src/main/resources/plugin.properties new file mode 100644 index 0000000..067c471 --- /dev/null +++ b/target/server-1.2a/Plugin Plant/src/main/resources/plugin.properties @@ -0,0 +1,3 @@ +classpath=net.simon987.biomassplugin.BiomassPlugin +name=Biomass Plugin +version=1.0 \ No newline at end of file From c23ee0dc867169dcf623b98322565604e849a890 Mon Sep 17 00:00:00 2001 From: Jacob Swehla <30414349+JacobSwehla@users.noreply.github.com> Date: Thu, 28 Dec 2017 17:02:41 -0600 Subject: [PATCH 02/24] stuff --- .gitignore | 2 +- Server/pom.xml | 4 +- pom.xml | 2 +- target/plugins/plugin-biomassBlob-1.2a.jar | Bin 15210 -> 0 bytes target/plugins/plugin-cubot-1.2a.jar | Bin 108416 -> 0 bytes target/plugins/plugin-misc-hw-1.2a.jar | Bin 42273 -> 0 bytes target/plugins/plugin-npc-1.2a.jar | Bin 29170 -> 0 bytes target/server-1.2a.jar | Bin 145443 -> 0 bytes target/server-1.2a/META-INF/MANIFEST.MF | 7 -- .../net.simon987.server/server/pom.properties | 5 -- .../maven/net.simon987.server/server/pom.xml | 77 ------------------ .../src/main/resources/plugin.properties | 3 - .../src/main/resources/plugin.properties | 3 - .../server-1.2a/Plugin NPC/plugin.properties | 3 - .../src/main/resources/plugin.properties | 3 - 15 files changed, 4 insertions(+), 105 deletions(-) delete mode 100644 target/plugins/plugin-biomassBlob-1.2a.jar delete mode 100644 target/plugins/plugin-cubot-1.2a.jar delete mode 100644 target/plugins/plugin-misc-hw-1.2a.jar delete mode 100644 target/plugins/plugin-npc-1.2a.jar delete mode 100644 target/server-1.2a.jar delete mode 100644 target/server-1.2a/META-INF/MANIFEST.MF delete mode 100644 target/server-1.2a/META-INF/maven/net.simon987.server/server/pom.properties delete mode 100644 target/server-1.2a/META-INF/maven/net.simon987.server/server/pom.xml delete mode 100644 target/server-1.2a/Plugin Cubot/src/main/resources/plugin.properties delete mode 100644 target/server-1.2a/Plugin Misc HW/src/main/resources/plugin.properties delete mode 100644 target/server-1.2a/Plugin NPC/plugin.properties delete mode 100644 target/server-1.2a/Plugin Plant/src/main/resources/plugin.properties diff --git a/.gitignore b/.gitignore index 3730c79..af93075 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,4 @@ mar.log.lck plugins/*.jar save.json Server/Server.iml -target/server-1.2a.jar +target/* diff --git a/Server/pom.xml b/Server/pom.xml index 4883186..75c0882 100644 --- a/Server/pom.xml +++ b/Server/pom.xml @@ -13,10 +13,10 @@ - ../ + / true - **/*.properties + ../config.properties diff --git a/pom.xml b/pom.xml index ec845b1..c901e21 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,7 @@ - ../ + /src/main/java/resources true **/*.properties diff --git a/target/plugins/plugin-biomassBlob-1.2a.jar b/target/plugins/plugin-biomassBlob-1.2a.jar deleted file mode 100644 index aa5b237a9b667aced414a4a1ffb1bcc47e231d82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15210 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�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 C&CP89 diff --git a/target/plugins/plugin-misc-hw-1.2a.jar b/target/plugins/plugin-misc-hw-1.2a.jar deleted file mode 100644 index e8a724d453d24467f0c2a0e174eaa59b6f0edfcd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42273 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 V0A3V=fS3UO$dZA8M19Yw{|~gHeUbnG diff --git a/target/server-1.2a.jar b/target/server-1.2a.jar deleted file mode 100644 index 914ca1314deba7a40e28080cbb52b16e8fd60ed5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 145443 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

aGe`;@8zuTyH?t5;+|K*SS#5 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

I?rY?OjZ#K95$^37QoRd`G^R|^ur}$PJG%g zfmVNEdTIoX;z>Mr@Mnx}s8>D&gH~~d)1`nx+1=%^oRAq$D$$@tG+g7fWZ^Q^jf|&&1f=BK^yoEMeI_rl~bm5{KXw-m(f?t^GmH1Zc;Q~e|rirA< zL>mNF(@W!e6Uk!9b!C43n{n?y)%i>){5$8TIzN5_zyD)({tImQSB3u9-AqwicJVhd zPXo=yR#R(jWW{|^fLKd~68sx1FFK1Qrkh_bH!AjW!hC{D>ZtEMKN3PgIA8D2N`r}} z@{HDK!O7%0i{mBJll0-_W@ZQAxK8CapN0FW8+8boLE4-i%53NljTVG^s1p3xf&4^n z@m6Y}Gvox?;^8rkNotMPRwLdM`E^1vQe|)e30DK=Buujg7WUQ0F(ammu~znR<&4jG zw7RW(L(7ytI(zoX!#NaO7Zfk7)~thf#|-D{&TeDvfn2dZ(0gRVUO;tFT*2DMslf86 zE02Jbz}3g1dCRDKugv~HxTMKc2{!!z_wU-^S|a#9a58@YV)K+fWq8WDfP@9mWo#J<{79H&{$*gri53?BEb{$ zDy{rWMrWVk{ng-|hS!5%oJ#iMxINTplnCze3TC)JCweAV&=`)7&=DLipidP-Tg7z(HBgNT_F(RtMehSj z)GUmyB6`ng?=Ca(O_n56pP)xz4mR=BqsUKxP#Fc- zQc>%FrwvgBgmU42mCG7f{QQUiPn9RDTH7i8h8rBNqSzPku1=%g2QWrr z=P*Y2I60w}bABu_j2o=xA4jquvR^uH+;bj$vN~4&dLCi=4YgwSatlSy#;PG)3v0mw zIlQ(Xk{re*2}<090+Eko6GH3T`VDjgJRcy8ap9K*CU`LWjoh{tX2&fiCU{W(-m*o1 zE!N_;-u(kWd0WYS%Ke)`aeOi&J)+?tg>H zZnf+A%VV&a@RvcxZ~acs)U8B|q=~1`tD~Cu9`9em2xNUUWVlGBHW6!OcJpVkBe-fF zzU<~?&#U2fHA}XkSn~=Kz@LJ5LP?@ixSE}U5^{}tZAgv^RKQ++Z<^p`yts8B5*e9k zTa2qa)@18d*W?_D8T&jcPLauWhwFytWxQk*^sZJ+aQ0@(ss&YCnQF5A*DZz=?rEMx z=|@kI`Onizp-`N0b{-$|P=&i=`|{;TH|bBNErRd0KVa z!UHsufddQ4mIUBfi(5FgO-d}A_EbKviWyd?2}kO2*+khOVVhT#jA2qQzGb>w8oqKTjHDYU2xB1~bYv$*+d~(6 z;Gh;n_s2{m(jPC4-9M4kCkzkcwJw}()?iH0VQFcDuG`Mq51(HNctIq}L0l}bM245R^d=aETrIIbv35=dptcgYKkEgT0QMygzC#m-eM*zE_VYvqpAx>hInZtRSb2=v?Uc0F8#u@ z8^yKwqx$~5T&RD2<&fA|TXt-~WbUpn>?ZHcysvmujy6%*T;wu)3J8JfC}h%9SS^)Q zH=X*Jn2e(1``oP4v<2smGTm8I#L0$`Rg#nzKH$0k zBO|rz%v`FRNQp*^ZCefPBdr(rIWlSDe5&K^MSQ!yl^q*oCrp>5wY_0{hkn%j>5spH z>yP)9M6$@>QYm)`4{?MDJbT0%njH791sqZOu`O~8e)9=>lXfdvwOAwTWv?&|S9Mg( zJ{%lcp0;6a*)x0wmO*`u(#l7|NBuh~WA(MMsJ*Bzq*6Qc9k-MY5zXp9X~sE>S_;W+ zw&KU#ZS?o*Pfm}cCp|U3=%E$$*P0F=-aJIzchs)l*B|q@)D&{+ECF1x3i%1V;L2q% zJvUK4A%9L1*C-_9YQ70iCwmbcis?m78JSKP=q&&Ik*xhib%(!fXEkKeo$+)k0Ay7e z7ziVFPr~bm%02Q1&w5{FeE_sE&1S~5J%XxrqWFo>ypLoxV0)|l3CMLzr$*?9D?hcu z5~fp!?rng9J?E!wfa4Nr@)#){7AZq41gAh4&R-Y%aDa{|TBnOWLbT5e8}`6XUcD=C z4-*>>cN_Eyl8uOWV17r&O=Yv|ZcVAPNO_x}5-qs?tFw}3m}*_2vwUff#hL}y($Y@I z6TQY#(@tt5=0F2YrW_LIH-k>D@44Cq?>70RLjSHsaDMq2Rw}31c3=dj1V`#Sn>!VW zFmMwsNyU1FTeOQx{7i~)MTNLIC8(tQH-!nLygUPq6Vd_<^XBg=l|)j@#?MX2JSY*< zs&f)J21*-Q4=|r4Qx}u>(Z-6>(^EVON{MH>KlrNeJvHR&9gVb?JYQ6Wn+@HXtf({{7V*PKIuvJjI&~p z2#y5j7`_E@w%jpA9e!qB3Y_)}LX*SieX7N_av5^fi(fau;$z=4f0OP%7=eV0{7U=B zKpkl4;#5!tFvE`1q7rB8?^;6f2F!Ky;hIxG@|K@7@w9b9Ur>?pr#Jq78icSZ1#M&l}o4NJ6HOf z!x5lP)LLQQXFQ3@9)KU-0kS>7GX=FXl1Y@-e#wo*ShZmh19Ew_XEU5-TmsDIi$33R}*n}d-tpJ%R`;;BwsW><{xo+qtM@wJih z&4`I|+SXR~H>cD8`rsjn?CInf^qth17l&x}zCaFhyU5Aq@Bc9I=92u)7X$ah0wet2 zCGh|6c=NNOb}@Ev{I7jzmKu~-@{#*rzA^Fc#6&vyeqjSb>^4#Yf_(Bgd_=`wJz6n8 zbhF6N!vnkB!%R0?z{@F(N`;E9$_(L_GY^E7vk)2BMP$>K6pNN~trZQ;jrQgXEBmeW zs*Q7+55Ak1qr-lP@UJ7+?VB#{n+M*NzYpDS#~ZS|AbLe!lz!kkUUnsu^fBUUYthorQrnmJdKAZf)p%gRzZob-}8?$cK8&9uf&Zk@+4Dbb($u zzG;4+t0uprjqjzRPJ_tBtWbY?0-(Gq1N`;>tCX($lZOrPa2J60w`k|@@^Q=fzHibk z2-IKApuYn*zpQlN^dPop&)B})sQg+O2K{>x=WKCPNp!Jv0VaxmpFlR5o@Mgk3nPMy z)vXF!NjR}fhb}lbDTSMwDT-(t6_YglY85fjWF+$=jUYe+nTHghwo)oAH`5Fr_f}GDhp-`313cN1enI5K3GdbKm9Ly9VN09|DC*xq19G~h|DvaHq zF!9H6ge~HHzI63apy|rAKzRKS2yG|qD)Vj}UKgWI&>$x#Ea-z2(I zGkk)@oyER60$k7}VkqI+Y8er?g1QQKD6VALMvAxwCn4l~CiO1!Mp!pE8^p9SXy8HJ zV?UGo?#Ff97m_$hh~UR{QP_yuep6mr+?=Vai_()~cnHmPuS$J11U{m!3tm9XoRlq_4te9q?T(rEhh zbQY0&->-ziks7U(-bjmmQ``n)P|sva9fW=D+PRrNfH{CT8CY-!FU>Om)h^cQV@Q0C zu1CrE$%@q{h2F6xFlZh8*v=3blB%f6k)nBoGtnMl@~M? z7<@u;QH`F}l19ta?hg`cJdH?~x<2yTiNch%D67!EBqO*Xgol$Aj)V}Lesv#62a|R* zdY_0_1qmh5SF`ySJ+C_AudF+#{E;=Y#S8|_=+uigR@glPEOY2p_AtP{N$fjeLUqdn zfPB{dFvOb@wc4Z)eJr-XE@FjdEt-q4!e%X^3v2TPON>Y~6JtrH?1m$4x9J3!W~(IW z0OJkBQ1fCvN?fHAFhPDnOsOlVqJS=YGK{DpMg9|bl9Q|h&WvRHhUgBv!IX=lr4&|d zeUb0&UTaA%TtqDge&5x3e^Z(@g9#XJ#GL*T2)F|rZ);9OmO8El{OWULM_5p2U%}aw zs(JGXR&L7)m#UXOD2dHZ;|>xotFr_w>$8-s^9JqaPR(t>L&B9U%Jpm9{c@6qc0n7z_IK1fYBXrG`oN3i{)VI`Ueb+t6E0irm`vF46w zb#=+~Cy(Xwhqq6C+R4PS&A72+&{sk?1nT6}m^y2l3>S)FG%*GX zg3yK0S%)mHg)EKYoJKR=r>C6-3(Mc~wzusovS-Vce!>e5_a-hLeQc!uP+d0*m5$g) zj)-Yf;`oA+*xAU0=641ohrEAeq5oMt>a3LUbMQzM9}4~RMp)N%2QjM)H0lj*Cn@Q9 z(p>y}41=__B^rjcHKEq<(yONOB$JK4BKwuh94sJZT9p2=FqyDvC0fwD7RN;5fPG!g zZZ$}vSkKo)CDY#RT(cCcFWWARlx7y?CPX^lGMG>%)Glg#>Xe4_lxU69!JpH0Sic0( zK+Xj*knh5XT2R{dmnbpKVbfpH^eZNNWI%miqrTU#I@f%>ra2ss?|hYY`xVj4lQwIT znO6S*_{b3($RO&Sox=h7Tz_9WZ#_0Y_1UJtVkk661WN~>|ALL|?s zp&QGy9=DND+!2h-;JHNcy_ge^!BNkwT0;*eDBrxqkS39xV&f_14_F|>-!3ss4$2V?6R$fx=#j+Y?<0ImW;lLt+C7C!LEwNda-r;Q_0=1o)z~{U zJeKQ|SXrcnlZ!#GH+aUKz++7bjc&cw?fyCITYHe!@?+#e(!a#_7UQe$7NGL8+L+wI z{fV`k{AC!g9OUOZE|C6-|Y9@Lp*St@n$GBCj;1?!TT3)SrV*>X&Qlw136I@FR%16CAz=?7x)eiYiE5%Oq)d(Lxkw8egF3D!J8OfYIWJ|!A#qdfjH(6#Y@jH;IZ%(FTxy3Ws|Bl6_OUV> zpjC^|Rrl#IW8kPLOiN4-U%iq`H$x2-r`FV)PBp-}&gvU@xYnnJ7F?$GzL0*R@~S*> z-mBQXRad_I9+&Z{DvcW?yV`u%18Zf`RdeyTbEn&Kj`P&f73=#;XIk%haj9xB09ijS zrc|aey?(G?7pEO&qS)A|w6>=qrh(8hPMrXIWIz}>9 z71a88R8%cLER!^4w@|K|pN$)1XgNTGI6KW#6-e=poVMejtooCj3ZS&tMHMTx1s0a& zmVE={Fo;x5jBAJT4dTiB6_Cc=Yb#FsZV7F5y;f4CW0To7O+K)2d+B&?sq-mZ^~nwSu*Xu-`iLy z=kyt0n+A9IK&Co+34>B$d0qD>V`vq{XfDa^N+*3}_nyn9q8+B9aVPhs(`Knegg|4) z4ya%pA}=?u+*MXAmFwhs0ODi*INLgBPJ#Byq$8|K8w*D5@-T-BMtDoDf*ZQ=r9-f4 zLNMwFOak~HsR%@He#=6T>gJc>lB7aQbB!j~Foe%AqUY$Ndqw)^#v4LzgEFJ@h?qtg5|Ki@GyHjO0rf|jWg-CBnaKA;T`}M|6HQj?$Tz%PhkV%!R zWb@`+W>Dy`^4?Y~-wF*PSh)=nWCt&OiI)*mB0Lx-3twprG@X*@dzd2k)JL%{qIWw8v)s$Ql#m_=YsDBknF6dRw!Z zEAk@gv-lvbOn=o8d&mRf^hkJ@p`06sZvSIY>ZN1k1GeB?Wzyio`u&Vc>kZfOlLYex ztP`zs((Dz%{%K@zM%Ao0XZC~7SmQHl`;)`9Q-Zf9et}NhJ4UG{eqR;)ixdmvLw&hh z>RjNOTHnarmi9Yj?g1sc+b`Ze#F6*<1wlWDanzAElKVvLjamETq)c~c$HO(EsW!w- znu2-zFBg<uzCC@BDHPq_JIJ(G~r#0;XjIG?5Z;dAumlQqiB!Xlk~=J>-_W1>u# z_b1DBO96d8aiqcw{iil5TwFNeI_S=N1jbv9PfU~5sw!-jqCKW(s5kQsbwo@UHl7Cs z+few!Y{qT`o13tAVroc>+R3&^6?pm(+j&HL9};Ek(@lnY;q!$vfo%DS-RH|InCzhfh9$?Jl!srRoq6vgfB(&Q z>>q4Se?hOK@P{w5@bmm{j+6ho){EQxqs{w?T@kajGWx$V0_{j1*nr>2K_`Ismil`H zwf0y@PrpPcp`wGgBItmFhN!8+RU2*raL2(>huMduOzx*1oP7b(^iK&M;SmBPDHLU( zRe{N5NWlVZ58q7Jkn)wvw_KrHo|H>E$0bRlke2Eho4Ttm?gu?IMpY0EhD4a%l`D=6 zXfc;*EaS%_hVW$3pWx&rlEbI!b{AWL1A=v$1#9;Jv|)FB<}W-&U$Zp9xBtJw0b{DM zYu_I%Qs@UM|BsBjAF-2}iMfrDxs55E%zsC5DQMdw{!qIbyr_4dfeNdBS=>3Qo3&UZ zD_BTZG7#jk#21IhLP?#etddML&ygYdM%=}NNf$~pGw^<7M7f!+r4&bp!#SQzwmIJL zyi9+-KU{(N8FNPy#CRbiAP1?()uFrbVZ#pbqnU^gdt<;Egc0KP3D(g;J&*^CARvQi z#mgtujrVTPm(O~Pz}qZgHV;5tX8Tp|*-aRas?uDa^E4Q07A5CzA50UtKBmm=d92vI zxJXx+YtVR4*xWM)SN%yjt7ZyXlptvtfZxOi8&Fzmd|l=*na;8<*d`^FZ^9Ds9I=zK ze;&*2FnvbPhv^_Xx7~ndvT)vEXMSwvSJqj6aUY;L39`~WY~9TtZ|)eu2?7c;WD-U4dMhN*~;T(sLQ?!C5>%V&)EY78^-wv~3 zn*TAtjCG!0(aUG*|y-t@F>>UBiKJ zKL2rw1%L$rVEIp+uYa#)x&Nx`|9ga|RBV6HN0c8s{+!e;@3k!eIPZ|8SzjB({t#pV zh%jbzK|w)CV8mZlhgZkO4|)%*-QEy|l**CI<#yQDjzemCYH!S>WZflnJj~&&)n7@k=``y_Z>&K~;9)s$ zB8<=&!O`9~w@Bt`u*Z{MPH%pF^d+cbuPqVv3~wtgCnaY+W*Iy)%rq2xX4T6|TcrQR z{hpy*^l<4uO!2m5yxE96kM8hFy|-Rz@iHCXUdf?zcPd$L%Ia6EKBQpY$&mDpLRB_@ z6Q3zy4PH%v3?Xq4iBdItC4NCJA0G*Vjznh(acqz^Qu#7E+f-QuhkBI_GGH+ zIb;B)!ii~ZOmS(-WUr&VAvE5(_qwZRK6_^^X!tG|qvxqhg3oe|c)C`;Y!3Zcdi+rN zegw26l*3FK)<=b`5F9|m*!L;f)%Y&VOncxfoVJ*nhicww@oKN}*zF9p1m1=eGT6jT0WNjQv|E%>}T2LoXXpExtn)@`Y z4KZb86lZp(oMf@RvbNj0^kAQoUA!LS75EvzBdoPg?rZm#| z$(E?D548kK*b263B)ZiOYtn*f*<`S$z+*HFnqx0aT zni;A+lZq;z0}Z`k$e#LXvB~hU9FtgdF>B~y#;e~BRK~ejTDWUGs)D9%P>p^xLR&ye z@32apJR4F^puR)ez&d|l)rHt3_2<-LP53LNv!n4>E=Co8`lJPuJxtDi=sPy=mb~He z=da>^VJWB=jNqNzb|P^%2Uuq`ge-M8-Nxa8fgj;>fztq%m`ZDUA4Xwx(x1ckSYS>| z(y2k}wlsEy#kEfx^f5l?yIBpiz^4}F9l_;hjgy{%QvAJTJT{zBbO|SXR2_t zj`NF4-x|MT-n`@GSJLiE#d$fZ30}d>GyF;0YD|Sm5`V>I@?g@)RoozWp9?~MA)n1q zAvRz8Se2md>(VWB9TZPzJZKTeh})Q^Q|fI>tblCAITQeVA#bzmy&^{Ar@FexO(AzF z*S|E-Vs!RjhOWp99pD&87pE_Bqms;~d{YIP4_qdxNp(ft-S`fh(S zDAjG7j)_mVPuwf#?GZ?Vb{A4-gqjv)ZAr=AlY(w^EWF&0s~4#%zc>fv4GB_4NkdDvbH0S@{=Ba4w;ACvX z@8F>C{*Rva|L}LR5+rRGe#4LawdArtNbjCcVe^*jl@apJ-6trQC_?;2VFAa_zuz3* za;6d!y`1qww8Gt;Cxi`S!h>YE2!clm!gNS`k}~mm$XWaPKA2Di&;;j^+A9V_Yth#@`&`II-d?y|c=0u=8zt0ZacJy{4Ur;OFD*Z!2v#(wB8X7YBVPji0*RC?E^~vE^)h`}-z>Rg@Fh~M1OR8@83ntP1M&0~EX z4qQZMqHBVvS{X!#EWVKulKbO%uJT2V@EV%@7Dg@n8!$9u3W96T>PT9fSfNMMe?2`y z6LLHsV&fbg_p)K0$3!g!CotEQtLitehz>_nt(4!=eArpx(HT*}%KqumoPy z{GN~FEac0qR|iL9c#H|PXl8n_x<=wLG9`pCT!!eB-F)N6z|>izJGa3|Rs6Jm$%CAv z#cGV{x`@GYT%y?8;y%)y(0&s3-j2OV{RV@fsF^^!kl3ukUuj83T9NCSImQ4bx2)SuKW?8vQ+8Os_2+-X1P4IyJmL;5$W1jQHX<_{~P zPM(ABAyc;b_gSfo7gQ=+?SlAIFD>QaCp*y2sHMs&2^HlWU&vY3#WNr>u8Q{nu!8*} zHQTtO8D-&Cwxs#Ly8MK$m=qtE!!%td6bHNilmvOxxkn)HAqGo|?+95{Ls@yoz`Jl@ zWu}qgyJWa>Nf##epx32rQH(*dD&^h1b)J)sAEf( zsqeG6`MEYK55<#f{Y4S&cRf(D^D)|8d5!j;Al!_-(|mp`4Y<$nPhio1v3$+)hw#eZ zEBCh?g_M_&-fs_R6Q-}yn{)M-E_GY&#iKXgW%`sKI05|*qB9v}iN@~xdxBw)GLXFc zIpG8ka>RD4>Q$!qT(#RqvVOK-Nq)>DhzxQ$4MXbs%hAC;Dg}l?GA1*K$DGMztnH<> zRb4yv=1sHKw`7dSsB`283_o98A)Ki*l9=pMAWI(krI~Elc$7k~IT_VtLt{VHY~En_ zNuYmY@s@>9XHB)0&diardcd;at%TpfJTfWs$F+p3IgP}1-!upol8hT#sxPGd^r~!= zIZ=Tx@vyyfE8T^ohw9w$Iz<6jf=3kw`y=(lf$0W?aG3i#hFm z4}u^k(VqvW37)V_Z<~}kfcLe4ZLANAaBzcAlFnv`5@z2lNkJCXeMsrL4=9TXmbW_b z`7~M;yGQT%N}O1^4Gm|z+?>l2=Y*;d%>~k(^7bvloJ21DRuC^-w_?+$>}|o-MDgv(;i{0MOmK9*~#Kam|5?D(lt*TIUwYHKjV)U8~{XU-`qGV9Be= z54ni35^#gG<5^%=o0jC^7N@uIMM&BlBO#-ti|GAzZ_+H$saz7Yk|aLqIWA_+&@OBg zTeEXSI1utOC5?7Mo0#sR(B?Yv9i>h}X(e0WQ;FZ+77kTVw0$Qi%VhWNFX9F@%!aMd z97m8irxb)zIkqUn(T$Ocw=Xh;@F=)pJ^nMFSJ_of zM@KgWa}6>u z@>v4vH{}-B6Koz8T~rNeidR$l2Fj?8Z10$qlqK+&T`}brx~MPG20Exqo^*XXeIIWy zNRJN)nFH=V+N~g)!H^K%e29aC2&~446AYsv;*9x3hdu$hVupB(hnUAx4A~;DzDXW3 z3JZy!E*$=z`_4_&ZK0gadkiYmg3^|^>^}q-mEF)+1SSrF=`Z%) zOKp5_GFXXStx4n6nHjvqwv$NIVR)h(s7#I5ZsFvRR#3?|P@f}9>Tk^LzkYU{g@}n? z=%Xmd%9s#xhm*(_9usf2h)r`BYVhTylLmWe;3jpYUnb3HFN{5sLe+S7j$O>D7siAu z6I)uI%jWzvs`9?GbX4oToS;p`xjpM-*PsF4ftH*jpY{2eE558!qY~u#h@T#V3vUva zz1Y<=@Y*wXCfJhpDTa6MF*T0Z@^th_Cx0f;AeK_o{8RUCImRC-Iz?z~_nEi*8{F7* zgGU^cZyTD@jZm1+H)l8_DVY&(L)CSY-(BmM1EppQu(KG{gBL)Q*?}_J&`SCIk-Ol1 z;KnW5lvkl|VA5|VIB&O-bNFP=5Vf}^QDP$}n zCqu7-j68%K&kplOYs+ET4R;`83fzMUN5MbpKu!PttK&+pz!|TIMQMA*fO)z{6nRdN$gyBU2-v61`0A|I;uMA_;`K_x+b9>b|yBynfZRL9`>eE>LxKh9tJjL zyy}E_et<$1J~9S6?HxV}DwejO=y?Bl|8PKHbag*ehFU*0=*r&-;r=lH!!5(rs`~gA z8USDy3jl!lKTTo(GRyd{NnIUEFGCsS+a~c*cA-ZzqY7uM9n90oe7%|;%&9WTdaE~z z_qbh^&B@66l(D{$_{`6r8yFA;o_}`ApF1dkkWud}cU1B>$j>77&Oa=`FD$oI&HpXy z;RY6w3xYWLO8)xeRvpvteo zKm~4!t{hCaa&%?4_1+ooG}83X%|MJ*BChQCZ6cdb0TrLK;Rc5nCY#EaU5?N3Xj-;x zwp&ZM^V*TkM?17H5`nGzE$g?uMZOr9ciN7z#YfFHs_DK1% zaRw(4RtihLCln<;MQ1>fcwSr?z5gCpD{Ca_(-5>V+fM?HRU<)9i&?U1T)HKoHRVF4H_POfz(x}#moIHLM$xu-qPl0&WKXT;Z3bRGY`{YAkYvPtvo9I~6l7?UJ#i zqrk`X-;alB?21#v(NTWG&5u!nvD%17#CrA*<$8@|&DJDmg&0`NbNJSVw~a;v<7#Sr zQ4Mryn~dv&&`}_F3q|?>G*OoBf4tNAmT~fJT`T$0p@%SDP$Wb;{hz5gG6AEG!4Guvsr$kg)GoRxwGoN-CR%Eqa#HRcx9dF5rF5?;so*3 z-)q8=?#z+M@&*Py%-ajs{Gv&1`l?8`1t$kTUj6o-3i1oXzl30K(k1p>6j8`S`zr(K z*OX+A7?txFrH)iW0{D8sEC#42nuz8>m5s<_%OaA^%Mn?oM}Tu`cH*9~DyCZjnvTDo@wKyMQiEuka$3;UAP^DZZ~*Z`_TVftYtLE*B;C=AAf8 zdvc_}i80^gys|SVdx@U_a_ZJ&M4cJPW!Q6D>^cKDeFSl$h@T~>9G!mK@8Wc2;^`Rp zqe&@p6#saI2+<6Tbd|T@K8~@3S8!lKTHi{cOUCuSUW#+Jsfo_n#D^ZQcg%I$=~hd$ zI)IjW^igW|^CfXW?_61j64~r_n}@jP#J!jC+^EUg1uXIzZvv1 zktliT_g~K6ES{JC)#0$DcM(s?-IXmC;lhML^w^Q-P5pKT>g20LfV_<~&D#5hx_miR z3}ELR+XO2MDbbT4X~-T;BQ~iT-3LbcGWZ`!U4ppWt1D;`3W**&{%g;@n^s^zxRsbR z_Lub=CJz168N~I0ijYffVaXG@`QQWo-;DVUBamb2cuak<$fGoPs)MEHOIhF~S85_t zg~aeRP+^ggd<)AVodLu*IoL7J@KqtnF1m?QoK(*8vybuHC~HD{zwF3+ zz?$#5)UhJu!d;wddl2uJt`yUvlusw4&>TBCEjvRFn$!=RKaKB~zGy!ZDb#!!c^r34 zoqUmeW#=z+rhg)5tl31-`p58c*ZIJY@C5i(&Cl?$J@+0P?B7Z*h4XqW=%9VSbXs4` z)OoB*7_=XdXJkY%ObUKEGJx>#gn+?p>hpyrUM#!fJU9MqHjDx zh!z>vosM3n3!e0E44-ahDxP#_hDO(grXF*9QSNV&gys}a)A}@zV#)a>l0FcuSK5es ze(|7})FL&kVbuIs9L2h*I22W~g51csog2~XZ}onkTmV~^bbBz;fvM)3dLzH> zNU_op+$>a<4FMC!EzWEt_*a5_t;&Fm7y`-=wLsZ%no=>x8eK(Au9IR--`RD>ii5hK zvp0C8C8jWC7FB&#S{t(pP1j|rWdIRMj;>{Lkxi*DSD`9x38t+IZ>O|uhesfjB7_Uh zpTgwVSJ7g%3^TM!ZR@ms*$NEX=bmEGW*qYKEcAN6LNTNc5aHjQJM4|3{uiwEEF3$os(@ z8Qd?!i-IJhd^AM_vm@zJJq9P}ih8)90b-X!izAjat0qsgcg31`6AgjW{Up-rbaT^{ zq5F4(WZPe6ulV0e2p)iQ@qlybYl9eo_K=XzhNN1c-A22JK&cvfzXmdu6&g3lV_L+W zx8cvjbh=!1AYlv~Aw%8aTHZtcAHv=-JhNuq8janZj&0jk$L15;w%swF*tTukPP${; zwmUg_zqR(Y_x{ec&iPT-{9SWa&AY~^dyH{^)R5Cpp-JbA-pG|+lAOHhhZaqebs%@5 zvW6@%64G9FH<5L>zZ~~i2cHS#Pj4FXQuZ9`OG+G`fwNd3g*UH>NyZP64jU^PykuT= zrE+M`q|_A>sh-qt4l7K!J|w-h;og_T2#sb(K{W3TbSrl{GbS%AJusw|e%pgK0op#JaQ^O?`9GMjLdPmwK@@7MV5g zj&bn`rPvBZv7KSu_kh655l^v248^enhG2|)r_4O+I0-QSTneibJ~A^%xjwfZKQFon znBhe2jCn{GF#FD;2~6*>)}Ahc=rgHJ{DnVM2Wg~H$2I``=5jFo0yw%5lB{yZwSuZ0 zOgCi4DLLwl;LaVCJ2VyT&=j;C^R`II zZvDxxIo)MA)%#)A;HTa9{(XH+yeDFXPm~dw3I2(33vowceT33YK+wle@sen`Hxzb_ zB*-pSF4K_J3%BD2LS7)e%UvpPeKJgWXuC^y&H>E-eAangww0ltWLKY@cyropO;%#U zo`rxxc2eWo+Yc5hS{9|j(Xh=8lm5d8F~m2D8^1l-&gNiC&7%yWKbnY^L^`E~JGw3R zr%Do+ZWlhii@1%21>6Xm7J)eTU%&+H&`k%UuxIqF&j(bmp^{{xR3@iqQCnFG$e*!*}1SaKm$=vz|E-W0*gf z@BlaAxV+I6j@P8wyE_))W|@?O^!V8e;g%c#AEjLYw{0(eco*`UbL5CG9!LH_IJoHxRo+6)-~NGpkqed0?@UEv;YX6$okw3fqcI3Vnd z)%oOj*aD9sSA16#&t#eWCVmjh-+-S6wSkzX-(R7UcpV!^2Ok6>;!=#)phMU)g#e`n zG4<2D2n#+4GV<_eDL3+WDrDXC3yTTu)hd{lM)f$|pp{L;xRhe@_DO4^AvT;Ty5bf# zbQsT+)Ia1x$*`PfU>~tqR#EC;4K+onDL>O}m}-z!lGUN7Vz;zp;oemXtwF>896}2D zFN678WT(fX-HCxu?flMMY4IpfHI6{LSu86f#$Ek!-6FO;q@dx@Az+z0Rv5PW+$6R;$ljmGg=wxO9Jzp)*ddwtK)%&V zg{@_b1*qj*;(uB^e)x{e#ab10-C&-KiGQ+}|$KXV6vgk_W7V0vg6fXAf{pZfV+9Z) zNcBbul1<+DW`$l!zxVbc-jMjmjU_?|eK>?W;*^|9?S2Cn7?v+}hg!@Ag~w3}DbCTM zeJz3V4avcIhV-@AmVF=Z-B35$UUHx4wY$~=?-{s)G)2(WJaG|nDJ+kK{1n`c`69&y zaGv2msBbvHe~k!~o+7-XU_cxiBU^|SsNTJ9tJWlyOWQ%ZxigxxJtmj;CZ6$bD)lL> zlBe;Uf;PR`G;$Lk`Az1Sh)DtJUVBE^GoK38EWSW9rFn;#-h>|*A>b9}3v zm{doxFo$iqiBs3m(3U)sc6JJCwZU(iW!KO;qt!%wKrO*z49X`lk`RE%D)!gi61yjn zf05y>AB&`KSw)H7ko6R@Wa1UgL1)jOer#AD%eH!Aj^`;gI-Sz5C@NH=nDO{dFcnDP zKQ^o8wzV&#+*i9LzjL=3^mk%1R`Rb{Tv?e;XRBq=PlNOViy&`U_(*K)7+%C6_8@3U z6uo|YleYcmQg7w}?Rc%_zSVEId#Aey90C-LNylbpVXH2~iY2uaf&DFuYwH?izZK6D zcom~PZ_?QoPLU(YqQPDE$*VWtm5b->mSNKfC@nBhM~L@MhO6SuA?ouyJvPeMQq+{c zx$Zq6rI1YmWX0S(Be3q+>cY|j-Fb2u-qa<2-+x9B-JB}GgUXwZKyT)r`^XWldeQ&E zap&*40)?)BJ|&@yVBlh7keNmsYh&h8BRdiuOS2`0QKotRzHFfj#O|jhF=wcUl}?SP z4~s8*(Qq)%35X)>2w)8;48VopLMuc`EFcWbC4w6#qm&n{-jn*{h)ppdx#zsRElO|O zPdQmw@=hx=FhyDPNq=yk+Y^|pnU5XE2u@>P^2$(;N~0()cIu5s9;JgAWege|EE&VRW++(TV_PRUxI@Vx`?f#Z`2r$Z|^j2V(&E zP$-|K5bE9NVUuwK>3Eqt;w4ee*y1Kk^#Mijts`9z%_s|whZQvg*^o1zAp5iVR`5BE zJv`B$XT3x{VyUc}2V>N7l^f7Y{Pkr8&UWZM9PRtF{vdi8UUtImZx&r#dgMq`JLpBToiUY0=RIQHF=t;1Mly0T4e<&n(T4r9jHoiqY&Y^ zKZ$L;(AeDwZr4|{A^!TJwy`zk-H3H-UH1K0T*ym>vv!yS?wPh^9xSd$uU;rQ>$0_c z^>vO-W8a^QNgSU^v1RMrACNn=ok@|Mk%RLv@=;wRw@rf`c|=OVGT1BSP4Cu?>UL}h z*6T@MkDl%RiT`rCXv*td44!R^MroysUV%&ma`8@X1ZUzWD#{&Y(beLeRow~C$K(Q? z73kVaKg5)(WDAwjqN1D|Aht@N*Bkiv&Su3?VoJgE=Wr9V99T4C;`?MKHyOTr~wEQFdW7QN4a( zK>sFdxA1}D+ePc7q~9gGftn8ExT&W;m@EH{F^rQlA^C10qczu^`o5sAa0q9=?*KV4qg zr4%j3b-lgx03updj2NMk)%)>cMqp}6GP^xWq3Vz&6b+)=Ua^O}3f_h$MM$SQVrlF$ zV>w}o8iw)Fgz}S&jE=n`uBYht1RxWMzzWKwq*6$Zk9$d0M^(}mT=|s$y?Xl}r@Mdp zSt^uT5f{Gn**t{*nGgTRc?MwO_$AH$cTa-GH*e*Iq)!6o1dg=MYa|I$7|yVt$jHUS zP%v9TAbCV0$P(bx-&tY|^qEIEtk^9N@^y^Y~)AMs-34}JbL3cgm z3E@4l}q#M~+BmJXS0P|U#f%iG8`#r(`*JD2F)yae%-!q2Fo0`u{mjACi z!+^VkExu>OrrVs=_Y~-!r`;Y0Ip~iVsgD+j&(J46%zHQy1gyOwXR6(w4i+;PLrPSS zVR<=xx>QItDO*x}hS*AnqHLRYqw4%7ne2Of%zY#WLo^)*pMVvS7@1kKU^VIkW?^zK zhbm*Z5o!mCnYGvqOiUI*MO=c4N6 z2q)LXK)nk1tPtxP;^-%sZfmx}iHJgHB_Y2XpBit8_NJ9#(0ZMWGd@RfpT<2(4($4Y z*bIp5eDsW(7ew!8IBe(*CPJ z^DOfI2cyLfvygvxvxK`_dl>^}QKhHzkEMO9Q{rSX!?=4#K}DA-RsRYq{Ct0hs<_mJ z#kGbxsjus+^0C`Rcg7zZ*b-v*d^Gpmqm@y|6Y3PJajkk=7OP2{c#=#cxJ7J8^lskO zTiB9CX+JV8-$orw@J@c(Uk(54&kok|n>XHeC=aQ+Z#P&`0_b4A3B4#y|Cu5I9G)s7 zXwzB%t69bP-(GHU35N41yhPSzMf48BtzwgA$EPaiZ9uZhI9h zfN4$5X-uv;M(l@%rUQG6Fg@$`#t>C|d|YFQ^K5N69+eAkR~sH<6I(XI+f(5#Q&Ucu zrtiU~EYFj=py-A@IniVahH~SMVvE~~S1T#1Bs&42CKdRWslNdi6X_^-zx+DCtVVwZ z&v-SJjK>~Vy$|QiVw9miYB634G4%I6*o2z)@_{D1puD5puHnzM#QUMCV~5H~9^uBk24r(cG@=p6N)2YR>k%kO$r7Vc@!sQj{%^(#jlCM_Z| zDksOUh%y8^j zH`pbMvM9T~jV?ulFL8sX$MI;@*uV)7Vda{lckGb=bI0~7(+0SlJtUzOZW7= zT-n0$G1k;7#SWFgYT)!DG#)otu^JVZZPU6$lId|zV>&Q$|DEWyFp^e4GAnsyBO>$C zT73fAHj*emN&$%ie_cfNghWieVK-i~KW8ioz>h7YLL3(ku)r`e0PvF_X54Cc491ca z^HRrP-L_K6j~*d-%qGrMwCKf_$h_q9^0B^Mmk(f@CGeMwzm%`k+?dd0Q8A257kAQ* zh}}H#2B$h|Kc?RTxqXD>(&OWN0div}M5!SdxB%TGP~`qqkT#Ni=@Fl|Cb4Hn8o-}E ziT;v%+fg;ymvq~VTlfkfRn6EEq)GugEMS^)6VjvVCz;U-;{ncXJC)sWz$R(n7zZ1i z5zlePMfvMKiv!Q4e&fuMAD|;7vr#m|D>z9<7=s7%r7 zvreI$CO=cze${4Qn+#2GFD!79po!gWW-~T>$3tyALR^P$Wdf_Sbm? zF)_jjzW^dacgKi%H7Y-mC&+N}4ckSE6nL%?aq}KvKqJG74L!c}`)L!7tA1~1Zt@%$ z5@^vrZ=k>x=fPm1j3NfxVNQosro&ukb;zzpqob61@IY}3)!2*D$k!zgMPHg>b zT=|^X6d4Uq$+797QR|Ex8gu{hUBxoyZ$9n$0yQW%7wHJ!FOLaP1vZNtZ<)wUO$&>l zi@G8z+5Wr}YO$&3W#siuVRC#yw z)V+3)m^Htvndcmu_y_51y~ezu3T_gEv0%2@VfZ7Fl`XiS86n+v>Bsr|KQNtd1+Iu( zb4u*q#=JuQ?ne##-YS>~cudvibpE{7kizMduk(S4MFkotyqekw6uN>KwL>e+>s+3O zb`T6v7$_W`RP%ur5Rg&q99UVn2}~wXR(#1>mJx=t2HnRg6m)%&QEb2y%yV6Aq0n&7 zrVTB0wEkLstImgV3-0KDK(#!jS--=Hr~tB*()Q2>j)|LZLyVUL7mT4)Lf0LguSdic z<=_GMq9+d8y8LW`7MUjP+DK_A{lcV2K<3Nkr&wUl0LpL9ZL2ue?xifXWm~Tek(npUX$wOzd+@= zK>c#$ef={kuDh*AB-IqG;W<_tGNOfC<@zvgoc;T{;{t1FIG@wBk2}iLgjTYEmy-z9 zj%=7{!$^g428&X~1J?XCwW@21*#ndW*#>mZ05_0@NM~6O8z?854XpX3r3MaRp1VdT zyP~(vXVT}V&6K`{gFCA6ZS3?K=M>(1Ox~nRfV#c&b)1-d5=CH0LEsZ!fv~}D2jY_H zUJLHtvTZQ*5{sVQp!<4|e~AuJm~uS`h8eqQ(ak?_e*Xy=9OkLQ(wTKQC4=b-4SJ zws6|?7+b11?hdhx-vI`gy4V38lWu7|>jv@jAZE4pAQA0Zm%F~K&6fKxzvDq^r+_IB zMlZwd2&#<>Im1$UMn312$eDeoVroe=fyE6lr%qEAtPSLuz0Uykwe4mBliF!tRYvAB z9H31TaCgoeE3mqt)M_$j8yX8o#r&Ybdru*^SjEA7?N6WZkr3{|s^ZFWc=W>f zB8r61-OOs~W^OL-+0HbemaNh@eo6*QdvP2h%iWbnWqPD`ESnrH@L$U43+y@kNNNpk zv*%ga`CeJ1it_+wJPYH|m?Gne;c>^9c5i!od}kbrF_t}Iet^($_Kmr(WBsXz7^a5^ z{5_fH)6HE;s&$Iyrg44`OC$2gm`pb|BTYU%rX%+kOuB!{*s$%if|%74i})2e4`0My zV%3msr_iRupGWsh5wSM0_?5}Z#Irv!0Bt}Q>mIAFNpjXsE9fKe_>c56^+nq?+rj~d z_*qlt;!;@=R~G`=l~K1p3skqk_Jg2x^Bfliqq#Ifr^ok&BgR7?Z84@Ty_}(zG&M(0 z-SdVr9ib9F)|W?zbI#z5WDD&(!;U%IK=JJyPY9~=rV%l8qFvS>i?8Fs@3@xGE2C9 zS#h2Yg9D5V%lx?Lo>i~^P<`8cYASe zwZQoUSzyG7t;U28ANGsHLHA2A#|U+X>95)uO;?G`fn3hmJ!JjL4(b)5afhe$nG^S` zd&K+INy=Ab!VYjN{0<^8b}$BKI@0irBIX3jb)|)?BZ5;j{|T7x2wu6vi>Ar{OF7~j z<7ohK|pdzRQ2XP2;*$=!rM6zIHuFi$1+5{mswkTtL@I2jU$ z^10kAkMIuJ0KyrX7AQ5p67vXxLHCJzg<2{#JX(G)*H?be@^0eaXF>w~>C)HtOSFx} zovUf2)b(OL;g~-e=c1`d;3!pZ8J!xh3YUB6QA3i#7vmS8H!hq6@5KaEocDQ+Xm&)# z3oJPS6e88Ur87V)W~DougDLo8#-^d?`PYAo75z_zg&;OzcT%x7Fg9`o#`MkxhByIlQD`rC)MuvoBumizY%zPr5 zk!%}d&k7H1PsxOWgg&3I^g^?x=JHG14#cw*5(Z2ec1og?vnsNCRHp5?F!P7$MX(DK z#b)vOgR5E4(b<9{8hQOn40nX`qlfL>PVNlWFVvB7ua%I)$-Rvo8*HRgD=&MTG|L1J zExnGhquMj_(^8lXJzbj@L{am7T%4rg_tz>RLeyA{BpA`eTiAn23KFvZMDR6U`DhL%AT2P+I*W;DC~)w}WI<3>0yL zNu1SE9V!tEXB4pqBV@eTD*6-I*BA~9JhWQ zc)EmqY0v8dXb{Am+DX8sTCl5~cHT3^GB|=tu<}yfvdofKZr%0UW#+S9iQ7?+F)hNF=Qbkd*6uoi})#9%M7tvlx6f0iJb8g{efLQ8pbTj=L7hVEh@PF z(~OHLX#w>>v`XX$fj6%LlNFa8CgY=xWF5D9!Q#a+4wTlkTbzI~XQ`AMaQv_c>Pvmu zAstKvDKYo#v$zZVOKEY@A#hAM{Brl85d@aNrYHmBh$Tyxto%8V!~IrcXlvqy7|-Rg z@ZG}?{C)4975u9OtG))92JzB$XoDXUJ%`11WY$ZpC$YsHrVREndODia8z#$Zf|iiU zf8T~L6Yop`oX+23z9m|;OgP(jRL-W`j_S_x9=@uI7Ri#WtW4_^$<+GBByt)=KkVs*42>jQi+FD%<-l2Hu;5@c5tfQ`Gib zTb4$Rii=3Dp<6P|CMrbqAR@}oa!1=V$`Jz*Tz7v!rsr?5`bg@*h%ZtR&KEnR28f>c zPB{m5UqI2Jvs2BJL#~LtvmjsHBQAfSofgP1$E~gmUt8mlkSZ16@huEjv%9u14R0c$ ze&sWH#*+}0p$3E08;=>FdU%e&^9dCcnvK!VpmxmP-pBZFD2|RW;*h)D{|`~rKmQq} zWivZ+I1muLugm5CB#QdlVq#yCC>3W5Yo~t^kWp%|`hWwx&#rqi21x=)O@IU%WdOG4 z?{7s?eFeeFKt6R8`{24uHjiKmNnLLb$Wx}Qd?#C{Q+pUd@$vBYBh;2gg(2CNwi8

k)zVDJOmuwgK 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�xHX47+cz*;v^fPyo;TC^eB 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 diff --git a/target/server-1.2a/META-INF/MANIFEST.MF b/target/server-1.2a/META-INF/MANIFEST.MF deleted file mode 100644 index 745ccf7..0000000 --- a/target/server-1.2a/META-INF/MANIFEST.MF +++ /dev/null @@ -1,7 +0,0 @@ -Manifest-Version: 1.0 -Archiver-Version: Plexus Archiver -Built-By: jacob.swehla -Created-By: Apache Maven 3.5.0 -Build-Jdk: 1.8.0_121 -Main-Class: net.simon987.server.Main - diff --git a/target/server-1.2a/META-INF/maven/net.simon987.server/server/pom.properties b/target/server-1.2a/META-INF/maven/net.simon987.server/server/pom.properties deleted file mode 100644 index b5b936b..0000000 --- a/target/server-1.2a/META-INF/maven/net.simon987.server/server/pom.properties +++ /dev/null @@ -1,5 +0,0 @@ -#Generated by Maven -#Thu Dec 28 16:28:27 CST 2017 -version=1.2a -groupId=net.simon987.server -artifactId=server diff --git a/target/server-1.2a/META-INF/maven/net.simon987.server/server/pom.xml b/target/server-1.2a/META-INF/maven/net.simon987.server/server/pom.xml deleted file mode 100644 index 4883186..0000000 --- a/target/server-1.2a/META-INF/maven/net.simon987.server/server/pom.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - 4.0.0 - - - net.simon987.server - server_root - 1.2a - - - - - - ../ - true - - **/*.properties - - - - - - 3.6.2 - org.apache.maven.plugins - maven-compiler-plugin - - 1.8 - 1.8 - - - - org.apache.maven.plugins - maven-jar-plugin - - ../target - - - net.simon987.server.Main - - - - - - - - net.simon987.server - server - 1.2a - - - - org.java-websocket - Java-WebSocket - 1.3.6 - - - junit - junit - 4.12 - test - - - mysql - mysql-connector-java - 5.1.42 - - - com.googlecode.json-simple - json-simple - 1.1.1 - - - - - \ No newline at end of file diff --git a/target/server-1.2a/Plugin Cubot/src/main/resources/plugin.properties b/target/server-1.2a/Plugin Cubot/src/main/resources/plugin.properties deleted file mode 100644 index 5460a2b..0000000 --- a/target/server-1.2a/Plugin Cubot/src/main/resources/plugin.properties +++ /dev/null @@ -1,3 +0,0 @@ -classpath=net.simon987.cubotplugin.CubotPlugin -name=Cubot Plugin -version=1.0 \ No newline at end of file diff --git a/target/server-1.2a/Plugin Misc HW/src/main/resources/plugin.properties b/target/server-1.2a/Plugin Misc HW/src/main/resources/plugin.properties deleted file mode 100644 index 38fc991..0000000 --- a/target/server-1.2a/Plugin Misc HW/src/main/resources/plugin.properties +++ /dev/null @@ -1,3 +0,0 @@ -classpath=net.simon987.mischwplugin.MiscHWPlugin -name=Misc HW Plugin -version=1.0 \ No newline at end of file diff --git a/target/server-1.2a/Plugin NPC/plugin.properties b/target/server-1.2a/Plugin NPC/plugin.properties deleted file mode 100644 index d2e105b..0000000 --- a/target/server-1.2a/Plugin NPC/plugin.properties +++ /dev/null @@ -1,3 +0,0 @@ -classpath=net.simon987.npcplugin.NpcPlugin -name=NPC Plugin -version=1.0 \ No newline at end of file diff --git a/target/server-1.2a/Plugin Plant/src/main/resources/plugin.properties b/target/server-1.2a/Plugin Plant/src/main/resources/plugin.properties deleted file mode 100644 index 067c471..0000000 --- a/target/server-1.2a/Plugin Plant/src/main/resources/plugin.properties +++ /dev/null @@ -1,3 +0,0 @@ -classpath=net.simon987.biomassplugin.BiomassPlugin -name=Biomass Plugin -version=1.0 \ No newline at end of file From 59e3e9430e0982a6eb85291b8a0e9ae79ff971d8 Mon Sep 17 00:00:00 2001 From: Jacob Swehla <30414349+JacobSwehla@users.noreply.github.com> Date: Fri, 29 Dec 2017 10:00:19 -0600 Subject: [PATCH 03/24] Maven and file access - Server config file is now accessed through the class loader - Maven outputs server.jar, moves dependencys to adjacent /libs, and plugins to adjacent /plugins --- .gitignore | 2 ++ Server/Server.iml | 3 --- Server/pom.xml | 23 +++++++++++++++++-- .../java/net/simon987/server/GameServer.java | 2 +- .../main/java/net/simon987/server/Main.java | 3 +-- .../simon987/server/ServerConfiguration.java | 7 +++--- .../src/main/resources/config.properties | 0 pom.xml | 9 -------- 8 files changed, 29 insertions(+), 20 deletions(-) rename config.properties => Server/src/main/resources/config.properties (100%) diff --git a/.gitignore b/.gitignore index af93075..9fd1df3 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,5 @@ plugins/*.jar save.json Server/Server.iml target/* +Server/Server.iml +Server/src/main/java/META-INF/MANIFEST.MF diff --git a/Server/Server.iml b/Server/Server.iml index b341a74..6da8947 100644 --- a/Server/Server.iml +++ b/Server/Server.iml @@ -6,9 +6,6 @@ - - - diff --git a/Server/pom.xml b/Server/pom.xml index 75c0882..a1c3a52 100644 --- a/Server/pom.xml +++ b/Server/pom.xml @@ -13,10 +13,10 @@ - / + ../Server/src/main/resources true - ../config.properties + config.properties @@ -30,6 +30,23 @@ 1.8 + + org.apache.maven.plugins + maven-dependency-plugin + + + copy-dependencies + prepare-package + + copy-dependencies + + + ../target/libs + + + + + org.apache.maven.plugins maven-jar-plugin @@ -38,6 +55,8 @@ net.simon987.server.Main + true + libs/ diff --git a/Server/src/main/java/net/simon987/server/GameServer.java b/Server/src/main/java/net/simon987/server/GameServer.java index 2042cc6..46c85d3 100644 --- a/Server/src/main/java/net/simon987/server/GameServer.java +++ b/Server/src/main/java/net/simon987/server/GameServer.java @@ -40,7 +40,7 @@ public class GameServer implements Runnable { public GameServer() { - this.config = new ServerConfiguration(new File("config.properties")); + this.config = new ServerConfiguration("config.properties"); gameUniverse = new GameUniverse(config); pluginManager = new PluginManager(); diff --git a/Server/src/main/java/net/simon987/server/Main.java b/Server/src/main/java/net/simon987/server/Main.java index 02542be..c57091f 100644 --- a/Server/src/main/java/net/simon987/server/Main.java +++ b/Server/src/main/java/net/simon987/server/Main.java @@ -12,8 +12,7 @@ public class Main { LogManager.initialize(); - ServerConfiguration config = new ServerConfiguration(new File("config.properties")); - + ServerConfiguration config = new ServerConfiguration("config.properties"); //Load GameServer.INSTANCE.getGameUniverse().load(new File("save.json")); diff --git a/Server/src/main/java/net/simon987/server/ServerConfiguration.java b/Server/src/main/java/net/simon987/server/ServerConfiguration.java index 84d715a..3338c90 100644 --- a/Server/src/main/java/net/simon987/server/ServerConfiguration.java +++ b/Server/src/main/java/net/simon987/server/ServerConfiguration.java @@ -6,6 +6,7 @@ import net.simon987.server.logging.LogManager; import java.io.File; import java.io.FileInputStream; import java.io.IOException; +import java.io.InputStream; import java.util.Properties; /** @@ -18,11 +19,11 @@ public class ServerConfiguration { */ private Properties properties; - public ServerConfiguration(File file) { + public ServerConfiguration(String file) { try { properties = new Properties(); - - properties.load(new FileInputStream(file)); + InputStream is = ServerConfiguration.class.getClassLoader().getResourceAsStream("config.properties"); + properties.load(is); } catch (IOException e) { LogManager.LOGGER.severe("Problem loading server configuration: " + e.getMessage()); diff --git a/config.properties b/Server/src/main/resources/config.properties similarity index 100% rename from config.properties rename to Server/src/main/resources/config.properties diff --git a/pom.xml b/pom.xml index c901e21..38a43c2 100644 --- a/pom.xml +++ b/pom.xml @@ -11,15 +11,6 @@ - - - /src/main/java/resources - true - - **/*.properties - - - 3.6.2 From 293795b215aa7ce96c6ed7e23d294f2becfa8c89 Mon Sep 17 00:00:00 2001 From: simon Date: Fri, 29 Dec 2017 11:06:48 -0500 Subject: [PATCH 04/24] Fixes #55 and commas & semicolon can be inserted in string literals --- .../simon987/server/assembly/Assembler.java | 21 +++++++++++-------- .../simon987/server/assembly/Instruction.java | 4 ++-- .../assembly/instruction/BrkInstruction.java | 4 ++++ 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/Server/src/main/java/net/simon987/server/assembly/Assembler.java b/Server/src/main/java/net/simon987/server/assembly/Assembler.java index 5b151b3..071804e 100755 --- a/Server/src/main/java/net/simon987/server/assembly/Assembler.java +++ b/Server/src/main/java/net/simon987/server/assembly/Assembler.java @@ -9,6 +9,8 @@ import java.io.DataOutputStream; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.HashMap; +import java.util.regex.Matcher; +import java.util.regex.Pattern; /** * Top-level class for assembly operations. @@ -48,11 +50,9 @@ public class Assembler { * @return The line without its label part */ private static String removeLabel(String line) { - if (line.indexOf(':') != -1) { - return line.substring(line.indexOf(':') + 1); - } else { - return line; - } + + return line.replaceAll("\\b\\w*\\b:", ""); + } /** @@ -94,10 +94,11 @@ public class Assembler { line = removeComment(line); //Check for labels - if (line.indexOf(':') != -1) { + Pattern pattern = Pattern.compile("\\b\\w*\\b:"); + Matcher matcher = pattern.matcher(line); - line = line.substring(0, line.indexOf(':')); - String label = line.trim(); + if (matcher.find()) { + String label = matcher.group(0).substring(0, matcher.group(0).length() - 1); LogManager.LOGGER.fine("DEBUG: Label " + label + " @ " + (result.origin + currentOffset)); result.labels.put(label, (char) (result.origin + currentOffset)); @@ -134,7 +135,9 @@ public class Assembler { try { - String[] values = line.substring(2, line.length()).split(","); + + //Special thanks to https://stackoverflow.com/questions/1757065/ + String[] values = line.substring(2, line.length()).split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)", -1); for (String value : values) { diff --git a/Server/src/main/java/net/simon987/server/assembly/Instruction.java b/Server/src/main/java/net/simon987/server/assembly/Instruction.java index e791987..65f78e1 100755 --- a/Server/src/main/java/net/simon987/server/assembly/Instruction.java +++ b/Server/src/main/java/net/simon987/server/assembly/Instruction.java @@ -120,8 +120,8 @@ public abstract class Instruction { * Whether or not the instruction is valid without any * operands */ - private static boolean noOperandsValid() { - return true; + public boolean noOperandsValid() { + return false; } String getMnemonic() { diff --git a/Server/src/main/java/net/simon987/server/assembly/instruction/BrkInstruction.java b/Server/src/main/java/net/simon987/server/assembly/instruction/BrkInstruction.java index ba713c5..cf2e92f 100755 --- a/Server/src/main/java/net/simon987/server/assembly/instruction/BrkInstruction.java +++ b/Server/src/main/java/net/simon987/server/assembly/instruction/BrkInstruction.java @@ -20,4 +20,8 @@ public class BrkInstruction extends Instruction { return status; } + + public boolean noOperandsValid() { + return true; + } } From b43cf9ac333787e50e666a79ed14e06062cf270a Mon Sep 17 00:00:00 2001 From: Jacob Swehla <30414349+JacobSwehla@users.noreply.github.com> Date: Fri, 29 Dec 2017 11:25:31 -0600 Subject: [PATCH 05/24] Moved config file and fixed some warnings --- Server/pom.xml | 49 +++++++++++++------ .../simon987/server/ServerConfiguration.java | 2 +- pom.xml | 14 ++---- 3 files changed, 38 insertions(+), 27 deletions(-) diff --git a/Server/pom.xml b/Server/pom.xml index a1c3a52..df94ffc 100644 --- a/Server/pom.xml +++ b/Server/pom.xml @@ -3,24 +3,37 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - - - net.simon987.server - server_root - 1.2a - + - - - ../Server/src/main/resources - true - - config.properties - - - + + + maven-resources-plugin + 3.0.2 + + + default-resources + + prepare-package + + resources + + + ../target/ + + + ../Server/src/main/resources + true + + config.properties + + + + + + + 3.6.2 org.apache.maven.plugins @@ -50,6 +63,7 @@ org.apache.maven.plugins maven-jar-plugin + 3.0.2 ../target @@ -93,4 +107,9 @@ + + + UTF-8 + + \ No newline at end of file diff --git a/Server/src/main/java/net/simon987/server/ServerConfiguration.java b/Server/src/main/java/net/simon987/server/ServerConfiguration.java index 3338c90..b5d2f8a 100644 --- a/Server/src/main/java/net/simon987/server/ServerConfiguration.java +++ b/Server/src/main/java/net/simon987/server/ServerConfiguration.java @@ -22,7 +22,7 @@ public class ServerConfiguration { public ServerConfiguration(String file) { try { properties = new Properties(); - InputStream is = ServerConfiguration.class.getClassLoader().getResourceAsStream("config.properties"); + InputStream is = new FileInputStream("config.properties"); properties.load(is); } catch (IOException e) { diff --git a/pom.xml b/pom.xml index 38a43c2..91054b1 100644 --- a/pom.xml +++ b/pom.xml @@ -13,26 +13,18 @@ - 3.6.2 org.apache.maven.plugins + 3.6.2 maven-compiler-plugin 1.8 1.8 - - 3.6.2 - org.apache.maven.plugins - maven-compiler-plugin - - 1.8 - 1.8 - - - + org.apache.maven.plugins maven-jar-plugin + 3.0.2 ../target/plugins From 18aaf919918df5a661df87ce76ff2dd28d23f74f Mon Sep 17 00:00:00 2001 From: simon Date: Fri, 29 Dec 2017 13:09:47 -0500 Subject: [PATCH 06/24] Fixed RET instruction that wouldn't assemble without any parameter --- .../simon987/server/assembly/instruction/RetInstruction.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Server/src/main/java/net/simon987/server/assembly/instruction/RetInstruction.java b/Server/src/main/java/net/simon987/server/assembly/instruction/RetInstruction.java index cf2b371..ea8d972 100644 --- a/Server/src/main/java/net/simon987/server/assembly/instruction/RetInstruction.java +++ b/Server/src/main/java/net/simon987/server/assembly/instruction/RetInstruction.java @@ -37,4 +37,9 @@ public class RetInstruction extends Instruction { return status; } + + @Override + public boolean noOperandsValid() { + return true; + } } \ No newline at end of file From 72d43fccf72dd287fd7d898492b73dbfbf3b4925 Mon Sep 17 00:00:00 2001 From: simon Date: Fri, 29 Dec 2017 13:39:13 -0500 Subject: [PATCH 07/24] Fixes #58 --- Server/src/main/java/net/simon987/server/assembly/CPU.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Server/src/main/java/net/simon987/server/assembly/CPU.java b/Server/src/main/java/net/simon987/server/assembly/CPU.java index 071d459..50b49e4 100755 --- a/Server/src/main/java/net/simon987/server/assembly/CPU.java +++ b/Server/src/main/java/net/simon987/server/assembly/CPU.java @@ -237,7 +237,7 @@ public class CPU implements JSONSerialisable { } else if (destination <= registerSetSize * 2) { //Destination is [reg] ip++; - instruction.execute(memory, registerSet.get(destination - registerSetSize), memory, sourceValue, status); + instruction.execute(memory, registerSet.get(destination - registerSetSize), sourceValue, status); } else { //Assuming that destination is [reg + x] ip += 2; From 017b89f97f894747d82c4a282811218db4e8902c Mon Sep 17 00:00:00 2001 From: simon Date: Fri, 29 Dec 2017 14:35:26 -0500 Subject: [PATCH 08/24] Characters can be escaped in string literals --- Server/pom.xml | 5 +++++ .../java/net/simon987/server/assembly/Assembler.java | 9 +++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Server/pom.xml b/Server/pom.xml index df94ffc..473197b 100644 --- a/Server/pom.xml +++ b/Server/pom.xml @@ -104,6 +104,11 @@ json-simple 1.1.1 + + org.apache.commons + commons-text + 1.2 + diff --git a/Server/src/main/java/net/simon987/server/assembly/Assembler.java b/Server/src/main/java/net/simon987/server/assembly/Assembler.java index 071804e..ca3b02c 100755 --- a/Server/src/main/java/net/simon987/server/assembly/Assembler.java +++ b/Server/src/main/java/net/simon987/server/assembly/Assembler.java @@ -3,6 +3,7 @@ package net.simon987.server.assembly; import net.simon987.server.ServerConfiguration; import net.simon987.server.assembly.exception.*; import net.simon987.server.logging.LogManager; +import org.apache.commons.text.StringEscapeUtils; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; @@ -135,7 +136,6 @@ public class Assembler { try { - //Special thanks to https://stackoverflow.com/questions/1757065/ String[] values = line.substring(2, line.length()).split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)", -1); @@ -150,7 +150,12 @@ public class Assembler { out.write(parseDUPOperator16(valueTokens, labels, currentLine)); } else if (value.startsWith("\"") && value.endsWith("\"")) { //Handle string - out.write(value.substring(1, value.length() - 1).getBytes(StandardCharsets.UTF_16)); + + //Unescape the string + String string = value.substring(1, value.length() - 1); + string = StringEscapeUtils.unescapeJava(string); + + out.write(string.getBytes(StandardCharsets.UTF_16)); } else if (labels != null && labels.containsKey(value)) { //Handle label out.writeChar(labels.get(value)); From 0c06d0bf09d3b87b1361df87ede99efdee2617ac Mon Sep 17 00:00:00 2001 From: simon Date: Fri, 29 Dec 2017 15:53:29 -0500 Subject: [PATCH 09/24] Fixes #62 --- .../main/java/net/simon987/cubotplugin/Cubot.java | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/Cubot.java b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/Cubot.java index c2d871f..499e00e 100644 --- a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/Cubot.java +++ b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/Cubot.java @@ -17,7 +17,7 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit { private String hologramString = ""; private HologramMode hologramMode = HologramMode.CLEARED; - private char lastHologram = 0; + private HologramMode lastHologramMode = HologramMode.CLEARED; /** * Hit points @@ -73,8 +73,8 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit { currentAction = Action.IDLE; //Same principle for hologram - lastHologram = hologram; - hologram = 0; + lastHologramMode = hologramMode; + hologramMode = HologramMode.CLEARED; } @Override @@ -88,9 +88,9 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit { json.put("heldItem", heldItem); json.put("hp", hp); json.put("action", lastAction.ordinal()); - json.put("holo", (int) lastHologram); + json.put("holo", (int) hologram); json.put("holoStr", hologramString); - json.put("holoMode", hologramMode.ordinal()); + json.put("holoMode", lastHologramMode.ordinal()); json.put("energy", energy); if (parent != null) { @@ -162,9 +162,6 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit { this.hologram = hologram; } - public char getHologram() { - return lastHologram; - } public void setHologramString(String hologramString) { this.hologramString = hologramString; From c4caf4ab0b545ef579b384bef34bbbc05d424155 Mon Sep 17 00:00:00 2001 From: simon Date: Fri, 29 Dec 2017 16:16:28 -0500 Subject: [PATCH 10/24] Changed CLEAR action for the inventory to 0 for consistency --- .../src/main/java/net/simon987/cubotplugin/CubotInventory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotInventory.java b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotInventory.java index 1dd2f5b..bf44d46 100644 --- a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotInventory.java +++ b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotInventory.java @@ -16,8 +16,8 @@ public class CubotInventory extends CpuHardware { private Cubot cubot; + private static final int CLEAR = 0; private static final int POLL = 1; - private static final int CLEAR = 2; public CubotInventory(Cubot cubot) { this.cubot = cubot; From a9e580f2ce25fde327e8a0bb2804abf743437939 Mon Sep 17 00:00:00 2001 From: simon Date: Fri, 29 Dec 2017 17:06:28 -0500 Subject: [PATCH 11/24] Fixed OF and CF flags being always set to false --- .../server/assembly/instruction/MulInstruction.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Server/src/main/java/net/simon987/server/assembly/instruction/MulInstruction.java b/Server/src/main/java/net/simon987/server/assembly/instruction/MulInstruction.java index 774ab66..3b86d05 100644 --- a/Server/src/main/java/net/simon987/server/assembly/instruction/MulInstruction.java +++ b/Server/src/main/java/net/simon987/server/assembly/instruction/MulInstruction.java @@ -25,9 +25,11 @@ public class MulInstruction extends Instruction { status.setOverflowFlag(true); status.setCarryFlag(true); cpu.getRegisterSet().getRegister("Y").setValue(hWord);//Don't overwrite Y register if it's blank + } else { + status.setOverflowFlag(false); + status.setCarryFlag(false); } - status.setOverflowFlag(false); - status.setCarryFlag(false); + cpu.getRegisterSet().set(1, Util.getLowerWord(result)); return status; From 5afa767b4a52f1e4886546e1cd1c0a9477445d78 Mon Sep 17 00:00:00 2001 From: simon Date: Fri, 29 Dec 2017 17:09:30 -0500 Subject: [PATCH 12/24] Fixed OF and CF flags being always set to false in the other function --- .../server/assembly/instruction/MulInstruction.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Server/src/main/java/net/simon987/server/assembly/instruction/MulInstruction.java b/Server/src/main/java/net/simon987/server/assembly/instruction/MulInstruction.java index 3b86d05..62747e1 100644 --- a/Server/src/main/java/net/simon987/server/assembly/instruction/MulInstruction.java +++ b/Server/src/main/java/net/simon987/server/assembly/instruction/MulInstruction.java @@ -46,9 +46,11 @@ public class MulInstruction extends Instruction { status.setOverflowFlag(true); status.setCarryFlag(true); cpu.getRegisterSet().getRegister("Y").setValue(hWord);//Don't overwrite Y register if it's blank + } else { + status.setOverflowFlag(false); + status.setCarryFlag(false); } - status.setOverflowFlag(false); - status.setCarryFlag(false); + cpu.getRegisterSet().getRegister("A").setValue(Util.getLowerWord(result)); return status; From ef7f573256c65ab37b63783a60c84a1b3fe4ffd3 Mon Sep 17 00:00:00 2001 From: simon Date: Fri, 29 Dec 2017 21:49:42 -0500 Subject: [PATCH 13/24] Added basic Radio Tower functionality #32 Keypress buffer is cleared on code upload --- .../net/simon987/cubotplugin/ComPort.java | 84 +++++++++++++++ .../java/net/simon987/cubotplugin/Cubot.java | 5 + .../net/simon987/cubotplugin/CubotLaser.java | 2 - .../net/simon987/cubotplugin/CubotPlugin.java | 2 + .../event/CpuInitialisationListener.java | 6 +- .../java/net/simon987/npcplugin/Factory.java | 2 +- .../net/simon987/npcplugin/NpcPlugin.java | 40 ++++++- .../npcplugin/RadioReceiverHardware.java | 78 ++++++++++++++ .../net/simon987/npcplugin/RadioTower.java | 101 +++++++++++++++++- .../event/CpuInitialisationListener.java | 27 +++++ .../event/WorldCreationListener.java | 34 ++++++ .../java/net/simon987/server/game/Action.java | 3 +- .../server/game/ControllableUnit.java | 5 + .../simon987/server/game/Programmable.java | 7 ++ .../server/webserver/CodeUploadHandler.java | 7 ++ 15 files changed, 391 insertions(+), 12 deletions(-) create mode 100644 Plugin Cubot/src/main/java/net/simon987/cubotplugin/ComPort.java create mode 100644 Plugin NPC/src/main/java/net/simon987/npcplugin/RadioReceiverHardware.java create mode 100644 Plugin NPC/src/main/java/net/simon987/npcplugin/event/CpuInitialisationListener.java create mode 100644 Server/src/main/java/net/simon987/server/game/Programmable.java diff --git a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/ComPort.java b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/ComPort.java new file mode 100644 index 0000000..dbb55d7 --- /dev/null +++ b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/ComPort.java @@ -0,0 +1,84 @@ +package net.simon987.cubotplugin; + +import net.simon987.server.GameServer; +import net.simon987.server.assembly.CpuHardware; +import net.simon987.server.assembly.Status; +import net.simon987.server.game.GameObject; +import net.simon987.server.game.Programmable; +import org.json.simple.JSONObject; + +import java.awt.*; +import java.util.ArrayList; + +public class ComPort extends CpuHardware { + + public static final char HWID = 0xD; + public static final int DEFAULT_ADDRESS = 0xD; + + private Cubot cubot; + + private static final int POLL = 1; + + private static final int OUT = 2; + + public ComPort(Cubot cubot) { + this.cubot = cubot; + } + + private static final int MESSAGE_LENGTH = 8; + + @Override + public void handleInterrupt(Status status) { + + int a = getCpu().getRegisterSet().getRegister("A").getValue(); + + if (a == POLL) { + + /* No-op */ + + } else if (a == OUT) { + + //Get object directly in front of the Cubot + Point frontTile = cubot.getFrontTile(); + ArrayList objects = cubot.getWorld().getGameObjectsAt(frontTile.x, frontTile.y); + + if (objects.size() > 0 && objects.get(0) instanceof Programmable) { + + int x = getCpu().getRegisterSet().getRegister("X").getValue(); + + if (x + MESSAGE_LENGTH >= getCpu().getMemory().getWords().length) { + //todo set interrupt ? + getCpu().getStatus().setErrorFlag(true); + } else { + + //Get MESSAGE_LENGTH-word message pointed by X + char[] message = new char[MESSAGE_LENGTH]; + System.arraycopy(getCpu().getMemory().getWords(), x, message, 0, MESSAGE_LENGTH); + + //Send it to the Programmable object + ((Programmable) objects.get(0)).sendMessage(message); + } + } + } + + + } + + @Override + public char getId() { + return HWID; + } + + @Override + public JSONObject serialise() { + JSONObject json = new JSONObject(); + json.put("hwid", (int) HWID); + json.put("cubot", cubot.getObjectId()); + + return json; + } + + public static ComPort deserialize(JSONObject json) { + return new ComPort((Cubot) GameServer.INSTANCE.getGameUniverse().getObject((int) (long) json.get("cubot"))); + } +} diff --git a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/Cubot.java b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/Cubot.java index 499e00e..1526c28 100644 --- a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/Cubot.java +++ b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/Cubot.java @@ -225,4 +225,9 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit { HEX, STRING } + + @Override + public void setAction(Action action) { + currentAction = action; + } } diff --git a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotLaser.java b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotLaser.java index 341f59b..f336b67 100644 --- a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotLaser.java +++ b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotLaser.java @@ -62,8 +62,6 @@ public class CubotLaser extends CpuHardware { } } } - } else { - System.out.println("\n\n\n\n\n It did it"); } diff --git a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotPlugin.java b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotPlugin.java index 8060d11..8c025b7 100644 --- a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotPlugin.java +++ b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotPlugin.java @@ -58,6 +58,8 @@ public class CubotPlugin extends ServerPlugin implements GameObjectDeserializer, return CubotBattery.deserialize(hwJson); case CubotFloppyDrive.HWID: return CubotFloppyDrive.deserialize(hwJson); + case ComPort.HWID: + return ComPort.deserialize(hwJson); } return null; diff --git a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/CpuInitialisationListener.java b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/CpuInitialisationListener.java index 0bf3106..a33884d 100644 --- a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/CpuInitialisationListener.java +++ b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/CpuInitialisationListener.java @@ -5,7 +5,6 @@ import net.simon987.server.assembly.CPU; import net.simon987.server.event.CpuInitialisationEvent; import net.simon987.server.event.GameEvent; import net.simon987.server.event.GameEventListener; -import net.simon987.server.logging.LogManager; import net.simon987.server.user.User; public class CpuInitialisationListener implements GameEventListener { @@ -16,7 +15,7 @@ public class CpuInitialisationListener implements GameEventListener { @Override public void handle(GameEvent event) { - LogManager.LOGGER.fine("(Plugin) Handled CPU Initialisation event (Cubot Plugin)"); + //LogManager.LOGGER.fine("(Plugin) Handled CPU Initialisation event (Cubot Plugin)"); CPU cpu = (CPU) event.getSource(); User user = ((CpuInitialisationEvent) event).getUser(); @@ -39,6 +38,8 @@ public class CpuInitialisationListener implements GameEventListener { batteryHw.setCpu(cpu); CubotFloppyDrive floppyHw = new CubotFloppyDrive((Cubot) user.getControlledUnit()); floppyHw.setCpu(cpu); + ComPort comPortHw = new ComPort((Cubot) user.getControlledUnit()); + comPortHw.setCpu(cpu); cpu.attachHardware(legHw, CubotLeg.DEFAULT_ADDRESS); cpu.attachHardware(laserHw, CubotLaser.DEFAULT_ADDRESS); @@ -50,5 +51,6 @@ public class CpuInitialisationListener implements GameEventListener { cpu.attachHardware(emoteHw, CubotHologram.DEFAULT_ADDRESS); cpu.attachHardware(batteryHw, CubotBattery.DEFAULT_ADDRESS); cpu.attachHardware(floppyHw, CubotFloppyDrive.DEFAULT_ADDRESS); + cpu.attachHardware(comPortHw, ComPort.DEFAULT_ADDRESS); } } diff --git a/Plugin NPC/src/main/java/net/simon987/npcplugin/Factory.java b/Plugin NPC/src/main/java/net/simon987/npcplugin/Factory.java index 85deb75..da8b5fd 100644 --- a/Plugin NPC/src/main/java/net/simon987/npcplugin/Factory.java +++ b/Plugin NPC/src/main/java/net/simon987/npcplugin/Factory.java @@ -124,7 +124,7 @@ public class Factory extends GameObject implements Updatable { factory.setX((int) (long) json.get("x")); factory.setY((int) (long) json.get("y")); - factory.tmpNpcArray = (Object[]) ((JSONArray) json.get("n")).toArray(); + factory.tmpNpcArray = ((JSONArray) json.get("n")).toArray(); return factory; } diff --git a/Plugin NPC/src/main/java/net/simon987/npcplugin/NpcPlugin.java b/Plugin NPC/src/main/java/net/simon987/npcplugin/NpcPlugin.java index 36e7da6..a2d80d1 100644 --- a/Plugin NPC/src/main/java/net/simon987/npcplugin/NpcPlugin.java +++ b/Plugin NPC/src/main/java/net/simon987/npcplugin/NpcPlugin.java @@ -1,35 +1,65 @@ package net.simon987.npcplugin; +import net.simon987.npcplugin.event.CpuInitialisationListener; import net.simon987.npcplugin.event.WorldCreationListener; import net.simon987.server.ServerConfiguration; +import net.simon987.server.assembly.CpuHardware; import net.simon987.server.game.GameObject; +import net.simon987.server.io.CpuHardwareDeserializer; import net.simon987.server.io.GameObjectDeserializer; import net.simon987.server.logging.LogManager; import net.simon987.server.plugin.ServerPlugin; import org.json.simple.JSONObject; -public class NpcPlugin extends ServerPlugin implements GameObjectDeserializer { +import java.util.ArrayList; +public class NpcPlugin extends ServerPlugin implements GameObjectDeserializer, CpuHardwareDeserializer { + + /** + * Radio tower cache + */ + private static ArrayList radioTowers; @Override public void init(ServerConfiguration configuration) { listeners.add(new WorldCreationListener()); + listeners.add(new CpuInitialisationListener()); + + radioTowers = new ArrayList<>(32); LogManager.LOGGER.info("Initialised NPC plugin"); } @Override - public GameObject deserializeObject(JSONObject object) { + public GameObject deserializeObject(JSONObject json) { - int objType = (int) (long) object.get("t"); + int objType = (int) (long) json.get("t"); if (objType == HarvesterNPC.ID) { - return HarvesterNPC.deserialize(object); + return HarvesterNPC.deserialize(json); } else if (objType == Factory.ID) { - return Factory.deserialise(object); + return Factory.deserialise(json); + } else if (objType == RadioTower.ID) { + return RadioTower.deserialize(json); } return null; } + + @Override + public CpuHardware deserializeHardware(JSONObject hwJson) { + int hwid = (int) (long) hwJson.get("hwid"); + + switch (hwid) { + case RadioReceiverHardware.HWID: + return RadioReceiverHardware.deserialize(hwJson); + } + + return null; + } + + public static ArrayList getRadioTowers() { + return radioTowers; + } } diff --git a/Plugin NPC/src/main/java/net/simon987/npcplugin/RadioReceiverHardware.java b/Plugin NPC/src/main/java/net/simon987/npcplugin/RadioReceiverHardware.java new file mode 100644 index 0000000..a859cf0 --- /dev/null +++ b/Plugin NPC/src/main/java/net/simon987/npcplugin/RadioReceiverHardware.java @@ -0,0 +1,78 @@ +package net.simon987.npcplugin; + +import net.simon987.server.GameServer; +import net.simon987.server.assembly.CpuHardware; +import net.simon987.server.assembly.Status; +import net.simon987.server.assembly.Util; +import net.simon987.server.game.Action; +import net.simon987.server.game.ControllableUnit; +import org.json.simple.JSONObject; + +import java.util.ArrayList; + +public class RadioReceiverHardware extends CpuHardware { + + public static final char HWID = 0xC; //12 + + private static final int LISTEN = 1; + + public static final int DEFAULT_ADDRESS = 0xC; + + private ControllableUnit cubot; + + public RadioReceiverHardware(ControllableUnit cubot) { + this.cubot = cubot; + } + + @Override + public void handleInterrupt(Status status) { + int x = getCpu().getRegisterSet().getRegister("X").getValue(); + int a = getCpu().getRegisterSet().getRegister("A").getValue(); + + if (a == LISTEN) { + + //Find the nearest Radio Tower and query it + cubot.setAction(Action.LISTENING); + + ArrayList messages = new ArrayList<>(6); + + ArrayList towers = new ArrayList<>(NpcPlugin.getRadioTowers()); //Avoid ConcurrentModificationException + for (RadioTower tower : towers) { + if (Util.manhattanDist(tower.getX(), tower.getY(), cubot.getX(), cubot.getY()) <= RadioTower.MAX_RANGE) { + //Tower is in range + messages.addAll(tower.getMessages()); + } + } + + //Write messages to memory + int offset = 0; + + for (char[] message : messages) { + + getCpu().getMemory().write(x + offset, message, 0, message.length); + offset += message.length; + } + + //Write the amount of messages received to B + getCpu().getRegisterSet().getRegister("B").setValue(messages.size()); + } + } + + @Override + public char getId() { + return HWID; + } + + @Override + public JSONObject serialise() { + JSONObject json = new JSONObject(); + json.put("hwid", (int) HWID); + json.put("cubot", cubot.getObjectId()); + + return json; + } + + public static RadioReceiverHardware deserialize(JSONObject json) { + return new RadioReceiverHardware((ControllableUnit) GameServer.INSTANCE.getGameUniverse().getObject((int) (long) json.get("cubot"))); + } +} diff --git a/Plugin NPC/src/main/java/net/simon987/npcplugin/RadioTower.java b/Plugin NPC/src/main/java/net/simon987/npcplugin/RadioTower.java index b225e96..54ee1d1 100644 --- a/Plugin NPC/src/main/java/net/simon987/npcplugin/RadioTower.java +++ b/Plugin NPC/src/main/java/net/simon987/npcplugin/RadioTower.java @@ -1,4 +1,103 @@ package net.simon987.npcplugin; -public class RadioTower { +import net.simon987.server.game.GameObject; +import net.simon987.server.game.Programmable; +import net.simon987.server.game.Updatable; +import org.json.simple.JSONObject; + +import java.awt.*; +import java.util.ArrayList; + +public class RadioTower extends GameObject implements Programmable, Updatable { + + private static final int MAP_INFO = 0x1000; + + public static final int ID = 4; + + public static final int MAX_RANGE = 3; //todo load from config + + private static final int MAX_MESSAGES = 16; + + @Override + public char getMapInfo() { + return MAP_INFO; + } + + + /** + * Messages from the current tick + */ + private ArrayList messages = new ArrayList<>(4); + + /** + * Messages from the last tick + */ + private ArrayList lastMessages = new ArrayList<>(4); + + @Override + public void update() { + lastMessages = new ArrayList<>(messages); + messages.clear(); + } + + @Override + public void sendMessage(char[] message) { + + if (message.length < MAX_MESSAGES) { + messages.add(message); + } + } + + @Override + public JSONObject serialise() { + + JSONObject json = new JSONObject(); + + json.put("i", getObjectId()); + json.put("x", getX()); + json.put("y", getY()); + json.put("t", ID); + + return json; + + } + + public static RadioTower deserialize(JSONObject json) { + + RadioTower tower = new RadioTower(); + tower.setObjectId((long) json.get("i")); + tower.setX((int) (long) json.get("x")); + tower.setY((int) (long) json.get("y")); + + NpcPlugin.getRadioTowers().add(tower); + + return tower; + } + + + public ArrayList getMessages() { + return lastMessages; + } + + /** + * Get the first directly adjacent tile (starting east, going clockwise) + */ + public Point getAdjacentTile() { + + if (!getWorld().isTileBlocked(getX() + 1, getY())) { + return new Point(getX() + 1, getY()); + + } else if (!getWorld().isTileBlocked(getX(), getY() + 1)) { + return new Point(getX(), getY() + 1); + + } else if (!getWorld().isTileBlocked(getX() - 1, getY())) { + return new Point(getX() - 1, getY()); + + } else if (!getWorld().isTileBlocked(getX(), getY() - 1)) { + return new Point(getX(), getY() - 1); + } else { + return null; + } + + } } diff --git a/Plugin NPC/src/main/java/net/simon987/npcplugin/event/CpuInitialisationListener.java b/Plugin NPC/src/main/java/net/simon987/npcplugin/event/CpuInitialisationListener.java new file mode 100644 index 0000000..f6bf356 --- /dev/null +++ b/Plugin NPC/src/main/java/net/simon987/npcplugin/event/CpuInitialisationListener.java @@ -0,0 +1,27 @@ +package net.simon987.npcplugin.event; + +import net.simon987.npcplugin.RadioReceiverHardware; +import net.simon987.server.assembly.CPU; +import net.simon987.server.event.CpuInitialisationEvent; +import net.simon987.server.event.GameEvent; +import net.simon987.server.event.GameEventListener; +import net.simon987.server.user.User; + +public class CpuInitialisationListener implements GameEventListener { + @Override + public Class getListenedEventType() { + return CpuInitialisationEvent.class; + } + + + @Override + public void handle(GameEvent event) { + CPU cpu = (CPU) event.getSource(); + User user = ((CpuInitialisationEvent) event).getUser(); + + RadioReceiverHardware radioHw = new RadioReceiverHardware(user.getControlledUnit()); + radioHw.setCpu(cpu); + + cpu.attachHardware(radioHw, RadioReceiverHardware.DEFAULT_ADDRESS); + } +} diff --git a/Plugin NPC/src/main/java/net/simon987/npcplugin/event/WorldCreationListener.java b/Plugin NPC/src/main/java/net/simon987/npcplugin/event/WorldCreationListener.java index 6601bbf..608a40d 100644 --- a/Plugin NPC/src/main/java/net/simon987/npcplugin/event/WorldCreationListener.java +++ b/Plugin NPC/src/main/java/net/simon987/npcplugin/event/WorldCreationListener.java @@ -1,6 +1,8 @@ package net.simon987.npcplugin.event; import net.simon987.npcplugin.Factory; +import net.simon987.npcplugin.NpcPlugin; +import net.simon987.npcplugin.RadioTower; import net.simon987.server.GameServer; import net.simon987.server.event.GameEvent; import net.simon987.server.event.GameEventListener; @@ -8,6 +10,7 @@ import net.simon987.server.event.WorldGenerationEvent; import net.simon987.server.game.World; import net.simon987.server.logging.LogManager; +import java.awt.*; import java.util.Random; public class WorldCreationListener implements GameEventListener { @@ -31,6 +34,7 @@ public class WorldCreationListener implements GameEventListener { World world = ((WorldGenerationEvent) event).getWorld(); + outerLoopFactory: for (int x = 2; x < 12; x++) { for (int y = 2; y < 12; y++) { @@ -54,10 +58,40 @@ public class WorldCreationListener implements GameEventListener { LogManager.LOGGER.info("Spawned Factory at (" + world.getX() + ", " + world.getY() + ") (" + x + ", " + y + ")"); + break outerLoopFactory; + } + } + } + //Also spawn a radio tower in the same World + Point p = world.getRandomPassableTile(); + if (p != null) { + while (p.x == 0 || p.x == World.WORLD_SIZE - 1 || p.y == World.WORLD_SIZE - 1 || p.y == 0) { + p = world.getRandomPassableTile(); + + if (p == null) { + //World is full return; } } + + RadioTower radioTower = new RadioTower(); + + radioTower.setWorld(world); + radioTower.setObjectId(GameServer.INSTANCE.getGameUniverse().getNextObjectId()); + radioTower.setX(p.x); + radioTower.setY(p.y); + + if (radioTower.getAdjacentTile() != null) { + //Radio Tower has adjacent tiles + world.getGameObjects().add(radioTower); + world.incUpdatable(); //In case the Factory couldn't be spawned. + + NpcPlugin.getRadioTowers().add(radioTower); + + LogManager.LOGGER.info("Spawned RadioTower at (" + world.getX() + ", " + world.getY() + + ") (" + p.x + ", " + p.y + ")"); + } } } } diff --git a/Server/src/main/java/net/simon987/server/game/Action.java b/Server/src/main/java/net/simon987/server/game/Action.java index 2b35c92..f9f037f 100644 --- a/Server/src/main/java/net/simon987/server/game/Action.java +++ b/Server/src/main/java/net/simon987/server/game/Action.java @@ -5,6 +5,7 @@ public enum Action { DIGGING, WALKING, WITHDRAWING, - DEPOSITING + DEPOSITING, + LISTENING } diff --git a/Server/src/main/java/net/simon987/server/game/ControllableUnit.java b/Server/src/main/java/net/simon987/server/game/ControllableUnit.java index 51a97f1..0478316 100644 --- a/Server/src/main/java/net/simon987/server/game/ControllableUnit.java +++ b/Server/src/main/java/net/simon987/server/game/ControllableUnit.java @@ -21,4 +21,9 @@ public interface ControllableUnit { int getEnergy(); + int getX(); + + int getY(); + + void setAction(Action listening); } diff --git a/Server/src/main/java/net/simon987/server/game/Programmable.java b/Server/src/main/java/net/simon987/server/game/Programmable.java new file mode 100644 index 0000000..3508480 --- /dev/null +++ b/Server/src/main/java/net/simon987/server/game/Programmable.java @@ -0,0 +1,7 @@ +package net.simon987.server.game; + +public interface Programmable { + + void sendMessage(char[] message); + +} diff --git a/Server/src/main/java/net/simon987/server/webserver/CodeUploadHandler.java b/Server/src/main/java/net/simon987/server/webserver/CodeUploadHandler.java index 520f6cd..422b32f 100644 --- a/Server/src/main/java/net/simon987/server/webserver/CodeUploadHandler.java +++ b/Server/src/main/java/net/simon987/server/webserver/CodeUploadHandler.java @@ -33,6 +33,13 @@ public class CodeUploadHandler implements MessageHandler { user.getUser().getCpu().getMemory().write((char) ar.origin, assembledCode, 0, assembledCode.length); user.getUser().getCpu().setCodeSegmentOffset(ar.getCodeSegmentOffset()); + //Clear keyboard buffer + if (user.getUser().getControlledUnit() != null && + user.getUser().getControlledUnit().getKeyboardBuffer() != null) { + user.getUser().getControlledUnit().getKeyboardBuffer().clear(); + } + + JSONObject response = new JSONObject(); response.put("t", "codeResponse"); response.put("bytes", ar.bytes.length); From b3d88b2813134d44d6f0b9b2473a70922960d93c Mon Sep 17 00:00:00 2001 From: simon Date: Fri, 29 Dec 2017 22:32:39 -0500 Subject: [PATCH 14/24] Fixed Radio Tower range --- .../java/net/simon987/npcplugin/RadioReceiverHardware.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Plugin NPC/src/main/java/net/simon987/npcplugin/RadioReceiverHardware.java b/Plugin NPC/src/main/java/net/simon987/npcplugin/RadioReceiverHardware.java index a859cf0..2a04f77 100644 --- a/Plugin NPC/src/main/java/net/simon987/npcplugin/RadioReceiverHardware.java +++ b/Plugin NPC/src/main/java/net/simon987/npcplugin/RadioReceiverHardware.java @@ -38,7 +38,8 @@ public class RadioReceiverHardware extends CpuHardware { ArrayList towers = new ArrayList<>(NpcPlugin.getRadioTowers()); //Avoid ConcurrentModificationException for (RadioTower tower : towers) { - if (Util.manhattanDist(tower.getX(), tower.getY(), cubot.getX(), cubot.getY()) <= RadioTower.MAX_RANGE) { + if (Util.manhattanDist(tower.getWorld().getX(), tower.getWorld().getY(), cubot.getWorld().getX(), + cubot.getWorld().getY()) <= RadioTower.MAX_RANGE) { //Tower is in range messages.addAll(tower.getMessages()); } From 9e402fe8a12b2cd175ccef463732d2e88b64e271 Mon Sep 17 00:00:00 2001 From: simon Date: Fri, 29 Dec 2017 22:36:52 -0500 Subject: [PATCH 15/24] Fixed Radio Tower range --- .../main/java/net/simon987/server/game/ControllableUnit.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Server/src/main/java/net/simon987/server/game/ControllableUnit.java b/Server/src/main/java/net/simon987/server/game/ControllableUnit.java index 0478316..7fdf561 100644 --- a/Server/src/main/java/net/simon987/server/game/ControllableUnit.java +++ b/Server/src/main/java/net/simon987/server/game/ControllableUnit.java @@ -26,4 +26,6 @@ public interface ControllableUnit { int getY(); void setAction(Action listening); + + World getWorld(); } From fd73a477968274f7c92485a068677be7bbe64a65 Mon Sep 17 00:00:00 2001 From: simon Date: Sat, 30 Dec 2017 10:30:18 -0500 Subject: [PATCH 16/24] Fixes #65 --- .../net/simon987/cubotplugin/ComPort.java | 2 +- .../net/simon987/cubotplugin/CubotLaser.java | 2 +- .../simon987/biomassplugin/WorldUtils.java | 4 +-- .../java/net/simon987/server/game/World.java | 32 ++++++++++++++++--- 4 files changed, 32 insertions(+), 8 deletions(-) diff --git a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/ComPort.java b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/ComPort.java index dbb55d7..fc3380c 100644 --- a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/ComPort.java +++ b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/ComPort.java @@ -40,7 +40,7 @@ public class ComPort extends CpuHardware { //Get object directly in front of the Cubot Point frontTile = cubot.getFrontTile(); - ArrayList objects = cubot.getWorld().getGameObjectsAt(frontTile.x, frontTile.y); + ArrayList objects = cubot.getWorld().getGameObjectsBlockingAt(frontTile.x, frontTile.y); if (objects.size() > 0 && objects.get(0) instanceof Programmable) { diff --git a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotLaser.java b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotLaser.java index f336b67..41688e2 100644 --- a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotLaser.java +++ b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotLaser.java @@ -46,7 +46,7 @@ public class CubotLaser extends CpuHardware { Point frontTile = cubot.getFrontTile(); - ArrayList objects = cubot.getWorld().getGameObjectsAt(frontTile.x, frontTile.y); + ArrayList objects = cubot.getWorld().getGameObjectsBlockingAt(frontTile.x, frontTile.y); if (cubot.getCurrentAction() == Action.IDLE && objects.size() > 0) { diff --git a/Plugin Plant/src/main/java/net/simon987/biomassplugin/WorldUtils.java b/Plugin Plant/src/main/java/net/simon987/biomassplugin/WorldUtils.java index fda2516..e4b98bb 100644 --- a/Plugin Plant/src/main/java/net/simon987/biomassplugin/WorldUtils.java +++ b/Plugin Plant/src/main/java/net/simon987/biomassplugin/WorldUtils.java @@ -17,7 +17,7 @@ public class WorldUtils { Random random = new Random(); int blobCount = random.nextInt(maxCount - minCount) + minCount; - ArrayList biomassBlobs = new ArrayList<>(maxCount); + ArrayList biomassBlobs = new ArrayList<>(blobCount); //Count number of plain tiles. If there is less plain tiles than desired amount of blobs, //set the desired amount of blobs to the plain tile count @@ -45,7 +45,7 @@ public class WorldUtils { //Don't block worlds int counter = 0; while (p.x == 0 || p.y == 0 || p.x == World.WORLD_SIZE - 1 || p.y == World.WORLD_SIZE - 1 || - world.isTileBlocked(p.x, p.y)) { + world.getGameObjectsAt(p.x, p.y).size() != 0) { p = world.getTileMap().getRandomPlainTile(); counter++; diff --git a/Server/src/main/java/net/simon987/server/game/World.java b/Server/src/main/java/net/simon987/server/game/World.java index 60b939a..990de2d 100644 --- a/Server/src/main/java/net/simon987/server/game/World.java +++ b/Server/src/main/java/net/simon987/server/game/World.java @@ -54,7 +54,7 @@ public class World implements JSONSerialisable { */ public boolean isTileBlocked(int x, int y) { - return getGameObjectsAt(x, y).size() > 0 || tileMap.getTileAt(x, y) == TileMap.WALL_TILE; + return getGameObjectsBlockingAt(x, y).size() > 0 || tileMap.getTileAt(x, y) == TileMap.WALL_TILE; } @@ -245,13 +245,13 @@ public class World implements JSONSerialisable { } /** - * Get the list of game objects at a location + * Get the list of game objects that are blocking a tile at a set of coordinates * * @param x X coordinate on the World * @param y Y coordinate on the World - * @return the list of game objects at a location + * @return the list of game objects blocking a location */ - public ArrayList getGameObjectsAt(int x, int y) { + public ArrayList getGameObjectsBlockingAt(int x, int y) { ArrayList gameObjects = new ArrayList<>(2); @@ -266,6 +266,30 @@ public class World implements JSONSerialisable { return gameObjects; } + /** + * Get the list of game objects that are exactly at a given location + *
+ * Note: Objects like the Factory that are more than 1x1 tiles wide will only be returned + * when their exact coordinates are specified + * + * @param x X coordinate on the World + * @param y Y coordinate on the World + * @return the list of game objects at a location + */ + public ArrayList getGameObjectsAt(int x, int y) { + ArrayList gameObjects = new ArrayList<>(2); + + for (GameObject obj : this.gameObjects) { + + if (obj.getX() == x && obj.getY() == y) { + gameObjects.add(obj); + } + + } + + return gameObjects; + } + public void incUpdatable() { updatable++; } From fe0be03ab83e761037e138b864b478495f42dd3e Mon Sep 17 00:00:00 2001 From: simon Date: Sat, 30 Dec 2017 10:35:56 -0500 Subject: [PATCH 17/24] Fixes #68 & Reformatted code --- .../net/simon987/server/io/FileUtils.java | 312 +++++++++--------- 1 file changed, 155 insertions(+), 157 deletions(-) diff --git a/Server/src/main/java/net/simon987/server/io/FileUtils.java b/Server/src/main/java/net/simon987/server/io/FileUtils.java index 8e9ba15..28c5a59 100644 --- a/Server/src/main/java/net/simon987/server/io/FileUtils.java +++ b/Server/src/main/java/net/simon987/server/io/FileUtils.java @@ -1,5 +1,7 @@ package net.simon987.server.io; +import net.simon987.server.logging.LogManager; + import java.io.*; import java.nio.file.Files; import java.nio.file.Path; @@ -11,176 +13,172 @@ import java.util.zip.ZipOutputStream; public class FileUtils { - private static final int BUFFER_SIZE = 1024; - private static final String STR_ENCODING = "UTF-8"; - private static final String DATE_FORMAT = "yyyyMMddHHmmss"; - private static final String FILE_TYPE = ".zip"; - private static final Path ROOT_DIR; - private static final String DIR_NAME = "history"; - public static final Path DIR_PATH; - - static { - ROOT_DIR = Paths.get(".").normalize(); - DIR_PATH = ROOT_DIR.resolve(DIR_NAME); - } - - //Private constructor - private FileUtils() { - - } - - /** - * Creates a new stamp containing the current date and time - * - * @return date and time stamp - */ - private static String getDateTimeStamp() { - Date millisToDate = new Date(System.currentTimeMillis()); - SimpleDateFormat f = new SimpleDateFormat(DATE_FORMAT); - return f.format(millisToDate); - } + private static final int BUFFER_SIZE = 1024; + private static final String STR_ENCODING = "UTF-8"; + private static final String DATE_FORMAT = "yyyyMMddHHmmss"; + private static final String FILE_TYPE = ".zip"; + private static final Path ROOT_DIR; + private static final String DIR_NAME = "history"; + public static final Path DIR_PATH; - /** - * Created a directory if none exists with the specified name - * + static { + ROOT_DIR = Paths.get(".").normalize(); + DIR_PATH = ROOT_DIR.resolve(DIR_NAME); + } + + //Private constructor + private FileUtils() { + + } + + /** + * Creates a new stamp containing the current date and time + * + * @return date and time stamp + */ + private static String getDateTimeStamp() { + Date millisToDate = new Date(System.currentTimeMillis()); + SimpleDateFormat f = new SimpleDateFormat(DATE_FORMAT); + return f.format(millisToDate); + } + + /** + * Created a directory if none exists with the specified name + * * @param directory folder to create * @return true is the file exists or create operation is successful - */ - public static boolean prepDirectory(Path directory) { - File file = directory.toFile(); - - //If the directory exists or the directory created successfully return true - if(file.exists() || file.mkdir()) { - return true; - - } else { - System.out.println("Error creating directory: " + file.toString()); - return false; - } - } - - /** - * Converts a file into an array of bytes - * + */ + public static boolean prepDirectory(Path directory) { + File file = directory.toFile(); + + //If the directory exists or the directory created successfully return true + if (file.exists() || file.mkdir()) { + return true; + + } else { + System.out.println("Error creating directory: " + file.toString()); + return false; + } + } + + /** + * Converts a file into an array of bytes + * * @param path the file to be converted into bytes * @return the byte array of the given file - */ - public static byte[] bytifyFile(Path path) { - byte[] bytes = null; + */ + public static byte[] bytifyFile(Path path) { + byte[] bytes = null; - try { - bytes = Files.readAllBytes(path); + try { + bytes = Files.readAllBytes(path); - } catch (IOException e) { - System.out.println("Failed to extract bytes from: " + path); - e.printStackTrace(); - } + } catch (IOException e) { + System.out.println("Failed to extract bytes from: " + path); + e.printStackTrace(); + } - return bytes; - } + return bytes; + } - /** - * Takes in a file that had been converted to a byte[] to be written to a new - * zip file - * + /** + * Takes in a file that had been converted to a byte[] to be written to a new + * zip file + * * @param data * contains data in byte array form to be written, typically a file - * that has been converted with bytifyFile() - * @throws IOException - * if an error occurs during the write process - */ - public static void writeSaveToZip(String name, byte[] data) throws IOException { + * that has been converted with bytifyFile() + * @throws IOException + * if an error occurs during the write process + */ + public static void writeSaveToZip(String name, byte[] data) throws IOException { - String newFile = DIR_PATH.resolve(getDateTimeStamp() + FILE_TYPE).toString(); - FileOutputStream output = new FileOutputStream(newFile); - ZipOutputStream stream = new ZipOutputStream(output); - byte[] buffer = new byte[BUFFER_SIZE]; - ByteArrayInputStream bais = new ByteArrayInputStream(buffer); + String newFile = DIR_PATH.resolve(getDateTimeStamp() + FILE_TYPE).toString(); + FileOutputStream output = new FileOutputStream(newFile); + ZipOutputStream stream = new ZipOutputStream(output); + byte[] buffer = new byte[BUFFER_SIZE]; + ByteArrayInputStream bais = new ByteArrayInputStream(buffer); - while ((bais.read(buffer)) > -1) { - // File name - ZipEntry entry = new ZipEntry(name); - // Set to start of next entry in the stream. - stream.putNextEntry(entry); - // Data to write. - stream.write(data); - // Close the current entry. - stream.closeEntry(); - } + while ((bais.read(buffer)) > -1) { + // File name + ZipEntry entry = new ZipEntry(name); + // Set to start of next entry in the stream. + stream.putNextEntry(entry); + // Data to write. + stream.write(data); + // Close the current entry. + stream.closeEntry(); + } - stream.close(); - output.close(); - } - - public static void cleanHistory(int size) { - - - File[] files = new File(DIR_PATH.toString()).listFiles(); - File[] sorted = new File[size]; - - File nextSortedFile = null; - File currentFile = null; - boolean changed = false; - - for(int i = 0; i < files.length / 2; i++) { - currentFile = files[i]; - files[i] = files[files.length - i - 1]; - files[files.length - i - 1] = currentFile; - } - - currentFile = null; - - for(int f = 0; f < files.length; f++) { - changed = false; - long dirFile = Long.parseLong(files[f].getName().substring(0, (files[f].getName().length() -4))); - - if(f < size && sorted[f] == null) { - sorted[f] = files[f]; - - } else { - - for(int s = 0; s < sorted.length; s++) { - - long sortedFile = Long.parseLong(sorted[s].getName().substring(0, (sorted[s].getName().length() -4))); - - if(dirFile > sortedFile) { - - if(s == sorted.length - 1) { - sorted[s] = files[f]; - - } else if(nextSortedFile == null) { - nextSortedFile = sorted[s]; - sorted[s] = files[f]; - - } else { - currentFile = sorted[s]; - sorted[s] = nextSortedFile; - nextSortedFile = currentFile; - } - - nextSortedFile = null; - currentFile = null; - changed = true; - } - } - - if(changed == false) { - files[f].delete(); - } - - } - } + stream.close(); + output.close(); + } - } - - /** - * Converts a byte array into human readable format using the provided encoding - * - * @param bytes - * data to be encoded to String - * @return a String containing the encoded bytes - */ - public static String byteArrAsString(byte[] bytes) throws UnsupportedEncodingException { - return new String(bytes, STR_ENCODING); - } + public static void cleanHistory(int size) { + + + File[] files = new File(DIR_PATH.toString()).listFiles(); + File[] sorted = new File[size]; + + File currentFile; + boolean changed; + + if (files != null) { + for (int i = 0; i < files.length / 2; i++) { + currentFile = files[i]; + files[i] = files[files.length - i - 1]; + files[files.length - i - 1] = currentFile; + } + + for (int f = 0; f < files.length; f++) { + changed = false; + + try { + long dirFile = Long.parseLong(files[f].getName().substring(0, (files[f].getName().length() - 4))); + + if (f < size && sorted[f] == null) { + sorted[f] = files[f]; + + } else { + + for (int s = 0; s < sorted.length; s++) { + + long sortedFile = Long.parseLong(sorted[s].getName().substring(0, (sorted[s].getName().length() - 4))); + + if (dirFile > sortedFile) { + + if (s == sorted.length - 1) { + sorted[s] = files[f]; + + } else { + sorted[s] = files[f]; + } + + changed = true; + } + } + + if (!changed) { + files[f].delete(); + } + + } + } catch (NumberFormatException e) { + LogManager.LOGGER.info("Non-save file in history directory: " + files[f].getName()); + } + } + } + + + } + + /** + * Converts a byte array into human readable format using the provided encoding + * + * @param bytes data to be encoded to String + * @return a String containing the encoded bytes + */ + public static String byteArrAsString(byte[] bytes) throws UnsupportedEncodingException { + return new String(bytes, STR_ENCODING); + } } From 70a55dce59802b8acb6874a2f6dd34ffb3ac33f0 Mon Sep 17 00:00:00 2001 From: simon Date: Sat, 30 Dec 2017 11:03:09 -0500 Subject: [PATCH 18/24] Added features to Hologram hardware - Fixes #63 and #67 --- .../java/net/simon987/cubotplugin/Cubot.java | 10 ++++++---- .../net/simon987/cubotplugin/CubotHologram.java | 17 +++++++++++++++++ .../java/net/simon987/server/assembly/Util.java | 2 +- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/Cubot.java b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/Cubot.java index 1526c28..bc9f07e 100644 --- a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/Cubot.java +++ b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/Cubot.java @@ -13,7 +13,7 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit { private static final char MAP_INFO = 0x0080; public static final int ID = 1; - private char hologram = 0; + private int hologram = 0; private String hologramString = ""; private HologramMode hologramMode = HologramMode.CLEARED; @@ -88,7 +88,7 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit { json.put("heldItem", heldItem); json.put("hp", hp); json.put("action", lastAction.ordinal()); - json.put("holo", (int) hologram); + json.put("holo", hologram); json.put("holoStr", hologramString); json.put("holoMode", lastHologramMode.ordinal()); json.put("energy", energy); @@ -158,7 +158,7 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit { return currentAction; } - public void setHologram(char hologram) { + public void setHologram(int hologram) { this.hologram = hologram; } @@ -223,7 +223,9 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit { public enum HologramMode { CLEARED, HEX, - STRING + STRING, + DEC, + COLOR } @Override diff --git a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotHologram.java b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotHologram.java index 7e07839..9729311 100644 --- a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotHologram.java +++ b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotHologram.java @@ -20,6 +20,8 @@ public class CubotHologram extends CpuHardware { private static final int CLEAR = 0; private static final int DISPLAY_HEX = 1; private static final int DISPLAY_STRING = 2; + private static final int DISPLAY_DEC = 3; + private static final int DISPLAY_COLOR = 4; private static final int STR_MAX_LEN = 8; @@ -57,6 +59,21 @@ public class CubotHologram extends CpuHardware { cubot.setHologramString(holoString.toString()); cubot.setHologramMode(Cubot.HologramMode.STRING); + } else if (a == DISPLAY_DEC) { + //Display decimal number + char b = getCpu().getRegisterSet().getRegister("B").getValue(); + cubot.setHologram(b); + cubot.setHologramMode(Cubot.HologramMode.DEC); + + } else if (a == DISPLAY_COLOR) { + + if (cubot.spendEnergy(4)) { + int b = getCpu().getRegisterSet().getRegister("B").getValue(); + int c = getCpu().getRegisterSet().getRegister("C").getValue(); + + cubot.setHologramMode(Cubot.HologramMode.COLOR); + cubot.setHologram((c | (b << 16)) & 0x00FFFFFF); //B:C, ignore first byte + } } } diff --git a/Server/src/main/java/net/simon987/server/assembly/Util.java b/Server/src/main/java/net/simon987/server/assembly/Util.java index cffafa2..437033a 100755 --- a/Server/src/main/java/net/simon987/server/assembly/Util.java +++ b/Server/src/main/java/net/simon987/server/assembly/Util.java @@ -42,7 +42,7 @@ public class Util { } public static String toHex(int a) { - return String.format("%04X ", uShort(a)); + return String.format("%04X ", a); } public static String toHex(byte[] byteArray) { From 2ef6f492c474cb12b2cd535c6ca69be993dcbf95 Mon Sep 17 00:00:00 2001 From: simon Date: Sat, 30 Dec 2017 11:14:45 -0500 Subject: [PATCH 19/24] Fixes #64 --- .../assembly/instruction/NegInstruction.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/Server/src/main/java/net/simon987/server/assembly/instruction/NegInstruction.java b/Server/src/main/java/net/simon987/server/assembly/instruction/NegInstruction.java index 14b6316..c9638b0 100644 --- a/Server/src/main/java/net/simon987/server/assembly/instruction/NegInstruction.java +++ b/Server/src/main/java/net/simon987/server/assembly/instruction/NegInstruction.java @@ -14,7 +14,23 @@ public class NegInstruction extends Instruction { @Override public Status execute(Target dst, int dstIndex, Status status) { - dst.set(dstIndex, -dst.get(dstIndex)); + //If the operand is zero, the carry flag is cleared; in all other cases, the carry flag is set. + + char destination = (char) dst.get(dstIndex); + + if (destination == 0) { + status.setCarryFlag(false); + status.setZeroFlag(true); + } else { + status.setCarryFlag(true); + } + + //Attempting to negate a word containing -32,768 causes no change to the operand and sets the Overflow Flag. + if (destination == 0x8000) { + status.setOverflowFlag(true); + } else { + dst.set(dstIndex, -destination); + } return status; } From 55d4c19fe1c3e14fd6e4733e2b283fff22d6e2cb Mon Sep 17 00:00:00 2001 From: simon Date: Sat, 30 Dec 2017 15:30:44 -0500 Subject: [PATCH 20/24] Added Console output, Cubots can receive data from ComPort, Fixed BOM being added to string literals, Fixed legs changing direction for free when energy < 100, Changed some log levels. --- .../net/simon987/cubotplugin/ComPort.java | 74 +++++++++++++++---- .../java/net/simon987/cubotplugin/Cubot.java | 42 ++++++++++- .../net/simon987/cubotplugin/CubotLeg.java | 18 +++-- .../simon987/server/assembly/Assembler.java | 2 +- .../server/game/ControllableUnit.java | 4 + .../server/webserver/CodeRequestHandler.java | 2 +- .../server/webserver/CodeUploadHandler.java | 2 +- .../server/webserver/FloppyHandler.java | 4 +- .../server/webserver/KeypressHandler.java | 3 +- .../webserver/MessageEventDispatcher.java | 4 +- .../webserver/ObjectsRequestHandler.java | 4 +- .../server/webserver/SocketServer.java | 26 ++++++- .../webserver/TerrainRequestHandler.java | 2 +- .../webserver/UserInfoRequestHandler.java | 2 +- 14 files changed, 151 insertions(+), 38 deletions(-) diff --git a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/ComPort.java b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/ComPort.java index fc3380c..f73507a 100644 --- a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/ComPort.java +++ b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/ComPort.java @@ -17,9 +17,10 @@ public class ComPort extends CpuHardware { private Cubot cubot; + private static final int SELF_CLEAR = 0; private static final int POLL = 1; - - private static final int OUT = 2; + private static final int FRONT_PORT_OUT = 2; + private static final int SELF_OUT = 3; public ComPort(Cubot cubot) { this.cubot = cubot; @@ -32,20 +33,69 @@ public class ComPort extends CpuHardware { int a = getCpu().getRegisterSet().getRegister("A").getValue(); - if (a == POLL) { + if (a == SELF_CLEAR) { - /* No-op */ + cubot.getConsoleMessagesBuffer().clear(); + cubot.setConsoleMode(Cubot.ConsoleMode.CLEAR); - } else if (a == OUT) { + } else if (a == POLL) { - //Get object directly in front of the Cubot - Point frontTile = cubot.getFrontTile(); - ArrayList objects = cubot.getWorld().getGameObjectsBlockingAt(frontTile.x, frontTile.y); - - if (objects.size() > 0 && objects.get(0) instanceof Programmable) { + if (cubot.spendEnergy(4)) { int x = getCpu().getRegisterSet().getRegister("X").getValue(); + //Read all messages in the console buffer to memory at X + + for (char[] message : cubot.getConsoleMessagesBuffer()) { + if (x + MESSAGE_LENGTH >= getCpu().getMemory().getWords().length) { + //todo set interrupt ? + getCpu().getStatus().setErrorFlag(true); + } else { + System.arraycopy(message, 0, getCpu().getMemory().getWords(), x, MESSAGE_LENGTH); + } + } + + //Set B = number of messages + getCpu().getRegisterSet().getRegister("B").setValue(cubot.getConsoleMessagesBuffer().size()); + + } + + } else if (a == FRONT_PORT_OUT) { + + if (cubot.spendEnergy(20)) { + //Get object directly in front of the Cubot + Point frontTile = cubot.getFrontTile(); + //Todo will have to add getGameObjectsBlockingAt to enable Factory + ArrayList objects = cubot.getWorld().getGameObjectsAt(frontTile.x, frontTile.y); + + if (objects.size() > 0 && objects.get(0) instanceof Programmable) { + + int x = getCpu().getRegisterSet().getRegister("X").getValue(); + + if (x + MESSAGE_LENGTH >= getCpu().getMemory().getWords().length) { + //todo set interrupt ? + getCpu().getStatus().setErrorFlag(true); + } else { + + //Get MESSAGE_LENGTH-word message pointed by X + char[] message = new char[MESSAGE_LENGTH]; + System.arraycopy(getCpu().getMemory().getWords(), x, message, 0, MESSAGE_LENGTH); + + //Send it to the Programmable object + ((Programmable) objects.get(0)).sendMessage(message); + + System.out.println("Sent message to " + ((Cubot) objects.get(0)).getParent().getUsername()); + } + } + } + + } else if (a == SELF_OUT) { + + if (cubot.spendEnergy(1)) { + + int x = getCpu().getRegisterSet().getRegister("X").getValue(); + + //Write a single message to console buffer if (x + MESSAGE_LENGTH >= getCpu().getMemory().getWords().length) { //todo set interrupt ? getCpu().getStatus().setErrorFlag(true); @@ -54,9 +104,7 @@ public class ComPort extends CpuHardware { //Get MESSAGE_LENGTH-word message pointed by X char[] message = new char[MESSAGE_LENGTH]; System.arraycopy(getCpu().getMemory().getWords(), x, message, 0, MESSAGE_LENGTH); - - //Send it to the Programmable object - ((Programmable) objects.get(0)).sendMessage(message); + cubot.sendMessage(message); } } } diff --git a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/Cubot.java b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/Cubot.java index bc9f07e..dfdfe75 100644 --- a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/Cubot.java +++ b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/Cubot.java @@ -8,7 +8,7 @@ import org.json.simple.JSONObject; import java.util.ArrayList; -public class Cubot extends GameObject implements Updatable, ControllableUnit { +public class Cubot extends GameObject implements Updatable, ControllableUnit, Programmable { private static final char MAP_INFO = 0x0080; public static final int ID = 1; @@ -16,7 +16,6 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit { private int hologram = 0; private String hologramString = ""; private HologramMode hologramMode = HologramMode.CLEARED; - private HologramMode lastHologramMode = HologramMode.CLEARED; /** @@ -30,6 +29,11 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit { private ArrayList keyboardBuffer = new ArrayList<>(); + private ArrayList consoleMessagesBuffer = new ArrayList<>(CONSOLE_BUFFER_MAX_SIZE); + private ArrayList lastConsoleMessagesBuffer = new ArrayList<>(CONSOLE_BUFFER_MAX_SIZE); + private ConsoleMode consoleMode = ConsoleMode.NORMAL; + private ConsoleMode lastConsoleMode = ConsoleMode.NORMAL; + private FloppyDisk floppyDisk; private User parent; @@ -38,6 +42,7 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit { private int maxEnergy; private static final float SOLAR_PANEL_MULTIPLIER = 1; + private static final int CONSOLE_BUFFER_MAX_SIZE = 40; public Cubot() { @@ -75,6 +80,13 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit { //Same principle for hologram lastHologramMode = hologramMode; hologramMode = HologramMode.CLEARED; + + //And the console + lastConsoleMode = consoleMode; + consoleMode = ConsoleMode.NORMAL; + + lastConsoleMessagesBuffer = new ArrayList<>(consoleMessagesBuffer); + consoleMessagesBuffer.clear(); } @Override @@ -228,8 +240,34 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit { COLOR } + public enum ConsoleMode { + CLEAR, + NORMAL + } + @Override public void setAction(Action action) { currentAction = action; } + + @Override + public void sendMessage(char[] message) { + + if (consoleMessagesBuffer.size() < CONSOLE_BUFFER_MAX_SIZE) { + consoleMessagesBuffer.add(message); + } + } + + public ArrayList getConsoleMessagesBuffer() { + return lastConsoleMessagesBuffer; + } + + + public int getConsoleMode() { + return lastConsoleMode.ordinal(); + } + + public void setConsoleMode(ConsoleMode consoleMode) { + this.consoleMode = consoleMode; + } } diff --git a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotLeg.java b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotLeg.java index f3b0d81..b10a456 100644 --- a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotLeg.java +++ b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotLeg.java @@ -55,16 +55,18 @@ public class CubotLeg extends CpuHardware implements JSONSerialisable { } else if (a == SET_DIR_AND_WALK) { - Direction dir = Direction.getDirection(b); + if (cubot.getMaxEnergy() >= 100) { + Direction dir = Direction.getDirection(b); - if (dir != null) { - cubot.setDirection(Direction.getDirection(b)); - status.setErrorFlag(false); - } else { - status.setErrorFlag(true); + if (dir != null) { + cubot.setDirection(Direction.getDirection(b)); + status.setErrorFlag(false); + } else { + status.setErrorFlag(true); + } + + cubot.setCurrentAction(Action.WALKING); } - - cubot.setCurrentAction(Action.WALKING); } } diff --git a/Server/src/main/java/net/simon987/server/assembly/Assembler.java b/Server/src/main/java/net/simon987/server/assembly/Assembler.java index ca3b02c..b6f5f8b 100755 --- a/Server/src/main/java/net/simon987/server/assembly/Assembler.java +++ b/Server/src/main/java/net/simon987/server/assembly/Assembler.java @@ -155,7 +155,7 @@ public class Assembler { String string = value.substring(1, value.length() - 1); string = StringEscapeUtils.unescapeJava(string); - out.write(string.getBytes(StandardCharsets.UTF_16)); + out.write(string.getBytes(StandardCharsets.UTF_16BE)); } else if (labels != null && labels.containsKey(value)) { //Handle label out.writeChar(labels.get(value)); diff --git a/Server/src/main/java/net/simon987/server/game/ControllableUnit.java b/Server/src/main/java/net/simon987/server/game/ControllableUnit.java index 7fdf561..31b279d 100644 --- a/Server/src/main/java/net/simon987/server/game/ControllableUnit.java +++ b/Server/src/main/java/net/simon987/server/game/ControllableUnit.java @@ -28,4 +28,8 @@ public interface ControllableUnit { void setAction(Action listening); World getWorld(); + + ArrayList getConsoleMessagesBuffer(); + + int getConsoleMode(); } diff --git a/Server/src/main/java/net/simon987/server/webserver/CodeRequestHandler.java b/Server/src/main/java/net/simon987/server/webserver/CodeRequestHandler.java index 273a3bb..dfa4272 100644 --- a/Server/src/main/java/net/simon987/server/webserver/CodeRequestHandler.java +++ b/Server/src/main/java/net/simon987/server/webserver/CodeRequestHandler.java @@ -9,7 +9,7 @@ public class CodeRequestHandler implements MessageHandler { if (json.get("t").equals("codeRequest")) { - LogManager.LOGGER.info("(WS) Code request from " + user.getUser().getUsername()); + LogManager.LOGGER.fine("(WS) Code request from " + user.getUser().getUsername()); if (user.isGuest()) { diff --git a/Server/src/main/java/net/simon987/server/webserver/CodeUploadHandler.java b/Server/src/main/java/net/simon987/server/webserver/CodeUploadHandler.java index 422b32f..1518241 100644 --- a/Server/src/main/java/net/simon987/server/webserver/CodeUploadHandler.java +++ b/Server/src/main/java/net/simon987/server/webserver/CodeUploadHandler.java @@ -12,7 +12,7 @@ public class CodeUploadHandler implements MessageHandler { public void handle(OnlineUser user, JSONObject json) { if (json.get("t").equals("uploadCode")) { - LogManager.LOGGER.info("(WS) Code upload from " + user.getUser().getUsername()); + LogManager.LOGGER.fine("(WS) Code upload from " + user.getUser().getUsername()); if (user.isGuest()) { //Ignore diff --git a/Server/src/main/java/net/simon987/server/webserver/FloppyHandler.java b/Server/src/main/java/net/simon987/server/webserver/FloppyHandler.java index 115d929..a66f418 100644 --- a/Server/src/main/java/net/simon987/server/webserver/FloppyHandler.java +++ b/Server/src/main/java/net/simon987/server/webserver/FloppyHandler.java @@ -13,7 +13,7 @@ public class FloppyHandler implements MessageHandler { if (json.get("t").equals("floppyDown")) { - LogManager.LOGGER.info("(WS) Floppy download request from " + user.getUser().getUsername()); + LogManager.LOGGER.fine("(WS) Floppy download request from " + user.getUser().getUsername()); if (user.isGuest()) { return; @@ -27,7 +27,7 @@ public class FloppyHandler implements MessageHandler { } else if (json.get("t").equals("floppyUp")) { - LogManager.LOGGER.info("(WS) Floppy upload request from " + user.getUser().getUsername()); + LogManager.LOGGER.fine("(WS) Floppy upload request from " + user.getUser().getUsername()); //Check newly uploaded file on the database byte[] bytes = db.getFloppy(user.getUser().getUsername()); diff --git a/Server/src/main/java/net/simon987/server/webserver/KeypressHandler.java b/Server/src/main/java/net/simon987/server/webserver/KeypressHandler.java index 4b99783..a0cbd95 100644 --- a/Server/src/main/java/net/simon987/server/webserver/KeypressHandler.java +++ b/Server/src/main/java/net/simon987/server/webserver/KeypressHandler.java @@ -1,6 +1,5 @@ package net.simon987.server.webserver; -import net.simon987.server.logging.LogManager; import org.json.simple.JSONObject; import java.util.ArrayList; @@ -14,7 +13,7 @@ public class KeypressHandler implements MessageHandler { if (!user.isGuest()) { if (json.get("t").equals("k")) { - LogManager.LOGGER.info("(WS) Received keypress"); + //LogManager.LOGGER.fine("(WS) Received keypress"); int key = (int) (long) json.get("k"); diff --git a/Server/src/main/java/net/simon987/server/webserver/MessageEventDispatcher.java b/Server/src/main/java/net/simon987/server/webserver/MessageEventDispatcher.java index 7fe2bc2..c766c9f 100644 --- a/Server/src/main/java/net/simon987/server/webserver/MessageEventDispatcher.java +++ b/Server/src/main/java/net/simon987/server/webserver/MessageEventDispatcher.java @@ -33,11 +33,11 @@ public class MessageEventDispatcher { handler.handle(user, json); } } else { - LogManager.LOGGER.info("Malformed JSON sent by " + user.getUser().getUsername()); + LogManager.LOGGER.severe("Malformed JSON sent by " + user.getUser().getUsername()); } } catch (ParseException e) { - LogManager.LOGGER.info("Malformed JSON sent by " + user.getUser().getUsername()); + LogManager.LOGGER.severe("Malformed JSON sent by " + user.getUser().getUsername()); } } } diff --git a/Server/src/main/java/net/simon987/server/webserver/ObjectsRequestHandler.java b/Server/src/main/java/net/simon987/server/webserver/ObjectsRequestHandler.java index 767a45a..d023ca4 100644 --- a/Server/src/main/java/net/simon987/server/webserver/ObjectsRequestHandler.java +++ b/Server/src/main/java/net/simon987/server/webserver/ObjectsRequestHandler.java @@ -15,14 +15,14 @@ public class ObjectsRequestHandler implements MessageHandler { @Override public void handle(OnlineUser user, JSONObject json) { if (json.get("t").equals("object")) { - LogManager.LOGGER.info("(WS) Objects request from " + user.getUser().getUsername()); + LogManager.LOGGER.fine("(WS) Objects request from " + user.getUser().getUsername()); int x, y; try { x = Long.valueOf((long) json.get("x")).intValue(); y = Long.valueOf((long) json.get("y")).intValue(); } catch (Exception e) { - LogManager.LOGGER.info("(WS) Malformed Objects request from " + user.getUser().getUsername()); + LogManager.LOGGER.severe("(WS) Malformed Objects request from " + user.getUser().getUsername()); return; } diff --git a/Server/src/main/java/net/simon987/server/webserver/SocketServer.java b/Server/src/main/java/net/simon987/server/webserver/SocketServer.java index 3a1c713..cea9bea 100644 --- a/Server/src/main/java/net/simon987/server/webserver/SocketServer.java +++ b/Server/src/main/java/net/simon987/server/webserver/SocketServer.java @@ -2,6 +2,7 @@ package net.simon987.server.webserver; import net.simon987.server.GameServer; import net.simon987.server.ServerConfiguration; +import net.simon987.server.game.ControllableUnit; import net.simon987.server.logging.LogManager; import net.simon987.server.user.User; import org.java_websocket.WebSocket; @@ -175,17 +176,38 @@ public class SocketServer extends WebSocketServer { user.getWebSocket().send(json.toJSONString()); } else { - //Send keyboard updated buffer try { - ArrayList kbBuffer = user.getUser().getControlledUnit().getKeyboardBuffer(); + ControllableUnit unit = user.getUser().getControlledUnit(); + + System.out.println("Sent " + unit.getConsoleMessagesBuffer().size() + " messages to " + user.getUser().getUsername()); + + //Send keyboard updated buffer + ArrayList kbBuffer = unit.getKeyboardBuffer(); JSONArray keys = new JSONArray(); keys.addAll(kbBuffer); json.put("keys", keys); + + //Send console buffer + if (unit.getConsoleMessagesBuffer().size() > 0) { + + JSONArray buff = new JSONArray(); + + for (char[] message : unit.getConsoleMessagesBuffer()) { + buff.add(new String(message)); + } + + json.put("c", buff); + } + + json.put("cm", unit.getConsoleMode()); + + //Send tick message user.getWebSocket().send(json.toJSONString()); } catch (NullPointerException e) { //User is online but not completely initialised } + } diff --git a/Server/src/main/java/net/simon987/server/webserver/TerrainRequestHandler.java b/Server/src/main/java/net/simon987/server/webserver/TerrainRequestHandler.java index 6ae4dac..d47aa22 100644 --- a/Server/src/main/java/net/simon987/server/webserver/TerrainRequestHandler.java +++ b/Server/src/main/java/net/simon987/server/webserver/TerrainRequestHandler.java @@ -12,7 +12,7 @@ public class TerrainRequestHandler implements MessageHandler { public void handle(OnlineUser user, JSONObject json) { if (json.get("t").equals("terrain") && json.containsKey("x") && json.containsKey("y")) { - LogManager.LOGGER.info("Terrain request from " + user.getUser().getUsername()); + LogManager.LOGGER.fine("Terrain request from " + user.getUser().getUsername()); World world; try { world = GameServer.INSTANCE.getGameUniverse().getWorld( diff --git a/Server/src/main/java/net/simon987/server/webserver/UserInfoRequestHandler.java b/Server/src/main/java/net/simon987/server/webserver/UserInfoRequestHandler.java index 8c84268..ff370af 100644 --- a/Server/src/main/java/net/simon987/server/webserver/UserInfoRequestHandler.java +++ b/Server/src/main/java/net/simon987/server/webserver/UserInfoRequestHandler.java @@ -13,7 +13,7 @@ public class UserInfoRequestHandler implements MessageHandler { if (message.get("t").equals("userInfo")) { - LogManager.LOGGER.info("(WS) User info request from " + user.getUser().getUsername()); + LogManager.LOGGER.fine("(WS) User info request from " + user.getUser().getUsername()); JSONObject json = new JSONObject(); if (user.isGuest()) { From 08f1aa868667fce55c0678ab685dcad1e591526d Mon Sep 17 00:00:00 2001 From: simon Date: Sat, 30 Dec 2017 16:29:39 -0500 Subject: [PATCH 21/24] Fixed bug that sent console buffer to random players. --- .../main/java/net/simon987/server/webserver/SocketServer.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Server/src/main/java/net/simon987/server/webserver/SocketServer.java b/Server/src/main/java/net/simon987/server/webserver/SocketServer.java index cea9bea..8310a1f 100644 --- a/Server/src/main/java/net/simon987/server/webserver/SocketServer.java +++ b/Server/src/main/java/net/simon987/server/webserver/SocketServer.java @@ -197,6 +197,8 @@ public class SocketServer extends WebSocketServer { } json.put("c", buff); + } else if (json.containsKey("c")) { + json.remove("c"); } json.put("cm", unit.getConsoleMode()); From 1ed9e9e4db4fb209aa692a2b096b8507351cfbf0 Mon Sep 17 00:00:00 2001 From: simon Date: Sat, 30 Dec 2017 16:41:14 -0500 Subject: [PATCH 22/24] Fixed bug that sent console buffer to random players for real this time --- .../main/java/net/simon987/server/webserver/SocketServer.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Server/src/main/java/net/simon987/server/webserver/SocketServer.java b/Server/src/main/java/net/simon987/server/webserver/SocketServer.java index 8310a1f..74032da 100644 --- a/Server/src/main/java/net/simon987/server/webserver/SocketServer.java +++ b/Server/src/main/java/net/simon987/server/webserver/SocketServer.java @@ -173,6 +173,7 @@ public class SocketServer extends WebSocketServer { if (user.isGuest()) { + json.remove("c"); user.getWebSocket().send(json.toJSONString()); } else { @@ -197,7 +198,7 @@ public class SocketServer extends WebSocketServer { } json.put("c", buff); - } else if (json.containsKey("c")) { + } else { json.remove("c"); } From ea3b06c54c639cb0a01e4afba7c768d5d8462a18 Mon Sep 17 00:00:00 2001 From: Jesse Nieminen Date: Sat, 30 Dec 2017 23:52:06 +0200 Subject: [PATCH 23/24] Fix typos Fixed typos in comments. --- Server/src/main/resources/config.properties | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Server/src/main/resources/config.properties b/Server/src/main/resources/config.properties index 87bc1c8..bc55fcb 100644 --- a/Server/src/main/resources/config.properties +++ b/Server/src/main/resources/config.properties @@ -63,9 +63,9 @@ wg_centerPointCountMin=5 wg_centerPointCountMax=15 # Wall/Plain tile ratio for the WorldGenerator wg_wallPlainRatio=4 -# Minimum iron tiles count for the WorldGenerator -wg_minIronCount=0 # Minimum iron tile count for the WorldGenerator +wg_minIronCount=0 +# Maximum iron tile count for the WorldGenerator wg_maxIronCount=2 # Minimum copper tile count for the WorldGenerator wg_minCopperCount=0 @@ -75,4 +75,4 @@ wg_maxCopperCount=2 # ---------------------------------------------- # Maximum execution time of user code in ms -user_timeout=100 \ No newline at end of file +user_timeout=100 From 83f05efff66d9720bc15de4dc85c3661d4948d4d Mon Sep 17 00:00:00 2001 From: simon Date: Sat, 30 Dec 2017 19:58:47 -0500 Subject: [PATCH 24/24] Support for color in hologram. Renamed classes: fixes #72 --- .../src/main/java/net/simon987/cubotplugin/Cubot.java | 11 +++++++---- .../cubotplugin/{ComPort.java => CubotComPort.java} | 8 ++++---- .../java/net/simon987/cubotplugin/CubotHologram.java | 3 +-- .../cubotplugin/{Keyboard.java => CubotKeyboard.java} | 8 ++++---- .../java/net/simon987/cubotplugin/CubotPlugin.java | 8 ++++---- .../cubotplugin/event/CpuInitialisationListener.java | 8 ++++---- Server/Server.iml | 3 +++ Server/src/main/java/net/simon987/server/Main.java | 1 + .../server/assembly/instruction/DivInstruction.java | 8 ++++---- .../net/simon987/server/webserver/SocketServer.java | 2 -- 10 files changed, 32 insertions(+), 28 deletions(-) rename Plugin Cubot/src/main/java/net/simon987/cubotplugin/{ComPort.java => CubotComPort.java} (94%) rename Plugin Cubot/src/main/java/net/simon987/cubotplugin/{Keyboard.java => CubotKeyboard.java} (82%) diff --git a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/Cubot.java b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/Cubot.java index dfdfe75..0eb1a47 100644 --- a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/Cubot.java +++ b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/Cubot.java @@ -17,6 +17,7 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit, Pr private String hologramString = ""; private HologramMode hologramMode = HologramMode.CLEARED; private HologramMode lastHologramMode = HologramMode.CLEARED; + private int hologramColor = 0; /** * Hit points @@ -34,8 +35,6 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit, Pr private ConsoleMode consoleMode = ConsoleMode.NORMAL; private ConsoleMode lastConsoleMode = ConsoleMode.NORMAL; - private FloppyDisk floppyDisk; - private User parent; private int energy; @@ -103,6 +102,7 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit, Pr json.put("holo", hologram); json.put("holoStr", hologramString); json.put("holoMode", lastHologramMode.ordinal()); + json.put("holoC", hologramColor); json.put("energy", energy); if (parent != null) { @@ -236,8 +236,7 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit, Pr CLEARED, HEX, STRING, - DEC, - COLOR + DEC } public enum ConsoleMode { @@ -270,4 +269,8 @@ public class Cubot extends GameObject implements Updatable, ControllableUnit, Pr public void setConsoleMode(ConsoleMode consoleMode) { this.consoleMode = consoleMode; } + + public void setHologramColor(int hologramColor) { + this.hologramColor = hologramColor; + } } diff --git a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/ComPort.java b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotComPort.java similarity index 94% rename from Plugin Cubot/src/main/java/net/simon987/cubotplugin/ComPort.java rename to Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotComPort.java index f73507a..506c1b5 100644 --- a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/ComPort.java +++ b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotComPort.java @@ -10,7 +10,7 @@ import org.json.simple.JSONObject; import java.awt.*; import java.util.ArrayList; -public class ComPort extends CpuHardware { +public class CubotComPort extends CpuHardware { public static final char HWID = 0xD; public static final int DEFAULT_ADDRESS = 0xD; @@ -22,7 +22,7 @@ public class ComPort extends CpuHardware { private static final int FRONT_PORT_OUT = 2; private static final int SELF_OUT = 3; - public ComPort(Cubot cubot) { + public CubotComPort(Cubot cubot) { this.cubot = cubot; } @@ -126,7 +126,7 @@ public class ComPort extends CpuHardware { return json; } - public static ComPort deserialize(JSONObject json) { - return new ComPort((Cubot) GameServer.INSTANCE.getGameUniverse().getObject((int) (long) json.get("cubot"))); + public static CubotComPort deserialize(JSONObject json) { + return new CubotComPort((Cubot) GameServer.INSTANCE.getGameUniverse().getObject((int) (long) json.get("cubot"))); } } diff --git a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotHologram.java b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotHologram.java index 9729311..28cdfcf 100644 --- a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotHologram.java +++ b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotHologram.java @@ -71,8 +71,7 @@ public class CubotHologram extends CpuHardware { int b = getCpu().getRegisterSet().getRegister("B").getValue(); int c = getCpu().getRegisterSet().getRegister("C").getValue(); - cubot.setHologramMode(Cubot.HologramMode.COLOR); - cubot.setHologram((c | (b << 16)) & 0x00FFFFFF); //B:C, ignore first byte + cubot.setHologramColor((c | (b << 16))); //B:C } } diff --git a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/Keyboard.java b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotKeyboard.java similarity index 82% rename from Plugin Cubot/src/main/java/net/simon987/cubotplugin/Keyboard.java rename to Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotKeyboard.java index ec05d59..902a226 100644 --- a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/Keyboard.java +++ b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotKeyboard.java @@ -5,7 +5,7 @@ import net.simon987.server.assembly.CpuHardware; import net.simon987.server.assembly.Status; import org.json.simple.JSONObject; -public class Keyboard extends CpuHardware { +public class CubotKeyboard extends CpuHardware { public static final int DEFAULT_ADDRESS = 4; @@ -19,7 +19,7 @@ public class Keyboard extends CpuHardware { private Cubot cubot; - public Keyboard(Cubot cubot) { + public CubotKeyboard(Cubot cubot) { this.cubot = cubot; } @@ -61,7 +61,7 @@ public class Keyboard extends CpuHardware { return json; } - public static Keyboard deserialize(JSONObject hwJSON) { - return new Keyboard((Cubot) GameServer.INSTANCE.getGameUniverse().getObject((int) (long) hwJSON.get("cubot"))); + public static CubotKeyboard deserialize(JSONObject hwJSON) { + return new CubotKeyboard((Cubot) GameServer.INSTANCE.getGameUniverse().getObject((int) (long) hwJSON.get("cubot"))); } } diff --git a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotPlugin.java b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotPlugin.java index 8c025b7..dce0961 100644 --- a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotPlugin.java +++ b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/CubotPlugin.java @@ -50,16 +50,16 @@ public class CubotPlugin extends ServerPlugin implements GameObjectDeserializer, return CubotDrill.deserialize(hwJson); case CubotInventory.HWID: return CubotInventory.deserialize(hwJson); - case Keyboard.HWID: - return Keyboard.deserialize(hwJson); + case CubotKeyboard.HWID: + return CubotKeyboard.deserialize(hwJson); case CubotHologram.HWID: return CubotHologram.deserialize(hwJson); case CubotBattery.HWID: return CubotBattery.deserialize(hwJson); case CubotFloppyDrive.HWID: return CubotFloppyDrive.deserialize(hwJson); - case ComPort.HWID: - return ComPort.deserialize(hwJson); + case CubotComPort.HWID: + return CubotComPort.deserialize(hwJson); } return null; diff --git a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/CpuInitialisationListener.java b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/CpuInitialisationListener.java index a33884d..622aa6e 100644 --- a/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/CpuInitialisationListener.java +++ b/Plugin Cubot/src/main/java/net/simon987/cubotplugin/event/CpuInitialisationListener.java @@ -26,7 +26,7 @@ public class CpuInitialisationListener implements GameEventListener { laserHw.setCpu(cpu); CubotLidar radarHw = new CubotLidar((Cubot) user.getControlledUnit()); radarHw.setCpu(cpu); - Keyboard keyboard = new Keyboard((Cubot) user.getControlledUnit()); + CubotKeyboard keyboard = new CubotKeyboard((Cubot) user.getControlledUnit()); keyboard.setCpu(cpu); CubotDrill drillHw = new CubotDrill((Cubot) user.getControlledUnit()); drillHw.setCpu(cpu); @@ -38,19 +38,19 @@ public class CpuInitialisationListener implements GameEventListener { batteryHw.setCpu(cpu); CubotFloppyDrive floppyHw = new CubotFloppyDrive((Cubot) user.getControlledUnit()); floppyHw.setCpu(cpu); - ComPort comPortHw = new ComPort((Cubot) user.getControlledUnit()); + CubotComPort comPortHw = new CubotComPort((Cubot) user.getControlledUnit()); comPortHw.setCpu(cpu); cpu.attachHardware(legHw, CubotLeg.DEFAULT_ADDRESS); cpu.attachHardware(laserHw, CubotLaser.DEFAULT_ADDRESS); cpu.attachHardware(radarHw, CubotLidar.DEFAULT_ADDRESS); - cpu.attachHardware(keyboard, Keyboard.DEFAULT_ADDRESS); + cpu.attachHardware(keyboard, CubotKeyboard.DEFAULT_ADDRESS); cpu.attachHardware(drillHw, CubotDrill.DEFAULT_ADDRESS); cpu.attachHardware(invHw, CubotInventory.DEFAULT_ADDRESS); cpu.attachHardware(invHw, CubotInventory.DEFAULT_ADDRESS); cpu.attachHardware(emoteHw, CubotHologram.DEFAULT_ADDRESS); cpu.attachHardware(batteryHw, CubotBattery.DEFAULT_ADDRESS); cpu.attachHardware(floppyHw, CubotFloppyDrive.DEFAULT_ADDRESS); - cpu.attachHardware(comPortHw, ComPort.DEFAULT_ADDRESS); + cpu.attachHardware(comPortHw, CubotComPort.DEFAULT_ADDRESS); } } diff --git a/Server/Server.iml b/Server/Server.iml index 6da8947..9c5747d 100644 --- a/Server/Server.iml +++ b/Server/Server.iml @@ -6,6 +6,7 @@ + @@ -15,5 +16,7 @@ + + \ No newline at end of file diff --git a/Server/src/main/java/net/simon987/server/Main.java b/Server/src/main/java/net/simon987/server/Main.java index c57091f..2bb4b98 100644 --- a/Server/src/main/java/net/simon987/server/Main.java +++ b/Server/src/main/java/net/simon987/server/Main.java @@ -22,6 +22,7 @@ public class Main { GameServer.INSTANCE.setSocketServer(socketServer); + System.out.println(GameServer.INSTANCE.getGameUniverse().getWorld(0x7fff, 0x7fff)); (new Thread(socketServer)).start(); (new Thread(GameServer.INSTANCE)).start(); diff --git a/Server/src/main/java/net/simon987/server/assembly/instruction/DivInstruction.java b/Server/src/main/java/net/simon987/server/assembly/instruction/DivInstruction.java index 77a6912..4290230 100644 --- a/Server/src/main/java/net/simon987/server/assembly/instruction/DivInstruction.java +++ b/Server/src/main/java/net/simon987/server/assembly/instruction/DivInstruction.java @@ -28,8 +28,8 @@ public class DivInstruction extends Instruction { public Status execute(Target src, int srcIndex, Status status) { //Source = Y:A - int source = ((((char) cpu.getRegisterSet().getRegister("Y").getValue() & 0xFFFF) << 16)) | - ((char) cpu.getRegisterSet().getRegister("A").getValue() & 0xFFFF); + int source = (((cpu.getRegisterSet().getRegister("Y").getValue() & 0xFFFF) << 16)) | + (cpu.getRegisterSet().getRegister("A").getValue() & 0xFFFF); if (src.get(srcIndex) == 0) { //Division by 0 @@ -48,8 +48,8 @@ public class DivInstruction extends Instruction { //Source = Y:A - int source = ((((char) cpu.getRegisterSet().getRegister("Y").getValue() & 0xFFFF) << 16)) | - ((char) cpu.getRegisterSet().getRegister("A").getValue() & 0xFFFF); + int source = (((cpu.getRegisterSet().getRegister("Y").getValue() & 0xFFFF) << 16)) | + (cpu.getRegisterSet().getRegister("A").getValue() & 0xFFFF); if (src == 0) { //Division by 0 diff --git a/Server/src/main/java/net/simon987/server/webserver/SocketServer.java b/Server/src/main/java/net/simon987/server/webserver/SocketServer.java index 74032da..56bc81d 100644 --- a/Server/src/main/java/net/simon987/server/webserver/SocketServer.java +++ b/Server/src/main/java/net/simon987/server/webserver/SocketServer.java @@ -180,8 +180,6 @@ public class SocketServer extends WebSocketServer { try { ControllableUnit unit = user.getUser().getControlledUnit(); - System.out.println("Sent " + unit.getConsoleMessagesBuffer().size() + " messages to " + user.getUser().getUsername()); - //Send keyboard updated buffer ArrayList kbBuffer = unit.getKeyboardBuffer(); JSONArray keys = new JSONArray();