diff --git a/Extensions/BlockReplacePackets/pom.xml b/Extensions/BlockReplacePackets/pom.xml deleted file mode 100644 index 9a1a6fc..0000000 --- a/Extensions/BlockReplacePackets/pom.xml +++ /dev/null @@ -1,113 +0,0 @@ - - - 4.0.0 - - BlockReplacePackets - - jar - - 0.0.1-beta - - - G-Earth - G-Earth-Parent - 1.3.4 - ../../ - - - - - - - false - src/main/java - - **/*.fxml - **/*.css - - - - - - - org.apache.maven.plugins - maven-jar-plugin - 2.5 - - ${project.build.directory}/bin - - - true - true - extensions.blockreplacepackets.BlockAndReplacePackets - false - lib/ - true - - - ${project.artifactId} - - - - - maven-assembly-plugin - 2.5 - - - package - - single - - - - - ${project.build.directory}/bin - - - extensions.blockreplacepackets.BlockAndReplacePackets - - - - jar-with-dependencies - - ${project.artifactId} - false - - - - - - maven-antrun-plugin - 3.0.0 - - - package - - - - - - - - - - run - - - - - - - - - - - G-Earth - G-Earth - 1.3.4 - - - - \ No newline at end of file diff --git a/G-Earth/src/main/java/gearth/extensions/Extension.java b/G-Earth/src/main/java/gearth/extensions/Extension.java index 2f40d1c..bd00f8d 100644 --- a/G-Earth/src/main/java/gearth/extensions/Extension.java +++ b/G-Earth/src/main/java/gearth/extensions/Extension.java @@ -1,5 +1,9 @@ package gearth.extensions; +import gearth.extensions.ExtensionBase; +import gearth.extensions.ExtensionInfo; +import gearth.extensions.IExtension; +import gearth.extensions.OnConnectionListener; import gearth.misc.listenerpattern.Observable; import gearth.misc.packet_info.PacketInfoManager; import gearth.protocol.HMessage; @@ -18,17 +22,9 @@ import java.util.Map; /** * Created by Jonas on 23/06/18. */ -public abstract class Extension implements IExtension { +public abstract class Extension extends ExtensionBase { - public interface MessageListener { - void act(HMessage message); - } - public interface FlagsCheckListener { - void act(String[] args); - } - - protected boolean canLeave; // can you disconnect the ext - protected boolean canDelete; // can you delete the ext (will be false for some built-in extensions) + protected FlagsCheckListener flagRequestCallback = null; private String[] args; private boolean isCorrupted = false; @@ -39,9 +35,6 @@ public abstract class Extension implements IExtension { protected PacketInfoManager packetInfoManager = new PacketInfoManager(new ArrayList<>()); // empty private OutputStream out = null; - private final Map> incomingMessageListeners = new HashMap<>(); - private final Map> outgoingMessageListeners = new HashMap<>(); - private FlagsCheckListener flagRequestCallback = null; private String getArgument(String[] args, String... arg) { for (int i = 0; i < args.length - 1; i++) { @@ -59,8 +52,7 @@ public abstract class Extension implements IExtension { * @param args arguments */ public Extension(String[] args) { - canLeave = canLeave(); - canDelete = canDelete(); + super(); //obtain port this.args = args; @@ -136,8 +128,8 @@ public abstract class Extension implements IExtension { .appendBoolean(file != null) .appendString(file == null ? "": file) .appendString(cookie == null ? "" : cookie) - .appendBoolean(canLeave) - .appendBoolean(canDelete); + .appendBoolean(canLeave()) + .appendBoolean(canDelete()); writeToStream(response.toBytes()); } else if (packet.headerId() == NetworkExtensionInfo.OUTGOING_MESSAGES_IDS.CONNECTIONSTART) { @@ -149,7 +141,7 @@ public abstract class Extension implements IExtension { packetInfoManager = PacketInfoManager.readFromPacket(packet); Constants.UNITY_PACKETS = clientType == HClient.UNITY; - onConnectionObservable.fireEvent(l -> l.onConnection( + getOnConnectionObservable().fireEvent(l -> l.onConnection( host, connectionPort, hotelVersion, clientIdentifier, clientType, packetInfoManager) ); @@ -180,36 +172,8 @@ public abstract class Extension implements IExtension { else if (packet.headerId() == NetworkExtensionInfo.OUTGOING_MESSAGES_IDS.PACKETINTERCEPT) { String stringifiedMessage = packet.readLongString(); HMessage habboMessage = new HMessage(stringifiedMessage); - HPacket habboPacket = habboMessage.getPacket(); - Map> listeners = - habboMessage.getDestination() == HMessage.Direction.TOCLIENT ? - incomingMessageListeners : - outgoingMessageListeners; - - List correctListeners = new ArrayList<>(); - - synchronized (incomingMessageListeners) { - synchronized (outgoingMessageListeners) { - if (listeners.containsKey(-1)) { // registered on all packets - for (int i = listeners.get(-1).size() - 1; i >= 0; i--) { - correctListeners.add(listeners.get(-1).get(i)); - } - } - - if (listeners.containsKey(habboPacket.headerId())) { - for (int i = listeners.get(habboPacket.headerId()).size() - 1; i >= 0; i--) { - correctListeners.add(listeners.get(habboPacket.headerId()).get(i)); - } - } - } - } - - for(MessageListener listener : correctListeners) { - habboMessage.getPacket().resetReadIndex(); - listener.act(habboMessage); - } - habboMessage.getPacket().resetReadIndex(); + modifyMessage(habboMessage); HPacket response = new HPacket(NetworkExtensionInfo.INCOMING_MESSAGES_IDS.MANIPULATEDPACKET); response.appendLongString(habboMessage.stringify()); @@ -275,37 +239,6 @@ public abstract class Extension implements IExtension { } } - /** - * Register a listener on a specific packet Type - * @param direction ToClient or ToServer - * @param headerId the packet header ID - * @param messageListener the callback - */ - public void intercept(HMessage.Direction direction, int headerId, MessageListener messageListener) { - Map> listeners = - direction == HMessage.Direction.TOCLIENT ? - incomingMessageListeners : - outgoingMessageListeners; - - synchronized (listeners) { - if (!listeners.containsKey(headerId)) { - listeners.put(headerId, new ArrayList<>()); - } - } - - - listeners.get(headerId).add(messageListener); - } - - /** - * Register a listener on all packets - * @param direction ToClient or ToServer - * @param messageListener the callback - */ - public void intercept(HMessage.Direction direction, MessageListener messageListener) { - intercept(direction, -1, messageListener); - } - /** * Requests the flags which have been given to G-Earth when it got executed * For example, you might want this extension to do a specific thing if the flag "-e" was given @@ -324,15 +257,6 @@ public abstract class Extension implements IExtension { } } - - /** - * Write to the console in G-Earth - * @param s the text to be written - */ - public void writeToConsole(String s) { - writeToConsole("black", s, true); - } - /** * Write to the console in G-Earth * @param s the text to be written @@ -360,37 +284,12 @@ public abstract class Extension implements IExtension { } } - - private boolean isOnClickMethodUsed() { - - Class c = getClass(); - - while (c != Extension.class) { - try { - c.getDeclaredMethod("onClick"); - // if it didnt error, onClick exists - return true; - } catch (NoSuchMethodException e) { -// e.printStackTrace(); - } - - c = (Class) c.getSuperclass(); - } - - return false; - } - /** * Gets called when a connection has been established with G-Earth. * This does not imply a connection with Habbo is setup. */ protected void initExtension(){} - /** - * The application got doubleclicked from the G-Earth interface. Doing something here is optional - */ - protected void onClick(){} - /** * A connection with Habbo has been started */ @@ -409,14 +308,4 @@ public abstract class Extension implements IExtension { return true; } - ExtensionInfo getInfoAnnotations() { - return getClass().getAnnotation(ExtensionInfo.class); - } - - - private Observable onConnectionObservable = new Observable<>(); - public void onConnect(OnConnectionListener listener){ - onConnectionObservable.addListener(listener); - } - } diff --git a/G-Earth/src/main/java/gearth/extensions/ExtensionBase.java b/G-Earth/src/main/java/gearth/extensions/ExtensionBase.java new file mode 100644 index 0000000..060b835 --- /dev/null +++ b/G-Earth/src/main/java/gearth/extensions/ExtensionBase.java @@ -0,0 +1,130 @@ +package gearth.extensions; + +import gearth.misc.listenerpattern.Observable; +import gearth.protocol.HMessage; +import gearth.protocol.HPacket; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public abstract class ExtensionBase extends IExtension { + + public interface MessageListener { + void act(HMessage message); + } + public interface FlagsCheckListener { + void act(String[] args); + } + + protected final Map> incomingMessageListeners = new HashMap<>(); + protected final Map> outgoingMessageListeners = new HashMap<>(); + + /** + * Register a listener on a specific packet Type + * @param direction ToClient or ToServer + * @param headerId the packet header ID + * @param messageListener the callback + */ + public void intercept(HMessage.Direction direction, int headerId, MessageListener messageListener) { + Map> listeners = + direction == HMessage.Direction.TOCLIENT ? + incomingMessageListeners : + outgoingMessageListeners; + + synchronized (listeners) { + if (!listeners.containsKey(headerId)) { + listeners.put(headerId, new ArrayList<>()); + } + } + + + listeners.get(headerId).add(messageListener); + } + + /** + * Register a listener on all packets + * @param direction ToClient or ToServer + * @param messageListener the callback + */ + public void intercept(HMessage.Direction direction, MessageListener messageListener) { + intercept(direction, -1, messageListener); + } + + @Override + public void writeToConsole(String s) { + writeToConsole("black", s); + } + + protected boolean isOnClickMethodUsed() { + Class c = getClass(); + while (c != Extension.class) { + try { + c.getDeclaredMethod("onClick"); + // if it didnt error, onClick exists + return true; + } catch (NoSuchMethodException e) { +// e.printStackTrace(); + } + + c = (Class) c.getSuperclass(); + } + return false; + } + + public void modifyMessage(HMessage habboMessage) { + HPacket habboPacket = habboMessage.getPacket(); + + Map> listeners = + habboMessage.getDestination() == HMessage.Direction.TOCLIENT ? + incomingMessageListeners : + outgoingMessageListeners; + + List correctListeners = new ArrayList<>(); + + synchronized (incomingMessageListeners) { + synchronized (outgoingMessageListeners) { + if (listeners.containsKey(-1)) { // registered on all packets + for (int i = listeners.get(-1).size() - 1; i >= 0; i--) { + correctListeners.add(listeners.get(-1).get(i)); + } + } + + if (listeners.containsKey(habboPacket.headerId())) { + for (int i = listeners.get(habboPacket.headerId()).size() - 1; i >= 0; i--) { + correctListeners.add(listeners.get(habboPacket.headerId()).get(i)); + } + } + } + } + + for(MessageListener listener : correctListeners) { + habboMessage.getPacket().resetReadIndex(); + listener.act(habboMessage); + } + habboMessage.getPacket().resetReadIndex(); + } + + /** + * The application got doubleclicked from the G-Earth interface. Doing something here is optional + */ + @Override + void onClick() { + + } + + @Override + protected ExtensionInfo getInfoAnnotations() { + return getClass().getAnnotation(ExtensionInfo.class); + } + + private Observable onConnectionObservable = new Observable<>(); + public void onConnect(OnConnectionListener listener){ + onConnectionObservable.addListener(listener); + } + + Observable getOnConnectionObservable() { + return onConnectionObservable; + } +} diff --git a/G-Earth/src/main/java/gearth/extensions/ExtensionForm.java b/G-Earth/src/main/java/gearth/extensions/ExtensionForm.java index 145733c..5310cd0 100644 --- a/G-Earth/src/main/java/gearth/extensions/ExtensionForm.java +++ b/G-Earth/src/main/java/gearth/extensions/ExtensionForm.java @@ -8,9 +8,9 @@ import gearth.protocol.HPacket; /** * Created by Jonas on 22/09/18. */ -public abstract class ExtensionForm implements IExtension { +public abstract class ExtensionForm extends ExtensionBase { - volatile Extension extension; + volatile ExtensionBase extension; protected volatile Stage primaryStage; protected static void runExtensionForm(String[] args, Class extension) { @@ -59,7 +59,7 @@ public abstract class ExtensionForm implements IExtension { /** * The application got doubleclicked from the G-Earth interface. Doing something here is optional */ - protected void onClick(){ + public void onClick(){ Platform.runLater(() -> { primaryStage.show(); primaryStage.requestFocus(); diff --git a/G-Earth/src/main/java/gearth/extensions/ExtensionFormLauncher.java b/G-Earth/src/main/java/gearth/extensions/ExtensionFormLauncher.java index 0eec47b..920f02a 100644 --- a/G-Earth/src/main/java/gearth/extensions/ExtensionFormLauncher.java +++ b/G-Earth/src/main/java/gearth/extensions/ExtensionFormLauncher.java @@ -5,7 +5,7 @@ import javafx.application.Platform; import javafx.stage.Stage; /** - * Created by Jeunez on 6/11/2018. + * Created by Jonas on 6/11/2018. */ public class ExtensionFormLauncher extends Application { @@ -19,7 +19,7 @@ public class ExtensionFormLauncher extends Application { ExtensionForm creator = extension.newInstance(); ExtensionForm extensionForm = creator.launchForm(primaryStage); - extensionForm.extension = new Extension(args) { + Extension extension = new Extension(args) { @Override protected void initExtension() { extensionForm.initExtension(); @@ -41,7 +41,7 @@ public class ExtensionFormLauncher extends Application { } @Override - ExtensionInfo getInfoAnnotations() { + protected ExtensionInfo getInfoAnnotations() { return extInfo; } @@ -55,9 +55,11 @@ public class ExtensionFormLauncher extends Application { return extensionForm.canDelete(); } }; + extensionForm.extension = extension; + extensionForm.primaryStage = primaryStage; Thread t = new Thread(() -> { - extensionForm.extension.run(); + extension.run(); //when the extension has ended, close this process System.exit(0); }); diff --git a/G-Earth/src/main/java/gearth/extensions/IExtension.java b/G-Earth/src/main/java/gearth/extensions/IExtension.java index 8040bce..3b8ae89 100644 --- a/G-Earth/src/main/java/gearth/extensions/IExtension.java +++ b/G-Earth/src/main/java/gearth/extensions/IExtension.java @@ -3,15 +3,22 @@ package gearth.extensions; import gearth.protocol.HMessage; import gearth.protocol.HPacket; -public interface IExtension { +public abstract class IExtension { - boolean sendToClient(HPacket packet); - boolean sendToServer(HPacket packet); - void intercept(HMessage.Direction direction, int headerId, Extension.MessageListener messageListener); - void intercept(HMessage.Direction direction, Extension.MessageListener messageListener); - boolean requestFlags(Extension.FlagsCheckListener flagRequestCallback); - void writeToConsole(String colorClass, String s); - void writeToConsole(String s); - void onConnect(OnConnectionListener listener); + public abstract boolean sendToClient(HPacket packet); + public abstract boolean sendToServer(HPacket packet); + public abstract void intercept(HMessage.Direction direction, int headerId, Extension.MessageListener messageListener); + public abstract void intercept(HMessage.Direction direction, Extension.MessageListener messageListener); + public abstract boolean requestFlags(Extension.FlagsCheckListener flagRequestCallback); + public abstract void writeToConsole(String colorClass, String s); + public abstract void writeToConsole(String s); + public abstract void onConnect(OnConnectionListener listener); + abstract void initExtension(); + abstract void onClick(); + abstract void onStartConnection(); + abstract void onEndConnection(); + abstract ExtensionInfo getInfoAnnotations(); + abstract boolean canLeave(); + abstract boolean canDelete(); } diff --git a/G-Earth/src/main/java/gearth/extensions/InternalExtension.java b/G-Earth/src/main/java/gearth/extensions/InternalExtension.java new file mode 100644 index 0000000..5f870d2 --- /dev/null +++ b/G-Earth/src/main/java/gearth/extensions/InternalExtension.java @@ -0,0 +1,68 @@ +package gearth.extensions; + +import gearth.Main; +import gearth.extensions.ExtensionBase; +import gearth.extensions.IExtension; +import gearth.protocol.HPacket; + + +public class InternalExtension extends ExtensionBase { + + public interface InternalExtensionCommunicator { + void sendToClient(HPacket packet); + void sendToServer(HPacket packet); + void writeToConsole(String s); + } + + private InternalExtensionCommunicator communicator = null; + + public void setCommunicator(InternalExtensionCommunicator communicator) { + this.communicator = communicator; + } + + @Override + public boolean sendToClient(HPacket packet) { + communicator.sendToClient(packet); + return true; + } + + @Override + public boolean sendToServer(HPacket packet) { + communicator.sendToServer(packet); + return true; + } + + @Override + public boolean requestFlags(FlagsCheckListener flagRequestCallback) { + flagRequestCallback.act(Main.args); + return true; + } + + @Override + public void writeToConsole(String colorClass, String s) { + String text = "[" + colorClass + "]" + getInfoAnnotations().Title() + " --> " + s; + communicator.writeToConsole(text); + } + + // to be maybe overwritten + @Override + protected void initExtension() { } + + // to be maybe overwritten + @Override + protected void onStartConnection() {} + + // to be maybe overwritten + @Override + protected void onEndConnection() {} + + @Override + protected boolean canLeave() { + return false; + } + + @Override + protected boolean canDelete() { + return false; + } +} diff --git a/G-Earth/src/main/java/gearth/extensions/InternalExtensionBuilder.java b/G-Earth/src/main/java/gearth/extensions/InternalExtensionBuilder.java new file mode 100644 index 0000000..e1631b7 --- /dev/null +++ b/G-Earth/src/main/java/gearth/extensions/InternalExtensionBuilder.java @@ -0,0 +1,139 @@ +package gearth.extensions; + + +import gearth.misc.packet_info.PacketInfoManager; +import gearth.protocol.HMessage; +import gearth.protocol.HPacket; +import gearth.protocol.connection.HClient; +import gearth.services.extensionhandler.extensions.GEarthExtension; + +// wraps internal GEarthExtension class to IExtension interface +// to allow internal extensions that follow the same remote-extensions interface +public class InternalExtensionBuilder extends GEarthExtension { + + private final InternalExtension extension; + + public InternalExtensionBuilder(InternalExtension extension) { + this.extension = extension; + extension.setCommunicator(new InternalExtension.InternalExtensionCommunicator() { + @Override + public void sendToClient(HPacket packet) { + sendMessage(HMessage.Direction.TOCLIENT, packet); + } + + @Override + public void sendToServer(HPacket packet) { + sendMessage(HMessage.Direction.TOSERVER, packet); + } + + @Override + public void writeToConsole(String s) { + log(s); + } + }); + } + + @Override + public String getAuthor() { + return extension.getInfoAnnotations().Author(); + } + + @Override + public String getDescription() { + return extension.getInfoAnnotations().Description(); + } + + @Override + public String getTitle() { + return extension.getInfoAnnotations().Title(); + } + + @Override + public String getVersion() { + return extension.getInfoAnnotations().Version(); + } + + @Override + public boolean isFireButtonUsed() { + Class c = extension.getClass(); + + while (c != InternalExtension.class) { + try { + c.getDeclaredMethod("onClick"); + return true; + } catch (NoSuchMethodException e) { +// e.printStackTrace(); + } + + c = (Class) c.getSuperclass(); + } + + return false; + } + + @Override + public boolean isDeleteButtonVisible() { + return extension.canDelete(); + } + + @Override + public boolean isLeaveButtonVisible() { + return extension.canLeave(); + } + + @Override + public boolean isInstalledExtension() { + return false; + } + + @Override + public void doubleclick() { + extension.onClick(); + } + + @Override + public void packetIntercept(HMessage hMessage) { + extension.modifyMessage(hMessage); + sendManipulatedPacket(hMessage); + } + + @Override + public void provideFlags(String[] flags) { + // no need + } + + @Override + public void connectionStart(String host, int port, String hotelVersion, String clientIdentifier, HClient clientType, PacketInfoManager packetInfoManager) { + extension.getOnConnectionObservable().fireEvent(l -> l.onConnection( + host, port, hotelVersion, + clientIdentifier, clientType, packetInfoManager) + ); + extension.onStartConnection(); + } + + @Override + public void connectionEnd() { + extension.onEndConnection(); + } + + @Override + public void init() { + extension.initExtension(); + } + + @Override + public void close() { + // no need in internal ext + } + + @Override + public void packetToStringResponse(String string, String expression) { + // no need in java ext + } + + @Override + public void stringToPacketResponse(HPacket packet) { + // no need in java ext + } + +} diff --git a/G-Earth/src/main/java/gearth/extensions/InternalExtensionFormBuilder.java b/G-Earth/src/main/java/gearth/extensions/InternalExtensionFormBuilder.java new file mode 100644 index 0000000..c1cfc03 --- /dev/null +++ b/G-Earth/src/main/java/gearth/extensions/InternalExtensionFormBuilder.java @@ -0,0 +1,74 @@ +package gearth.extensions; + +import gearth.services.extensionhandler.extensions.GEarthExtension; +import gearth.services.extensionhandler.extensions.extensionproducers.ExtensionProducerObserver; +import javafx.application.Platform; +import javafx.stage.Stage; + +public class InternalExtensionFormBuilder { + + public static void launch(Class extension, ExtensionProducerObserver observer) { + try { + ExtensionInfo extInfo = extension.getAnnotation(ExtensionInfo.class); + ExtensionForm creator = extension.newInstance(); + + Stage stage = new Stage(); + ExtensionForm extensionForm = creator.launchForm(stage); + + InternalExtension internalExtension = new InternalExtension() { + @Override + protected void initExtension() { + extensionForm.initExtension(); + } + + @Override + protected void onClick() { + extensionForm.onClick(); + } + + @Override + protected void onStartConnection() { + extensionForm.onStartConnection(); + } + + @Override + protected void onEndConnection() { + extensionForm.onEndConnection(); + } + + @Override + protected ExtensionInfo getInfoAnnotations() { + return extInfo; + } + + @Override + protected boolean canLeave() { + return extensionForm.canLeave(); + } + + @Override + protected boolean canDelete() { + return extensionForm.canDelete(); + } + }; + extensionForm.extension = internalExtension; + extensionForm.primaryStage = stage; + + GEarthExtension gEarthExtension = new InternalExtensionBuilder(internalExtension); + observer.onExtensionProduced(gEarthExtension); + + + Platform.setImplicitExit(false); + + stage.setOnCloseRequest(event -> { + event.consume(); + Platform.runLater(() -> { + stage.hide(); + extensionForm.onHide(); + }); + }); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/G-Earth/src/main/java/gearth/extensions/extra/harble/ChatConsole.java b/G-Earth/src/main/java/gearth/extensions/extra/tools/ChatConsole.java similarity index 95% rename from G-Earth/src/main/java/gearth/extensions/extra/harble/ChatConsole.java rename to G-Earth/src/main/java/gearth/extensions/extra/tools/ChatConsole.java index 5411670..cde0c8c 100644 --- a/G-Earth/src/main/java/gearth/extensions/extra/harble/ChatConsole.java +++ b/G-Earth/src/main/java/gearth/extensions/extra/tools/ChatConsole.java @@ -1,13 +1,10 @@ -package gearth.extensions.extra.harble; +package gearth.extensions.extra.tools; import gearth.extensions.ExtensionInfo; import gearth.extensions.IExtension; -import gearth.extensions.OnConnectionListener; import gearth.misc.listenerpattern.Observable; -import gearth.misc.packet_info.PacketInfoManager; import gearth.protocol.HMessage; import gearth.protocol.HPacket; -import gearth.protocol.connection.HClient; /** * Created by Jonas on 3/12/2018. diff --git a/G-Earth/src/main/java/gearth/extensions/extra/harble/ChatInputListener.java b/G-Earth/src/main/java/gearth/extensions/extra/tools/ChatInputListener.java similarity index 65% rename from G-Earth/src/main/java/gearth/extensions/extra/harble/ChatInputListener.java rename to G-Earth/src/main/java/gearth/extensions/extra/tools/ChatInputListener.java index a9a933a..4e097a8 100644 --- a/G-Earth/src/main/java/gearth/extensions/extra/harble/ChatInputListener.java +++ b/G-Earth/src/main/java/gearth/extensions/extra/tools/ChatInputListener.java @@ -1,4 +1,4 @@ -package gearth.extensions.extra.harble; +package gearth.extensions.extra.tools; public interface ChatInputListener { void inputEntered(String input); diff --git a/G-Earth/src/main/java/gearth/extensions/extra/harble/PacketInfoSupport.java b/G-Earth/src/main/java/gearth/extensions/extra/tools/PacketInfoSupport.java similarity index 97% rename from G-Earth/src/main/java/gearth/extensions/extra/harble/PacketInfoSupport.java rename to G-Earth/src/main/java/gearth/extensions/extra/tools/PacketInfoSupport.java index 217893e..e0dedee 100644 --- a/G-Earth/src/main/java/gearth/extensions/extra/harble/PacketInfoSupport.java +++ b/G-Earth/src/main/java/gearth/extensions/extra/tools/PacketInfoSupport.java @@ -1,13 +1,11 @@ -package gearth.extensions.extra.harble; +package gearth.extensions.extra.tools; import gearth.extensions.Extension; import gearth.extensions.IExtension; -import gearth.extensions.OnConnectionListener; import gearth.misc.packet_info.PacketInfo; import gearth.misc.packet_info.PacketInfoManager; import gearth.protocol.HMessage; import gearth.protocol.HPacket; -import gearth.protocol.connection.HClient; import java.security.InvalidParameterException; import java.util.*; diff --git a/G-Earth/src/main/java/gearth/protocol/memory/habboclient/windows/WindowsHabboClient.java b/G-Earth/src/main/java/gearth/protocol/memory/habboclient/windows/WindowsHabboClient.java index 8801fef..7178b06 100644 --- a/G-Earth/src/main/java/gearth/protocol/memory/habboclient/windows/WindowsHabboClient.java +++ b/G-Earth/src/main/java/gearth/protocol/memory/habboclient/windows/WindowsHabboClient.java @@ -15,7 +15,7 @@ import java.net.URISyntaxException; import java.util.*; /** - * Created by Jeunez on 27/06/2018. + * Created by Jonas on 27/06/2018. */ public class WindowsHabboClient extends HabboClient { diff --git a/G-Earth/src/main/java/gearth/services/extensionhandler/extensions/implementations/simple/SimpleExtensionProducer.java b/G-Earth/src/main/java/gearth/services/extensionhandler/extensions/implementations/simple/SimpleExtensionProducer.java index 105b907..b5c55aa 100644 --- a/G-Earth/src/main/java/gearth/services/extensionhandler/extensions/implementations/simple/SimpleExtensionProducer.java +++ b/G-Earth/src/main/java/gearth/services/extensionhandler/extensions/implementations/simple/SimpleExtensionProducer.java @@ -1,7 +1,9 @@ package gearth.services.extensionhandler.extensions.implementations.simple; +import gearth.extensions.InternalExtensionFormBuilder; import gearth.services.extensionhandler.extensions.extensionproducers.ExtensionProducer; import gearth.services.extensionhandler.extensions.extensionproducers.ExtensionProducerObserver; +import gearth.services.internal_extensions.blockreplacepackets.BlockAndReplacePackets; public class SimpleExtensionProducer implements ExtensionProducer { @@ -9,7 +11,8 @@ public class SimpleExtensionProducer implements ExtensionProducer { public void startProducing(ExtensionProducerObserver observer) { // uncomment the next line if you want to see an embedded example extension in G-Earth - // observer.onExtensionConnect(new ExampleExtension()); +// observer.onExtensionProduced(new ExampleExtension()); + InternalExtensionFormBuilder.launch(BlockAndReplacePackets.class, observer); } } diff --git a/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/BlockAndReplacePackets.java b/G-Earth/src/main/java/gearth/services/internal_extensions/blockreplacepackets/BlockAndReplacePackets.java similarity index 91% rename from Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/BlockAndReplacePackets.java rename to G-Earth/src/main/java/gearth/services/internal_extensions/blockreplacepackets/BlockAndReplacePackets.java index ad3d6ff..30e9e13 100644 --- a/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/BlockAndReplacePackets.java +++ b/G-Earth/src/main/java/gearth/services/internal_extensions/blockreplacepackets/BlockAndReplacePackets.java @@ -1,10 +1,12 @@ -package extensions.blockreplacepackets; +package gearth.services.internal_extensions.blockreplacepackets; -import extensions.blockreplacepackets.rules.BlockReplaceRule; -import extensions.blockreplacepackets.rules.RuleFactory; -import gearth.extensions.Extension; +import gearth.Main; +import gearth.extensions.ExtensionForm; +import gearth.extensions.ExtensionInfo; import gearth.protocol.HMessage; import gearth.protocol.HPacket; +import gearth.services.internal_extensions.blockreplacepackets.rules.BlockReplaceRule; +import gearth.services.internal_extensions.blockreplacepackets.rules.RuleFactory; import gearth.ui.GEarthController; import javafx.application.Platform; import javafx.event.ActionEvent; @@ -15,11 +17,10 @@ import javafx.scene.control.Button; import javafx.scene.control.ComboBox; import javafx.scene.control.ScrollPane; import javafx.scene.control.TextField; +import javafx.scene.image.Image; import javafx.scene.layout.GridPane; import javafx.scene.layout.VBox; import javafx.stage.Stage; -import gearth.extensions.ExtensionForm; -import gearth.extensions.ExtensionInfo; import java.util.ArrayList; import java.util.List; @@ -48,9 +49,9 @@ public class BlockAndReplacePackets extends ExtensionForm { List rules = new ArrayList<>(); - public static void main(String[] args) { - runExtensionForm(args, BlockAndReplacePackets.class); - } +// public static void main(String[] args) { +// runExtensionForm(args, BlockAndReplacePackets.class); +// } //initialize javaFX elements public void initialize() { @@ -177,7 +178,7 @@ public class BlockAndReplacePackets extends ExtensionForm { @Override protected void initExtension() { - Extension.MessageListener messageListener = message -> { + MessageListener messageListener = message -> { for (BlockReplaceRule rule : rules) { rule.appendRuleToMessage(message); } @@ -196,6 +197,7 @@ public class BlockAndReplacePackets extends ExtensionForm { primaryStage.setScene(new Scene(root)); primaryStage.setResizable(false); primaryStage.getScene().getStylesheets().add(GEarthController.class.getResource("/gearth/ui/bootstrap3.css").toExternalForm()); + primaryStage.getIcons().add(new Image(Main.class.getResourceAsStream("G-EarthLogoSmaller.png"))); return loader.getController(); } @@ -215,6 +217,11 @@ public class BlockAndReplacePackets extends ExtensionForm { clearInput(); } + @Override + protected boolean canLeave() { + return false; + } + @Override protected boolean canDelete() { return false; diff --git a/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/RuleContainer.java b/G-Earth/src/main/java/gearth/services/internal_extensions/blockreplacepackets/RuleContainer.java similarity index 93% rename from Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/RuleContainer.java rename to G-Earth/src/main/java/gearth/services/internal_extensions/blockreplacepackets/RuleContainer.java index c72ee00..4539d53 100644 --- a/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/RuleContainer.java +++ b/G-Earth/src/main/java/gearth/services/internal_extensions/blockreplacepackets/RuleContainer.java @@ -1,6 +1,6 @@ -package extensions.blockreplacepackets; +package gearth.services.internal_extensions.blockreplacepackets; -import extensions.blockreplacepackets.rules.BlockReplaceRule; +import gearth.services.internal_extensions.blockreplacepackets.rules.BlockReplaceRule; import gearth.ui.buttons.DeleteButton; import javafx.geometry.Insets; import javafx.geometry.Pos; @@ -13,7 +13,7 @@ import javafx.scene.layout.VBox; import javafx.scene.text.Font; /** - * Created by Jeunez on 6/11/2018. + * Created by Jonas on 6/11/2018. */ public class RuleContainer extends GridPane { diff --git a/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/rules/BlockPacketRule.java b/G-Earth/src/main/java/gearth/services/internal_extensions/blockreplacepackets/rules/BlockPacketRule.java similarity index 94% rename from Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/rules/BlockPacketRule.java rename to G-Earth/src/main/java/gearth/services/internal_extensions/blockreplacepackets/rules/BlockPacketRule.java index d80c675..a8e22df 100644 --- a/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/rules/BlockPacketRule.java +++ b/G-Earth/src/main/java/gearth/services/internal_extensions/blockreplacepackets/rules/BlockPacketRule.java @@ -1,4 +1,4 @@ -package extensions.blockreplacepackets.rules; +package gearth.services.internal_extensions.blockreplacepackets.rules; import gearth.protocol.HMessage; diff --git a/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/rules/BlockReplaceRule.java b/G-Earth/src/main/java/gearth/services/internal_extensions/blockreplacepackets/rules/BlockReplaceRule.java similarity index 93% rename from Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/rules/BlockReplaceRule.java rename to G-Earth/src/main/java/gearth/services/internal_extensions/blockreplacepackets/rules/BlockReplaceRule.java index d1cc521..621cf0a 100644 --- a/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/rules/BlockReplaceRule.java +++ b/G-Earth/src/main/java/gearth/services/internal_extensions/blockreplacepackets/rules/BlockReplaceRule.java @@ -1,4 +1,4 @@ -package extensions.blockreplacepackets.rules; +package gearth.services.internal_extensions.blockreplacepackets.rules; import gearth.protocol.HMessage; import javafx.beans.InvalidationListener; diff --git a/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/rules/ReplaceIntegerRule.java b/G-Earth/src/main/java/gearth/services/internal_extensions/blockreplacepackets/rules/ReplaceIntegerRule.java similarity index 94% rename from Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/rules/ReplaceIntegerRule.java rename to G-Earth/src/main/java/gearth/services/internal_extensions/blockreplacepackets/rules/ReplaceIntegerRule.java index f543461..d5141ee 100644 --- a/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/rules/ReplaceIntegerRule.java +++ b/G-Earth/src/main/java/gearth/services/internal_extensions/blockreplacepackets/rules/ReplaceIntegerRule.java @@ -1,4 +1,4 @@ -package extensions.blockreplacepackets.rules; +package gearth.services.internal_extensions.blockreplacepackets.rules; import gearth.protocol.HMessage; diff --git a/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/rules/ReplacePacketRule.java b/G-Earth/src/main/java/gearth/services/internal_extensions/blockreplacepackets/rules/ReplacePacketRule.java similarity index 92% rename from Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/rules/ReplacePacketRule.java rename to G-Earth/src/main/java/gearth/services/internal_extensions/blockreplacepackets/rules/ReplacePacketRule.java index c6bfa0d..6134234 100644 --- a/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/rules/ReplacePacketRule.java +++ b/G-Earth/src/main/java/gearth/services/internal_extensions/blockreplacepackets/rules/ReplacePacketRule.java @@ -1,10 +1,10 @@ -package extensions.blockreplacepackets.rules; +package gearth.services.internal_extensions.blockreplacepackets.rules; import gearth.protocol.HMessage; import gearth.protocol.HPacket; /** - * Created by Jeunez on 6/11/2018. + * Created by Jonas on 6/11/2018. */ public class ReplacePacketRule extends BlockReplaceRule { diff --git a/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/rules/ReplaceStringRule.java b/G-Earth/src/main/java/gearth/services/internal_extensions/blockreplacepackets/rules/ReplaceStringRule.java similarity index 94% rename from Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/rules/ReplaceStringRule.java rename to G-Earth/src/main/java/gearth/services/internal_extensions/blockreplacepackets/rules/ReplaceStringRule.java index fd20820..5449370 100644 --- a/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/rules/ReplaceStringRule.java +++ b/G-Earth/src/main/java/gearth/services/internal_extensions/blockreplacepackets/rules/ReplaceStringRule.java @@ -1,4 +1,4 @@ -package extensions.blockreplacepackets.rules; +package gearth.services.internal_extensions.blockreplacepackets.rules; import gearth.protocol.HMessage; diff --git a/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/rules/ReplaceSubstringRule.java b/G-Earth/src/main/java/gearth/services/internal_extensions/blockreplacepackets/rules/ReplaceSubstringRule.java similarity index 94% rename from Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/rules/ReplaceSubstringRule.java rename to G-Earth/src/main/java/gearth/services/internal_extensions/blockreplacepackets/rules/ReplaceSubstringRule.java index 9e56286..dbb58be 100644 --- a/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/rules/ReplaceSubstringRule.java +++ b/G-Earth/src/main/java/gearth/services/internal_extensions/blockreplacepackets/rules/ReplaceSubstringRule.java @@ -1,4 +1,4 @@ -package extensions.blockreplacepackets.rules; +package gearth.services.internal_extensions.blockreplacepackets.rules; import gearth.protocol.HMessage; diff --git a/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/rules/RuleFactory.java b/G-Earth/src/main/java/gearth/services/internal_extensions/blockreplacepackets/rules/RuleFactory.java similarity index 95% rename from Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/rules/RuleFactory.java rename to G-Earth/src/main/java/gearth/services/internal_extensions/blockreplacepackets/rules/RuleFactory.java index ef99e03..dc59f63 100644 --- a/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/rules/RuleFactory.java +++ b/G-Earth/src/main/java/gearth/services/internal_extensions/blockreplacepackets/rules/RuleFactory.java @@ -1,4 +1,4 @@ -package extensions.blockreplacepackets.rules; +package gearth.services.internal_extensions.blockreplacepackets.rules; import gearth.protocol.HPacket; diff --git a/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/blockreplace.fxml b/G-Earth/src/main/resources/gearth/services/internal_extensions/blockreplacepackets/blockreplace.fxml similarity index 94% rename from Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/blockreplace.fxml rename to G-Earth/src/main/resources/gearth/services/internal_extensions/blockreplacepackets/blockreplace.fxml index 5df9e8a..0e135cf 100644 --- a/Extensions/BlockReplacePackets/src/main/java/extensions/blockreplacepackets/blockreplace.fxml +++ b/G-Earth/src/main/resources/gearth/services/internal_extensions/blockreplacepackets/blockreplace.fxml @@ -1,17 +1,9 @@ - - - - - - - - - - - - + + + + diff --git a/pom.xml b/pom.xml index ca40e40..d3aa29e 100644 --- a/pom.xml +++ b/pom.xml @@ -18,7 +18,6 @@ Extensions/AdminOnConnect - Extensions/BlockReplacePackets