summaryrefslogtreecommitdiff
path: root/NET/worlds/core
diff options
context:
space:
mode:
authorFuwn <[email protected]>2021-05-03 16:38:41 -0700
committerFuwn <[email protected]>2021-05-03 16:38:41 -0700
commite1e781bb2135ef78592226f1a3eaba4925702f1f (patch)
tree8a5b590463ed413e1c6eabb719130e701b95ca63 /NET/worlds/core
downloadworlds.jar-main.tar.xz
worlds.jar-main.zip
:star:HEADmain
Diffstat (limited to 'NET/worlds/core')
-rw-r--r--NET/worlds/core/Archive.java327
-rw-r--r--NET/worlds/core/ArchiveMaker.java395
-rw-r--r--NET/worlds/core/AssertionException.java24
-rw-r--r--NET/worlds/core/Debug.java25
-rw-r--r--NET/worlds/core/FastDataInput.java77
-rw-r--r--NET/worlds/core/Hashtable.java155
-rw-r--r--NET/worlds/core/IniFile.java83
-rw-r--r--NET/worlds/core/Recycler.java42
-rw-r--r--NET/worlds/core/RegKey.java117
-rw-r--r--NET/worlds/core/RegKeyNotFoundException.java26
-rw-r--r--NET/worlds/core/ServerTableManager.java336
-rw-r--r--NET/worlds/core/Sort.java152
-rw-r--r--NET/worlds/core/Std.java332
-rw-r--r--NET/worlds/core/Std_A.java11
-rw-r--r--NET/worlds/core/Std_B.java12
-rw-r--r--NET/worlds/core/Std_IA.java9
-rw-r--r--NET/worlds/core/Std_IB.java11
-rw-r--r--NET/worlds/core/SystemInfo.java161
-rw-r--r--NET/worlds/core/TestInstanceOf.java60
-rw-r--r--NET/worlds/core/Timer.java31
-rw-r--r--NET/worlds/core/TimerCallback.java12
21 files changed, 2398 insertions, 0 deletions
diff --git a/NET/worlds/core/Archive.java b/NET/worlds/core/Archive.java
new file mode 100644
index 0000000..051a340
--- /dev/null
+++ b/NET/worlds/core/Archive.java
@@ -0,0 +1,327 @@
+/* */ package NET.worlds.core;
+/* */
+/* */ import NET.worlds.network.URL;
+/* */ import java.io.BufferedInputStream;
+/* */ import java.io.File;
+/* */ import java.io.FileInputStream;
+/* */ import java.io.IOException;
+/* */ import java.io.InputStream;
+/* */ import java.util.Enumeration;
+/* */ import java.util.Hashtable;
+/* */ import java.util.zip.ZipEntry;
+/* */ import java.util.zip.ZipFile;
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public class Archive
+/* */ {
+/* */ public static final String archiveName = "content.zip";
+/* 66 */ private static Object mutex = new Object();
+/* */
+/* */
+/* 69 */ private static Object noArchive = new Object();
+/* */
+/* */
+/* 72 */ private static Hashtable<String, Object> archives = new Hashtable();
+/* */
+/* */
+/* 75 */ private static String homePrefix = URL.getHome().unalias();
+/* */
+/* */
+/* */ private ZipFile zip;
+/* */
+/* */
+/* */
+/* */ public static boolean exists(String name)
+/* */ {
+/* 84 */ synchronized (mutex)
+/* */ {
+/* */
+/* 87 */ String nname = name.toLowerCase().replace('\\', '/');
+/* */
+/* */
+/* 90 */ if (nname.startsWith("./")) {
+/* 91 */ nname = homePrefix + nname.substring(2);
+/* */ }
+/* 93 */ if (nname.startsWith(homePrefix)) {
+/* 94 */ nname = nname.substring(homePrefix.length());
+/* */
+/* */
+/* 97 */ Archive arch = getOrMake("");
+/* */
+/* 99 */ if ((arch != null) && (arch.lookup(nname) != null)) {
+/* 100 */ return true;
+/* */ }
+/* */
+/* */
+/* 104 */ int start = -1;
+/* */ int end;
+/* 106 */ while ((end = nname.indexOf('/', start + 1)) != -1) { int end;
+/* 107 */ String path = nname.substring(0, end + 1);
+/* 108 */ arch = getOrMake(path);
+/* 109 */ if (arch != null) {
+/* 110 */ String file = nname.substring(end + 1);
+/* 111 */ if (arch.lookup(file) != null)
+/* 112 */ return true;
+/* */ }
+/* 114 */ start = end;
+/* */ }
+/* */ }
+/* */
+/* */
+/* 119 */ File f = new File(name);
+/* 120 */ int length = (int)f.length();
+/* 121 */ if (length != 0) {
+/* 122 */ return true;
+/* */ }
+/* */
+/* */
+/* 126 */ return false;
+/* */ }
+/* */ }
+/* */
+/* */ private static void reallyRead(InputStream s, byte[] data) throws IOException
+/* */ {
+/* 132 */ int bytesRemaining = data.length;
+/* 133 */ int totalBytesRead = 0;
+/* */
+/* 135 */ while (bytesRemaining > 0) {
+/* 136 */ int bytesRead = s.read(data, totalBytesRead, bytesRemaining);
+/* 137 */ totalBytesRead += bytesRead;
+/* 138 */ if (bytesRead == -1)
+/* 139 */ return;
+/* 140 */ bytesRemaining -= bytesRead;
+/* */ }
+/* */ }
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public static byte[] readBinaryFile(String name)
+/* */ {
+/* 150 */ synchronized (mutex)
+/* */ {
+/* */ try
+/* */ {
+/* 154 */ String nname = name.toLowerCase().replace('\\', '/');
+/* */
+/* */
+/* 157 */ if (nname.startsWith("./")) {
+/* 158 */ nname = homePrefix + nname.substring(2);
+/* */ }
+/* 160 */ if (nname.startsWith(homePrefix)) {
+/* 161 */ nname = nname.substring(homePrefix.length());
+/* */
+/* */
+/* 164 */ Archive arch = getOrMake("");
+/* */ ZipEntry entry;
+/* 166 */ if ((arch != null) && ((entry = arch.lookup(nname)) != null)) {
+/* 167 */ return arch.load(entry);
+/* */ }
+/* */
+/* */
+/* 171 */ int start = -1;
+/* */ int end;
+/* 173 */ while ((end = nname.indexOf('/', start + 1)) != -1) { int end;
+/* 174 */ String path = nname.substring(0, end + 1);
+/* 175 */ arch = getOrMake(path);
+/* 176 */ if (arch != null) {
+/* 177 */ String file = nname.substring(end + 1);
+/* 178 */ ZipEntry entry; if ((entry = arch.lookup(file)) != null)
+/* 179 */ return arch.load(entry);
+/* */ }
+/* 181 */ start = end;
+/* */ }
+/* */ }
+/* */
+/* */
+/* 186 */ File f = new File(name);
+/* 187 */ int length = (int)f.length();
+/* 188 */ if (length != 0) {
+/* 189 */ FileInputStream fis = new FileInputStream(f);
+/* 190 */ byte[] data = new byte[length];
+/* 191 */ reallyRead(fis, data);
+/* 192 */ fis.close();
+/* 193 */ return data;
+/* */ }
+/* */
+/* */ }
+/* */ catch (IOException localIOException)
+/* */ {
+/* 199 */ return null;
+/* */ }
+/* */ }
+/* */ }
+/* */
+/* */ public static byte[] readTextFile(String name) {
+/* 205 */ byte[] data = readBinaryFile(name);
+/* 206 */ if (data != null) {
+/* 207 */ int count = 0;
+/* 208 */ for (int i = 0; i < data.length; i++)
+/* 209 */ if ((data[i] == 13) && (data[(i + 1)] == 10)) {
+/* 210 */ i++;
+/* 211 */ count++;
+/* */ }
+/* 213 */ byte[] ret = new byte[data.length - count];
+/* 214 */ int j = 0;
+/* 215 */ for (int i = 0; i < data.length; i++)
+/* 216 */ if ((data[i] != 13) || (data[(i + 1)] != 10))
+/* 217 */ ret[(j++)] = data[i];
+/* 218 */ data = ret;
+/* */ }
+/* 220 */ return data;
+/* */ }
+/* */
+/* */
+/* */
+/* */
+/* */ public static void flushAll()
+/* */ {
+/* 228 */ synchronized (mutex) {
+/* 229 */ Enumeration<Object> e = archives.elements();
+/* 230 */ while (e.hasMoreElements()) {
+/* 231 */ Object o = e.nextElement();
+/* 232 */ if ((o instanceof Archive))
+/* 233 */ ((Archive)o).close();
+/* */ }
+/* 235 */ archives.clear();
+/* */ }
+/* */ }
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ private static Archive getOrMake(String relPath)
+/* */ {
+/* 249 */ String archName = relPath + "content.zip";
+/* 250 */ Object obj = archives.get(archName);
+/* */
+/* 252 */ if (obj == null)
+/* */ {
+/* */ try
+/* */ {
+/* 256 */ Archive arch = new Archive(archName);
+/* 257 */ archives.put(archName, arch);
+/* 258 */ return arch;
+/* */ }
+/* */ catch (IOException e)
+/* */ {
+/* 262 */ archives.put(archName, noArchive);
+/* */ }
+/* 264 */ } else if (obj != noArchive)
+/* */ {
+/* 266 */ return (Archive)obj;
+/* */ }
+/* */
+/* */
+/* 270 */ return null;
+/* */ }
+/* */
+/* */ private Archive(String path) throws IOException
+/* */ {
+/* 275 */ this.zip = new ZipFile(homePrefix + path);
+/* */ }
+/* */
+/* */ private void close()
+/* */ {
+/* */ try {
+/* 281 */ this.zip.close();
+/* */ }
+/* */ catch (IOException localIOException) {}
+/* */ }
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ private ZipEntry lookup(String name)
+/* */ {
+/* 292 */ return this.zip.getEntry(name);
+/* */ }
+/* */
+/* */
+/* */
+/* */ private byte[] load(ZipEntry ent)
+/* */ throws IOException
+/* */ {
+/* 300 */ return load(this.zip, ent);
+/* */ }
+/* */
+/* */ static byte[] load(ZipFile zip, ZipEntry ent) throws IOException {
+/* 304 */ int size = (int)ent.getSize();
+/* 305 */ byte[] data = new byte[size];
+/* 306 */ InputStream is = zip.getInputStream(ent);
+/* 307 */ if (ent.getMethod() == 0) {
+/* 308 */ reallyRead(is, data);
+/* */ } else {
+/* 310 */ BufferedInputStream bis = new BufferedInputStream(is, 4096);
+/* 311 */ for (int amt = 0; amt < size;)
+/* 312 */ amt += bis.read(data, amt, size - amt);
+/* 313 */ bis.close();
+/* */ }
+/* 315 */ return data;
+/* */ }
+/* */
+/* */ static Object getMutex() {
+/* 319 */ return mutex;
+/* */ }
+/* */ }
+
+
+/* Location: C:\Program Files (x86)\Worlds Inc\WorldsPlayer - Win7\lib\worlds.jar!\NET\worlds\core\Archive.class
+ * Java compiler version: 6 (50.0)
+ * JD-Core Version: 0.7.1
+ */ \ No newline at end of file
diff --git a/NET/worlds/core/ArchiveMaker.java b/NET/worlds/core/ArchiveMaker.java
new file mode 100644
index 0000000..811bc38
--- /dev/null
+++ b/NET/worlds/core/ArchiveMaker.java
@@ -0,0 +1,395 @@
+/* */ package NET.worlds.core;
+/* */
+/* */ import NET.worlds.console.Console;
+/* */ import NET.worlds.console.PolledDialog;
+/* */ import NET.worlds.network.ProgressBar;
+/* */ import NET.worlds.network.URL;
+/* */ import NET.worlds.scape.FileList;
+/* */ import NET.worlds.scape.Pilot;
+/* */ import NET.worlds.scape.World;
+/* */ import java.awt.Button;
+/* */ import java.awt.Event;
+/* */ import java.awt.GridBagConstraints;
+/* */ import java.awt.GridBagLayout;
+/* */ import java.awt.Insets;
+/* */ import java.awt.Label;
+/* */ import java.io.File;
+/* */ import java.io.FileInputStream;
+/* */ import java.io.FileOutputStream;
+/* */ import java.io.IOException;
+/* */ import java.text.MessageFormat;
+/* */ import java.util.Enumeration;
+/* */ import java.util.Vector;
+/* */ import java.util.zip.CRC32;
+/* */ import java.util.zip.ZipEntry;
+/* */ import java.util.zip.ZipFile;
+/* */ import java.util.zip.ZipOutputStream;
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public class ArchiveMaker
+/* */ extends PolledDialog
+/* */ {
+/* */ private static final long serialVersionUID = -7620030251122522576L;
+/* */ private static final String extensions = "cmp;mov";
+/* */ private URL sourceURL;
+/* */ private String path;
+/* 50 */ private Label status = new Label("", 0);
+/* */ private Button goButton;
+/* 52 */ private Button closeButton = new Button(
+/* 53 */ Console.message("Close"));
+/* 54 */ private ProgressBar progress = new ProgressBar(1);
+/* */
+/* */ private boolean start;
+/* */ private boolean stop;
+/* */ private boolean finished;
+/* */ private boolean condense;
+/* */
+/* */ public ArchiveMaker(boolean condense)
+/* */ {
+/* 63 */ super(Console.getFrame(), null, condense ? Console.message("Condense-Files") : Console.message("Expand-Files"), true);
+/* 64 */ this.condense = condense;
+/* 65 */ ready();
+/* */ }
+/* */
+/* */ protected void build() {
+/* 69 */ String errStatus = null;
+/* 70 */ Pilot pilot = Pilot.getActive();
+/* 71 */ if (pilot != null) {
+/* 72 */ World world = pilot.getWorld();
+/* 73 */ if (world != null) {
+/* 74 */ this.sourceURL = world.getSourceURL();
+/* 75 */ this.path = this.sourceURL.unalias();
+/* 76 */ this.path = this.path.substring(0, this.path.lastIndexOf('/'));
+/* 77 */ String home = URL.getHome().unalias();
+/* 78 */ if (this.path.startsWith(home)) {
+/* 79 */ File f = new File(URL.make(this.sourceURL, "content.zip")
+/* 80 */ .unalias());
+/* 81 */ if (this.condense) {
+/* 82 */ if (f.exists()) {
+/* 83 */ errStatus = Console.message("Must-expand");
+/* */ }
+/* 85 */ } else if (!f.exists()) {
+/* 86 */ errStatus = Console.message("Must-condense");
+/* */ }
+/* */ } else {
+/* 89 */ errStatus = Console.message("Not-a-home");
+/* */ }
+/* 91 */ } else { errStatus = Console.message("Cant-access-world");
+/* */ }
+/* 93 */ } else { errStatus = Console.message("Cant-access-pilot");
+/* */ }
+/* 95 */ GridBagLayout gbag = new GridBagLayout();
+/* 96 */ setLayout(gbag);
+/* 97 */ GridBagConstraints c = new GridBagConstraints();
+/* 98 */ c.weightx = 0.0D;
+/* 99 */ c.gridwidth = 1;
+/* 100 */ add(gbag, new Label(Console.message("Status"), 2), c);
+/* 101 */ c.weightx = 1.0D;
+/* 102 */ c.gridwidth = 0;
+/* 103 */ c.fill = 2;
+/* 104 */ add(gbag, this.status, c);
+/* 105 */ c.fill = 0;
+/* 106 */ c.weightx = 0.0D;
+/* 107 */ c.gridwidth = 0;
+/* 108 */ this.goButton = new Button(this.condense ? Console.message("Condense") :
+/* 109 */ Console.message("Expand"));
+/* 110 */ add(gbag, this.goButton, c);
+/* 111 */ c.weightx = 1.0D;
+/* 112 */ c.fill = 2;
+/* 113 */ Insets tmp = c.insets;
+/* 114 */ c.insets = new Insets(5, 5, 5, 5);
+/* 115 */ add(gbag, this.progress, c);
+/* 116 */ c.insets = tmp;
+/* 117 */ c.fill = 0;
+/* 118 */ c.weightx = 0.0D;
+/* 119 */ add(gbag, this.closeButton, c);
+/* */
+/* 121 */ if (errStatus != null) {
+/* 122 */ this.status.setText(errStatus);
+/* 123 */ this.goButton.setEnabled(false);
+/* */ } else {
+/* 125 */ String name = this.sourceURL.getAbsolute();
+/* 126 */ name = name.substring(0, name.lastIndexOf('/'));
+/* */
+/* 128 */ Object[] arguments = { new String(name) };
+/* 129 */ if (this.condense) {
+/* 130 */ this.status.setText(MessageFormat.format(
+/* 131 */ Console.message("condense-name"), arguments));
+/* */ } else {
+/* 133 */ this.status.setText(MessageFormat.format(
+/* 134 */ Console.message("expand-name"), arguments));
+/* */ }
+/* */ }
+/* */ }
+/* */
+/* */ public boolean action(Event event, Object what) {
+/* 140 */ Object target = event.target;
+/* 141 */ if (target == this.goButton) {
+/* 142 */ if (!this.start) {
+/* 143 */ this.start = true;
+/* */ } else
+/* 145 */ this.stop = true;
+/* 146 */ } else if (target == this.closeButton) {
+/* 147 */ if ((!this.start) || (this.finished))
+/* 148 */ done(true);
+/* */ } else
+/* 150 */ return false;
+/* 151 */ return true;
+/* */ }
+/* */
+/* */ protected void activeCallback()
+/* */ {
+/* 156 */ if ((!this.start) || (this.finished))
+/* 157 */ return;
+/* 158 */ this.goButton.setLabel(Console.message("Stop"));
+/* 159 */ if (this.condense) {
+/* 160 */ doCondense();
+/* */ } else
+/* 162 */ doExpand();
+/* */ }
+/* */
+/* */ private void doCondense() {
+/* 166 */ this.status.setText(Console.message("Scanning-dir"));
+/* */
+/* */
+/* 169 */ Vector<String> dirs = new Vector();
+/* 170 */ getDirectories(dirs, this.path);
+/* */
+/* 172 */ if (this.stop) {
+/* 173 */ cancelled();
+/* 174 */ return;
+/* */ }
+/* */
+/* */
+/* 178 */ String d = "";
+/* 179 */ int count = dirs.size();
+/* 180 */ for (int i = 0; i < count; i++) {
+/* 181 */ if (d.length() != 0)
+/* 182 */ d = d + ";";
+/* 183 */ d = d + (String)dirs.elementAt(i);
+/* */ }
+/* */
+/* */
+/* 187 */ Vector<String> files = new FileList(d, "cmp;mov").keepPathInfo().dontSort()
+/* 188 */ .getList();
+/* 189 */ count = files.size();
+/* 190 */ String[] list = new String[count];
+/* 191 */ int start = this.path.length() + 1;
+/* 192 */ for (int i = 0; i < count; i++) {
+/* 193 */ list[i] = ((String)files.elementAt(i)).substring(start)
+/* 194 */ .replace('\\', '/').toLowerCase();
+/* */ }
+/* */
+/* 197 */ this.status.setText(Console.message("Sorting-files"));
+/* 198 */ Sort.sort(list);
+/* */
+/* 200 */ if (this.stop) {
+/* 201 */ cancelled();
+/* 202 */ return;
+/* */ }
+/* */
+/* */
+/* 206 */ this.status.setText(Console.message("Building-archive"));
+/* 207 */ String zipFileName = this.path + "/" + "content.zip";
+/* 208 */ boolean deleteOnError = true;
+/* */ try {
+/* 210 */ FileOutputStream fos = new FileOutputStream(zipFileName);
+/* 211 */ ZipOutputStream zs = new ZipOutputStream(fos);
+/* 212 */ zs.setMethod(0);
+/* 213 */ double dlen = list.length;
+/* 214 */ for (int i = 0; (i < list.length) && (!this.stop); i++) {
+/* 215 */ Object[] arguments = { new String(list[i]) };
+/* 216 */ this.status.setText(MessageFormat.format(
+/* 217 */ Console.message("Reading-list"), arguments));
+/* 218 */ File f = new File(this.path + "/" + list[i]);
+/* 219 */ int length = (int)f.length();
+/* 220 */ byte[] data = new byte[length];
+/* 221 */ FileInputStream fis = new FileInputStream(f);
+/* 222 */ fis.read(data);
+/* 223 */ fis.close();
+/* 224 */ CRC32 crc = new CRC32();
+/* 225 */ crc.update(data);
+/* 226 */ this.status.setText(MessageFormat.format(
+/* 227 */ Console.message("Writing-list"), arguments));
+/* 228 */ ZipEntry ze = new ZipEntry(list[i]);
+/* 229 */ ze.setSize(length);
+/* 230 */ ze.setTime(f.lastModified());
+/* 231 */ ze.setCrc(crc.getValue());
+/* 232 */ zs.putNextEntry(ze);
+/* 233 */ zs.write(data, 0, length);
+/* 234 */ zs.closeEntry();
+/* 235 */ this.progress.setProgress((i + 1) / dlen);
+/* */ }
+/* 237 */ zs.finish();
+/* 238 */ zs.close();
+/* 239 */ if (!this.stop)
+/* */ {
+/* */
+/* 242 */ deleteOnError = false;
+/* 243 */ this.goButton.setEnabled(false);
+/* 244 */ Archive.flushAll();
+/* 245 */ for (int i = 0; i < list.length; i++) {
+/* 246 */ Object[] arguments = { new String(list[i]) };
+/* 247 */ this.status.setText(MessageFormat.format(
+/* 248 */ Console.message("Deleting-list"), arguments));
+/* 249 */ File f = new File(this.path + "/" + list[i]);
+/* 250 */ f.delete();
+/* 251 */ this.progress.setProgress((i + 1) / dlen);
+/* */ }
+/* */
+/* */
+/* 255 */ this.status.setText(Console.message("Removing-empty"));
+/* 256 */ count = dirs.size();
+/* 257 */ for (int i = 0; i < count; i++) {
+/* 258 */ File f = new File((String)dirs.elementAt(i));
+/* 259 */ if (f.list().length == 0) {
+/* 260 */ f.delete();
+/* */ }
+/* */ }
+/* 263 */ this.status.setText(Console.message("Done"));
+/* 264 */ this.finished = true;
+/* 265 */ return;
+/* */ }
+/* */ } catch (IOException ioe) {
+/* 268 */ Object[] arguments = { new String(this.status.getText()) };
+/* 269 */ this.status.setText(MessageFormat.format(Console.message("IO-Error"),
+/* 270 */ arguments));
+/* */
+/* 272 */ if (deleteOnError) {
+/* 273 */ File f = new File(zipFileName);
+/* 274 */ f.delete();
+/* */ }
+/* 276 */ this.finished = true;
+/* 277 */ if (this.stop)
+/* 278 */ cancelled();
+/* */ }
+/* */ }
+/* */
+/* 282 */ private void doExpand() { this.status.setText(Console.message("Scanning-archive"));
+/* 283 */ boolean deleteOnError = true;
+/* 284 */ Vector<File> written = new Vector();
+/* */ try {
+/* 286 */ String zipFileName = this.path + "/" + "content.zip";
+/* 287 */ ZipFile zip = new ZipFile(zipFileName);
+/* 288 */ Enumeration<? extends ZipEntry> ents = zip.entries();
+/* 289 */ int count = 0;
+/* 290 */ while ((ents.hasMoreElements()) && (!this.stop)) {
+/* 291 */ count++;
+/* 292 */ ents.nextElement();
+/* */ }
+/* 294 */ String lastDir = "";
+/* 295 */ ents = zip.entries();
+/* 296 */ int i = 0;
+/* 297 */ double dlen = count;
+/* 298 */ while ((ents.hasMoreElements()) && (!this.stop)) {
+/* 299 */ ZipEntry ent = (ZipEntry)ents.nextElement();
+/* 300 */ String name = ent.getName();
+/* 301 */ Object[] arguments = { new String(name) };
+/* 302 */ this.status.setText(MessageFormat.format(
+/* 303 */ Console.message("Checking-name"), arguments));
+/* 304 */ String filePath = this.path + "/" + name;
+/* 305 */ File f = new File(filePath);
+/* 306 */ if (f.exists()) {
+/* 307 */ this.stop = true;
+/* 308 */ this.finished = true;
+/* 309 */ this.status.setText(MessageFormat.format(
+/* 310 */ Console.message("File-exists"), arguments));
+/* 311 */ break;
+/* */ }
+/* 313 */ int index = filePath.lastIndexOf('/');
+/* 314 */ if (index != -1) {
+/* 315 */ String dir = filePath.substring(0, index);
+/* 316 */ if (!dir.equals(lastDir)) {
+/* 317 */ this.status.setText(Console.message("Creating-dir"));
+/* 318 */ File dirs = new File(dir);
+/* 319 */ dirs.mkdirs();
+/* 320 */ lastDir = dir;
+/* */ }
+/* */ }
+/* 323 */ this.status.setText(MessageFormat.format(
+/* 324 */ Console.message("Reading-list"), arguments));
+/* 325 */ byte[] data = Archive.load(zip, ent);
+/* 326 */ this.status.setText(MessageFormat.format(
+/* 327 */ Console.message("Writing-list"), arguments));
+/* 328 */ FileOutputStream fos = new FileOutputStream(f);
+/* 329 */ written.addElement(f);
+/* 330 */ fos.write(data);
+/* 331 */ fos.close();
+/* */
+/* 333 */ this.progress.setProgress(++i / dlen);
+/* */ }
+/* 335 */ zip.close();
+/* 336 */ if (!this.stop)
+/* */ {
+/* 338 */ this.goButton.setEnabled(false);
+/* 339 */ deleteOnError = false;
+/* 340 */ synchronized (Archive.getMutex()) {
+/* 341 */ Archive.flushAll();
+/* 342 */ new File(zipFileName).delete();
+/* */ }
+/* 344 */ this.status.setText(Console.message("Done"));
+/* 345 */ this.finished = true;
+/* 346 */ return;
+/* */ }
+/* */ } catch (IOException ioe) {
+/* 349 */ Object[] arguments = { new String(this.status.getText()) };
+/* 350 */ this.status.setText(MessageFormat.format(Console.message("IO-Error"),
+/* 351 */ arguments));
+/* */
+/* 353 */ if (deleteOnError) {
+/* 354 */ Enumeration<File> e = written.elements();
+/* 355 */ while (e.hasMoreElements())
+/* 356 */ ((File)e.nextElement()).delete();
+/* */ }
+/* 358 */ if (!this.finished) {
+/* 359 */ this.finished = true;
+/* 360 */ if (this.stop)
+/* 361 */ cancelled();
+/* */ }
+/* */ }
+/* */ }
+/* */
+/* 366 */ private void cancelled() { this.finished = true;
+/* 367 */ this.status.setText(Console.message("Cancelled"));
+/* */ }
+/* */
+/* */ protected boolean done(boolean confirmed)
+/* */ {
+/* 372 */ if ((!this.start) || (this.finished))
+/* 373 */ return super.done(confirmed);
+/* 374 */ return true;
+/* */ }
+/* */
+/* */ private static void getDirectories(Vector<String> dirs, String path) {
+/* 378 */ dirs.addElement(path);
+/* 379 */ File dir = new File(path);
+/* 380 */ String[] files = dir.list();
+/* 381 */ for (int i = 0; i < files.length; i++) {
+/* 382 */ String name = path + '/' + files[i];
+/* 383 */ File f = new File(name);
+/* 384 */ if (f.isDirectory()) {
+/* 385 */ getDirectories(dirs, name);
+/* */ }
+/* */ }
+/* */ }
+/* */ }
+
+
+/* Location: C:\Program Files (x86)\Worlds Inc\WorldsPlayer - Win7\lib\worlds.jar!\NET\worlds\core\ArchiveMaker.class
+ * Java compiler version: 6 (50.0)
+ * JD-Core Version: 0.7.1
+ */ \ No newline at end of file
diff --git a/NET/worlds/core/AssertionException.java b/NET/worlds/core/AssertionException.java
new file mode 100644
index 0000000..58d6f79
--- /dev/null
+++ b/NET/worlds/core/AssertionException.java
@@ -0,0 +1,24 @@
+/* */ package NET.worlds.core;
+/* */
+/* */
+/* */
+/* */ public class AssertionException
+/* */ extends RuntimeException
+/* */ {
+/* */ private static final long serialVersionUID = -5738682100298167153L;
+/* */
+/* */
+/* */ public AssertionException() {}
+/* */
+/* */
+/* */ public AssertionException(String str)
+/* */ {
+/* 16 */ super(str);
+/* */ }
+/* */ }
+
+
+/* Location: C:\Program Files (x86)\Worlds Inc\WorldsPlayer - Win7\lib\worlds.jar!\NET\worlds\core\AssertionException.class
+ * Java compiler version: 6 (50.0)
+ * JD-Core Version: 0.7.1
+ */ \ No newline at end of file
diff --git a/NET/worlds/core/Debug.java b/NET/worlds/core/Debug.java
new file mode 100644
index 0000000..e853036
--- /dev/null
+++ b/NET/worlds/core/Debug.java
@@ -0,0 +1,25 @@
+/* */ package NET.worlds.core;
+/* */
+/* */
+/* */
+/* */ public class Debug
+/* */ {
+/* */ public static final boolean ON = true;
+/* */
+/* */
+/* */ public static final boolean TRACEON = false;
+/* */
+/* */
+/* */ public static void LogDebug()
+/* */ {
+/* 15 */ LogDebug("");
+/* */ }
+/* */
+/* */ public static synchronized void LogDebug(String string) {}
+/* */ }
+
+
+/* Location: C:\Program Files (x86)\Worlds Inc\WorldsPlayer - Win7\lib\worlds.jar!\NET\worlds\core\Debug.class
+ * Java compiler version: 6 (50.0)
+ * JD-Core Version: 0.7.1
+ */ \ No newline at end of file
diff --git a/NET/worlds/core/FastDataInput.java b/NET/worlds/core/FastDataInput.java
new file mode 100644
index 0000000..edc2668
--- /dev/null
+++ b/NET/worlds/core/FastDataInput.java
@@ -0,0 +1,77 @@
+/* */ package NET.worlds.core;
+/* */
+/* */ import java.io.DataInput;
+/* */ import java.io.IOException;
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public class FastDataInput
+/* */ implements DataInput
+/* */ {
+/* */ private int nativeInfo;
+/* */
+/* */ public FastDataInput(String fileName)
+/* */ throws IOException
+/* */ {
+/* 20 */ nativeInit();
+/* 21 */ read(fileName);
+/* */ }
+/* */
+/* */
+/* */ public native void close();
+/* */
+/* */ public void readFully(byte[] b)
+/* */ throws IOException
+/* */ {
+/* 30 */ readFully(b, 0, b.length);
+/* */ }
+/* */
+/* */ public static native void nativeInit();
+/* */
+/* */ public native void readFully(byte[] paramArrayOfByte, int paramInt1, int paramInt2)
+/* */ throws IOException;
+/* */
+/* */ public native int skipBytes(int paramInt) throws IOException;
+/* */
+/* */ public native boolean readBoolean() throws IOException;
+/* */
+/* */ public native byte readByte() throws IOException;
+/* */
+/* */ public native int readUnsignedByte() throws IOException;
+/* */
+/* */ public native short readShort() throws IOException;
+/* */
+/* */ public native int readUnsignedShort() throws IOException;
+/* */
+/* */ public native char readChar() throws IOException;
+/* */
+/* */ public native int readInt() throws IOException;
+/* */
+/* */ public native long readLong() throws IOException;
+/* */
+/* */ public native float readFloat() throws IOException;
+/* */
+/* */ public native double readDouble() throws IOException;
+/* */
+/* */ public String readLine() throws IOException
+/* */ {
+/* 62 */ if (!$assertionsDisabled) throw new AssertionError();
+/* 63 */ return null;
+/* */ }
+/* */
+/* */ public native String readUTF()
+/* */ throws IOException;
+/* */
+/* */ private native void read(String paramString)
+/* */ throws IOException;
+/* */ }
+
+
+/* Location: C:\Program Files (x86)\Worlds Inc\WorldsPlayer - Win7\lib\worlds.jar!\NET\worlds\core\FastDataInput.class
+ * Java compiler version: 6 (50.0)
+ * JD-Core Version: 0.7.1
+ */ \ No newline at end of file
diff --git a/NET/worlds/core/Hashtable.java b/NET/worlds/core/Hashtable.java
new file mode 100644
index 0000000..c8edfb0
--- /dev/null
+++ b/NET/worlds/core/Hashtable.java
@@ -0,0 +1,155 @@
+/* */ package NET.worlds.core;
+/* */
+/* */ import NET.worlds.scape.Persister;
+/* */ import NET.worlds.scape.Restorer;
+/* */ import NET.worlds.scape.Saver;
+/* */ import NET.worlds.scape.TooNewException;
+/* */ import java.io.IOException;
+/* */ import java.util.Enumeration;
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public class Hashtable<K, V>
+/* */ extends java.util.Hashtable<K, V>
+/* */ implements Persister
+/* */ {
+/* */ private static final long serialVersionUID = 1133311923215053895L;
+/* */
+/* */ public Hashtable(int initialCapacity, float loadFactor)
+/* */ {
+/* 38 */ super(initialCapacity, loadFactor);
+/* */ }
+/* */
+/* */
+/* */
+/* */ public Hashtable(int initialCapacity)
+/* */ {
+/* 45 */ super(initialCapacity);
+/* */ }
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public Hashtable() {}
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public Object getKey(Object obj)
+/* */ {
+/* 65 */ Enumeration<K> e = keys();
+/* 66 */ while (e.hasMoreElements()) {
+/* 67 */ Object key = e.nextElement();
+/* 68 */ if (get(key) == obj)
+/* 69 */ return key;
+/* */ }
+/* 71 */ return null;
+/* */ }
+/* */
+/* 74 */ private static Object classCookie = new Object();
+/* */
+/* */
+/* */
+/* */ public void saveState(Saver s)
+/* */ throws IOException
+/* */ {
+/* 81 */ s.saveVersion(0, classCookie);
+/* 82 */ int count = 0;
+/* 83 */ Enumeration<K> e = keys();
+/* 84 */ while (e.hasMoreElements()) {
+/* 85 */ Object key = e.nextElement();
+/* 86 */ Object obj = get(key);
+/* 87 */ if ((((key instanceof String)) || ((key instanceof Persister))) &&
+/* 88 */ ((obj instanceof Persister))) {
+/* 89 */ count++;
+/* */ }
+/* */ }
+/* */
+/* 93 */ s.saveInt(count);
+/* 94 */ e = keys();
+/* 95 */ while (e.hasMoreElements()) {
+/* 96 */ Object key = e.nextElement();
+/* 97 */ Object obj = get(key);
+/* 98 */ if ((((key instanceof String)) || ((key instanceof Persister))) &&
+/* 99 */ ((obj instanceof Persister))) {
+/* 100 */ if ((key instanceof String)) {
+/* 101 */ s.saveBoolean(true);
+/* 102 */ s.saveString((String)key);
+/* */ } else {
+/* 104 */ s.saveBoolean(false);
+/* 105 */ s.save((Persister)key);
+/* */ }
+/* 107 */ s.save((Persister)obj);
+/* */ }
+/* */ }
+/* */ }
+/* */
+/* */ public void restoreState(Restorer r) throws IOException, TooNewException {
+/* 113 */ int count = restoreCount(r);
+/* 114 */ for (int i = 0; i < count; i++) {
+/* 115 */ restoreEntry(r);
+/* */ }
+/* */ }
+/* */
+/* */
+/* */ public void postRestore(int version) {}
+/* */
+/* */
+/* */ public int restoreCount(Restorer r)
+/* */ throws IOException, TooNewException
+/* */ {
+/* 126 */ switch (r.restoreVersion(classCookie)) {
+/* */ case 0:
+/* 128 */ return r.restoreInt();
+/* */ }
+/* 130 */ throw new TooNewException();
+/* */ }
+/* */
+/* */
+/* */
+/* */ public void restoreEntry(Restorer r)
+/* */ throws IOException, TooNewException
+/* */ {
+/* */ K key;
+/* */
+/* */ K key;
+/* */
+/* 142 */ if (r.restoreBoolean()) {
+/* 143 */ key = r.restoreString();
+/* */ } else
+/* 145 */ key = r.restore();
+/* 146 */ V obj = r.restore();
+/* 147 */ put(key, obj);
+/* */ }
+/* */ }
+
+
+/* Location: C:\Program Files (x86)\Worlds Inc\WorldsPlayer - Win7\lib\worlds.jar!\NET\worlds\core\Hashtable.class
+ * Java compiler version: 6 (50.0)
+ * JD-Core Version: 0.7.1
+ */ \ No newline at end of file
diff --git a/NET/worlds/core/IniFile.java b/NET/worlds/core/IniFile.java
new file mode 100644
index 0000000..44a3e74
--- /dev/null
+++ b/NET/worlds/core/IniFile.java
@@ -0,0 +1,83 @@
+/* */ package NET.worlds.core;
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public class IniFile
+/* */ {
+/* */ String file;
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ String section;
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public IniFile(String section)
+/* */ {
+/* 27 */ this.file = null;
+/* 28 */ this.section = section;
+/* */ }
+/* */
+/* */ public IniFile(String inifileName, String section)
+/* */ {
+/* 33 */ this.file = inifileName;
+/* 34 */ this.section = section;
+/* */ }
+/* */
+/* 37 */ static boolean initialized = false;
+/* */
+/* 39 */ private static IniFile gamma_ = null;
+/* 40 */ private static IniFile override_ = null;
+/* */
+/* */ public static IniFile gamma()
+/* */ {
+/* 44 */ if (gamma_ == null) {
+/* 45 */ gamma_ = new IniFile("Gamma");
+/* */ }
+/* 47 */ if (!initialized) {
+/* 48 */ nativeInit();
+/* 49 */ initialized = true;
+/* */ }
+/* 51 */ return gamma_;
+/* */ }
+/* */
+/* */ public static IniFile override()
+/* */ {
+/* 56 */ if (!initialized) {
+/* 57 */ nativeInit();
+/* 58 */ initialized = true;
+/* */ }
+/* */
+/* 61 */ if (override_ == null) {
+/* 62 */ override_ = new IniFile(".\\override.ini", "Runtime");
+/* */ }
+/* */
+/* 65 */ return override_;
+/* */ }
+/* */
+/* */ public native int getIniInt(String paramString, int paramInt);
+/* */
+/* */ public native void setIniInt(String paramString, int paramInt);
+/* */
+/* */ public native String getIniString(String paramString1, String paramString2);
+/* */
+/* */ public native void setIniString(String paramString1, String paramString2);
+/* */
+/* */ public static native void nativeInit();
+/* */ }
+
+
+/* Location: C:\Program Files (x86)\Worlds Inc\WorldsPlayer - Win7\lib\worlds.jar!\NET\worlds\core\IniFile.class
+ * Java compiler version: 6 (50.0)
+ * JD-Core Version: 0.7.1
+ */ \ No newline at end of file
diff --git a/NET/worlds/core/Recycler.java b/NET/worlds/core/Recycler.java
new file mode 100644
index 0000000..defe829
--- /dev/null
+++ b/NET/worlds/core/Recycler.java
@@ -0,0 +1,42 @@
+/* */ package NET.worlds.core;
+/* */
+/* */ import java.io.PrintStream;
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public class Recycler
+/* */ {
+/* */ public static Object alloc(String classType)
+/* */ {
+/* 22 */ return null;
+/* */ }
+/* */
+/* */ public static void free(Object old) {
+/* 26 */ String className = old.getClass().getName();
+/* 27 */ System.out.println("Classname = " + className);
+/* */
+/* 29 */ if (className.startsWith("[")) {
+/* 30 */ Object[] oldArr = (Object[])old;
+/* */
+/* */
+/* 33 */ System.out.println(" array[" + oldArr.length + "]");
+/* */ }
+/* */ }
+/* */ }
+
+
+/* Location: C:\Program Files (x86)\Worlds Inc\WorldsPlayer - Win7\lib\worlds.jar!\NET\worlds\core\Recycler.class
+ * Java compiler version: 6 (50.0)
+ * JD-Core Version: 0.7.1
+ */ \ No newline at end of file
diff --git a/NET/worlds/core/RegKey.java b/NET/worlds/core/RegKey.java
new file mode 100644
index 0000000..f5ad8b6
--- /dev/null
+++ b/NET/worlds/core/RegKey.java
@@ -0,0 +1,117 @@
+/* */ package NET.worlds.core;
+/* */
+/* */
+/* */
+/* */ public class RegKey
+/* */ {
+/* */ public static final int CLASSES_ROOT = 0;
+/* */
+/* */
+/* */ public static final int CURRENT_USER = 1;
+/* */
+/* */
+/* */ public static final int LOCAL_MACHINE = 2;
+/* */
+/* */
+/* */ public static final int USERS = 3;
+/* */
+/* */
+/* */ public static final int KEYOPEN_READ = 0;
+/* */
+/* */
+/* */ public static final int KEYOPEN_WRITE = 1;
+/* */
+/* */ public static final int KEYOPEN_CREATE = 2;
+/* */
+/* */ private int hKey;
+/* */
+/* */
+/* */ static {}
+/* */
+/* */
+/* */ public static RegKey getRootKey(int type)
+/* */ throws RegKeyNotFoundException
+/* */ {
+/* 35 */ return new RegKey(getReservedKey(type));
+/* */ }
+/* */
+/* */
+/* */
+/* */
+/* */ public RegKey(RegKey base, String subKey, int mode)
+/* */ throws RegKeyNotFoundException
+/* */ {
+/* 44 */ if (mode == 2) {
+/* 45 */ this.hKey = createKey(base.hKey, subKey);
+/* */ } else {
+/* 47 */ this.hKey = openKey(base.hKey, subKey, mode);
+/* */ }
+/* */ }
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public native String getStringValue(String paramString);
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public native boolean setStringValue(String paramString1, String paramString2, boolean paramBoolean);
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public native int getIntValue(String paramString);
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public native boolean setIntValue(String paramString, int paramInt);
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public native void close();
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ private static native int getReservedKey(int paramInt)
+/* */ throws RegKeyNotFoundException;
+/* */
+/* */
+/* */
+/* */
+/* */ private static native int openKey(int paramInt1, String paramString, int paramInt2)
+/* */ throws RegKeyNotFoundException;
+/* */
+/* */
+/* */
+/* */
+/* */ private static native int createKey(int paramInt, String paramString);
+/* */
+/* */
+/* */
+/* */
+/* */ public static native void nativeInit();
+/* */
+/* */
+/* */
+/* */
+/* */ private RegKey(int hKey)
+/* */ {
+/* 109 */ this.hKey = hKey;
+/* */ }
+/* */ }
+
+
+/* Location: C:\Program Files (x86)\Worlds Inc\WorldsPlayer - Win7\lib\worlds.jar!\NET\worlds\core\RegKey.class
+ * Java compiler version: 6 (50.0)
+ * JD-Core Version: 0.7.1
+ */ \ No newline at end of file
diff --git a/NET/worlds/core/RegKeyNotFoundException.java b/NET/worlds/core/RegKeyNotFoundException.java
new file mode 100644
index 0000000..f5da51f
--- /dev/null
+++ b/NET/worlds/core/RegKeyNotFoundException.java
@@ -0,0 +1,26 @@
+/* */ package NET.worlds.core;
+/* */
+/* */
+/* */
+/* */ public class RegKeyNotFoundException
+/* */ extends Exception
+/* */ {
+/* */ private static final long serialVersionUID = 3873901007988284311L;
+/* */
+/* */
+/* */
+/* */ public RegKeyNotFoundException() {}
+/* */
+/* */
+/* */
+/* */ public RegKeyNotFoundException(String s)
+/* */ {
+/* 18 */ super(s);
+/* */ }
+/* */ }
+
+
+/* Location: C:\Program Files (x86)\Worlds Inc\WorldsPlayer - Win7\lib\worlds.jar!\NET\worlds\core\RegKeyNotFoundException.class
+ * Java compiler version: 6 (50.0)
+ * JD-Core Version: 0.7.1
+ */ \ No newline at end of file
diff --git a/NET/worlds/core/ServerTableManager.java b/NET/worlds/core/ServerTableManager.java
new file mode 100644
index 0000000..b118755
--- /dev/null
+++ b/NET/worlds/core/ServerTableManager.java
@@ -0,0 +1,336 @@
+/* */ package NET.worlds.core;
+/* */
+/* */ import NET.worlds.console.Gamma;
+/* */ import NET.worlds.console.ProgressBar;
+/* */ import NET.worlds.network.Cache;
+/* */ import NET.worlds.network.CacheFile;
+/* */ import NET.worlds.network.NetUpdate;
+/* */ import NET.worlds.network.ProgressDialog;
+/* */ import NET.worlds.network.URL;
+/* */ import NET.worlds.scape.BGLoaded;
+/* */ import NET.worlds.scape.BackgroundLoader;
+/* */ import NET.worlds.scape.Room;
+/* */ import java.io.BufferedReader;
+/* */ import java.io.File;
+/* */ import java.io.FileNotFoundException;
+/* */ import java.io.IOException;
+/* */ import java.io.PrintStream;
+/* */ import java.io.RandomAccessFile;
+/* */ import java.io.StringReader;
+/* */ import java.util.StringTokenizer;
+/* */ import java.util.Vector;
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public class ServerTableManager
+/* */ implements BGLoaded
+/* */ {
+/* */ private Hashtable<String, String[]> tables;
+/* */ private String tableFile;
+/* 36 */ private int fileVersion = 0;
+/* */
+/* */ public int getFileVersion() {
+/* 39 */ return this.fileVersion;
+/* */ }
+/* */
+/* 42 */ public static ServerTableManager theTableManager = null;
+/* */
+/* */ public static ServerTableManager instance() {
+/* 45 */ if (theTableManager == null)
+/* 46 */ theTableManager = new ServerTableManager();
+/* 47 */ return theTableManager;
+/* */ }
+/* */
+/* */ public String[] getTable(String tableName) {
+/* 51 */ Object table = this.tables.get(tableName);
+/* */
+/* 53 */ if (table == null)
+/* 54 */ System.out.println("Requested table " + tableName + " not found.");
+/* 55 */ return (String[])table;
+/* */ }
+/* */
+/* */ private ServerTableManager() {
+/* 59 */ this.tables = new Hashtable();
+/* */
+/* 61 */ this.tableFile = IniFile.override().getIniString("ServerTableFile",
+/* 62 */ "tables/tables.dat");
+/* */
+/* 64 */ if (IniFile.gamma().getIniInt("encryptTables", 0) == 1) {
+/* 65 */ encryptTablesFile();
+/* */ }
+/* 67 */ loadTableFile();
+/* */ }
+/* */
+/* */ private boolean loadTableFile() {
+/* 71 */ URL tableURL = URL.make(NetUpdate.getUpgradeServerURL() + this.tableFile);
+/* */
+/* 73 */ boolean syncLoad = IniFile.gamma().getIniInt("synchronousTableLoad", 1) == 1;
+/* */
+/* 75 */ if (Gamma.loadProgress != null)
+/* */ {
+/* 77 */ Gamma.loadProgress.setMessage("Downloading global server information...");
+/* 78 */ Gamma.loadProgress.advance();
+/* */ }
+/* */
+/* 81 */ if (syncLoad) {
+/* 82 */ CacheFile cf = Cache.getFile(tableURL);
+/* 83 */ cf.waitUntilLoaded();
+/* 84 */ if (!cf.error()) {
+/* 85 */ syncBackgroundLoad(cf.getLocalName(), null);
+/* */ }
+/* */ }
+/* */
+/* */
+/* 90 */ boolean ok = parseFile();
+/* */
+/* 92 */ if (!syncLoad) {
+/* 93 */ BackgroundLoader.get(this, tableURL);
+/* */ }
+/* 95 */ return ok;
+/* */ }
+/* */
+/* */ public synchronized Object asyncBackgroundLoad(String localName, URL remoteURL)
+/* */ {
+/* 100 */ return localName;
+/* */ }
+/* */
+/* */ public boolean syncBackgroundLoad(Object obj, URL remoteURL) {
+/* 104 */ String localName = (String)obj;
+/* 105 */ if ((localName != null) && (new File(localName).exists())) {
+/* 106 */ ProgressDialog.copyFile(localName, this.tableFile);
+/* */ }
+/* 108 */ return false;
+/* */ }
+/* */
+/* */ public Room getBackgroundLoadRoom() {
+/* 112 */ return null;
+/* */ }
+/* */
+/* 115 */ private static String tableStart = "private static String[] ";
+/* 116 */ private static String version = "VERSION";
+/* */
+/* */ private boolean parseFile() {
+/* 119 */ BufferedReader buf = null;
+/* */ try
+/* */ {
+/* 122 */ RandomAccessFile fIn = new RandomAccessFile(this.tableFile, "r");
+/* 123 */ byte[] encrypted = new byte[fIn.readInt()];
+/* 124 */ fIn.readFully(encrypted);
+/* 125 */ fIn.close();
+/* 126 */ String decrypted = decrypt(encrypted);
+/* 127 */ buf = new BufferedReader(new StringReader(decrypted));
+/* */
+/* */ String line;
+/* 130 */ while ((line = buf.readLine()) != null) {
+/* 131 */ String line = line.trim();
+/* 132 */ if (!line.startsWith("//"))
+/* */ {
+/* 134 */ if (line.length() != 0)
+/* */ {
+/* */
+/* */
+/* 138 */ if (line.startsWith(version)) {
+/* 139 */ StringTokenizer tok = new StringTokenizer(line);
+/* 140 */ String versionString = "";
+/* 141 */ while (tok.hasMoreTokens()) {
+/* 142 */ versionString = tok.nextToken();
+/* */ }
+/* 144 */ if (versionString != "") {
+/* 145 */ this.fileVersion = Double.valueOf(versionString).intValue();
+/* */ }
+/* */ }
+/* */
+/* */
+/* 150 */ if (line.startsWith(tableStart)) {
+/* 151 */ String tableName = line.substring(tableStart.length());
+/* 152 */ StringTokenizer tok = new StringTokenizer(tableName);
+/* */
+/* 154 */ if (tok.hasMoreTokens())
+/* 155 */ parseTable(buf, tok.nextToken().trim());
+/* */ }
+/* */ }
+/* */ }
+/* */ }
+/* 160 */ buf.close();
+/* */ } catch (FileNotFoundException e) {
+/* 162 */ System.out.println(e);
+/* 163 */ return false;
+/* */ } catch (IOException e) {
+/* 165 */ System.out.println(e);
+/* 166 */ return false;
+/* */ }
+/* */
+/* 169 */ return true;
+/* */ }
+/* */
+/* */ private String stripQuotes(String in) {
+/* 173 */ String out = new String(in);
+/* */
+/* */
+/* */
+/* 177 */ if (out.charAt(0) == '"')
+/* 178 */ out = out.substring(1);
+/* 179 */ if (out.charAt(out.length() - 1) == '"')
+/* 180 */ out = out.substring(0, out.length() - 1);
+/* */ int idx;
+/* 182 */ while ((idx = out.indexOf('"')) != -1) {
+/* */ int idx;
+/* 184 */ out = out.substring(0, idx) + out.substring(idx + 1);
+/* */ }
+/* */
+/* 187 */ return out;
+/* */ }
+/* */
+/* */ private void parseTable(BufferedReader buf, String tableName)
+/* */ throws IOException
+/* */ {
+/* 193 */ String lastEntry = null;
+/* */
+/* 195 */ Vector<String> strings = new Vector();
+/* */ StringTokenizer tok;
+/* 197 */ label176: String line; for (; (line = buf.readLine()) != null;
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* 209 */ tok.hasMoreTokens())
+/* */ {
+/* 198 */ String line = line.trim();
+/* 199 */ if ((line.length() == 0) || (line.startsWith("//"))) {
+/* */ break label176;
+/* */ }
+/* 202 */ if (line.startsWith("};")) {
+/* */ break;
+/* */ }
+/* */
+/* */
+/* 207 */ tok = new StringTokenizer(line, ",\n\r");
+/* */
+/* 209 */ continue;
+/* 210 */ String token = tok.nextToken().trim();
+/* */
+/* 212 */ if (token.startsWith("+ \"")) {
+/* 213 */ if (lastEntry != null) {
+/* 214 */ token = token.substring(2);
+/* 215 */ lastEntry = lastEntry + stripQuotes(token);
+/* 216 */ strings.removeElement(strings.lastElement());
+/* 217 */ strings.addElement(lastEntry);
+/* */ }
+/* */ } else {
+/* 220 */ String entry = stripQuotes(token);
+/* 221 */ lastEntry = entry;
+/* 222 */ strings.addElement(entry);
+/* */ }
+/* */ }
+/* */
+/* */
+/* */
+/* 228 */ int numStrings = strings.size();
+/* 229 */ String[] table = new String[numStrings];
+/* 230 */ for (int i = 0; i < numStrings; i++) {
+/* 231 */ table[i] = ((String)strings.elementAt(i));
+/* */ }
+/* */
+/* */
+/* 235 */ System.out.println("Adding table " + tableName);
+/* 236 */ this.tables.put(tableName, table);
+/* */ }
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ private byte[] encrypt(String in)
+/* */ {
+/* */ try
+/* */ {
+/* 247 */ inBytes = in.getBytes("UTF8");
+/* */ } catch (Exception e) { byte[] inBytes;
+/* 249 */ System.out.println("Error encoding to UTF8" + e.toString());
+/* 250 */ return null;
+/* */ }
+/* */ byte[] inBytes;
+/* 253 */ byte[] outBytes = new byte[inBytes.length];
+/* */
+/* 255 */ int len = inBytes.length;
+/* */
+/* 257 */ outBytes[0] = inBytes[0];
+/* 258 */ for (int idx = 1; idx < len; idx++) {
+/* 259 */ outBytes[idx] = ((byte)(inBytes[idx] ^ outBytes[(idx - 1)]));
+/* */ }
+/* */
+/* 262 */ return outBytes;
+/* */ }
+/* */
+/* */ private String decrypt(byte[] in) {
+/* 266 */ byte[] outBytes = new byte[in.length];
+/* */
+/* 268 */ int len = in.length;
+/* */
+/* 270 */ outBytes[0] = in[0];
+/* 271 */ for (int idx = 1; idx < len; idx++) {
+/* 272 */ outBytes[idx] = ((byte)(in[idx] ^ in[(idx - 1)]));
+/* */ }
+/* */
+/* */ try
+/* */ {
+/* 277 */ out = new String(outBytes, "UTF8");
+/* */ } catch (Exception e) { String out;
+/* 279 */ System.out.println("Error encoding UTF8 " + e.toString());
+/* 280 */ return null;
+/* */ }
+/* */ String out;
+/* 283 */ return out;
+/* */ }
+/* */
+/* */ private void encryptTablesFile() {
+/* */ try {
+/* 288 */ System.out.println("Encoding tables file...");
+/* */
+/* 290 */ RandomAccessFile inFilth = new RandomAccessFile("..\\tables.txt",
+/* 291 */ "r");
+/* 292 */ String inStr = new String();
+/* 293 */ while (inFilth.getFilePointer() < inFilth.length()) {
+/* 294 */ String in = inFilth.readLine();
+/* 295 */ System.out.println(in);
+/* 296 */ inStr = inStr + in + "\r\n";
+/* */ }
+/* 298 */ inFilth.close();
+/* */
+/* 300 */ byte[] encrypted = encrypt(inStr);
+/* */
+/* 302 */ RandomAccessFile out = new RandomAccessFile(this.tableFile, "rw");
+/* 303 */ RandomAccessFile out2 = new RandomAccessFile("..\\tables.dat", "rw");
+/* 304 */ out.writeInt(encrypted.length);
+/* 305 */ out2.writeInt(encrypted.length);
+/* 306 */ out.write(encrypted);
+/* 307 */ out2.write(encrypted);
+/* 308 */ out.close();
+/* 309 */ out2.close();
+/* */
+/* 311 */ System.out.println("Tables file " + this.tableFile +
+/* 312 */ " successfully written.");
+/* */ } catch (Exception e) {
+/* 314 */ System.out.println("Error encoding tables file: " + e.toString());
+/* */ }
+/* */ }
+/* */ }
+
+
+/* Location: C:\Program Files (x86)\Worlds Inc\WorldsPlayer - Win7\lib\worlds.jar!\NET\worlds\core\ServerTableManager.class
+ * Java compiler version: 6 (50.0)
+ * JD-Core Version: 0.7.1
+ */ \ No newline at end of file
diff --git a/NET/worlds/core/Sort.java b/NET/worlds/core/Sort.java
new file mode 100644
index 0000000..51a6eb1
--- /dev/null
+++ b/NET/worlds/core/Sort.java
@@ -0,0 +1,152 @@
+/* */ package NET.worlds.core;
+/* */
+/* */ import java.awt.Choice;
+/* */ import java.awt.List;
+/* */ import java.util.Enumeration;
+/* */ import java.util.Hashtable;
+/* */ import java.util.Vector;
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public class Sort
+/* */ {
+/* */ public static void sort(String[] list)
+/* */ {
+/* 21 */ quicksort(list, 0, list.length - 1);
+/* */ }
+/* */
+/* */
+/* */
+/* */
+/* */ public static String[] sort(Enumeration<String> e, int count)
+/* */ {
+/* 29 */ String[] list = new String[count];
+/* 30 */ for (int i = 0; i < count; i++)
+/* 31 */ list[i] = ((String)e.nextElement()).toString();
+/* 32 */ quicksort(list, 0, count - 1);
+/* 33 */ return list;
+/* */ }
+/* */
+/* */
+/* */
+/* */
+/* */ public static String[] sort(Vector<String> v)
+/* */ {
+/* 41 */ return sort(v.elements(), v.size());
+/* */ }
+/* */
+/* */
+/* */
+/* */
+/* */ public static String[] sortKeys(Hashtable<String, ?> h)
+/* */ {
+/* 49 */ return sort(h.keys(), h.size());
+/* */ }
+/* */
+/* */
+/* */
+/* */
+/* */ public static void sortInto(List list, Hashtable<String, ?> h)
+/* */ {
+/* 57 */ String[] content = sortKeys(h);
+/* 58 */ for (int i = 0; i < content.length; i++) {
+/* 59 */ list.add(content[i]);
+/* */ }
+/* */ }
+/* */
+/* */
+/* */
+/* */ public static void sortInto(List list, Vector<String> v)
+/* */ {
+/* 67 */ String[] content = sort(v);
+/* 68 */ for (int i = 0; i < content.length; i++) {
+/* 69 */ list.add(content[i]);
+/* */ }
+/* */ }
+/* */
+/* */
+/* */
+/* */ public static void sortInto(Choice list, Hashtable<String, ?> h)
+/* */ {
+/* 77 */ String[] content = sortKeys(h);
+/* 78 */ for (int i = 0; i < content.length; i++) {
+/* 79 */ list.add(content[i]);
+/* */ }
+/* */ }
+/* */
+/* */
+/* */
+/* */ public static void sortInto(Choice list, Vector<String> v)
+/* */ {
+/* 87 */ String[] content = sort(v);
+/* 88 */ for (int i = 0; i < content.length; i++) {
+/* 89 */ list.add(content[i]);
+/* */ }
+/* */ }
+/* */
+/* */
+/* */
+/* */ private static void quicksort(String[] objectList, int l, int r)
+/* */ {
+/* 97 */ if (r > l) {
+/* 98 */ String v = objectList[r];
+/* */
+/* */
+/* 101 */ int i = l - 1;
+/* 102 */ int j = r;
+/* */ String tstr;
+/* */ do
+/* */ {
+/* */ do
+/* */ {
+/* 108 */ i++;
+/* 107 */ } while (
+/* */
+/* 109 */ objectList[i].compareTo(v) < 0);
+/* */ do
+/* */ {
+/* 112 */ j--;
+/* 113 */ } while ((j > l) && (objectList[j].compareTo(v) > 0));
+/* */
+/* */
+/* */
+/* 117 */ tstr = objectList[i];
+/* 118 */ objectList[i] = objectList[j];
+/* 119 */ objectList[j] = tstr;
+/* 106 */ } while (
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* 120 */ j > i);
+/* */
+/* */
+/* 123 */ objectList[j] = objectList[i];
+/* 124 */ objectList[i] = objectList[r];
+/* 125 */ objectList[r] = tstr;
+/* 126 */ quicksort(objectList, l, i - 1);
+/* 127 */ quicksort(objectList, i + 1, r);
+/* */ }
+/* */ }
+/* */ }
+
+
+/* Location: C:\Program Files (x86)\Worlds Inc\WorldsPlayer - Win7\lib\worlds.jar!\NET\worlds\core\Sort.class
+ * Java compiler version: 6 (50.0)
+ * JD-Core Version: 0.7.1
+ */ \ No newline at end of file
diff --git a/NET/worlds/core/Std.java b/NET/worlds/core/Std.java
new file mode 100644
index 0000000..f332fbf
--- /dev/null
+++ b/NET/worlds/core/Std.java
@@ -0,0 +1,332 @@
+/* */ package NET.worlds.core;
+/* */
+/* */ import java.io.File;
+/* */ import java.io.InputStream;
+/* */ import java.io.PrintStream;
+/* */ import java.net.InetAddress;
+/* */ import java.net.Socket;
+/* */ import java.util.Date;
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public class Std
+/* */ {
+/* */ public static final String JavaVersion = "1922a10";
+/* */ public static final String JavaBuildDate = "2020031200";
+/* */ private static String productName;
+/* */ private static int lastTime;
+/* */
+/* */ public static void assertFail(String file, int line)
+/* */ {
+/* 58 */ String msg = "Assertion failed: file " + file + ", line " + line;
+/* 59 */ dumpStackTrace();
+/* 60 */ exit();
+/* */ }
+/* */
+/* */ public static String replaceStr(String in, String seek, String replace) {
+/* 64 */ if ((seek == null) || (replace == null)) {
+/* 65 */ return in;
+/* */ }
+/* */ int idx;
+/* 68 */ while ((idx = in.indexOf(seek)) != -1) { int idx;
+/* 69 */ String tmp = in.substring(0, idx) + replace +
+/* 70 */ in.substring(idx + seek.length());
+/* 71 */ in = tmp;
+/* */ }
+/* */
+/* 74 */ return in;
+/* */ }
+/* */
+/* */ public static native void exit();
+/* */
+/* */ public static void dumpStackTrace()
+/* */ {
+/* */ try {
+/* 82 */ throw new Error("");
+/* */ } catch (Error e) {
+/* 84 */ e.printStackTrace(System.out);
+/* */ }
+/* */ }
+/* */
+/* */
+/* */ public static String getProductName()
+/* */ {
+/* 91 */ assert (productName != null);
+/* */
+/* 93 */ return productName;
+/* */ }
+/* */
+/* */ public static void initProductName() {
+/* 97 */ assert (productName == null);
+/* 98 */ productName = IniFile.gamma().getIniString("PRODUCT_NAME",
+/* 99 */ "Worlds.com - The 3D Entertainment Portal");
+/* */
+/* */
+/* 102 */ productName = IniFile.override().getIniString("productName",
+/* 103 */ productName);
+/* */ }
+/* */
+/* */ private static native int nativeGetMillis();
+/* */
+/* */ private static synchronized int getMillis() {
+/* 109 */ return nativeGetMillis();
+/* */ }
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public static native int getTimeZero();
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public static native long getPerformanceFrequency();
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public static native long getPerformanceCount();
+/* */
+/* */
+/* */
+/* */
+/* */ public static boolean sleep(float seconds)
+/* */ {
+/* */ try
+/* */ {
+/* 137 */ Thread.sleep((seconds * 1000.0F));
+/* */ } catch (InterruptedException e) {
+/* 139 */ return true;
+/* */ }
+/* */
+/* 142 */ return false;
+/* */ }
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public static int getFastTime()
+/* */ {
+/* 157 */ if (lastTime == 0)
+/* 158 */ getRealTime();
+/* 159 */ return lastTime;
+/* */ }
+/* */
+/* */
+/* */
+/* */ public static int getRealTime()
+/* */ {
+/* 166 */ lastTime = getMillis();
+/* 167 */ return lastTime;
+/* */ }
+/* */
+/* */
+/* */
+/* */
+/* */ public static int getSynchronizedTime()
+/* */ {
+/* 175 */ initSyncTime();
+/* 176 */ return getFastTime() / 1000 + syncTimeBase;
+/* */ }
+/* */
+/* 179 */ static boolean syncTimeInited = false;
+/* */
+/* */ static int syncTimeBase;
+/* 182 */ static boolean offline = IniFile.override().getIniInt("Offline", 0) == 1;
+/* 183 */ static boolean stopOnFault = IniFile.gamma().getIniInt("StopOnHttpFault", 0) == 1;
+/* 184 */ static String timeServer = IniFile.override().getIniString("timeServer", "time.worlds.net");
+/* */
+/* */ static void initSyncTime()
+/* */ {
+/* 188 */ if ((offline) || (stopOnFault)) {
+/* 189 */ syncTimeInited = true;
+/* 190 */ syncTimeBase = 0;
+/* 191 */ return;
+/* */ }
+/* */
+/* 194 */ if (!syncTimeInited) {
+/* 195 */ syncTimeInited = true;
+/* */ try {
+/* 197 */ InetAddress ip = InetAddress.getByName(timeServer);
+/* 198 */ Socket s = new Socket(ip, 37);
+/* */
+/* 200 */ InputStream is = s.getInputStream();
+/* 201 */ int b1 = is.read();
+/* 202 */ int b2 = is.read();
+/* 203 */ int b3 = is.read();
+/* 204 */ int b4 = is.read();
+/* 205 */ is.close();
+/* 206 */ long time = (b1 << 24) + (b2 << 16) + (b3 << 8) + b4;
+/* */
+/* */
+/* 209 */ time -= -1141367296L;
+/* 210 */ syncTimeBase = (int)time - getFastTime() / 1000;
+/* 211 */ s.close();
+/* */ } catch (Exception e) {
+/* 213 */ System.out.println("Error retrieving network time: " + e);
+/* */ }
+/* */ }
+/* */ }
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public static native boolean instanceOf(Object paramObject, Class<?> paramClass);
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public static native String getenv(String paramString);
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public static long GetDiskFreeSpace(String drive)
+/* */ {
+/* 236 */ long value = -1L;
+/* */ try
+/* */ {
+/* 239 */ if (drive == null) {
+/* 240 */ drive = ".";
+/* */ }
+/* 242 */ File f = new File(drive);
+/* 243 */ value = f.getFreeSpace() / 1024L;
+/* */ }
+/* */ catch (Exception ex) {
+/* 246 */ value = -1L;
+/* */ }
+/* */
+/* 249 */ return value;
+/* */ }
+/* */
+/* */
+/* */
+/* */ public static long GetDiskFreeSpace()
+/* */ {
+/* 256 */ return GetDiskFreeSpace(null);
+/* */ }
+/* */
+/* */
+/* */
+/* */
+/* */ public static void printThreads()
+/* */ {
+/* 264 */ ThreadGroup tg = Thread.currentThread().getThreadGroup();
+/* 265 */ Thread[] ta = new Thread[100];
+/* 266 */ int n = tg.enumerate(ta);
+/* 267 */ tg.list();
+/* 268 */ for (int i = 0; i < n; i++) {
+/* 269 */ if (ta[i].isDaemon()) {
+/* 270 */ System.out.println("is daemon");
+/* */ } else {
+/* 272 */ System.out.println("isn't daemon");
+/* */ }
+/* */ }
+/* */ }
+/* */
+/* */ public static void printlnOut(String msg)
+/* */ {
+/* 279 */ System.out.println(msg);
+/* */ }
+/* */
+/* */
+/* */
+/* */
+/* */ public static native boolean byteArraysEqual(byte[] paramArrayOfByte1, byte[] paramArrayOfByte2);
+/* */
+/* */
+/* */
+/* */
+/* */ public static native String getBuildInfo();
+/* */
+/* */
+/* */
+/* */
+/* */ public static native int getVersion();
+/* */
+/* */
+/* */
+/* */ public static String getJavaVersion()
+/* */ {
+/* 301 */ return "1922a10";
+/* */ }
+/* */
+/* */ public static String getJavaBuildDate() {
+/* 305 */ return "2020031200";
+/* */ }
+/* */
+/* */
+/* */ public static native String getClientVersion();
+/* */
+/* */
+/* */ private static native int getBuildYear();
+/* */
+/* */
+/* */ private static native int getBuildMonth();
+/* */
+/* */ private static native int getBuildDay();
+/* */
+/* */ public static long getBuildDate()
+/* */ {
+/* 321 */ return
+/* 322 */ Date.UTC(getBuildYear(), getBuildMonth(), getBuildDay(), 0, 0, 0);
+/* */ }
+/* */
+/* */ public static native int checkNativeHeap();
+/* */ }
+
+
+/* Location: C:\Program Files (x86)\Worlds Inc\WorldsPlayer - Win7\lib\worlds.jar!\NET\worlds\core\Std.class
+ * Java compiler version: 6 (50.0)
+ * JD-Core Version: 0.7.1
+ */ \ No newline at end of file
diff --git a/NET/worlds/core/Std_A.java b/NET/worlds/core/Std_A.java
new file mode 100644
index 0000000..003abc9
--- /dev/null
+++ b/NET/worlds/core/Std_A.java
@@ -0,0 +1,11 @@
+package NET.worlds.core;
+
+class Std_A
+ implements Std_IA
+{}
+
+
+/* Location: C:\Program Files (x86)\Worlds Inc\WorldsPlayer - Win7\lib\worlds.jar!\NET\worlds\core\Std_A.class
+ * Java compiler version: 6 (50.0)
+ * JD-Core Version: 0.7.1
+ */ \ No newline at end of file
diff --git a/NET/worlds/core/Std_B.java b/NET/worlds/core/Std_B.java
new file mode 100644
index 0000000..8568a51
--- /dev/null
+++ b/NET/worlds/core/Std_B.java
@@ -0,0 +1,12 @@
+package NET.worlds.core;
+
+class Std_B
+ extends Std_A
+ implements Std_IB
+{}
+
+
+/* Location: C:\Program Files (x86)\Worlds Inc\WorldsPlayer - Win7\lib\worlds.jar!\NET\worlds\core\Std_B.class
+ * Java compiler version: 6 (50.0)
+ * JD-Core Version: 0.7.1
+ */ \ No newline at end of file
diff --git a/NET/worlds/core/Std_IA.java b/NET/worlds/core/Std_IA.java
new file mode 100644
index 0000000..a8ab89d
--- /dev/null
+++ b/NET/worlds/core/Std_IA.java
@@ -0,0 +1,9 @@
+package NET.worlds.core;
+
+abstract interface Std_IA {}
+
+
+/* Location: C:\Program Files (x86)\Worlds Inc\WorldsPlayer - Win7\lib\worlds.jar!\NET\worlds\core\Std_IA.class
+ * Java compiler version: 6 (50.0)
+ * JD-Core Version: 0.7.1
+ */ \ No newline at end of file
diff --git a/NET/worlds/core/Std_IB.java b/NET/worlds/core/Std_IB.java
new file mode 100644
index 0000000..5fa6001
--- /dev/null
+++ b/NET/worlds/core/Std_IB.java
@@ -0,0 +1,11 @@
+package NET.worlds.core;
+
+abstract interface Std_IB
+ extends Std_IA
+{}
+
+
+/* Location: C:\Program Files (x86)\Worlds Inc\WorldsPlayer - Win7\lib\worlds.jar!\NET\worlds\core\Std_IB.class
+ * Java compiler version: 6 (50.0)
+ * JD-Core Version: 0.7.1
+ */ \ No newline at end of file
diff --git a/NET/worlds/core/SystemInfo.java b/NET/worlds/core/SystemInfo.java
new file mode 100644
index 0000000..dc77784
--- /dev/null
+++ b/NET/worlds/core/SystemInfo.java
@@ -0,0 +1,161 @@
+/* */ package NET.worlds.core;
+/* */
+/* */ import NET.worlds.console.Main;
+/* */ import NET.worlds.console.MainCallback;
+/* */ import NET.worlds.console.MainTerminalCallback;
+/* */ import java.io.PrintStream;
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public class SystemInfo
+/* */ implements MainCallback, MainTerminalCallback
+/* */ {
+/* 23 */ private static SystemInfo instance = new SystemInfo();
+/* 24 */ private long _lastFrame = 0L; private long _lastReport = 0L;
+/* 25 */ private long _min; private long _max; private long _avg; private long _avgCount = 0L;
+/* */
+/* */ private SystemInfo() {
+/* 28 */ Main.register(this);
+/* */ }
+/* */
+/* */ public void mainCallback() {
+/* 32 */ long curTime = Std.getFastTime();
+/* 33 */ long frameTime = curTime - this._lastFrame;
+/* */
+/* 35 */ if (frameTime < this._min)
+/* 36 */ this._min = frameTime;
+/* 37 */ if (frameTime > this._max)
+/* 38 */ this._max = frameTime;
+/* 39 */ this._avg += frameTime;
+/* 40 */ this._avgCount += 1L;
+/* */
+/* 42 */ if (curTime - this._lastReport > 300000L)
+/* */ {
+/* 44 */ if (this._lastFrame != 0L) {
+/* 45 */ System.out.println(logTime() + "Frame rate report:" + this._min +
+/* 46 */ "/" + this._avg / this._avgCount + "/" + this._max);
+/* */ }
+/* 48 */ this._min = 10000L;
+/* 49 */ this._max = 0L;
+/* 50 */ this._avg = 0L;
+/* 51 */ this._avgCount = 0L;
+/* 52 */ this._lastReport = curTime;
+/* */ }
+/* 54 */ this._lastFrame = curTime;
+/* */ }
+/* */
+/* */ public void terminalCallback() {
+/* 58 */ Main.unregister(this);
+/* 59 */ if (this._avgCount != 0L) {
+/* 60 */ System.out.println(logTime() + "Frame rate report:" + this._min + "/" +
+/* 61 */ this._avg / this._avgCount + "/" + this._max);
+/* */ }
+/* */ }
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public static void Record(PrintStream out)
+/* */ {
+/* 71 */ out.println("DISK REPORT:");
+/* 72 */ recordPath(out, "Windows SYSTEM path", GetSystemDirectory());
+/* 73 */ recordPath(out, "Current Working Directory", GetCurrentDirectory());
+/* */
+/* */
+/* 76 */ out.println("");
+/* 77 */ out.println("JAVA MEMORY:");
+/* 78 */ out.println(logTime() + "\t Free memory: " +
+/* 79 */ Runtime.getRuntime().freeMemory());
+/* 80 */ out.println(logTime() + "\tTotal memory: " +
+/* 81 */ Runtime.getRuntime().totalMemory());
+/* */
+/* */
+/* 84 */ out.println("");
+/* 85 */ out.println("WINDOWS MEMORY:");
+/* 86 */ out.println(logTime() + "\tTotal Physical Memory: " +
+/* 87 */ GetTotalPhysicalMemory());
+/* 88 */ out.println(logTime() + "\tAvail Physical Memory: " +
+/* 89 */ GetAvailPhysicalMemory());
+/* 90 */ out.println(logTime() + "\t Total Paged Memory: " +
+/* 91 */ GetTotalPagedMemory());
+/* 92 */ out.println(logTime() + "\t Avail Paged Memory: " +
+/* 93 */ GetAvailPagedMemory());
+/* */
+/* */
+/* 96 */ out.println("");
+/* 97 */ out.println(logTime() + "Java Properties: " + System.getProperties());
+/* 98 */ out.println(logTime() + "Number of CPUs: " + GetNumberOfProcessors());
+/* 99 */ out.println(logTime() + "Processor Type: " + GetProcessorType());
+/* 100 */ out.println(logTime() + "Platform Type: " + GetPlatformID());
+/* */ }
+/* */
+/* */
+/* */
+/* */ private static void recordPath(PrintStream out, String comment, String path)
+/* */ {
+/* 107 */ out.println(logTime() + comment + ": " + path);
+/* 108 */ if (path != null)
+/* */ {
+/* 110 */ String drive = path.substring(0, 2);
+/* 111 */ out.println(logTime() + "\tFree disk space (" + drive + "): " +
+/* 112 */ GetDiskFreeSpace(new StringBuilder(String.valueOf(drive)).append("\\").toString()) + " KB");
+/* */ }
+/* */ }
+/* */
+/* */ public static String logTime() {
+/* 117 */ return "[" + Std.getRealTime() + "] ";
+/* */ }
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public static native int GetDiskFreeSpace(String paramString);
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public static int GetDiskFreeSpace()
+/* */ {
+/* 135 */ return GetDiskFreeSpace(null);
+/* */ }
+/* */
+/* */ public static native String GetSystemDirectory();
+/* */
+/* */ public static native String GetCurrentDirectory();
+/* */
+/* */ public static native int GetTotalPhysicalMemory();
+/* */
+/* */ public static native int GetAvailPhysicalMemory();
+/* */
+/* */ public static native int GetTotalPagedMemory();
+/* */
+/* */ public static native int GetAvailPagedMemory();
+/* */
+/* */ public static native String GetPlatformID();
+/* */
+/* */ public static native int GetNumberOfProcessors();
+/* */
+/* */ public static native String GetProcessorType();
+/* */ }
+
+
+/* Location: C:\Program Files (x86)\Worlds Inc\WorldsPlayer - Win7\lib\worlds.jar!\NET\worlds\core\SystemInfo.class
+ * Java compiler version: 6 (50.0)
+ * JD-Core Version: 0.7.1
+ */ \ No newline at end of file
diff --git a/NET/worlds/core/TestInstanceOf.java b/NET/worlds/core/TestInstanceOf.java
new file mode 100644
index 0000000..686322a
--- /dev/null
+++ b/NET/worlds/core/TestInstanceOf.java
@@ -0,0 +1,60 @@
+/* */ package NET.worlds.core;
+/* */
+/* */ import java.io.PrintStream;
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */
+/* */ public class TestInstanceOf
+/* */ {
+/* */ public TestInstanceOf()
+/* */ {
+/* 27 */ System.out.println("Testing instanceOf");
+/* 28 */ Std_A a = new Std_A();
+/* 29 */ Std_B b = new Std_B();
+/* 30 */ Std_A[] aa = new Std_A[1];
+/* 31 */ Std_B[] bb = new Std_B[1];
+/* */ try {
+/* 33 */ assert (Std.instanceOf(a, a.getClass()));
+/* 34 */ assert (Std.instanceOf(b, b.getClass()));
+/* 35 */ assert (Std.instanceOf(b, a.getClass()));
+/* 36 */ assert (!Std.instanceOf(a, b.getClass()));
+/* 37 */ assert (Std.instanceOf(a, Class.forName(cName("Std_IA"))));
+/* 38 */ assert (!Std.instanceOf(a, Class.forName(cName("Std_IB"))));
+/* 39 */ assert (Std.instanceOf(b, Class.forName(cName("Std_IA"))));
+/* 40 */ assert (Std.instanceOf(b, Class.forName(cName("Std_IB"))));
+/* 41 */ assert (Std.instanceOf(aa, aa.getClass()));
+/* 42 */ assert (Std.instanceOf(bb, bb.getClass()));
+/* 43 */ assert (Std.instanceOf(bb, aa.getClass()));
+/* 44 */ assert (!Std.instanceOf(aa, bb.getClass()));
+/* 45 */ System.out.println("Passed all tests");
+/* 46 */ return;
+/* */ }
+/* */ catch (ClassNotFoundException localClassNotFoundException) {
+/* 49 */ System.out.println("Failed");
+/* */ }
+/* */ }
+/* */
+/* 53 */ private static String cName(String className) { return "NET.worlds.core." + className; }
+/* */ }
+
+
+/* Location: C:\Program Files (x86)\Worlds Inc\WorldsPlayer - Win7\lib\worlds.jar!\NET\worlds\core\TestInstanceOf.class
+ * Java compiler version: 6 (50.0)
+ * JD-Core Version: 0.7.1
+ */ \ No newline at end of file
diff --git a/NET/worlds/core/Timer.java b/NET/worlds/core/Timer.java
new file mode 100644
index 0000000..775032f
--- /dev/null
+++ b/NET/worlds/core/Timer.java
@@ -0,0 +1,31 @@
+/* */ package NET.worlds.core;
+/* */
+/* */
+/* */ public class Timer
+/* */ extends Thread
+/* */ {
+/* */ private float m_delay;
+/* */ private TimerCallback m_callback;
+/* */
+/* */ public Timer(float delay, TimerCallback callback)
+/* */ {
+/* 12 */ this.m_delay = delay;
+/* 13 */ this.m_callback = callback;
+/* */ }
+/* */
+/* */ public void run()
+/* */ {
+/* */ try {
+/* 19 */ sleep((this.m_delay * 1000.0F));
+/* */ }
+/* */ catch (InterruptedException localInterruptedException) {}
+/* */
+/* 23 */ this.m_callback.timerDone();
+/* */ }
+/* */ }
+
+
+/* Location: C:\Program Files (x86)\Worlds Inc\WorldsPlayer - Win7\lib\worlds.jar!\NET\worlds\core\Timer.class
+ * Java compiler version: 6 (50.0)
+ * JD-Core Version: 0.7.1
+ */ \ No newline at end of file
diff --git a/NET/worlds/core/TimerCallback.java b/NET/worlds/core/TimerCallback.java
new file mode 100644
index 0000000..55293b2
--- /dev/null
+++ b/NET/worlds/core/TimerCallback.java
@@ -0,0 +1,12 @@
+package NET.worlds.core;
+
+public abstract interface TimerCallback
+{
+ public abstract void timerDone();
+}
+
+
+/* Location: C:\Program Files (x86)\Worlds Inc\WorldsPlayer - Win7\lib\worlds.jar!\NET\worlds\core\TimerCallback.class
+ * Java compiler version: 6 (50.0)
+ * JD-Core Version: 0.7.1
+ */ \ No newline at end of file