apollyon-ms4/src/main/java/org/krews/apollyon/Main.java

90 lines
4.3 KiB
Java

package org.krews.apollyon;
import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.users.Habbo;
import com.eu.habbo.messages.PacketManager;
import com.eu.habbo.messages.incoming.Incoming;
import com.eu.habbo.messages.incoming.MessageHandler;
import com.eu.habbo.plugin.EventHandler;
import com.eu.habbo.plugin.EventListener;
import com.eu.habbo.plugin.HabboPlugin;
import com.eu.habbo.plugin.events.emulator.EmulatorLoadedEvent;
import gnu.trove.map.hash.THashMap;
import org.krews.apollyon.incoming.CameraPublishToWebEvent;
import org.krews.apollyon.incoming.CameraPurchaseEvent;
import org.krews.apollyon.incoming.CameraRoomPictureEvent;
import org.krews.apollyon.incoming.CameraRoomThumbnailEvent;
import java.lang.reflect.Field;
/**
* Apollyon
* The Official Camera Plugin for Morningstar. Credits to John, Beny, Ovflowd, and Alejandro
* @author Krews.org
*/
public class Main extends HabboPlugin implements EventListener {
@Override
public void onEnable() throws Exception {
Emulator.getPluginManager().registerEvents(this, this);
if(Emulator.isReady && !Emulator.isShuttingDown) {
this.onEmulatorLoadedEvent(null);
}
}
@Override
public boolean hasPermission(Habbo habbo, String string) {
return false;
}
@Override
public void onDisable() throws Exception {
// put the original packets back
PacketManager packetManager = Emulator.getGameServer().getPacketManager();
Field f = PacketManager.class.getDeclaredField("incoming");
f.setAccessible(true);
THashMap<Integer, Class<? extends MessageHandler>> incoming = (THashMap<Integer, Class<? extends MessageHandler>>)f.get(packetManager);
incoming.remove(Incoming.CameraRoomThumbnailEvent);
incoming.remove(Incoming.CameraPublishToWebEvent);
incoming.remove(Incoming.CameraPurchaseEvent);
incoming.remove(Incoming.CameraRoomThumbnailEvent);
packetManager.registerHandler(Incoming.CameraRoomPictureEvent, CameraRoomPictureEvent.class);
packetManager.registerHandler(Incoming.CameraPublishToWebEvent, CameraPublishToWebEvent.class);
packetManager.registerHandler(Incoming.CameraPurchaseEvent, CameraPurchaseEvent.class);
packetManager.registerHandler(Incoming.CameraRoomThumbnailEvent, CameraRoomThumbnailEvent.class);
}
@EventHandler
public void onEmulatorLoadedEvent(EmulatorLoadedEvent e) throws NoSuchFieldException, IllegalArgumentException, IllegalAccessException, Exception {
// Adds missing sqls if they are not found.
Emulator.getConfig().register("camera.url", "http://yourdomain.com/swfdirectory/camera/");
Emulator.getConfig().register("imager.location.output.camera", "C:\\yourdirectory\\swfdirectory\\camera\\");
Emulator.getConfig().register("imager.location.output.thumbnail", "C:\\yourdirectory\\swfdirectory\\camera\\thumbnails\\thumbnail_");
PacketManager packetManager = Emulator.getGameServer().getPacketManager();
Field f = PacketManager.class.getDeclaredField("incoming");
f.setAccessible(true);
THashMap<Integer, Class<? extends MessageHandler>> incoming = (THashMap<Integer, Class<? extends MessageHandler>>)f.get(packetManager);
// Removes the current arcturus handlers for these packets
incoming.remove(Incoming.CameraRoomPictureEvent);
incoming.remove(Incoming.CameraPublishToWebEvent);
incoming.remove(Incoming.CameraPurchaseEvent);
incoming.remove(Incoming.CameraRoomThumbnailEvent);
// Adds the PNGCamera Packet Handlers
packetManager.registerHandler(Incoming.CameraRoomPictureEvent, CameraRoomPictureEvent.class);
packetManager.registerHandler(Incoming.CameraPublishToWebEvent, CameraPublishToWebEvent.class);
packetManager.registerHandler(Incoming.CameraPurchaseEvent, CameraPurchaseEvent.class);
packetManager.registerHandler(Incoming.CameraRoomThumbnailEvent, CameraRoomThumbnailEvent.class);
// Send the message to the Emulator that PNGCamera has started.
Emulator.getLogging().logStart("[Apollyon] Apollyon Preview 1 has hijacked the Arcturus Camera packets, and is ready to use!!");
Emulator.getLogging().logStart("[Apollyon] Please ensure this plugin was downloaded from Krews.org and is the latest version.");
}
}