mirror of
https://github.com/2006-Scape/2006Scape.git
synced 2026-07-03 00:31:51 +00:00
Plugins Fixup / Conversion(#511)
* Server: Ripped PluginService From Astreaus-V2 This Removes The Need For Plugin MetaData * Plugins: Handle Emote Tab Run Buttons * Add Some Settings Button Plugins Brightness Buttons Music Volume Buttons Walk/Run Buttons Toggle SplitPrivate-Chat * Fix Player Still Running With 0 Energy Fixes Players Continuing To Run For The Rest Of Their Current Movement Task Even If They Run Out Of Energy
This commit is contained in:
@@ -939,6 +939,7 @@ public abstract class Player {
|
||||
lastIncrease = System.currentTimeMillis();
|
||||
}
|
||||
if (playerEnergy <= 0 && isRunning2) {
|
||||
isRunning = false;
|
||||
isRunning2 = false;
|
||||
getPacketSender().sendConfig(504, 0);
|
||||
getPacketSender().sendConfig(173, 0);
|
||||
|
||||
@@ -592,22 +592,6 @@ public class ClickingButtons implements PacketType {
|
||||
break;
|
||||
/** End of Hairdresser buttons */
|
||||
|
||||
case 3166:
|
||||
case 3165:
|
||||
case 3164:
|
||||
case 3163:
|
||||
Music.playMusic(player);
|
||||
player.musicOn = true;
|
||||
break;
|
||||
|
||||
case 3162:
|
||||
if (player.musicOn) {
|
||||
player.musicOn = false;
|
||||
} else {
|
||||
player.getPacketSender().sendMessage("Your music is already turned off.");
|
||||
}
|
||||
break;
|
||||
|
||||
case 8198:
|
||||
PartyRoom.accept(player);
|
||||
break;
|
||||
@@ -1183,19 +1167,6 @@ public class ClickingButtons implements PacketType {
|
||||
player.usingMagic = false;
|
||||
break;
|
||||
|
||||
case 153:
|
||||
if (player.tutorialProgress == 11) {
|
||||
player.getDialogueHandler().sendDialogues(3041, 0);
|
||||
}
|
||||
player.getPacketSender().sendConfig(173, 1);
|
||||
player.isRunning2 = true;
|
||||
break;
|
||||
|
||||
case 152:
|
||||
player.isRunning2 = false;
|
||||
player.getPacketSender().sendConfig(173, 0);
|
||||
break;
|
||||
|
||||
case 21010:
|
||||
if (player.isBanking) {
|
||||
player.takeAsNote = true;
|
||||
@@ -1500,17 +1471,6 @@ public class ClickingButtons implements PacketType {
|
||||
player.getPacketSender().sendConfig(170, 0);
|
||||
}
|
||||
break;
|
||||
case 3189:
|
||||
if (player.splitChat == false) {
|
||||
player.getPacketSender().sendConfig(502, 1);
|
||||
player.getPacketSender().sendConfig(287, 1);
|
||||
player.splitChat = true;
|
||||
} else if (player.splitChat) {
|
||||
player.getPacketSender().sendConfig(502, 0);
|
||||
player.getPacketSender().sendConfig(287, 0);
|
||||
player.splitChat = false;
|
||||
}
|
||||
break;
|
||||
case 74180:
|
||||
if (!player.chatEffects) {
|
||||
player.chatEffects = true;
|
||||
@@ -1544,26 +1504,6 @@ public class ClickingButtons implements PacketType {
|
||||
player.getPacketSender().sendConfig(173, 0);
|
||||
}
|
||||
break;
|
||||
|
||||
//case 74201:// brightness1
|
||||
case 3138:
|
||||
LightSources.brightness1(player);
|
||||
break;
|
||||
|
||||
//case 74203:// brightness2
|
||||
case 3140:
|
||||
LightSources.brightness2(player);
|
||||
break;
|
||||
|
||||
//case 74204:// brightness3
|
||||
case 3142:
|
||||
LightSources.brightness3(player);
|
||||
break;
|
||||
|
||||
//case 74205:// brightness4
|
||||
case 3144:
|
||||
LightSources.brightness4(player);
|
||||
break;
|
||||
|
||||
case 74206:// area1
|
||||
player.getPacketSender().sendConfig(509, 1);
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
package com.rs2.plugin;
|
||||
|
||||
public final class PluginMetaData {
|
||||
|
||||
private final String name;
|
||||
|
||||
private final String description;
|
||||
|
||||
private final String group;
|
||||
|
||||
private final String base;
|
||||
|
||||
private final String[] authors;
|
||||
|
||||
private final double version;
|
||||
|
||||
public PluginMetaData(String name, String description, String group, String base, String[] authors, double version) {
|
||||
this.name = name;
|
||||
this.description = description;
|
||||
this.group = group;
|
||||
this.base = base;
|
||||
this.authors = authors;
|
||||
this.version = version;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public String[] getAuthors() {
|
||||
return authors;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public String getGroup() {
|
||||
return group;
|
||||
}
|
||||
|
||||
public String getBase() {
|
||||
return base;
|
||||
}
|
||||
|
||||
public double getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,17 +1,12 @@
|
||||
package com.rs2.plugin;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.util.*;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.rs2.event.EventSubscriber;
|
||||
import com.rs2.game.players.Player;
|
||||
import com.rs2.util.LoggerUtils;
|
||||
@@ -32,20 +27,15 @@ public final class PluginService {
|
||||
* The list of subscribers registered to the server.
|
||||
*/
|
||||
private static final List<EventSubscriber<?>> subscribers = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* The single instance of gson to deserialize the plugin meta data.
|
||||
*/
|
||||
private static final Gson gson = new GsonBuilder().create();
|
||||
|
||||
/**
|
||||
* Loads the plugins.
|
||||
*/
|
||||
public void load() {
|
||||
try {
|
||||
Collection<PluginMetaData[]> plugins = findPlugins();
|
||||
|
||||
plugins.stream().forEach($it -> register($it));
|
||||
Collection<EventSubscriber<?>> plugins = findPlugins();
|
||||
|
||||
plugins.stream().forEach(it -> register(it));
|
||||
} catch (IOException e) {
|
||||
logger.log(Level.SEVERE, "A problem was encountered while trying to load plugins.", e);
|
||||
}
|
||||
@@ -55,10 +45,9 @@ public final class PluginService {
|
||||
/**
|
||||
* Finds plugins in a given directory.
|
||||
*
|
||||
* @throws IOException
|
||||
*/
|
||||
private Collection<PluginMetaData[]> findPlugins() throws IOException {
|
||||
return findPlugins(new File("./plugins/"));
|
||||
private Collection<EventSubscriber<?>> findPlugins() throws IOException {
|
||||
return findPlugins(new File("./plugins"));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -67,64 +56,51 @@ public final class PluginService {
|
||||
* @param dir
|
||||
* The directory to check for plugins.
|
||||
*
|
||||
* @throws IOException
|
||||
*
|
||||
* @return The collection of plugin data.
|
||||
*/
|
||||
private Collection<PluginMetaData[]> findPlugins(File dir) throws IOException {
|
||||
Collection<PluginMetaData[]> plugins = new ArrayList<>();
|
||||
for(File file : dir.listFiles()) {
|
||||
if (file.isDirectory()) {
|
||||
|
||||
File json = new File(file, "plugins.json");
|
||||
|
||||
if (json.exists()) {
|
||||
PluginMetaData[] meta = gson.fromJson(new FileReader(json), PluginMetaData[].class);
|
||||
|
||||
plugins.add(meta);
|
||||
} else {
|
||||
plugins.addAll(findPlugins(file));
|
||||
private Collection<EventSubscriber<?>> findPlugins(File dir) {
|
||||
Collection<EventSubscriber<?>> plugins = new ArrayList<>();
|
||||
for (File file : Objects.requireNonNull(dir.listFiles())) {
|
||||
String base = file.getPath();
|
||||
|
||||
base = base.replace("\\", ".");
|
||||
|
||||
base = base.replace("..plugins.", "");
|
||||
|
||||
base = base.replace(".kt", "");
|
||||
|
||||
base = base.replace(".java", "");
|
||||
|
||||
if (!file.isDirectory()) {
|
||||
try {
|
||||
Class<?> clazz = Class.forName(base);
|
||||
|
||||
if (EventSubscriber.class.isAssignableFrom(clazz) && !Modifier.isInterface(clazz.getModifiers()) && !Modifier.isAbstract(clazz.getModifiers())) {
|
||||
final EventSubscriber<?> sub = (EventSubscriber<?>) clazz.newInstance();
|
||||
|
||||
plugins.add(sub);
|
||||
}
|
||||
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
|
||||
} else {
|
||||
plugins.addAll(findPlugins(file));
|
||||
}
|
||||
|
||||
}
|
||||
return Collections.unmodifiableCollection(plugins);
|
||||
}
|
||||
|
||||
/**
|
||||
* Assigns a plugin to a subscriber
|
||||
*
|
||||
* @param metas
|
||||
* The meta deta for each plugin.
|
||||
*/
|
||||
private void register(PluginMetaData[] metas) {
|
||||
for(PluginMetaData meta : metas) {
|
||||
String base = meta.getBase();
|
||||
private void register(EventSubscriber<?> subscriber) {
|
||||
|
||||
Class<?> clazz;
|
||||
Player.provideSubscriber(subscriber);
|
||||
|
||||
try {
|
||||
subscribers.add(subscriber);
|
||||
|
||||
clazz = Class.forName(base);
|
||||
|
||||
} catch (Exception ex) {
|
||||
logger.warning(base + " could not be found.");
|
||||
continue;
|
||||
}
|
||||
|
||||
if (EventSubscriber.class.isAssignableFrom(clazz)) {
|
||||
try {
|
||||
final EventSubscriber<?> subscriber = (EventSubscriber<?>) clazz.newInstance();
|
||||
|
||||
Player.provideSubscriber(subscriber);
|
||||
|
||||
subscribers.add(subscriber);
|
||||
} catch (Exception ex) {
|
||||
logger.warning(base + " could not be created.");
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user