diff --git a/BUKKIT/build.xml b/BUKKIT/build.xml
new file mode 100644
index 0000000..271c2db
--- /dev/null
+++ b/BUKKIT/build.xml
@@ -0,0 +1,53 @@
+
+ Builds, tests, and runs the project AutofastForward(alpha1).
+
+
+
diff --git a/BUKKIT/build/built-jar.properties b/BUKKIT/build/built-jar.properties
new file mode 100644
index 0000000..0923b77
--- /dev/null
+++ b/BUKKIT/build/built-jar.properties
@@ -0,0 +1,4 @@
+#Sun, 17 Nov 2019 11:51:04 -0500
+
+
+C\:\\Users\\niris\\OneDrive\\Documents\\NetBeansProjects\\AutofastForward(alpha1)=
diff --git a/BUKKIT/build/classes/autofastforward/alpha1/AutofastForwardAlpha1.class b/BUKKIT/build/classes/autofastforward/alpha1/AutofastForwardAlpha1.class
new file mode 100644
index 0000000..dc1d7ee
Binary files /dev/null and b/BUKKIT/build/classes/autofastforward/alpha1/AutofastForwardAlpha1.class differ
diff --git a/BUKKIT/build/classes/autofastforward/alpha1/FXMLDocument.fxml b/BUKKIT/build/classes/autofastforward/alpha1/FXMLDocument.fxml
new file mode 100644
index 0000000..5da3b8e
--- /dev/null
+++ b/BUKKIT/build/classes/autofastforward/alpha1/FXMLDocument.fxml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/BUKKIT/build/classes/autofastforward/alpha1/FXMLDocumentController.class b/BUKKIT/build/classes/autofastforward/alpha1/FXMLDocumentController.class
new file mode 100644
index 0000000..a00e29f
Binary files /dev/null and b/BUKKIT/build/classes/autofastforward/alpha1/FXMLDocumentController.class differ
diff --git a/BUKKIT/build/classes/autofastforward/alpha1/icon.png b/BUKKIT/build/classes/autofastforward/alpha1/icon.png
new file mode 100644
index 0000000..aaaa6bc
Binary files /dev/null and b/BUKKIT/build/classes/autofastforward/alpha1/icon.png differ
diff --git a/BUKKIT/build/classes/autofastforward/alpha1/icon_alt.png b/BUKKIT/build/classes/autofastforward/alpha1/icon_alt.png
new file mode 100644
index 0000000..b4768fb
Binary files /dev/null and b/BUKKIT/build/classes/autofastforward/alpha1/icon_alt.png differ
diff --git a/BUKKIT/build/classes/autofastforward/alpha1/theme_1.png b/BUKKIT/build/classes/autofastforward/alpha1/theme_1.png
new file mode 100644
index 0000000..bbb0c96
Binary files /dev/null and b/BUKKIT/build/classes/autofastforward/alpha1/theme_1.png differ
diff --git a/BUKKIT/build/classes/autofastforward/theme.png b/BUKKIT/build/classes/autofastforward/theme.png
new file mode 100644
index 0000000..f0e5312
Binary files /dev/null and b/BUKKIT/build/classes/autofastforward/theme.png differ
diff --git a/BUKKIT/build/classes/dosse/upnp/Gateway.class b/BUKKIT/build/classes/dosse/upnp/Gateway.class
new file mode 100644
index 0000000..a04a8c2
Binary files /dev/null and b/BUKKIT/build/classes/dosse/upnp/Gateway.class differ
diff --git a/BUKKIT/build/classes/dosse/upnp/GatewayFinder$GatewayListener.class b/BUKKIT/build/classes/dosse/upnp/GatewayFinder$GatewayListener.class
new file mode 100644
index 0000000..9f840f7
Binary files /dev/null and b/BUKKIT/build/classes/dosse/upnp/GatewayFinder$GatewayListener.class differ
diff --git a/BUKKIT/build/classes/dosse/upnp/GatewayFinder.class b/BUKKIT/build/classes/dosse/upnp/GatewayFinder.class
new file mode 100644
index 0000000..e0aae1c
Binary files /dev/null and b/BUKKIT/build/classes/dosse/upnp/GatewayFinder.class differ
diff --git a/BUKKIT/build/classes/dosse/upnp/UPnP$1.class b/BUKKIT/build/classes/dosse/upnp/UPnP$1.class
new file mode 100644
index 0000000..0ab0330
Binary files /dev/null and b/BUKKIT/build/classes/dosse/upnp/UPnP$1.class differ
diff --git a/BUKKIT/build/classes/dosse/upnp/UPnP.class b/BUKKIT/build/classes/dosse/upnp/UPnP.class
new file mode 100644
index 0000000..ed02949
Binary files /dev/null and b/BUKKIT/build/classes/dosse/upnp/UPnP.class differ
diff --git a/BUKKIT/dist/AutofastForward(alpha1).html b/BUKKIT/dist/AutofastForward(alpha1).html
new file mode 100644
index 0000000..5e5ad9e
--- /dev/null
+++ b/BUKKIT/dist/AutofastForward(alpha1).html
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+Test page for AutofastForward(alpha1)
+ Webstart: click to launch this app as webstart
+
+
+
+
diff --git a/BUKKIT/dist/AutofastForward(alpha1).jnlp b/BUKKIT/dist/AutofastForward(alpha1).jnlp
new file mode 100644
index 0000000..2c64919
--- /dev/null
+++ b/BUKKIT/dist/AutofastForward(alpha1).jnlp
@@ -0,0 +1,18 @@
+
+
+
+ AutofastForward(alpha1)
+ niris
+ null
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/BUKKIT/dist/AutofastForward(beta).jar b/BUKKIT/dist/AutofastForward(beta).jar
new file mode 100644
index 0000000..2bbd753
Binary files /dev/null and b/BUKKIT/dist/AutofastForward(beta).jar differ
diff --git a/BUKKIT/dist/AutofastForward(beta)/META-INF/MANIFEST.MF b/BUKKIT/dist/AutofastForward(beta)/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..5e965ea
--- /dev/null
+++ b/BUKKIT/dist/AutofastForward(beta)/META-INF/MANIFEST.MF
@@ -0,0 +1,12 @@
+Manifest-Version: 1.0
+Implementation-Title: AutofastForward(alpha1)
+X-COMMENT: Main-Class will be added automatically by build
+Implementation-Version: 1.0
+Permissions: sandbox
+Codebase: *
+JavaFX-Version: 8.0
+Class-Path:
+Created-By: JavaFX Packager
+Implementation-Vendor: niris
+Main-Class: autofastforward.alpha1.AutofastForwardAlpha1
+
diff --git a/BUKKIT/dist/AutofastForward(beta)/autofastforward/alpha1/AutofastForwardAlpha1.class b/BUKKIT/dist/AutofastForward(beta)/autofastforward/alpha1/AutofastForwardAlpha1.class
new file mode 100644
index 0000000..dc1d7ee
Binary files /dev/null and b/BUKKIT/dist/AutofastForward(beta)/autofastforward/alpha1/AutofastForwardAlpha1.class differ
diff --git a/BUKKIT/dist/AutofastForward(beta)/autofastforward/alpha1/FXMLDocument.fxml b/BUKKIT/dist/AutofastForward(beta)/autofastforward/alpha1/FXMLDocument.fxml
new file mode 100644
index 0000000..5da3b8e
--- /dev/null
+++ b/BUKKIT/dist/AutofastForward(beta)/autofastforward/alpha1/FXMLDocument.fxml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/BUKKIT/dist/AutofastForward(beta)/autofastforward/alpha1/FXMLDocumentController.class b/BUKKIT/dist/AutofastForward(beta)/autofastforward/alpha1/FXMLDocumentController.class
new file mode 100644
index 0000000..a00e29f
Binary files /dev/null and b/BUKKIT/dist/AutofastForward(beta)/autofastforward/alpha1/FXMLDocumentController.class differ
diff --git a/BUKKIT/dist/AutofastForward(beta)/autofastforward/alpha1/icon.png b/BUKKIT/dist/AutofastForward(beta)/autofastforward/alpha1/icon.png
new file mode 100644
index 0000000..aaaa6bc
Binary files /dev/null and b/BUKKIT/dist/AutofastForward(beta)/autofastforward/alpha1/icon.png differ
diff --git a/BUKKIT/dist/AutofastForward(beta)/autofastforward/alpha1/icon_alt.png b/BUKKIT/dist/AutofastForward(beta)/autofastforward/alpha1/icon_alt.png
new file mode 100644
index 0000000..b4768fb
Binary files /dev/null and b/BUKKIT/dist/AutofastForward(beta)/autofastforward/alpha1/icon_alt.png differ
diff --git a/BUKKIT/dist/AutofastForward(beta)/autofastforward/alpha1/theme_1.png b/BUKKIT/dist/AutofastForward(beta)/autofastforward/alpha1/theme_1.png
new file mode 100644
index 0000000..bbb0c96
Binary files /dev/null and b/BUKKIT/dist/AutofastForward(beta)/autofastforward/alpha1/theme_1.png differ
diff --git a/BUKKIT/dist/AutofastForward(beta)/autofastforward/theme.png b/BUKKIT/dist/AutofastForward(beta)/autofastforward/theme.png
new file mode 100644
index 0000000..f0e5312
Binary files /dev/null and b/BUKKIT/dist/AutofastForward(beta)/autofastforward/theme.png differ
diff --git a/BUKKIT/dist/AutofastForward(beta)/dosse/upnp/Gateway.class b/BUKKIT/dist/AutofastForward(beta)/dosse/upnp/Gateway.class
new file mode 100644
index 0000000..a04a8c2
Binary files /dev/null and b/BUKKIT/dist/AutofastForward(beta)/dosse/upnp/Gateway.class differ
diff --git a/BUKKIT/dist/AutofastForward(beta)/dosse/upnp/GatewayFinder$GatewayListener.class b/BUKKIT/dist/AutofastForward(beta)/dosse/upnp/GatewayFinder$GatewayListener.class
new file mode 100644
index 0000000..9f840f7
Binary files /dev/null and b/BUKKIT/dist/AutofastForward(beta)/dosse/upnp/GatewayFinder$GatewayListener.class differ
diff --git a/BUKKIT/dist/AutofastForward(beta)/dosse/upnp/GatewayFinder.class b/BUKKIT/dist/AutofastForward(beta)/dosse/upnp/GatewayFinder.class
new file mode 100644
index 0000000..e0aae1c
Binary files /dev/null and b/BUKKIT/dist/AutofastForward(beta)/dosse/upnp/GatewayFinder.class differ
diff --git a/BUKKIT/dist/AutofastForward(beta)/dosse/upnp/UPnP$1.class b/BUKKIT/dist/AutofastForward(beta)/dosse/upnp/UPnP$1.class
new file mode 100644
index 0000000..0ab0330
Binary files /dev/null and b/BUKKIT/dist/AutofastForward(beta)/dosse/upnp/UPnP$1.class differ
diff --git a/BUKKIT/dist/AutofastForward(beta)/dosse/upnp/UPnP.class b/BUKKIT/dist/AutofastForward(beta)/dosse/upnp/UPnP.class
new file mode 100644
index 0000000..ed02949
Binary files /dev/null and b/BUKKIT/dist/AutofastForward(beta)/dosse/upnp/UPnP.class differ
diff --git a/BUKKIT/dist/web-files/dtjava.js b/BUKKIT/dist/web-files/dtjava.js
new file mode 100644
index 0000000..aecf0f2
--- /dev/null
+++ b/BUKKIT/dist/web-files/dtjava.js
@@ -0,0 +1,3954 @@
+/*
+ * Copyright (c) 2006, 2016, Oracle and/or its affiliates. All rights reserved.
+ * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
+ */
+
+/**
+ The Java Deployment Toolkit is a utility to deploy Java content in
+ the browser as applets or applications using the right version of Java.
+ If needed it can initiate an upgrade of user's system to install required
+ components of Java platform.
+
+ Note that some of the Deployment Toolkit methods may not be fully operational if
+ used before web page body is loaded (because DT native plugins could not be instantiated).
+ If you intend to use it before web page DOM tree is ready then dtjava.js
+ needs to be loaded inside the body element of the page and before use of other DT APIs.
+
+ @module java/deployment_toolkit
+*/
+var dtjava = function() {
+ function notNull(o) {
+ return (o != undefined && o != null);
+ }
+
+ function isDef(fn) {
+ return (fn != null && typeof fn != "undefined");
+ }
+
+ //return true if any of patterns from query list is found in the given string
+ function containsAny(lst, str) {
+ for (var q = 0; q < lst.length; q++) {
+ if (str.indexOf(lst[q]) != -1) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /* Location of static web content - images, javascript files. */
+ var jscodebase = (function () {
+ //
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/BUKKIT/nbproject/private/configs/Run_as_WebStart.properties b/BUKKIT/nbproject/private/configs/Run_as_WebStart.properties
new file mode 100644
index 0000000..86ae865
--- /dev/null
+++ b/BUKKIT/nbproject/private/configs/Run_as_WebStart.properties
@@ -0,0 +1,2 @@
+# Do not modify this property in this configuration. It can be re-generated.
+javafx.run.as=webstart
diff --git a/BUKKIT/nbproject/private/configs/Run_in_Browser.properties b/BUKKIT/nbproject/private/configs/Run_in_Browser.properties
new file mode 100644
index 0000000..f4e8549
--- /dev/null
+++ b/BUKKIT/nbproject/private/configs/Run_in_Browser.properties
@@ -0,0 +1,2 @@
+# Do not modify this property in this configuration. It can be re-generated.
+javafx.run.as=embedded
diff --git a/BUKKIT/nbproject/private/private.properties b/BUKKIT/nbproject/private/private.properties
new file mode 100644
index 0000000..428a2ef
--- /dev/null
+++ b/BUKKIT/nbproject/private/private.properties
@@ -0,0 +1,6 @@
+auxiliary.org-netbeans-modules-projectapi.issue214819_5f_fx_5f_enabled=true
+# No need to modify this property unless customizing JavaFX Ant task infrastructure
+endorsed.javafx.ant.classpath=.
+javafx.run.inbrowser=
+javafx.run.inbrowser.path=C:\\Program Files\\Internet Explorer\\iexplore.exe
+user.properties.file=C:\\Users\\niris\\AppData\\Roaming\\NetBeans\\8.2\\build.properties
diff --git a/BUKKIT/nbproject/private/private.xml b/BUKKIT/nbproject/private/private.xml
new file mode 100644
index 0000000..6807a2b
--- /dev/null
+++ b/BUKKIT/nbproject/private/private.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/BUKKIT/nbproject/private/retriever/catalog.xml b/BUKKIT/nbproject/private/retriever/catalog.xml
new file mode 100644
index 0000000..e69de29
diff --git a/BUKKIT/nbproject/project.properties b/BUKKIT/nbproject/project.properties
new file mode 100644
index 0000000..296d0be
--- /dev/null
+++ b/BUKKIT/nbproject/project.properties
@@ -0,0 +1,113 @@
+annotation.processing.enabled=true
+annotation.processing.enabled.in.editor=false
+annotation.processing.processor.options=
+annotation.processing.processors.list=
+annotation.processing.run.all.processors=true
+annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
+application.title=AutofastForward(alpha1)
+application.vendor=niris
+build.classes.dir=${build.dir}/classes
+build.classes.excludes=**/*.java,**/*.form
+# This directory is removed when the project is cleaned:
+build.dir=build
+build.generated.dir=${build.dir}/generated
+build.generated.sources.dir=${build.dir}/generated-sources
+# Only compile against the classpath explicitly listed here:
+build.sysclasspath=ignore
+build.test.classes.dir=${build.dir}/test/classes
+build.test.results.dir=${build.dir}/test/results
+compile.on.save=true
+compile.on.save.unsupported.javafx=true
+# Uncomment to specify the preferred debugger connection transport:
+#debug.transport=dt_socket
+debug.classpath=\
+ ${run.classpath}
+debug.test.classpath=\
+ ${run.test.classpath}
+# This directory is removed when the project is cleaned:
+dist.dir=dist
+dist.jar=${dist.dir}/AutofastForward(alpha1).jar
+dist.javadoc.dir=${dist.dir}/javadoc
+endorsed.classpath=
+excludes=
+includes=**
+# Non-JavaFX jar file creation is deactivated in JavaFX 2.0+ projects
+jar.archive.disabled=true
+jar.compress=false
+javac.classpath=\
+ ${javafx.classpath.extension}
+# Space-separated list of extra javac options
+javac.compilerargs=
+javac.deprecation=false
+javac.processorpath=\
+ ${javac.classpath}
+javac.source=1.8
+javac.target=1.8
+javac.test.classpath=\
+ ${javac.classpath}:\
+ ${build.classes.dir}
+javac.test.processorpath=\
+ ${javac.test.classpath}
+javadoc.additionalparam=
+javadoc.author=false
+javadoc.encoding=${source.encoding}
+javadoc.noindex=false
+javadoc.nonavbar=false
+javadoc.notree=false
+javadoc.private=false
+javadoc.splitindex=true
+javadoc.use=true
+javadoc.version=false
+javadoc.windowtitle=
+javafx.application.implementation.version=1.0
+javafx.binarycss=false
+javafx.classpath.extension=\
+ ${java.home}/lib/javaws.jar:\
+ ${java.home}/lib/deploy.jar:\
+ ${java.home}/lib/plugin.jar
+javafx.deploy.allowoffline=true
+# If true, application update mode is set to 'background', if false, update mode is set to 'eager'
+javafx.deploy.backgroundupdate=false
+javafx.deploy.embedJNLP=true
+javafx.deploy.includeDT=true
+# Set true to prevent creation of temporary copy of deployment artifacts before each run (disables concurrent runs)
+javafx.disable.concurrent.runs=false
+# Set true to enable multiple concurrent runs of the same WebStart or Run-in-Browser project
+javafx.enable.concurrent.external.runs=false
+# This is a JavaFX project
+javafx.enabled=true
+javafx.fallback.class=com.javafx.main.NoJavaFXFallback
+# Main class for JavaFX
+javafx.main.class=autofastforward.alpha1.AutofastForwardAlpha1
+javafx.preloader.class=
+# This project does not use Preloader
+javafx.preloader.enabled=false
+javafx.preloader.jar.filename=
+javafx.preloader.jar.path=
+javafx.preloader.project.path=
+javafx.preloader.type=none
+# Set true for GlassFish only. Rebases manifest classpaths of JARs in lib dir. Not usable with signed JARs.
+javafx.rebase.libs=false
+javafx.run.height=600
+javafx.run.width=800
+# Pre-JavaFX 2.0 WebStart is deactivated in JavaFX 2.0+ projects
+jnlp.enabled=false
+# Main class for Java launcher
+main.class=com.javafx.main.Main
+# For improved security specify narrower Codebase manifest attribute to prevent RIAs from being repurposed
+manifest.custom.codebase=*
+# Specify Permissions manifest attribute to override default (choices: sandbox, all-permissions)
+manifest.custom.permissions=
+manifest.file=manifest.mf
+meta.inf.dir=${src.dir}/META-INF
+platform.active=default_platform
+run.classpath=\
+ ${dist.jar}:\
+ ${javac.classpath}:\
+ ${build.classes.dir}
+run.test.classpath=\
+ ${javac.test.classpath}:\
+ ${build.test.classes.dir}
+source.encoding=UTF-8
+src.dir=src
+test.src.dir=test
diff --git a/BUKKIT/nbproject/project.xml b/BUKKIT/nbproject/project.xml
new file mode 100644
index 0000000..a1bbe8f
--- /dev/null
+++ b/BUKKIT/nbproject/project.xml
@@ -0,0 +1,25 @@
+
+
+ org.netbeans.modules.java.j2seproject
+
+
+
+
+
+
+
+
+
+
+
+
+ AutofastForward(alpha1)
+
+
+
+
+
+
+
+
+
diff --git a/BUKKIT/pom.xml b/BUKKIT/pom.xml
new file mode 100644
index 0000000..3aafec6
--- /dev/null
+++ b/BUKKIT/pom.xml
@@ -0,0 +1,45 @@
+
+
+ 4.0.0
+ elite
+ Autofastforwardbeta
+ 1.0-beta-based-alpha
+ autofastforward
+
+
+ spigot-repo
+ https://hub.spigotmc.org/nexus/content/repositories/snapshots/
+
+
+
+ src
+
+
+ true
+ src
+
+ plugin.yml
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.5.1
+
+ Tutorial
+
+ 1.7
+
+
+
+
+
+
+ org.spigotmc
+ spigot
+ 1.8-R0.1-SNAPSHOT
+
+
+
\ No newline at end of file
diff --git a/BUKKIT/src/autofastforward/theme.png b/BUKKIT/src/autofastforward/theme.png
new file mode 100644
index 0000000..f0e5312
Binary files /dev/null and b/BUKKIT/src/autofastforward/theme.png differ
diff --git a/BUKKIT/src/com/mycompany/autofastforwardbeta/Main.java b/BUKKIT/src/com/mycompany/autofastforwardbeta/Main.java
new file mode 100644
index 0000000..2f47461
--- /dev/null
+++ b/BUKKIT/src/com/mycompany/autofastforwardbeta/Main.java
@@ -0,0 +1,23 @@
+package com.mycompany.autofastforwardbeta;
+
+import org.bukkit.plugin.java.JavaPlugin;
+import dosse.upnp.UPnP;
+
+public class Main extends JavaPlugin {
+
+ @Override
+ public void onEnable(){
+ System.out.println("Forwarding......");
+ UPnP.openPortUDP(getServer().getPort());
+ UPnP.openPortTCP(getServer().getPort());
+ System.out.println("Port " + getServer().getPort() + " forwarded.");
+ }
+
+ @Override
+ public void onDisable(){
+ System.out.println("unforwarding");
+ UPnP.closePortUDP(getServer().getPort());
+ UPnP.closePortTCP(getServer().getPort());
+ System.out.println("Port " + getServer().getPort() + " unforwarded.");
+ }
+}
\ No newline at end of file
diff --git a/BUKKIT/src/dosse/upnp/Gateway.java b/BUKKIT/src/dosse/upnp/Gateway.java
new file mode 100644
index 0000000..d1d08fe
--- /dev/null
+++ b/BUKKIT/src/dosse/upnp/Gateway.java
@@ -0,0 +1,204 @@
+/*
+ * Copyright (C) 2015 Federico Dossena (adolfintel.com).
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+package dosse.upnp;
+
+import java.net.HttpURLConnection;
+import java.net.Inet4Address;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.StringTokenizer;
+import javax.xml.parsers.DocumentBuilderFactory;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.traversal.DocumentTraversal;
+import org.w3c.dom.traversal.NodeFilter;
+import org.w3c.dom.traversal.NodeIterator;
+
+/**
+ *
+ * @author Federico
+ */
+class Gateway {
+
+ private Inet4Address iface;
+
+ private String serviceType = null, controlURL = null;
+
+ public Gateway(byte[] data, Inet4Address ip) throws Exception {
+ iface = ip;
+ String location = null;
+ StringTokenizer st = new StringTokenizer(new String(data), "\n");
+ while (st.hasMoreTokens()) {
+ String s = st.nextToken().trim();
+ if (s.isEmpty() || s.startsWith("HTTP/1.") || s.startsWith("NOTIFY *")) {
+ continue;
+ }
+ String name = s.substring(0, s.indexOf(':')), val = s.length() >= name.length() ? s.substring(name.length() + 1).trim() : null;
+ if (name.equalsIgnoreCase("location")) {
+ location = val;
+ }
+ }
+ if (location == null) {
+ throw new Exception("Unsupported Gateway");
+ }
+ Document d;
+ d = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(location);
+ NodeList services = d.getElementsByTagName("service");
+ for (int i = 0; i < services.getLength(); i++) {
+ Node service = services.item(i);
+ NodeList n = service.getChildNodes();
+ String serviceType = null, controlURL = null;
+ for (int j = 0; j < n.getLength(); j++) {
+ Node x = n.item(j);
+ if (x.getNodeName().trim().equalsIgnoreCase("serviceType")) {
+ serviceType = x.getFirstChild().getNodeValue();
+ } else if (x.getNodeName().trim().equalsIgnoreCase("controlURL")) {
+ controlURL = x.getFirstChild().getNodeValue();
+ }
+ }
+ if (serviceType == null || controlURL == null) {
+ continue;
+ }
+ if (serviceType.trim().toLowerCase().contains(":wanipconnection:") || serviceType.trim().toLowerCase().contains(":wanpppconnection:")) {
+ this.serviceType = serviceType.trim();
+ this.controlURL = controlURL.trim();
+ }
+ }
+ if (controlURL == null) {
+ throw new Exception("Unsupported Gateway");
+ }
+ int slash = location.indexOf("/", 7); //finds first slash after http://
+ if (slash == -1) {
+ throw new Exception("Unsupported Gateway");
+ }
+ location = location.substring(0, slash);
+ if (!controlURL.startsWith("/")) {
+ controlURL = "/" + controlURL;
+ }
+ controlURL = location + controlURL;
+ }
+
+ private Map command(String action, Map params) throws Exception {
+ Map ret = new HashMap();
+ String soap = "\r\n" + ""
+ + ""
+ + "";
+ if (params != null) {
+ for (Map.Entry entry : params.entrySet()) {
+ soap += "<" + entry.getKey() + ">" + entry.getValue() + "" + entry.getKey() + ">";
+ }
+ }
+ soap += "";
+ byte[] req = soap.getBytes();
+ HttpURLConnection conn = (HttpURLConnection) new URL(controlURL).openConnection();
+ conn.setRequestMethod("POST");
+ conn.setDoOutput(true);
+ conn.setRequestProperty("Content-Type", "text/xml");
+ conn.setRequestProperty("SOAPAction", "\"" + serviceType + "#" + action + "\"");
+ conn.setRequestProperty("Connection", "Close");
+ conn.setRequestProperty("Content-Length", "" + req.length);
+ conn.getOutputStream().write(req);
+ Document d = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(conn.getInputStream());
+ NodeIterator iter = ((DocumentTraversal) d).createNodeIterator(d.getDocumentElement(), NodeFilter.SHOW_ELEMENT, null, true);
+ Node n;
+ while ((n = iter.nextNode()) != null) {
+ try {
+ if (n.getFirstChild().getNodeType() == Node.TEXT_NODE) {
+ ret.put(n.getNodeName(), n.getTextContent());
+ }
+ } catch (Throwable t) {
+ }
+ }
+ conn.disconnect();
+ return ret;
+ }
+
+ public String getLocalIP() {
+ return iface.getHostAddress();
+ }
+
+ public String getExternalIP() {
+ try {
+ Map r = command("GetExternalIPAddress", null);
+ return r.get("NewExternalIPAddress");
+ } catch (Throwable t) {
+ return null;
+ }
+ }
+
+ public boolean openPort(int port, boolean udp) {
+ if (port < 0 || port > 65535) {
+ throw new IllegalArgumentException("Invalid port");
+ }
+ Map params = new HashMap();
+ params.put("NewRemoteHost", "");
+ params.put("NewProtocol", udp ? "UDP" : "TCP");
+ params.put("NewInternalClient", iface.getHostAddress());
+ params.put("NewExternalPort", "" + port);
+ params.put("NewInternalPort", "" + port);
+ params.put("NewEnabled", "1");
+ params.put("NewPortMappingDescription", "MC PORTFORWARD BY NEALNYETHEBADGUY");
+ params.put("NewLeaseDuration", "0");
+ try {
+ Map r = command("AddPortMapping", params);
+ return r.get("errorCode") == null;
+ } catch (Exception ex) {
+ return false;
+ }
+ }
+
+ public boolean closePort(int port, boolean udp) {
+ if (port < 0 || port > 65535) {
+ throw new IllegalArgumentException("Invalid port");
+ }
+ Map params = new HashMap();
+ params.put("NewRemoteHost", "");
+ params.put("NewProtocol", udp ? "UDP" : "TCP");
+ params.put("NewExternalPort", "" + port);
+ try {
+ command("DeletePortMapping", params);
+ return true;
+ } catch (Exception ex) {
+ return false;
+ }
+ }
+
+ public boolean isMapped(int port, boolean udp) {
+ if (port < 0 || port > 65535) {
+ throw new IllegalArgumentException("Invalid port");
+ }
+ Map params = new HashMap();
+ params.put("NewRemoteHost", "");
+ params.put("NewProtocol", udp ? "UDP" : "TCP");
+ params.put("NewExternalPort", "" + port);
+ try {
+ Map r = command("GetSpecificPortMappingEntry", params);
+ if (r.get("errorCode") != null) {
+ throw new Exception();
+ }
+ return r.get("NewInternalPort") != null;
+ } catch (Exception ex) {
+ return false;
+ }
+
+ }
+
+}
diff --git a/BUKKIT/src/dosse/upnp/GatewayFinder.java b/BUKKIT/src/dosse/upnp/GatewayFinder.java
new file mode 100644
index 0000000..4493976
--- /dev/null
+++ b/BUKKIT/src/dosse/upnp/GatewayFinder.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2015 Federico Dossena (adolfintel.com).
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+package dosse.upnp;
+
+import java.net.DatagramPacket;
+import java.net.DatagramSocket;
+import java.net.Inet4Address;
+import java.net.InetAddress;
+import java.net.InetSocketAddress;
+import java.net.NetworkInterface;
+import java.net.SocketTimeoutException;
+import java.util.Enumeration;
+import java.util.LinkedList;
+
+/**
+ *
+ * @author Federico
+ */
+abstract class GatewayFinder {
+
+ private static final String[] SEARCH_MESSAGES;
+
+ static {
+ LinkedList m = new LinkedList();
+ for (String type : new String[]{"urn:schemas-upnp-org:device:InternetGatewayDevice:1", "urn:schemas-upnp-org:service:WANIPConnection:1", "urn:schemas-upnp-org:service:WANPPPConnection:1"}) {
+ m.add("M-SEARCH * HTTP/1.1\r\nHOST: 239.255.255.250:1900\r\nST: " + type + "\r\nMAN: \"ssdp:discover\"\r\nMX: 2\r\n\r\n");
+ }
+ SEARCH_MESSAGES = m.toArray(new String[]{});
+ }
+
+ private class GatewayListener extends Thread {
+
+ private Inet4Address ip;
+ private String req;
+
+ public GatewayListener(Inet4Address ip, String req) {
+ setName("WaifUPnP - Gateway Listener");
+ this.ip = ip;
+ this.req = req;
+ }
+
+ @Override
+ public void run() {
+ try {
+ byte[] req = this.req.getBytes();
+ DatagramSocket s = new DatagramSocket(new InetSocketAddress(ip, 0));
+ s.send(new DatagramPacket(req, req.length, new InetSocketAddress("239.255.255.250", 1900)));
+ s.setSoTimeout(3000);
+ for (;;) {
+ try {
+ DatagramPacket recv = new DatagramPacket(new byte[1536], 1536);
+ s.receive(recv);
+ Gateway gw = new Gateway(recv.getData(), ip);
+ gatewayFound(gw);
+ } catch (SocketTimeoutException t) {
+ break;
+ } catch (Throwable t) {
+ }
+ }
+ } catch (Throwable t) {
+ }
+ }
+ }
+
+ private LinkedList listeners = new LinkedList();
+
+ public GatewayFinder() {
+ for (Inet4Address ip : getLocalIPs()) {
+ for (String req : SEARCH_MESSAGES) {
+ GatewayListener l = new GatewayListener(ip, req);
+ l.start();
+ listeners.add(l);
+ }
+ }
+ }
+
+ public boolean isSearching() {
+ for (GatewayListener l : listeners) {
+ if (l.isAlive()) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public abstract void gatewayFound(Gateway g);
+
+ private static Inet4Address[] getLocalIPs() {
+ LinkedList ret = new LinkedList();
+ try {
+ Enumeration ifaces = NetworkInterface.getNetworkInterfaces();
+ while (ifaces.hasMoreElements()) {
+ try {
+ NetworkInterface iface = ifaces.nextElement();
+ if (!iface.isUp() || iface.isLoopback() || iface.isVirtual() || iface.isPointToPoint()) {
+ continue;
+ }
+ Enumeration addrs = iface.getInetAddresses();
+ if (addrs == null) {
+ continue;
+ }
+ while (addrs.hasMoreElements()) {
+ InetAddress addr = addrs.nextElement();
+ if (addr instanceof Inet4Address) {
+ ret.add((Inet4Address) addr);
+ }
+ }
+ } catch (Throwable t) {
+ }
+ }
+ } catch (Throwable t) {
+ }
+ return ret.toArray(new Inet4Address[]{});
+ }
+
+}
diff --git a/BUKKIT/src/dosse/upnp/UPnP.java b/BUKKIT/src/dosse/upnp/UPnP.java
new file mode 100644
index 0000000..b2278a6
--- /dev/null
+++ b/BUKKIT/src/dosse/upnp/UPnP.java
@@ -0,0 +1,154 @@
+/*
+ * Copyright (C) 2015 Federico Dossena (adolfintel.com).
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+package dosse.upnp;
+
+/**
+ * This class contains static methods that allow quick access to UPnP Port Mapping.
+ * Commands will be sent to the default gateway.
+ *
+ * @author Federico
+ */
+public class UPnP {
+
+ private static Gateway defaultGW = null;
+ private static final GatewayFinder finder = new GatewayFinder() {
+ @Override
+ public void gatewayFound(Gateway g) {
+ synchronized (finder) {
+ if (defaultGW == null) {
+ defaultGW = g;
+ }
+ }
+ }
+ };
+
+ /**
+ * Waits for UPnP to be initialized (takes ~3 seconds).
+ * It is not necessary to call this method manually before using UPnP functions
+ */
+ public static void waitInit() {
+ while (finder.isSearching()) {
+ try {
+ Thread.sleep(1);
+ } catch (InterruptedException ex) {
+ }
+ }
+ }
+
+ /**
+ * Is there an UPnP gateway?
+ * This method is blocking if UPnP is still initializing
+ * All UPnP commands will fail if UPnP is not available
+ *
+ * @return true if available, false if not
+ */
+ public static boolean isUPnPAvailable(){
+ waitInit();
+ return defaultGW!=null;
+ }
+
+ /**
+ * Opens a TCP port on the gateway
+ *
+ * @param port TCP port (0-65535)
+ * @return true if the operation was successful, false otherwise
+ */
+ public static boolean openPortTCP(int port) {
+ if(!isUPnPAvailable()) return false;
+ return defaultGW.openPort(port, false);
+ }
+
+ /**
+ * Opens a UDP port on the gateway
+ *
+ * @param port UDP port (0-65535)
+ * @return true if the operation was successful, false otherwise
+ */
+ public static boolean openPortUDP(int port) {
+ if(!isUPnPAvailable()) return false;
+ return defaultGW.openPort(port, true);
+ }
+
+ /**
+ * Closes a TCP port on the gateway
+ * Most gateways seem to refuse to do this
+ *
+ * @param port TCP port (0-65535)
+ * @return true if the operation was successful, false otherwise
+ */
+ public static boolean closePortTCP(int port) {
+ if(!isUPnPAvailable()) return false;
+ return defaultGW.closePort(port, false);
+ }
+
+ /**
+ * Closes a UDP port on the gateway
+ * Most gateways seem to refuse to do this
+ *
+ * @param port UDP port (0-65535)
+ * @return true if the operation was successful, false otherwise
+ */
+ public static boolean closePortUDP(int port) {
+ if(!isUPnPAvailable()) return false;
+ return defaultGW.closePort(port, true);
+ }
+
+ /**
+ * Checks if a TCP port is mapped
+ *
+ * @param port TCP port (0-65535)
+ * @return true if the port is mapped, false otherwise
+ */
+ public static boolean isMappedTCP(int port) {
+ if(!isUPnPAvailable()) return false;
+ return defaultGW.isMapped(port, false);
+ }
+
+ /**
+ * Checks if a UDP port is mapped
+ *
+ * @param port UDP port (0-65535)
+ * @return true if the port is mapped, false otherwise
+ */
+ public static boolean isMappedUDP(int port) {
+ if(!isUPnPAvailable()) return false;
+ return defaultGW.isMapped(port, false);
+ }
+
+ /**
+ * Gets the external IP address of the default gateway
+ *
+ * @return external IP address as string, or null if not available
+ */
+ public static String getExternalIP(){
+ if(!isUPnPAvailable()) return null;
+ return defaultGW.getExternalIP();
+ }
+
+ /**
+ * Gets the internal IP address of this machine
+ *
+ * @return internal IP address as string, or null if not available
+ */
+ public static String getLocalIP(){
+ if(!isUPnPAvailable()) return null;
+ return defaultGW.getLocalIP();
+ }
+
+}
diff --git a/BUKKIT/src/main/java/plugin.yml b/BUKKIT/src/main/java/plugin.yml
new file mode 100644
index 0000000..af58c66
--- /dev/null
+++ b/BUKKIT/src/main/java/plugin.yml
@@ -0,0 +1,4 @@
+name: autofastforward
+main: com.mycompany.autofastforwardbeta.Main
+version: 0.2.1
+description: A plugin to automatically port forward
diff --git a/BUKKIT/target/Autofastforwardbeta-1.0-beta-based-alpha.jar b/BUKKIT/target/Autofastforwardbeta-1.0-beta-based-alpha.jar
new file mode 100644
index 0000000..fcf215a
Binary files /dev/null and b/BUKKIT/target/Autofastforwardbeta-1.0-beta-based-alpha.jar differ
diff --git a/BUKKIT/target/classes/.netbeans_automatic_build b/BUKKIT/target/classes/.netbeans_automatic_build
new file mode 100644
index 0000000..e69de29
diff --git a/BUKKIT/target/classes/com/mycompany/autofastforwardbeta/Main.class b/BUKKIT/target/classes/com/mycompany/autofastforwardbeta/Main.class
new file mode 100644
index 0000000..b8206f4
Binary files /dev/null and b/BUKKIT/target/classes/com/mycompany/autofastforwardbeta/Main.class differ
diff --git a/BUKKIT/target/classes/dosse/upnp/Gateway.class b/BUKKIT/target/classes/dosse/upnp/Gateway.class
new file mode 100644
index 0000000..3753283
Binary files /dev/null and b/BUKKIT/target/classes/dosse/upnp/Gateway.class differ
diff --git a/BUKKIT/target/classes/dosse/upnp/GatewayFinder$GatewayListener.class b/BUKKIT/target/classes/dosse/upnp/GatewayFinder$GatewayListener.class
new file mode 100644
index 0000000..5b2111a
Binary files /dev/null and b/BUKKIT/target/classes/dosse/upnp/GatewayFinder$GatewayListener.class differ
diff --git a/BUKKIT/target/classes/dosse/upnp/GatewayFinder.class b/BUKKIT/target/classes/dosse/upnp/GatewayFinder.class
new file mode 100644
index 0000000..c2ee8ef
Binary files /dev/null and b/BUKKIT/target/classes/dosse/upnp/GatewayFinder.class differ
diff --git a/BUKKIT/target/classes/dosse/upnp/UPnP$1.class b/BUKKIT/target/classes/dosse/upnp/UPnP$1.class
new file mode 100644
index 0000000..a5a9790
Binary files /dev/null and b/BUKKIT/target/classes/dosse/upnp/UPnP$1.class differ
diff --git a/BUKKIT/target/classes/dosse/upnp/UPnP.class b/BUKKIT/target/classes/dosse/upnp/UPnP.class
new file mode 100644
index 0000000..9a562eb
Binary files /dev/null and b/BUKKIT/target/classes/dosse/upnp/UPnP.class differ
diff --git a/BUKKIT/target/maven-archiver/pom.properties b/BUKKIT/target/maven-archiver/pom.properties
new file mode 100644
index 0000000..7fd4022
--- /dev/null
+++ b/BUKKIT/target/maven-archiver/pom.properties
@@ -0,0 +1,5 @@
+#Generated by Maven
+#Sun Nov 17 16:20:24 EST 2019
+version=1.0-beta-based-alpha
+groupId=elite
+artifactId=Autofastforwardbeta
diff --git a/BUKKIT/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/BUKKIT/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 0000000..2a6d652
--- /dev/null
+++ b/BUKKIT/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,6 @@
+dosse\upnp\Gateway.class
+dosse\upnp\GatewayFinder.class
+dosse\upnp\UPnP.class
+dosse\upnp\UPnP$1.class
+com\mycompany\autofastforwardbeta\Main.class
+dosse\upnp\GatewayFinder$GatewayListener.class
diff --git a/BUKKIT/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/BUKKIT/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 0000000..fa8df70
--- /dev/null
+++ b/BUKKIT/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,4 @@
+C:\Users\niris\OneDrive\Documents\NetBeansProjects\Autofastforwardbeta\src\dosse\upnp\UPnP.java
+C:\Users\niris\OneDrive\Documents\NetBeansProjects\Autofastforwardbeta\src\dosse\upnp\Gateway.java
+C:\Users\niris\OneDrive\Documents\NetBeansProjects\Autofastforwardbeta\src\dosse\upnp\GatewayFinder.java
+C:\Users\niris\OneDrive\Documents\NetBeansProjects\Autofastforwardbeta\src\com\mycompany\autofastforwardbeta\Main.java
diff --git a/BUKKIT/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/BUKKIT/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
new file mode 100644
index 0000000..e69de29
diff --git a/BUKKIT/target/test-classes/.netbeans_automatic_build b/BUKKIT/target/test-classes/.netbeans_automatic_build
new file mode 100644
index 0000000..e69de29