20 Commits
1.1.0 ... 1.1.8

Author SHA1 Message Date
3e24492bfa 1.1.8
The option Bungee was removed from the config.yml and from now on the option from the T2CodeLib will be used.
2023-01-05 19:33:53 +01:00
1ae32b2b59 stable 1.1.7 2022-12-21 10:52:47 +01:00
93f63ffad0 Default config was changed
The admin area was set to false in the default config.
2022-12-21 10:43:45 +01:00
2d49a7a4b7 bugfix for < 1.13 Server
Fixed a bug where you could not reload the plugin (/t2c-alias reload) when using a server below 1.13
2022-12-21 10:35:35 +01:00
f00ac77743 1.1.6 | New alias for commands & alias registration for plugin reload
Changes:
- For commands the placeholder '[alias]' has been added.
- If you add a new alias, it will now be registred on reload of the plugin, so no restart is needed anymore (If a command is renamed / removed, the old one will still be registred, but will not work. I am looking for a solution in the next update).
2022-11-17 23:39:38 +01:00
e96447d4fa 1.1.5 2022-11-15 14:58:46 +01:00
JaTiTV
3053bc53a3 „README.md“ ändern 2022-11-14 15:55:11 +00:00
1de8c1d2ea fix 2022-11-14 16:44:45 +01:00
e8a0b99a56 Merge branch 'main' of https://git.t2code.net/JaTiTV/T2Code-Alias 2022-11-14 16:43:58 +01:00
dc75e49988 1.1.4 2022-11-14 16:43:53 +01:00
JaTiTV
555e3a192c „README.md/README.md“ ändern 2022-11-14 15:18:37 +00:00
JaTiTV
7d2cf9a122 „README.md/README.md“ ändern 2022-11-14 15:18:11 +00:00
JaTiTV
ecd3362db6 „README.md/README.md“ ändern 2022-11-14 15:17:39 +00:00
JaTiTV
078e9404e6 „README.md/README.md“ ändern 2022-11-14 15:17:14 +00:00
JaTiTV
2617f55062 Dateien hochladen nach „README.md“ 2022-11-14 15:12:56 +00:00
bcfcc2e863 1.1.3
T2CodeLib update to API Version 13.0

Bugfix:
- Hardcode message inserted in language file
2022-10-25 16:38:16 +02:00
dbe5f82030 1.1.2 | Bugfix
TabComplete Aller Commands was affected by T2C alias and partially disabled completely. This has been fixed.
2022-07-19 22:55:25 +02:00
6586ac4ee9 1.1.1
This update fixes a security vulnerability where players with modified clients could intercept all commands.
This bug affects the proxy (Bungee, Waterfall etc.)!
2022-07-19 18:27:07 +02:00
JaTiTV
a7518530c7 Merge pull request '1.1.0 | SubAlias, MiniMessage and more' (#3) from 1.1 into main
Reviewed-on: #3
2022-07-14 21:57:23 +02:00
b9a91baed7 1.1.0 2022-07-14 21:56:13 +02:00
34 changed files with 817 additions and 1297 deletions

77
README.md Normal file
View File

@@ -0,0 +1,77 @@
<p align="center">
<img src="https://i.imgur.com/M4a7pVS.png" width="300">
</p>
---
# Links
* [Spigot](https://www.spigotmc.org/resources/1-19-ready-t2c-alias-alias-plugin-for-spigot-bungee-commands-1-8-x-1-19-x.96389/)
* [Discord](http://dc.T2Code.net)
---
<img src="https://i.imgur.com/pK7kR6R.png" width="600">
T2C-Alias is an alias plugin that works for servers but also for bungee commands.
**Example:** */warp CityBuild* **->** */CityBuild* **or** */cb*
**Features:**
- Execute multiple commands directly with one alias
- Run commands as console
- Run commands as player
- Execute bungee commands
- Admin mode (more info below)
- Alias for the console
- Show messages (more info below)
**Functions:**
***Admin Mode:***
With the admin mudus you can distinguish an alias for players / mods / admins.
For example the alias '/citybuild' executes the command '/warp CityBuild' for players and '/server citybuild' for players with an adjustable permission.
So you could set that players are teleported to a specific position and for example team members / VIPs or so are teleported to the server but to the last position and much more.
**Send messages to players:**
With this plugin it is possible with an alias to send messages to players with or without TextBuilder.
**Console Alias:**
It is possible to set an alias for the console.
For example for Paper to reload the server instead of '/reload confirm' just '/rlc'.
Info: There are different functions for an alias for player, admin and console possible.
**You can use MiniMessage:**
Wiki: https://docs.adventure.kyori.net/minimessage/format.html
WebUI: https://webui.adventure.kyori.net
<img src="https://i.imgur.com/55BlvCg.png" width="600">
**/t2code-alias** | **/alias**
**/alias info** - Open the T2C-Alias info. | *t2code.alias.command.info*
**/alias reload** - Reload the plugin. | *t2code.alias.command.reload*
*t2code.alias.admin* - Permission for all T2C-Alias Commands
*t2code.alias.updatemsg* - Get a notification when an update is available when joining
---
<img src="https://i.imgur.com/HoZSt7c.png" width="600">
<img src="https://bstats.org/signatures/bukkit/T2Code-Alias.svg" width="600">

14
pom.xml
View File

@@ -6,7 +6,7 @@
<groupId>net.t2code</groupId> <groupId>net.t2code</groupId>
<artifactId>Alias</artifactId> <artifactId>Alias</artifactId>
<version>1.1.0_Snapshot-#3</version> <version>1.1.8</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>T2C-Alias</name> <name>T2C-Alias</name>
@@ -19,6 +19,7 @@
<url>T2Code.net</url> <url>T2Code.net</url>
<build> <build>
<finalName>${project.artifactId}_${project.version}</finalName>
<plugins> <plugins>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
@@ -69,23 +70,26 @@
<dependency> <dependency>
<groupId>net.t2code</groupId> <groupId>net.t2code</groupId>
<artifactId>T2CodeLib</artifactId> <artifactId>T2CodeLib</artifactId>
<version>12.4</version> <version>14.2</version>
<scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>net.t2code</groupId> <groupId>net.t2code</groupId>
<artifactId>bungee</artifactId> <artifactId>bungee</artifactId>
<version>1615</version> <version>1615</version>
<scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>net.t2code</groupId> <groupId>net.t2code</groupId>
<artifactId>PlugmanGUI</artifactId> <artifactId>PlugmanGUI</artifactId>
<version>3.0</version> <version>3.0</version>
<scope>provided</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>net.t2code.minecraft.1_19.r1</groupId> <groupId>net.t2code.minecraft.1_13.r1</groupId>
<artifactId>spigot</artifactId> <artifactId>spigot</artifactId>
<version>1.19r1</version> <version>1.13r1</version>
<scope>provided</scope>
</dependency> </dependency>
</dependencies> </dependencies>
</project> </project>

View File

@@ -1,40 +0,0 @@
package net.t2code.alias.Bungee;
import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.plugin.Plugin;
import net.t2code.alias.Bungee.system.BLoad;
import net.t2code.alias.Util;
import net.t2code.lib.Bungee.Lib.messages.BT2CodeTemplate;
import java.util.logging.Level;
public final class BMain extends Plugin {
public static Plugin plugin;
public static String version;
public static String autor;
@Override
public void onEnable() {
// Plugin startup logic
plugin = this;
version = plugin.getDescription().getVersion();
autor = plugin.getDescription().getAuthor();
if (ProxyServer.getInstance().getPluginManager().getPlugin("T2CodeLib") == null) {
plugin.getLogger().log(Level.SEVERE, "Plugin can not be loaded!");
ProxyServer.getInstance().getConsole().sendMessage(Util.getPrefix() + " §eT2CodeLib §4could not be found. Please download it here: " +
"§6https://www.spigotmc.org/resources/t2codelib.96388/ §4to be able to use this plugin.");
getProxy().getPluginManager().getPlugin(plugin.getDescription().getName()).onDisable();
return;
}
BLoad.onLoad(plugin, Util.getPrefix(), autor, version, Util.getSpigot(), Util.getDiscord(), Util.getSpigotID(), Util.getBstatsID());
}
@Override
public void onDisable() {
// Plugin shutdown logic
if (ProxyServer.getInstance().getPluginManager().getPlugin("T2CodeLib") == null) return;
BT2CodeTemplate.onDisable(Util.getPrefix(), autor, version, Util.getSpigot(), Util.getDiscord());
}
}

View File

@@ -1,38 +0,0 @@
package net.t2code.alias.Bungee.system;
import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.event.PluginMessageEvent;
import net.md_5.bungee.api.plugin.Listener;
import net.md_5.bungee.event.EventHandler;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.IOException;
public class BListener implements Listener {
@EventHandler
public void onPluginmessage(PluginMessageEvent event) {
if (event.getTag().equalsIgnoreCase("t2codealias:bungee")) {
DataInputStream stream = new DataInputStream(new ByteArrayInputStream(event.getData()));
try {
String channel = stream.readUTF();
String input = stream.readUTF();
if (channel.equals("T2Code-Console")) {
ProxyServer.getInstance().getConsole().sendMessage("Command Console: "+ input);
ProxyServer.getInstance().getPluginManager().dispatchCommand(ProxyServer.getInstance().getConsole(), input);
} else {
ProxiedPlayer player = ProxyServer.getInstance().getPlayer(channel);
if (player != null) {
ProxyServer.getInstance().getConsole().sendMessage("Command " + player +": "+ input);
ProxyServer.getInstance().getPluginManager().dispatchCommand(player, input);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

View File

@@ -1,24 +0,0 @@
package net.t2code.alias.Bungee.system;
import net.md_5.bungee.api.plugin.Plugin;
import net.t2code.lib.Bungee.Lib.messages.BT2CodeTemplate;
import net.t2code.lib.Bungee.Lib.messages.Bsend;
import net.t2code.lib.Bungee.Lib.update.BUpdateAPI;
public class BLoad {
public static void onLoad(Plugin plugin, String prefix, String autor, String version, String spigot, String discord, Integer spigotID, Integer bstatsID) {
Long long_ = BT2CodeTemplate.onLoadHeader(prefix,autor,version,spigot,discord);
plugin.getProxy().registerChannel("t2codealias:bungee");
Bsend.console(prefix + " registerChannel(t2codealias:bungee)");
plugin.getProxy().getPluginManager().registerListener(plugin, new BListener());
BMetrics metrics = new BMetrics(plugin, bstatsID);
BUpdateAPI.onUpdateCheckTimer(plugin, prefix, spigot, discord, spigotID);
BT2CodeTemplate.onLoadFooter(prefix, long_);
}
}

View File

@@ -1,846 +0,0 @@
package net.t2code.alias.Bungee.system;
import net.md_5.bungee.api.plugin.Plugin;
import net.md_5.bungee.config.Configuration;
import net.md_5.bungee.config.ConfigurationProvider;
import net.md_5.bungee.config.YamlConfiguration;
import javax.net.ssl.HttpsURLConnection;
import java.io.*;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.concurrent.Callable;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.function.Supplier;
import java.util.logging.Level;
import java.util.stream.Collectors;
import java.util.zip.GZIPOutputStream;
public class BMetrics {
private final Plugin plugin;
private final MetricsBase metricsBase;
private boolean enabled;
private String serverUUID;
private boolean logErrors = false;
private boolean logSentData;
private boolean logResponseStatusText;
/**
* Creates a new Metrics instance.
*
* @param plugin Your plugin instance.
* @param serviceId The id of the service. It can be found at <a
* href="https://bstats.org/what-is-my-plugin-id">What is my plugin id?</a>
*/
public BMetrics(Plugin plugin, int serviceId) {
this.plugin = plugin;
try {
loadConfig();
} catch (IOException e) {
// Failed to load configuration
plugin.getLogger().log(Level.WARNING, "Failed to load bStats config!", e);
metricsBase = null;
return;
}
metricsBase =
new MetricsBase(
"bungeecord",
serverUUID,
serviceId,
enabled,
this::appendPlatformData,
this::appendServiceData,
null,
() -> true,
(message, error) -> this.plugin.getLogger().log(Level.WARNING, message, error),
(message) -> this.plugin.getLogger().log(Level.INFO, message),
logErrors,
logSentData,
logResponseStatusText);
}
/** Loads the bStats configuration. */
private void loadConfig() throws IOException {
File bStatsFolder = new File(plugin.getDataFolder().getParentFile(), "bStats");
bStatsFolder.mkdirs();
File configFile = new File(bStatsFolder, "config.yml");
if (!configFile.exists()) {
writeFile(
configFile,
"# bStats (https://bStats.org) collects some basic information for plugin authors, like how",
"# many people use their plugin and their total player count. It's recommended to keep bStats",
"# enabled, but if you're not comfortable with this, you can turn this setting off. There is no",
"# performance penalty associated with having metrics enabled, and data sent to bStats is fully",
"# anonymous.",
"enabled: true",
"serverUuid: \"" + UUID.randomUUID() + "\"",
"logFailedRequests: false",
"logSentData: false",
"logResponseStatusText: false");
}
Configuration configuration =
ConfigurationProvider.getProvider(YamlConfiguration.class).load(configFile);
// Load configuration
enabled = configuration.getBoolean("enabled", true);
serverUUID = configuration.getString("serverUuid");
logErrors = configuration.getBoolean("logFailedRequests", false);
logSentData = configuration.getBoolean("logSentData", false);
logResponseStatusText = configuration.getBoolean("logResponseStatusText", false);
}
private void writeFile(File file, String... lines) throws IOException {
try (BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(file))) {
for (String line : lines) {
bufferedWriter.write(line);
bufferedWriter.newLine();
}
}
}
/**
* Adds a custom chart.
*
* @param chart The chart to add.
*/
public void addCustomChart(CustomChart chart) {
metricsBase.addCustomChart(chart);
}
private void appendPlatformData(JsonObjectBuilder builder) {
builder.appendField("playerAmount", plugin.getProxy().getOnlineCount());
builder.appendField("managedServers", plugin.getProxy().getServers().size());
builder.appendField("onlineMode", plugin.getProxy().getConfig().isOnlineMode() ? 1 : 0);
builder.appendField("bungeecordVersion", plugin.getProxy().getVersion());
builder.appendField("javaVersion", System.getProperty("java.version"));
builder.appendField("osName", System.getProperty("os.name"));
builder.appendField("osArch", System.getProperty("os.arch"));
builder.appendField("osVersion", System.getProperty("os.version"));
builder.appendField("coreCount", Runtime.getRuntime().availableProcessors());
}
private void appendServiceData(JsonObjectBuilder builder) {
builder.appendField("pluginVersion", plugin.getDescription().getVersion());
}
public static class MetricsBase {
/** The version of the Metrics class. */
public static final String METRICS_VERSION = "2.2.1";
private static final ScheduledExecutorService scheduler =
Executors.newScheduledThreadPool(1, task -> new Thread(task, "bStats-Metrics"));
private static final String REPORT_URL = "https://bStats.org/api/v2/data/%s";
private final String platform;
private final String serverUuid;
private final int serviceId;
private final Consumer<JsonObjectBuilder> appendPlatformDataConsumer;
private final Consumer<JsonObjectBuilder> appendServiceDataConsumer;
private final Consumer<Runnable> submitTaskConsumer;
private final Supplier<Boolean> checkServiceEnabledSupplier;
private final BiConsumer<String, Throwable> errorLogger;
private final Consumer<String> infoLogger;
private final boolean logErrors;
private final boolean logSentData;
private final boolean logResponseStatusText;
private final Set<CustomChart> customCharts = new HashSet<>();
private final boolean enabled;
/**
* Creates a new MetricsBase class instance.
*
* @param platform The platform of the service.
* @param serviceId The id of the service.
* @param serverUuid The server uuid.
* @param enabled Whether or not data sending is enabled.
* @param appendPlatformDataConsumer A consumer that receives a {@code JsonObjectBuilder} and
* appends all platform-specific data.
* @param appendServiceDataConsumer A consumer that receives a {@code JsonObjectBuilder} and
* appends all service-specific data.
* @param submitTaskConsumer A consumer that takes a runnable with the submit task. This can be
* used to delegate the data collection to a another thread to prevent errors caused by
* concurrency. Can be {@code null}.
* @param checkServiceEnabledSupplier A supplier to check if the service is still enabled.
* @param errorLogger A consumer that accepts log message and an error.
* @param infoLogger A consumer that accepts info log messages.
* @param logErrors Whether or not errors should be logged.
* @param logSentData Whether or not the sent data should be logged.
* @param logResponseStatusText Whether or not the response status text should be logged.
*/
public MetricsBase(
String platform,
String serverUuid,
int serviceId,
boolean enabled,
Consumer<JsonObjectBuilder> appendPlatformDataConsumer,
Consumer<JsonObjectBuilder> appendServiceDataConsumer,
Consumer<Runnable> submitTaskConsumer,
Supplier<Boolean> checkServiceEnabledSupplier,
BiConsumer<String, Throwable> errorLogger,
Consumer<String> infoLogger,
boolean logErrors,
boolean logSentData,
boolean logResponseStatusText) {
this.platform = platform;
this.serverUuid = serverUuid;
this.serviceId = serviceId;
this.enabled = enabled;
this.appendPlatformDataConsumer = appendPlatformDataConsumer;
this.appendServiceDataConsumer = appendServiceDataConsumer;
this.submitTaskConsumer = submitTaskConsumer;
this.checkServiceEnabledSupplier = checkServiceEnabledSupplier;
this.errorLogger = errorLogger;
this.infoLogger = infoLogger;
this.logErrors = logErrors;
this.logSentData = logSentData;
this.logResponseStatusText = logResponseStatusText;
checkRelocation();
if (enabled) {
startSubmitting();
}
}
public void addCustomChart(CustomChart chart) {
this.customCharts.add(chart);
}
private void startSubmitting() {
final Runnable submitTask =
() -> {
if (!enabled || !checkServiceEnabledSupplier.get()) {
// Submitting data or service is disabled
scheduler.shutdown();
return;
}
if (submitTaskConsumer != null) {
submitTaskConsumer.accept(this::submitData);
} else {
this.submitData();
}
};
// Many servers tend to restart at a fixed time at xx:00 which causes an uneven distribution
// of requests on the
// bStats backend. To circumvent this problem, we introduce some randomness into the initial
// and second delay.
// WARNING: You must not modify and part of this Metrics class, including the submit delay or
// frequency!
// WARNING: Modifying this code will get your plugin banned on bStats. Just don't do it!
long initialDelay = (long) (1000 * 60 * (3 + Math.random() * 3));
long secondDelay = (long) (1000 * 60 * (Math.random() * 30));
scheduler.schedule(submitTask, initialDelay, TimeUnit.MILLISECONDS);
scheduler.scheduleAtFixedRate(
submitTask, initialDelay + secondDelay, 1000 * 60 * 30, TimeUnit.MILLISECONDS);
}
private void submitData() {
final JsonObjectBuilder baseJsonBuilder = new JsonObjectBuilder();
appendPlatformDataConsumer.accept(baseJsonBuilder);
final JsonObjectBuilder serviceJsonBuilder = new JsonObjectBuilder();
appendServiceDataConsumer.accept(serviceJsonBuilder);
JsonObjectBuilder.JsonObject[] chartData =
customCharts.stream()
.map(customChart -> customChart.getRequestJsonObject(errorLogger, logErrors))
.filter(Objects::nonNull)
.toArray(JsonObjectBuilder.JsonObject[]::new);
serviceJsonBuilder.appendField("id", serviceId);
serviceJsonBuilder.appendField("customCharts", chartData);
baseJsonBuilder.appendField("service", serviceJsonBuilder.build());
baseJsonBuilder.appendField("serverUUID", serverUuid);
baseJsonBuilder.appendField("metricsVersion", METRICS_VERSION);
JsonObjectBuilder.JsonObject data = baseJsonBuilder.build();
scheduler.execute(
() -> {
try {
// Send the data
sendData(data);
} catch (Exception e) {
// Something went wrong! :(
if (logErrors) {
errorLogger.accept("Could not submit bStats metrics data", e);
}
}
});
}
private void sendData(JsonObjectBuilder.JsonObject data) throws Exception {
if (logSentData) {
infoLogger.accept("Sent bStats metrics data: " + data.toString());
}
String url = String.format(REPORT_URL, platform);
HttpsURLConnection connection = (HttpsURLConnection) new URL(url).openConnection();
// Compress the data to save bandwidth
byte[] compressedData = compress(data.toString());
connection.setRequestMethod("POST");
connection.addRequestProperty("Accept", "application/json");
connection.addRequestProperty("Connection", "close");
connection.addRequestProperty("Content-Encoding", "gzip");
connection.addRequestProperty("Content-Length", String.valueOf(compressedData.length));
connection.setRequestProperty("Content-Type", "application/json");
connection.setRequestProperty("User-Agent", "Metrics-Service/1");
connection.setDoOutput(true);
try (DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream())) {
outputStream.write(compressedData);
}
StringBuilder builder = new StringBuilder();
try (BufferedReader bufferedReader =
new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
String line;
while ((line = bufferedReader.readLine()) != null) {
builder.append(line);
}
}
if (logResponseStatusText) {
infoLogger.accept("Sent data to bStats and received response: " + builder);
}
}
/** Checks that the class was properly relocated. */
private void checkRelocation() {
// You can use the property to disable the check in your test environment
if (System.getProperty("bstats.relocatecheck") == null
|| !System.getProperty("bstats.relocatecheck").equals("false")) {
// Maven's Relocate is clever and changes strings, too. So we have to use this little
// "trick" ... :D
final String defaultPackage =
new String(new byte[] {'o', 'r', 'g', '.', 'b', 's', 't', 'a', 't', 's'});
final String examplePackage =
new String(new byte[] {'y', 'o', 'u', 'r', '.', 'p', 'a', 'c', 'k', 'a', 'g', 'e'});
// We want to make sure no one just copy & pastes the example and uses the wrong package
// names
if (MetricsBase.class.getPackage().getName().startsWith(defaultPackage)
|| MetricsBase.class.getPackage().getName().startsWith(examplePackage)) {
throw new IllegalStateException("bStats Metrics class has not been relocated correctly!");
}
}
}
/**
* Gzips the given string.
*
* @param str The string to gzip.
* @return The gzipped string.
*/
private static byte[] compress(final String str) throws IOException {
if (str == null) {
return null;
}
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
try (GZIPOutputStream gzip = new GZIPOutputStream(outputStream)) {
gzip.write(str.getBytes(StandardCharsets.UTF_8));
}
return outputStream.toByteArray();
}
}
public static class AdvancedBarChart extends CustomChart {
private final Callable<Map<String, int[]>> callable;
/**
* Class constructor.
*
* @param chartId The id of the chart.
* @param callable The callable which is used to request the chart data.
*/
public AdvancedBarChart(String chartId, Callable<Map<String, int[]>> callable) {
super(chartId);
this.callable = callable;
}
@Override
protected JsonObjectBuilder.JsonObject getChartData() throws Exception {
JsonObjectBuilder valuesBuilder = new JsonObjectBuilder();
Map<String, int[]> map = callable.call();
if (map == null || map.isEmpty()) {
// Null = skip the chart
return null;
}
boolean allSkipped = true;
for (Map.Entry<String, int[]> entry : map.entrySet()) {
if (entry.getValue().length == 0) {
// Skip this invalid
continue;
}
allSkipped = false;
valuesBuilder.appendField(entry.getKey(), entry.getValue());
}
if (allSkipped) {
// Null = skip the chart
return null;
}
return new JsonObjectBuilder().appendField("values", valuesBuilder.build()).build();
}
}
public static class SimpleBarChart extends CustomChart {
private final Callable<Map<String, Integer>> callable;
/**
* Class constructor.
*
* @param chartId The id of the chart.
* @param callable The callable which is used to request the chart data.
*/
public SimpleBarChart(String chartId, Callable<Map<String, Integer>> callable) {
super(chartId);
this.callable = callable;
}
@Override
protected JsonObjectBuilder.JsonObject getChartData() throws Exception {
JsonObjectBuilder valuesBuilder = new JsonObjectBuilder();
Map<String, Integer> map = callable.call();
if (map == null || map.isEmpty()) {
// Null = skip the chart
return null;
}
for (Map.Entry<String, Integer> entry : map.entrySet()) {
valuesBuilder.appendField(entry.getKey(), new int[] {entry.getValue()});
}
return new JsonObjectBuilder().appendField("values", valuesBuilder.build()).build();
}
}
public static class MultiLineChart extends CustomChart {
private final Callable<Map<String, Integer>> callable;
/**
* Class constructor.
*
* @param chartId The id of the chart.
* @param callable The callable which is used to request the chart data.
*/
public MultiLineChart(String chartId, Callable<Map<String, Integer>> callable) {
super(chartId);
this.callable = callable;
}
@Override
protected JsonObjectBuilder.JsonObject getChartData() throws Exception {
JsonObjectBuilder valuesBuilder = new JsonObjectBuilder();
Map<String, Integer> map = callable.call();
if (map == null || map.isEmpty()) {
// Null = skip the chart
return null;
}
boolean allSkipped = true;
for (Map.Entry<String, Integer> entry : map.entrySet()) {
if (entry.getValue() == 0) {
// Skip this invalid
continue;
}
allSkipped = false;
valuesBuilder.appendField(entry.getKey(), entry.getValue());
}
if (allSkipped) {
// Null = skip the chart
return null;
}
return new JsonObjectBuilder().appendField("values", valuesBuilder.build()).build();
}
}
public static class AdvancedPie extends CustomChart {
private final Callable<Map<String, Integer>> callable;
/**
* Class constructor.
*
* @param chartId The id of the chart.
* @param callable The callable which is used to request the chart data.
*/
public AdvancedPie(String chartId, Callable<Map<String, Integer>> callable) {
super(chartId);
this.callable = callable;
}
@Override
protected JsonObjectBuilder.JsonObject getChartData() throws Exception {
JsonObjectBuilder valuesBuilder = new JsonObjectBuilder();
Map<String, Integer> map = callable.call();
if (map == null || map.isEmpty()) {
// Null = skip the chart
return null;
}
boolean allSkipped = true;
for (Map.Entry<String, Integer> entry : map.entrySet()) {
if (entry.getValue() == 0) {
// Skip this invalid
continue;
}
allSkipped = false;
valuesBuilder.appendField(entry.getKey(), entry.getValue());
}
if (allSkipped) {
// Null = skip the chart
return null;
}
return new JsonObjectBuilder().appendField("values", valuesBuilder.build()).build();
}
}
public abstract static class CustomChart {
private final String chartId;
protected CustomChart(String chartId) {
if (chartId == null) {
throw new IllegalArgumentException("chartId must not be null");
}
this.chartId = chartId;
}
public JsonObjectBuilder.JsonObject getRequestJsonObject(
BiConsumer<String, Throwable> errorLogger, boolean logErrors) {
JsonObjectBuilder builder = new JsonObjectBuilder();
builder.appendField("chartId", chartId);
try {
JsonObjectBuilder.JsonObject data = getChartData();
if (data == null) {
// If the data is null we don't send the chart.
return null;
}
builder.appendField("data", data);
} catch (Throwable t) {
if (logErrors) {
errorLogger.accept("Failed to get data for custom chart with id " + chartId, t);
}
return null;
}
return builder.build();
}
protected abstract JsonObjectBuilder.JsonObject getChartData() throws Exception;
}
public static class SingleLineChart extends CustomChart {
private final Callable<Integer> callable;
/**
* Class constructor.
*
* @param chartId The id of the chart.
* @param callable The callable which is used to request the chart data.
*/
public SingleLineChart(String chartId, Callable<Integer> callable) {
super(chartId);
this.callable = callable;
}
@Override
protected JsonObjectBuilder.JsonObject getChartData() throws Exception {
int value = callable.call();
if (value == 0) {
// Null = skip the chart
return null;
}
return new JsonObjectBuilder().appendField("value", value).build();
}
}
public static class SimplePie extends CustomChart {
private final Callable<String> callable;
/**
* Class constructor.
*
* @param chartId The id of the chart.
* @param callable The callable which is used to request the chart data.
*/
public SimplePie(String chartId, Callable<String> callable) {
super(chartId);
this.callable = callable;
}
@Override
protected JsonObjectBuilder.JsonObject getChartData() throws Exception {
String value = callable.call();
if (value == null || value.isEmpty()) {
// Null = skip the chart
return null;
}
return new JsonObjectBuilder().appendField("value", value).build();
}
}
public static class DrilldownPie extends CustomChart {
private final Callable<Map<String, Map<String, Integer>>> callable;
/**
* Class constructor.
*
* @param chartId The id of the chart.
* @param callable The callable which is used to request the chart data.
*/
public DrilldownPie(String chartId, Callable<Map<String, Map<String, Integer>>> callable) {
super(chartId);
this.callable = callable;
}
@Override
public JsonObjectBuilder.JsonObject getChartData() throws Exception {
JsonObjectBuilder valuesBuilder = new JsonObjectBuilder();
Map<String, Map<String, Integer>> map = callable.call();
if (map == null || map.isEmpty()) {
// Null = skip the chart
return null;
}
boolean reallyAllSkipped = true;
for (Map.Entry<String, Map<String, Integer>> entryValues : map.entrySet()) {
JsonObjectBuilder valueBuilder = new JsonObjectBuilder();
boolean allSkipped = true;
for (Map.Entry<String, Integer> valueEntry : map.get(entryValues.getKey()).entrySet()) {
valueBuilder.appendField(valueEntry.getKey(), valueEntry.getValue());
allSkipped = false;
}
if (!allSkipped) {
reallyAllSkipped = false;
valuesBuilder.appendField(entryValues.getKey(), valueBuilder.build());
}
}
if (reallyAllSkipped) {
// Null = skip the chart
return null;
}
return new JsonObjectBuilder().appendField("values", valuesBuilder.build()).build();
}
}
/**
* An extremely simple JSON builder.
*
* <p>While this class is neither feature-rich nor the most performant one, it's sufficient enough
* for its use-case.
*/
public static class JsonObjectBuilder {
private StringBuilder builder = new StringBuilder();
private boolean hasAtLeastOneField = false;
public JsonObjectBuilder() {
builder.append("{");
}
/**
* Appends a null field to the JSON.
*
* @param key The key of the field.
* @return A reference to this object.
*/
public JsonObjectBuilder appendNull(String key) {
appendFieldUnescaped(key, "null");
return this;
}
/**
* Appends a string field to the JSON.
*
* @param key The key of the field.
* @param value The value of the field.
* @return A reference to this object.
*/
public JsonObjectBuilder appendField(String key, String value) {
if (value == null) {
throw new IllegalArgumentException("JSON value must not be null");
}
appendFieldUnescaped(key, "\"" + escape(value) + "\"");
return this;
}
/**
* Appends an integer field to the JSON.
*
* @param key The key of the field.
* @param value The value of the field.
* @return A reference to this object.
*/
public JsonObjectBuilder appendField(String key, int value) {
appendFieldUnescaped(key, String.valueOf(value));
return this;
}
/**
* Appends an object to the JSON.
*
* @param key The key of the field.
* @param object The object.
* @return A reference to this object.
*/
public JsonObjectBuilder appendField(String key, JsonObject object) {
if (object == null) {
throw new IllegalArgumentException("JSON object must not be null");
}
appendFieldUnescaped(key, object.toString());
return this;
}
/**
* Appends a string array to the JSON.
*
* @param key The key of the field.
* @param values The string array.
* @return A reference to this object.
*/
public JsonObjectBuilder appendField(String key, String[] values) {
if (values == null) {
throw new IllegalArgumentException("JSON values must not be null");
}
String escapedValues =
Arrays.stream(values)
.map(value -> "\"" + escape(value) + "\"")
.collect(Collectors.joining(","));
appendFieldUnescaped(key, "[" + escapedValues + "]");
return this;
}
/**
* Appends an integer array to the JSON.
*
* @param key The key of the field.
* @param values The integer array.
* @return A reference to this object.
*/
public JsonObjectBuilder appendField(String key, int[] values) {
if (values == null) {
throw new IllegalArgumentException("JSON values must not be null");
}
String escapedValues =
Arrays.stream(values).mapToObj(String::valueOf).collect(Collectors.joining(","));
appendFieldUnescaped(key, "[" + escapedValues + "]");
return this;
}
/**
* Appends an object array to the JSON.
*
* @param key The key of the field.
* @param values The integer array.
* @return A reference to this object.
*/
public JsonObjectBuilder appendField(String key, JsonObject[] values) {
if (values == null) {
throw new IllegalArgumentException("JSON values must not be null");
}
String escapedValues =
Arrays.stream(values).map(JsonObject::toString).collect(Collectors.joining(","));
appendFieldUnescaped(key, "[" + escapedValues + "]");
return this;
}
/**
* Appends a field to the object.
*
* @param key The key of the field.
* @param escapedValue The escaped value of the field.
*/
private void appendFieldUnescaped(String key, String escapedValue) {
if (builder == null) {
throw new IllegalStateException("JSON has already been built");
}
if (key == null) {
throw new IllegalArgumentException("JSON key must not be null");
}
if (hasAtLeastOneField) {
builder.append(",");
}
builder.append("\"").append(escape(key)).append("\":").append(escapedValue);
hasAtLeastOneField = true;
}
/**
* Builds the JSON string and invalidates this builder.
*
* @return The built JSON string.
*/
public JsonObject build() {
if (builder == null) {
throw new IllegalStateException("JSON has already been built");
}
JsonObject object = new JsonObject(builder.append("}").toString());
builder = null;
return object;
}
/**
* Escapes the given string like stated in https://www.ietf.org/rfc/rfc4627.txt.
*
* <p>This method escapes only the necessary characters '"', '\'. and '\u0000' - '\u001F'.
* Compact escapes are not used (e.g., '\n' is escaped as "\u000a" and not as "\n").
*
* @param value The value to escape.
* @return The escaped value.
*/
private static String escape(String value) {
final StringBuilder builder = new StringBuilder();
for (int i = 0; i < value.length(); i++) {
char c = value.charAt(i);
if (c == '"') {
builder.append("\\\"");
} else if (c == '\\') {
builder.append("\\\\");
} else if (c <= '\u000F') {
builder.append("\\u000").append(Integer.toHexString(c));
} else if (c <= '\u001F') {
builder.append("\\u00").append(Integer.toHexString(c));
} else {
builder.append(c);
}
}
return builder.toString();
}
/**
* A super simple representation of a JSON object.
*
* <p>This class only exists to make methods of the {@link JsonObjectBuilder} type-safe and not
* allow a raw string inputs for methods like {@link JsonObjectBuilder#appendField(String,
* JsonObject)}.
*/
public static class JsonObject {
private final String value;
private JsonObject(String value) {
this.value = value;
}
@Override
public String toString() {
return value;
}
}
}
}

View File

@@ -2,9 +2,11 @@ package net.t2code.alias.Spigot;
import net.t2code.alias.Spigot.objects.AliasObject; import net.t2code.alias.Spigot.objects.AliasObject;
import net.t2code.alias.Spigot.objects.SubAliasObject; import net.t2code.alias.Spigot.objects.SubAliasObject;
import net.t2code.alias.Spigot.system.BukkitCommandWrap;
import net.t2code.alias.Spigot.system.BukkitCommandWrap_Useless;
import net.t2code.alias.Spigot.system.Load; import net.t2code.alias.Spigot.system.Load;
import net.t2code.alias.Util; import net.t2code.alias.Util;
import net.t2code.lib.Spigot.Lib.messages.T2CodeTemplate; import net.t2code.t2codelib.SPIGOT.api.messages.T2Ctemplate;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
@@ -23,6 +25,7 @@ public final class Main extends JavaPlugin {
private static List<String> autor; private static List<String> autor;
private static Main plugin; private static Main plugin;
public static HashMap<String, AliasObject> aliasHashMap = new HashMap<>(); public static HashMap<String, AliasObject> aliasHashMap = new HashMap<>();
public static HashMap<String, Boolean> loadAliasHashMap = new HashMap<>();
public static HashMap<String, SubAliasObject> subAliasHashMap = new HashMap<>(); public static HashMap<String, SubAliasObject> subAliasHashMap = new HashMap<>();
public static ArrayList<String> allAliases = new ArrayList<>(); public static ArrayList<String> allAliases = new ArrayList<>();
public static ArrayList<String> allSubAliases = new ArrayList<>(); public static ArrayList<String> allSubAliases = new ArrayList<>();
@@ -35,7 +38,13 @@ public final class Main extends JavaPlugin {
autor = plugin.getDescription().getAuthors(); autor = plugin.getDescription().getAuthors();
version = plugin.getDescription().getVersion(); version = plugin.getDescription().getVersion();
if (pluginNotFound("T2CodeLib", 96388, Util.getRequiredT2CodeLibVersion())) return; if (pluginNotFound("T2CodeLib", 96388, Util.getRequiredT2CodeLibVersion())) return;
Load.onLoad(Util.getPrefix(), autor, version, Util.getSpigot(), Util.getSpigotID(), Util.getDiscord(), Util.getBstatsID()); try {
Class.forName("com.mojang.brigadier.CommandDispatcher");
this.bukkitCommandWrap = new BukkitCommandWrap();
} catch (ClassNotFoundException | NoClassDefFoundError e) {
this.bukkitCommandWrap = new BukkitCommandWrap_Useless();
}
Load.onLoad(Util.getPrefix(), autor, version, Util.getSpigot(), Util.getDiscord(), Util.getBstatsID());
} }
@Override @Override
@@ -44,7 +53,7 @@ public final class Main extends JavaPlugin {
aliasHashMap.clear(); aliasHashMap.clear();
allAliases.clear(); allAliases.clear();
if (Bukkit.getPluginManager().getPlugin("T2CodeLib") == null) return; if (Bukkit.getPluginManager().getPlugin("T2CodeLib") == null) return;
T2CodeTemplate.onDisable(Util.getPrefix(), autor, version, Util.getSpigot(), Util.getDiscord()); T2Ctemplate.onDisable(Util.getPrefix(), autor, version, Util.getSpigot(), Util.getDiscord());
} }
public static Boolean pluginNotFound(String pl, Integer spigotID, String ver) { public static Boolean pluginNotFound(String pl, Integer spigotID, String ver) {
@@ -91,4 +100,10 @@ public final class Main extends JavaPlugin {
public static List<String> getAutor() { public static List<String> getAutor() {
return autor; return autor;
} }
private BukkitCommandWrap bukkitCommandWrap = null;
public BukkitCommandWrap getBukkitCommandWrap() {
return this.bukkitCommandWrap;
}
} }

View File

@@ -1,8 +1,7 @@
package net.t2code.alias.Spigot.cmdManagement; package net.t2code.alias.Spigot.cmdManagement;
import net.t2code.alias.Spigot.Main;
import net.t2code.alias.Spigot.config.languages.SelectMessages; import net.t2code.alias.Spigot.config.languages.SelectMessages;
import net.t2code.lib.Spigot.Lib.messages.send; import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@@ -10,7 +9,6 @@ import org.bukkit.command.TabCompleter;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@@ -25,7 +23,7 @@ public class AliasCmdExecuter implements CommandExecutor, TabCompleter {
// Command // Command
if (sender.hasPermission("t2code.alias.command.info")) { if (sender.hasPermission("t2code.alias.command.info")) {
Commands.info(sender); Commands.info(sender);
} else send.sender(sender, SelectMessages.noPermissionForCommand.replace("[cmd]", "/t2code-alias info") } else T2Csend.sender(sender, SelectMessages.noPermissionForCommand.replace("[cmd]", "/t2code-alias info")
.replace("[perm]", "t2code.alias.command.info")); .replace("[perm]", "t2code.alias.command.info"));
} else { } else {
switch (args[0].toLowerCase()) { switch (args[0].toLowerCase()) {
@@ -33,7 +31,7 @@ public class AliasCmdExecuter implements CommandExecutor, TabCompleter {
case "rl": case "rl":
if (sender.hasPermission("t2code.alias.command.reload") || sender.isOp()) { if (sender.hasPermission("t2code.alias.command.reload") || sender.isOp()) {
Commands.reload(sender); Commands.reload(sender);
} else send.sender(sender, SelectMessages.noPermissionForCommand.replace("[cmd]", "/t2code-alias reload") } else T2Csend.sender(sender, SelectMessages.noPermissionForCommand.replace("[cmd]", "/t2code-alias reload")
.replace("[perm]", "t2code.alias.command.reload")); .replace("[perm]", "t2code.alias.command.reload"));
break; break;
case "info": case "info":
@@ -41,7 +39,7 @@ public class AliasCmdExecuter implements CommandExecutor, TabCompleter {
case "version": case "version":
if (sender.hasPermission("t2code.alias.command.info")) { if (sender.hasPermission("t2code.alias.command.info")) {
Commands.info(sender); Commands.info(sender);
} else send.sender(sender, SelectMessages.noPermissionForCommand.replace("[cmd]", "/t2code-alias info") } else T2Csend.sender(sender, SelectMessages.noPermissionForCommand.replace("[cmd]", "/t2code-alias info")
.replace("[perm]", "t2code.alias.command.info")); .replace("[perm]", "t2code.alias.command.info"));
break; break;

View File

@@ -4,28 +4,25 @@ import net.t2code.alias.Spigot.Main;
import net.t2code.alias.Spigot.config.languages.SelectMessages; import net.t2code.alias.Spigot.config.languages.SelectMessages;
import net.t2code.alias.Spigot.system.Load; import net.t2code.alias.Spigot.system.Load;
import net.t2code.alias.Util; import net.t2code.alias.Util;
import net.t2code.lib.Spigot.Lib.messages.T2CodeTemplate; import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend;
import net.t2code.lib.Spigot.Lib.messages.send; import net.t2code.t2codelib.SPIGOT.api.messages.T2Ctemplate;
import net.t2code.lib.Spigot.Lib.update.UpdateAPI;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
public class Commands { public class Commands {
public static void info(CommandSender sender) { public static void info(CommandSender sender) {
T2CodeTemplate.sendInfo(sender, Util.getPrefix(), Util.getSpigot(), Util.getDiscord(), Main.getAutor(), Main.getVersion(), T2Ctemplate.sendInfo(sender, Main.getPlugin(), Util.getSpigotID(), Util.getDiscord(), Util.getInfoText());
UpdateAPI.PluginVersionen.get(Main.getPlugin().getName()).publicVersion);
} }
public static void reload(CommandSender sender) { public static void reload(CommandSender sender) {
if (sender instanceof Player) sender.sendMessage(SelectMessages.reloadStart); if (sender instanceof Player) T2Csend.player((Player) sender, SelectMessages.reloadStart);
send.console(Util.getPrefix() + "§8-------------------------------"); T2Csend.console(Util.getPrefix() + "§8-------------------------------");
send.console(Util.getPrefix() + " §6Plugin reload..."); T2Csend.console(Util.getPrefix() + " §6Plugin reload...");
send.console(Util.getPrefix() + "§8-------------------------------"); T2Csend.console(Util.getPrefix() + "§8-------------------------------");
Main.getPlugin().onEnable(); Load.loadReload();
if (sender instanceof Player) sender.sendMessage(SelectMessages.reloadEnd); if (sender instanceof Player) T2Csend.player((Player) sender, SelectMessages.reloadEnd);
send.console(Util.getPrefix() + "§8-------------------------------"); T2Csend.console(Util.getPrefix() + "§8-------------------------------");
send.console(Util.getPrefix() + " §2Plugin successfully reloaded."); T2Csend.console(Util.getPrefix() + " §2Plugin successfully reloaded.");
send.console(Util.getPrefix() + "§8-------------------------------"); T2Csend.console(Util.getPrefix() + "§8-------------------------------");
} }
} }

View File

@@ -1,17 +1,18 @@
package net.t2code.alias.Spigot.cmdManagement; package net.t2code.alias.Spigot.cmdManagement;
import net.t2code.alias.Spigot.Main;
import net.t2code.alias.Spigot.config.config.SelectConfig; import net.t2code.alias.Spigot.config.config.SelectConfig;
import net.t2code.alias.Spigot.config.languages.SelectMessages; import net.t2code.alias.Spigot.config.languages.SelectMessages;
import net.t2code.alias.Spigot.objects.AliasObject; import net.t2code.alias.Spigot.objects.AliasObject;
import net.t2code.alias.Spigot.objects.SubAliasObject; import net.t2code.alias.Spigot.objects.SubAliasObject;
import net.t2code.alias.Spigot.system.BCommandSenderReciver; import net.t2code.alias.Spigot.system.BCommandSenderReciver;
import net.t2code.alias.Util; import net.t2code.alias.Util;
import net.t2code.lib.Spigot.Lib.commands.Cmd; import net.t2code.t2codelib.SPIGOT.api.commands.T2Ccmd;
import net.t2code.lib.Spigot.Lib.eco.Eco; import net.t2code.t2codelib.SPIGOT.api.eco.T2Ceco;
import net.t2code.lib.Spigot.Lib.messages.send; import net.t2code.t2codelib.SPIGOT.api.messages.T2Creplace;
import net.t2code.lib.Spigot.Lib.plugins.PluginCheck; import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend;
import net.t2code.lib.Spigot.Lib.replace.Replace; import net.t2code.t2codelib.SPIGOT.api.plugins.T2CpluginCheck;
import net.t2code.t2codelib.SPIGOT.api.yaml.T2CLibConfig;
import net.t2code.t2codelib.SPIGOT.api.yaml.T2Cconfig;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@@ -28,7 +29,7 @@ public class ExecuteAlias {
if (aliasObject.adminEnable) { if (aliasObject.adminEnable) {
if (player.hasPermission(aliasObject.adminPermission)) { if (player.hasPermission(aliasObject.adminPermission)) {
if (aliasObject.adminCommandEnable) { if (aliasObject.adminCommandEnable) {
aliasAdminCommand(aliasObject, player, args); aliasAdminCommand(aliasObject, alias, player, args);
} }
if (aliasObject.adminMessageEnable) { if (aliasObject.adminMessageEnable) {
aliasAdminMessage(aliasObject, alias, player, args); aliasAdminMessage(aliasObject, alias, player, args);
@@ -43,22 +44,22 @@ public class ExecuteAlias {
if (aliasObject.permissionMSG == null || aliasObject.permissionMSG.equals("")) { if (aliasObject.permissionMSG == null || aliasObject.permissionMSG.equals("")) {
npmsg = SelectMessages.noPermissionForCommand; npmsg = SelectMessages.noPermissionForCommand;
} else npmsg = aliasObject.permissionMSG; } else npmsg = aliasObject.permissionMSG;
send.player(player, npmsg.replace("[cmd]", "/" + alias.toLowerCase()) T2Csend.player(player, npmsg.replace("[cmd]", "/" + alias.toLowerCase())
.replace("[perm]", aliasObject.permission.replace("<alias>", alias.toLowerCase())).replace("[alias]", alias)); .replace("[perm]", aliasObject.permission.replace("<alias>", alias.toLowerCase())).replace("[alias]", alias));
return; return;
} }
} }
if (aliasObject.costEnable) { if (aliasObject.costEnable) {
if (!(aliasObject.costAllowBypass && player.hasPermission("t2code.alias.buy.bypass"))) { if (!(aliasObject.costAllowBypass && player.hasPermission("t2code.alias.buy.bypass"))) {
if (!Eco.moneyRemove(prefix, player, aliasObject.costPrice)) { if (!T2Ceco.moneyRemove(prefix, player, aliasObject.costPrice)) {
send.player(player, SelectMessages.noMoney); T2Csend.player(player, SelectMessages.noMoney);
return; return;
} }
if (SelectConfig.buyMessage) send.player(player, SelectMessages.buy.replace("[price]", aliasObject.costPrice.toString())); if (SelectConfig.getBuyMessage()) T2Csend.player(player, SelectMessages.buy.replace("[price]", aliasObject.costPrice.toString()));
} }
} }
if (aliasObject.commandEnable) { if (aliasObject.commandEnable) {
aliasCommand(aliasObject, player, args); aliasCommand(aliasObject, alias, player, args);
} }
if (aliasObject.messageEnable) { if (aliasObject.messageEnable) {
aliasMessage(aliasObject, alias, player, args); aliasMessage(aliasObject, alias, player, args);
@@ -67,7 +68,7 @@ public class ExecuteAlias {
protected static void subAliasPlayer(CommandSender sender, SubAliasObject aliasObject, String alias, String[] args) { protected static void subAliasPlayer(CommandSender sender, SubAliasObject aliasObject, String alias, String[] args) {
if (!aliasObject.subAliasEnable) { if (!aliasObject.subAliasEnable) {
send.sender(sender, SelectMessages.aliasDisabled); T2Csend.sender(sender, SelectMessages.aliasDisabled);
return; return;
} }
@@ -77,7 +78,7 @@ public class ExecuteAlias {
if (aliasObject.adminEnable) { if (aliasObject.adminEnable) {
if (player.hasPermission(aliasObject.adminPermission)) { if (player.hasPermission(aliasObject.adminPermission)) {
if (aliasObject.adminCommandEnable) { if (aliasObject.adminCommandEnable) {
subAliasAdminCommand(aliasObject, player, args); subAliasAdminCommand(aliasObject,alias, player, args);
} }
if (aliasObject.adminMessageEnable) { if (aliasObject.adminMessageEnable) {
subAliasAdminMessage(aliasObject, alias, player, args); subAliasAdminMessage(aliasObject, alias, player, args);
@@ -92,18 +93,18 @@ public class ExecuteAlias {
if (aliasObject.permissionMSG == null || aliasObject.permissionMSG.equals("")) { if (aliasObject.permissionMSG == null || aliasObject.permissionMSG.equals("")) {
npmsg = SelectMessages.noPermissionForCommand; npmsg = SelectMessages.noPermissionForCommand;
} else npmsg = aliasObject.permissionMSG; } else npmsg = aliasObject.permissionMSG;
send.player(player, npmsg.replace("[cmd]", "/" + alias.toLowerCase()) T2Csend.player(player, npmsg.replace("[cmd]", "/" + alias.toLowerCase())
.replace("[perm]", aliasObject.permission.replace("<alias>", alias.toLowerCase())).replace("[alias]", alias)); .replace("[perm]", aliasObject.permission.replace("<alias>", alias.toLowerCase())).replace("[alias]", alias));
return; return;
} }
} }
if (aliasObject.costEnable) { if (aliasObject.costEnable) {
if (!(aliasObject.costAllowBypass && player.hasPermission("t2code.alias.buy.bypass"))) { if (!(aliasObject.costAllowBypass && player.hasPermission("t2code.alias.buy.bypass"))) {
if (!Eco.moneyRemove(prefix, player, aliasObject.costPrice)) { if (!T2Ceco.moneyRemove(prefix, player, aliasObject.costPrice)) {
send.player(player, SelectMessages.noMoney); T2Csend.player(player, SelectMessages.noMoney);
return; return;
} }
if (SelectConfig.buyMessage) send.player(player, SelectMessages.buy.replace("[price]", aliasObject.costPrice.toString())); if (SelectConfig.getBuyMessage()) T2Csend.player(player, SelectMessages.buy.replace("[price]", aliasObject.costPrice.toString()));
} }
} }
if (aliasObject.commandEnable) { if (aliasObject.commandEnable) {
@@ -114,8 +115,8 @@ public class ExecuteAlias {
} }
} else { } else {
if (aliasObject.consoleEnable) { if (aliasObject.consoleEnable) {
subAliasConsole(aliasObject, sender, args); subAliasConsole(aliasObject,alias, sender, args);
} else send.sender(sender, SelectMessages.onlyForPlayer); } else T2Csend.sender(sender, SelectMessages.onlyForPlayer);
} }
} }
@@ -123,25 +124,25 @@ public class ExecuteAlias {
if (alias.consoleCommandEnable) { if (alias.consoleCommandEnable) {
for (String cmd : alias.consoleCommands) { for (String cmd : alias.consoleCommands) {
if (alias.consoleBungeeCommand) { if (alias.consoleBungeeCommand) {
if (SelectConfig.Bungee) { if (T2CLibConfig.getBungee()) {
BCommandSenderReciver.sendToBungee(sender, cmd, true); BCommandSenderReciver.sendToBungee(sender, cmd, true);
} else { } else {
send.console(Util.getPrefix() + " §4To use bungee commands, enable the Bungee option in the config."); T2Csend.console(Util.getPrefix() + " §4To use bungee commands, enable the Bungee option in the config.");
send.sender(sender, Util.getPrefix() + " §4To use bungee commands, enable the Bungee option in the config."); T2Csend.sender(sender, Util.getPrefix() + " §4To use bungee commands, enable the Bungee option in the config.");
} }
} else { } else {
Cmd.console(cmd); T2Ccmd.console(cmd);
} }
} }
} }
if (alias.consoleMessageEnable) { if (alias.consoleMessageEnable) {
for (String msg : alias.consoleMessages) { for (String msg : alias.consoleMessages) {
send.console(Replace.replace(prefix, msg)); T2Csend.console(T2Creplace.replace(prefix, msg));
} }
} }
} }
private static void subAliasConsole(SubAliasObject alias, CommandSender sender, String[] args) { private static void subAliasConsole(SubAliasObject aliasObject, String alias, CommandSender sender, String[] args) {
String targetSt = "[target]"; String targetSt = "[target]";
try { try {
List<String> results = Arrays.stream(args).filter(a -> a.contains("-p:")).collect(Collectors.toList()); List<String> results = Arrays.stream(args).filter(a -> a.contains("-p:")).collect(Collectors.toList());
@@ -149,28 +150,29 @@ public class ExecuteAlias {
} catch (Exception ignored) { } catch (Exception ignored) {
} }
if (alias.consoleCommandEnable) { if (aliasObject.consoleCommandEnable) {
for (String cmd : alias.consoleCommands) { for (String cmd : aliasObject.consoleCommands) {
if (alias.consoleBungeeCommand) { String replace = cmd.replace("[target]", targetSt).replace("[alias]", alias);
if (SelectConfig.Bungee) { if (aliasObject.consoleBungeeCommand) {
BCommandSenderReciver.sendToBungee(sender, cmd.replace("[target]", targetSt), true); if (T2CLibConfig.getBungee()) {
BCommandSenderReciver.sendToBungee(sender, replace, true);
} else { } else {
send.console(Util.getPrefix() + " §4To use bungee commands, enable the Bungee option in the config."); T2Csend.console(Util.getPrefix() + " §4To use bungee commands, enable the Bungee option in the config.");
send.sender(sender, Util.getPrefix() + " §4To use bungee commands, enable the Bungee option in the config."); T2Csend.sender(sender, Util.getPrefix() + " §4To use bungee commands, enable the Bungee option in the config.");
} }
} else { } else {
Cmd.console(cmd.replace("[target]", targetSt)); T2Ccmd.console(replace);
} }
} }
} }
if (alias.consoleMessageEnable) { if (aliasObject.consoleMessageEnable) {
for (String msg : alias.consoleMessages) { for (String msg : aliasObject.consoleMessages) {
send.console(Replace.replace(prefix, msg)); T2Csend.console(T2Creplace.replace(prefix, msg));
} }
} }
} }
private static void aliasAdminCommand(AliasObject alias, Player player, String[] args) { private static void aliasAdminCommand(AliasObject aliasObject, String alias, Player player, String[] args) {
String targetSt = "[target]"; String targetSt = "[target]";
try { try {
List<String> results = Arrays.stream(args).filter(a -> a.contains("-p:")).collect(Collectors.toList()); List<String> results = Arrays.stream(args).filter(a -> a.contains("-p:")).collect(Collectors.toList());
@@ -178,26 +180,26 @@ public class ExecuteAlias {
} catch (Exception ignored) { } catch (Exception ignored) {
} }
for (String cmd : alias.adminCommands) { for (String cmd : aliasObject.adminCommands) {
if (alias.adminBungeeCommand) { if (aliasObject.adminBungeeCommand) {
if (SelectConfig.Bungee) { if (T2CLibConfig.getBungee()) {
BCommandSenderReciver.sendToBungee(player, cmd.replace("[player]", player.getName()).replace("[target]", targetSt), alias.adminCommandAsConsole); BCommandSenderReciver.sendToBungee(player, cmd.replace("[player]", player.getName()).replace("[target]", targetSt).replace("[alias]", alias), aliasObject.adminCommandAsConsole);
} else { } else {
send.console(Util.getPrefix() + " §4To use bungee commands, enable the Bungee option in the config."); T2Csend.console(Util.getPrefix() + " §4To use bungee commands, enable the Bungee option in the config.");
send.player(player, Util.getPrefix() + " §4To use bungee commands, enable the Bungee option in the config."); T2Csend.player(player, Util.getPrefix() + " §4To use bungee commands, enable the Bungee option in the config.");
} }
} else { } else {
if (alias.adminCommandAsConsole) { if (aliasObject.adminCommandAsConsole) {
Cmd.console(cmd.replace("[player]", player.getName()).replace("[target]", targetSt)); T2Ccmd.console(cmd.replace("[player]", player.getName()).replace("[target]", targetSt).replace("[alias]", alias));
} else { } else {
Cmd.player(player, cmd.replace("[player]", player.getName()).replace("[target]", targetSt)); T2Ccmd.player(player, cmd.replace("[player]", player.getName()).replace("[target]", targetSt).replace("[alias]", alias));
} }
} }
} }
} }
private static void subAliasAdminCommand(SubAliasObject alias, Player player, String[] args) { private static void subAliasAdminCommand(SubAliasObject aliasObject, String alias, Player player, String[] args) {
String targetSt = "[target]"; String targetSt = "[target]";
try { try {
List<String> results = Arrays.stream(args).filter(a -> a.contains("-p:")).collect(Collectors.toList()); List<String> results = Arrays.stream(args).filter(a -> a.contains("-p:")).collect(Collectors.toList());
@@ -205,20 +207,20 @@ public class ExecuteAlias {
} catch (Exception ignored) { } catch (Exception ignored) {
} }
for (String cmd : alias.adminCommands) { for (String cmd : aliasObject.adminCommands) {
if (alias.adminBungeeCommand) { if (aliasObject.adminBungeeCommand) {
if (SelectConfig.Bungee) { if (T2CLibConfig.getBungee()) {
BCommandSenderReciver.sendToBungee(player, cmd.replace("[player]", player.getName()).replace("[target]", targetSt), alias.adminCommandAsConsole); BCommandSenderReciver.sendToBungee(player, cmd.replace("[player]", player.getName()).replace("[target]", targetSt).replace("[alias]", alias), aliasObject.adminCommandAsConsole);
} else { } else {
send.console(Util.getPrefix() + " §4To use bungee commands, enable the Bungee option in the config."); T2Csend.console(Util.getPrefix() + " §4To use bungee commands, enable the Bungee option in the config.");
send.player(player, Util.getPrefix() + " §4To use bungee commands, enable the Bungee option in the config."); T2Csend.player(player, Util.getPrefix() + " §4To use bungee commands, enable the Bungee option in the config.");
} }
} else { } else {
if (alias.adminCommandAsConsole) { if (aliasObject.adminCommandAsConsole) {
Cmd.console(cmd.replace("[player]", player.getName()).replace("[target]", targetSt)); T2Ccmd.console(cmd.replace("[player]", player.getName()).replace("[target]", targetSt).replace("[alias]", alias));
} else { } else {
Cmd.player(player, cmd.replace("[player]", player.getName()).replace("[target]", targetSt)); T2Ccmd.player(player, cmd.replace("[player]", player.getName()).replace("[target]", targetSt).replace("[alias]", alias));
} }
} }
} }
@@ -234,12 +236,12 @@ public class ExecuteAlias {
} }
for (String msg : aliasObject.adminMessages) { for (String msg : aliasObject.adminMessages) {
String text; String text;
if (PluginCheck.papi()) { if (T2CpluginCheck.papi()) {
text = Replace.replace(prefix, player, replacePlayer(msg, player)).replace("[target]", targetSt).replace("[alias]", alias); text = T2Creplace.replace(prefix, player, replacePlayer(msg, player)).replace("[target]", targetSt).replace("[alias]", alias);
} else { } else {
text = Replace.replace(prefix, replacePlayer(msg, player)).replace("[target]", targetSt).replace("[alias]", alias); text = T2Creplace.replace(prefix, replacePlayer(msg, player)).replace("[target]", targetSt).replace("[alias]", alias);
} }
send.player(player, text); T2Csend.player(player, text);
} }
} }
@@ -253,16 +255,16 @@ public class ExecuteAlias {
} }
for (String msg : subAliasObject.adminMessages) { for (String msg : subAliasObject.adminMessages) {
String text; String text;
if (PluginCheck.papi()) { if (T2CpluginCheck.papi()) {
text = Replace.replace(prefix, player, replacePlayer(msg, player)).replace("[target]", targetSt).replace("[alias]", alias); text = T2Creplace.replace(prefix, player, replacePlayer(msg, player)).replace("[target]", targetSt).replace("[alias]", alias);
} else { } else {
text = Replace.replace(prefix, replacePlayer(msg, player)).replace("[target]", targetSt).replace("[alias]", alias); text = T2Creplace.replace(prefix, replacePlayer(msg, player)).replace("[target]", targetSt).replace("[alias]", alias);
} }
send.player(player, text); T2Csend.player(player, text);
} }
} }
private static void aliasCommand(AliasObject alias, Player player, String[] args) { private static void aliasCommand(AliasObject aliasObject, String alias, Player player, String[] args) {
String targetSt = "[target]"; String targetSt = "[target]";
try { try {
List<String> results = Arrays.stream(args).filter(a -> a.contains("-p:")).collect(Collectors.toList()); List<String> results = Arrays.stream(args).filter(a -> a.contains("-p:")).collect(Collectors.toList());
@@ -270,20 +272,19 @@ public class ExecuteAlias {
} catch (Exception ignored) { } catch (Exception ignored) {
} }
for (String cmd : alias.command) { for (String cmd : aliasObject.command) {
if (alias.bungeeCommand) { if (aliasObject.bungeeCommand) {
if (SelectConfig.Bungee) { if (T2CLibConfig.getBungee()) {
BCommandSenderReciver.sendToBungee(player, cmd.replace("[player]", player.getName()).replace("[target]", targetSt), alias.commandAsConsole); BCommandSenderReciver.sendToBungee(player, cmd.replace("[player]", player.getName()).replace("[target]", targetSt).replace("[alias]", alias), aliasObject.commandAsConsole);
} else { } else {
send.console(Util.getPrefix() + " §4To use bungee commands, enable the Bungee option in the config."); T2Csend.console(Util.getPrefix() + " §4To use bungee commands, enable the Bungee option in the config.");
send.player(player, Util.getPrefix() + " §4To use bungee commands, enable the Bungee option in the config."); T2Csend.player(player, Util.getPrefix() + " §4To use bungee commands, enable the Bungee option in the config.");
} }
} else { } else {
if (alias.commandAsConsole) { if (aliasObject.commandAsConsole) {
Cmd.console(cmd.replace("[player]", player.getName()).replace("[target]", targetSt)); T2Ccmd.console(cmd.replace("[player]", player.getName()).replace("[target]", targetSt).replace("[alias]", alias));
} else { } else {
Cmd.player(player, cmd.replace("[player]", player.getName()).replace("[target]", targetSt)); T2Ccmd.player(player, cmd.replace("[player]", player.getName()).replace("[target]", targetSt).replace("[alias]", alias));
} }
} }
} }
@@ -299,18 +300,18 @@ public class ExecuteAlias {
} }
for (String cmd : alias.command) { for (String cmd : alias.command) {
if (alias.bungeeCommand) { if (alias.bungeeCommand) {
if (SelectConfig.Bungee) { if (T2CLibConfig.getBungee()) {
BCommandSenderReciver.sendToBungee(player, cmd.replace("[player]", player.getName()).replace("[target]", targetSt), alias.commandAsConsole); BCommandSenderReciver.sendToBungee(player, cmd.replace("[player]", player.getName()).replace("[target]", targetSt), alias.commandAsConsole);
} else { } else {
send.console(Util.getPrefix() + " §4To use bungee commands, enable the Bungee option in the config."); T2Csend.console(Util.getPrefix() + " §4To use bungee commands, enable the Bungee option in the config.");
send.player(player, Util.getPrefix() + " §4To use bungee commands, enable the Bungee option in the config."); T2Csend.player(player, Util.getPrefix() + " §4To use bungee commands, enable the Bungee option in the config.");
} }
} else { } else {
if (alias.commandAsConsole) { if (alias.commandAsConsole) {
Cmd.console(cmd.replace("[player]", player.getName()).replace("[target]", targetSt)); T2Ccmd.console(cmd.replace("[player]", player.getName()).replace("[target]", targetSt));
} else { } else {
Cmd.player(player, cmd.replace("[player]", player.getName()).replace("[target]", targetSt)); T2Ccmd.player(player, cmd.replace("[player]", player.getName()).replace("[target]", targetSt));
} }
} }
} }
@@ -328,12 +329,12 @@ public class ExecuteAlias {
for (String msg : aliasObject.messages) { for (String msg : aliasObject.messages) {
String text; String text;
if (PluginCheck.papi()) { if (T2CpluginCheck.papi()) {
text = Replace.replace(prefix, player, replacePlayer(msg, player)).replace("[target]", targetSt).replace("[alias]", alias); text = T2Creplace.replace(prefix, player, replacePlayer(msg, player)).replace("[target]", targetSt).replace("[alias]", alias);
} else { } else {
text = Replace.replace(prefix, replacePlayer(msg, player)).replace("[target]", targetSt).replace("[alias]", alias); text = T2Creplace.replace(prefix, replacePlayer(msg, player)).replace("[target]", targetSt).replace("[alias]", alias);
} }
send.player(player, text); T2Csend.player(player, text);
} }
} }
@@ -347,12 +348,12 @@ public class ExecuteAlias {
} }
for (String msg : subAliasObject.messages) { for (String msg : subAliasObject.messages) {
String text; String text;
if (PluginCheck.papi()) { if (T2CpluginCheck.papi()) {
text = Replace.replace(prefix, player, replacePlayer(msg, player)).replace("[target]", targetSt).replace("[alias]", alias); text = T2Creplace.replace(prefix, player, replacePlayer(msg, player)).replace("[target]", targetSt).replace("[alias]", alias);
} else { } else {
text = Replace.replace(prefix, replacePlayer(msg, player)).replace("[target]", targetSt).replace("[alias]", alias); text = T2Creplace.replace(prefix, replacePlayer(msg, player)).replace("[target]", targetSt).replace("[alias]", alias);
} }
send.player(player, text); T2Csend.player(player, text);
} }
} }

View File

@@ -5,19 +5,17 @@ import net.t2code.alias.Spigot.config.languages.SelectMessages;
import net.t2code.alias.Spigot.objects.AliasObject; import net.t2code.alias.Spigot.objects.AliasObject;
import net.t2code.alias.Spigot.objects.SubAliasObject; import net.t2code.alias.Spigot.objects.SubAliasObject;
import net.t2code.alias.Util; import net.t2code.alias.Util;
import net.t2code.lib.Spigot.Lib.messages.send; import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter; import org.bukkit.command.TabCompleter;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import java.lang.reflect.Array;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
public class RegisterCommands extends Command implements TabCompleter { public class RegisterCommands extends Command {
private String alias; private String alias;
private String prefix = Util.getPrefix(); private String prefix = Util.getPrefix();
@@ -31,11 +29,11 @@ public class RegisterCommands extends Command implements TabCompleter {
AliasObject alias = Main.aliasHashMap.get(this.alias); AliasObject alias = Main.aliasHashMap.get(this.alias);
if (alias == null) { if (alias == null) {
send.error(Main.getPlugin(), "The alias " + this.alias + " does not exist."); T2Csend.error(Main.getPlugin(), "The alias " + this.alias + " does not exist.");
return false; return false;
} }
if (!alias.aliasEnable) { if (!alias.aliasEnable) {
send.sender(sender, SelectMessages.aliasDisabled); T2Csend.sender(sender, SelectMessages.aliasDisabled);
return true; return true;
} }
if (args.length == 0 || args.length == 1 && args[0].contains("-p:")) { if (args.length == 0 || args.length == 1 && args[0].contains("-p:")) {
@@ -44,7 +42,7 @@ public class RegisterCommands extends Command implements TabCompleter {
} else { } else {
if (alias.consoleEnable) { if (alias.consoleEnable) {
ExecuteAlias.aliasConsole(alias, sender, prefix); ExecuteAlias.aliasConsole(alias, sender, prefix);
} else send.sender(sender, SelectMessages.onlyForPlayer); } else T2Csend.sender(sender, SelectMessages.onlyForPlayer);
} }
} else { } else {
if (!Main.allForSubAliases.contains(this.alias)) { if (!Main.allForSubAliases.contains(this.alias)) {
@@ -61,15 +59,9 @@ public class RegisterCommands extends Command implements TabCompleter {
} }
} }
} }
send.sender(sender, "<color:#ffbd17><hover:show_text:'<dark_red>TODO <blue>DEV</blue></dark_red>'>Diesen Befehl gibt es nicht</hover></color>"); T2Csend.sender(sender, SelectMessages.noSubCommand);
//todo
} }
return true; return true;
} }
@Override
public List<String> onTabComplete(CommandSender commandSender, Command command, String s, String[] strings) {
return Collections.singletonList("hallodepp");
}
} }

View File

@@ -2,11 +2,10 @@ package net.t2code.alias.Spigot.cmdManagement;
import net.t2code.alias.Spigot.Main; import net.t2code.alias.Spigot.Main;
import net.t2code.alias.Spigot.objects.SubAliasObject; import net.t2code.alias.Spigot.objects.SubAliasObject;
import net.t2code.lib.Spigot.Lib.commands.Tab; import net.t2code.t2codelib.SPIGOT.api.commands.T2Ctab;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.server.TabCompleteEvent; import org.bukkit.event.server.TabCompleteEvent;
import org.bukkit.plugin.Plugin;
import java.util.*; import java.util.*;
@@ -17,11 +16,10 @@ public class TabEvent implements Listener {
public void onTab(TabCompleteEvent e) { public void onTab(TabCompleteEvent e) {
String buffer = e.getBuffer(); String buffer = e.getBuffer();
String[] imp = buffer.replace("/", "").split(" "); String[] imp = buffer.replace("/", "").split(" ");
List<String> list = new ArrayList<>(Collections.emptyList());
if (!Main.allAliases.contains(imp[0]) || !Main.allForSubAliases.contains(imp[0])){ if (!Main.allAliases.contains(imp[0]) || !Main.allForSubAliases.contains(imp[0])){
e.setCompletions(list);
return; return;
} }
List<String> list = new ArrayList<>(Collections.emptyList());
arg1.clear(); arg1.clear();
for (String sals : Main.allSubAliases) { for (String sals : Main.allSubAliases) {
@@ -38,7 +36,7 @@ public class TabEvent implements Listener {
int arg = aliasObject.subAliasArg; int arg = aliasObject.subAliasArg;
if (args.length - 1 == arg) { if (args.length - 1 == arg) {
for (String command : aliasObject.subAliasList) { for (String command : aliasObject.subAliasList) {
if (Tab.hasPermission(e.getSender(), arg1.get(command)) && Tab.passend(command, args[arg])) { if (T2Ctab.hasPermission(e.getSender(), arg1.get(command)) && T2Ctab.passend(command, args[arg])) {
list.add(command); list.add(command);
} }
} }

View File

@@ -1,7 +1,7 @@
package net.t2code.alias.Spigot.config.alias; package net.t2code.alias.Spigot.config.alias;
import net.t2code.alias.Spigot.Main; import net.t2code.alias.Spigot.Main;
import net.t2code.lib.Spigot.Lib.messages.send; import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
import java.io.File; import java.io.File;
@@ -24,13 +24,13 @@ public class AliasConfigConverter {
e.printStackTrace(); e.printStackTrace();
} }
send.error(Main.getPlugin(), "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); T2Csend.error(Main.getPlugin(), "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
send.error(Main.getPlugin(), ""); T2Csend.error(Main.getPlugin(), "");
send.warning(Main.getPlugin(), "The " + config_gui.getName() + " file is converted to the new config format."); T2Csend.warning(Main.getPlugin(), "The " + config_gui.getName() + " file is converted to the new config format.");
send.warning(Main.getPlugin(), "The alias is no longer the filename, this is now adjustable in the file under 'Alias.AliasList'!"); T2Csend.warning(Main.getPlugin(), "The alias is no longer the filename, this is now adjustable in the file under 'Alias.AliasList'!");
send.warning(Main.getPlugin(), "This allows a function to have multiple alias commands without creating multiple files!"); T2Csend.warning(Main.getPlugin(), "This allows a function to have multiple alias commands without creating multiple files!");
send.error(Main.getPlugin(), ""); T2Csend.error(Main.getPlugin(), "");
send.error(Main.getPlugin(), "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); T2Csend.error(Main.getPlugin(), "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
} }

View File

@@ -2,8 +2,8 @@ package net.t2code.alias.Spigot.config.alias;
import net.t2code.alias.Spigot.Main; import net.t2code.alias.Spigot.Main;
import net.t2code.alias.Util; import net.t2code.alias.Util;
import net.t2code.lib.Spigot.Lib.messages.send; import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend;
import net.t2code.lib.Spigot.Lib.yamlConfiguration.Config; import net.t2code.t2codelib.SPIGOT.api.yaml.T2Cconfig;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
import java.io.File; import java.io.File;
@@ -15,52 +15,52 @@ public class CreateExampleAliasConfig {
public static void configCreate() { public static void configCreate() {
long long_ = System.currentTimeMillis(); long long_ = System.currentTimeMillis();
send.console(Util.getPrefix() + " §4Alias/aliasexample.yml are created..."); T2Csend.console(Util.getPrefix() + " §4Alias/aliasexample.yml are created...");
File config = new File(Main.getPath(), "Alias/aliasexample.yml"); File config = new File(Main.getPath(), "Alias/aliasexample.yml");
YamlConfiguration yamlConfiguration = YamlConfiguration.loadConfiguration(config); YamlConfiguration yamlConfiguration = YamlConfiguration.loadConfiguration(config);
Config.set("Alias.Enable", true, yamlConfiguration); T2Cconfig.set("Alias.Enable", true, yamlConfiguration);
Config.set("Alias.AliasList", Arrays.asList("aliasexample1"),yamlConfiguration); T2Cconfig.set("Alias.AliasList", Arrays.asList("aliasexample1"),yamlConfiguration);
Config.set("Alias.Permission.Necessary", true, yamlConfiguration); T2Cconfig.set("Alias.Permission.Necessary", true, yamlConfiguration);
Config.set("Alias.Permission.Permission", "t2code.alias.use.<alias>", yamlConfiguration); T2Cconfig.set("Alias.Permission.Permission", "t2code.alias.use.<alias>", yamlConfiguration);
Config.set("Alias.Permission.CustomNoPermissionMSG", "", yamlConfiguration); T2Cconfig.set("Alias.Permission.CustomNoPermissionMSG", "", yamlConfiguration);
Config.set("Alias.Cost.Enable", false,yamlConfiguration); T2Cconfig.set("Alias.Cost.Enable", false,yamlConfiguration);
Config.set("Alias.Cost.Price", 0.0,yamlConfiguration); T2Cconfig.set("Alias.Cost.Price", 0.0,yamlConfiguration);
Config.set("Alias.Cost.AllowByPass", true,yamlConfiguration); T2Cconfig.set("Alias.Cost.AllowByPass", true,yamlConfiguration);
Config.set("Alias.Command.Enable", true, yamlConfiguration); T2Cconfig.set("Alias.Command.Enable", true, yamlConfiguration);
Config.set("Alias.Command.CommandAsConsole", true, yamlConfiguration); T2Cconfig.set("Alias.Command.CommandAsConsole", true, yamlConfiguration);
Config.set("Alias.Command.BungeeCommand", false, yamlConfiguration); T2Cconfig.set("Alias.Command.BungeeCommand", false, yamlConfiguration);
Config.set("Alias.Command.Commands", Collections.singletonList("say hi"), yamlConfiguration); T2Cconfig.set("Alias.Command.Commands", Arrays.asList("say hi"), yamlConfiguration);
Config.set("Alias.Message.Enable", false, yamlConfiguration); T2Cconfig.set("Alias.Message.Enable", false, yamlConfiguration);
Config.set("Alias.Message.Messages", Collections.emptyList(), yamlConfiguration); T2Cconfig.set("Alias.Message.Messages", Arrays.asList(), yamlConfiguration);
Config.set("Alias.Admin.Enable", true, yamlConfiguration); T2Cconfig.set("Alias.Admin.Enable", false, yamlConfiguration);
Config.set("Alias.Admin.Permission", "t2code.alias.admin", yamlConfiguration); T2Cconfig.set("Alias.Admin.Permission", "t2code.alias.admin", yamlConfiguration);
Config.set("Alias.Admin.Command.Enable", true, yamlConfiguration); T2Cconfig.set("Alias.Admin.Command.Enable", true, yamlConfiguration);
Config.set("Alias.Admin.Command.CommandAsConsole", true, yamlConfiguration); T2Cconfig.set("Alias.Admin.Command.CommandAsConsole", true, yamlConfiguration);
Config.set("Alias.Admin.Command.BungeeCommand", false, yamlConfiguration); T2Cconfig.set("Alias.Admin.Command.BungeeCommand", false, yamlConfiguration);
Config.set("Alias.Admin.Command.Commands", Collections.singletonList("say hi"), yamlConfiguration); T2Cconfig.set("Alias.Admin.Command.Commands", Collections.singletonList("say hi"), yamlConfiguration);
Config.set("Alias.Admin.Message.Enable", false, yamlConfiguration); T2Cconfig.set("Alias.Admin.Message.Enable", false, yamlConfiguration);
Config.set("Alias.Admin.Message.Messages", Collections.emptyList(), yamlConfiguration); T2Cconfig.set("Alias.Admin.Message.Messages", Arrays.asList(), yamlConfiguration);
Config.set("Alias.Console.Enable", false, yamlConfiguration); T2Cconfig.set("Alias.Console.Enable", false, yamlConfiguration);
Config.set("Alias.Console.Command.Enable", false, yamlConfiguration); T2Cconfig.set("Alias.Console.Command.Enable", false, yamlConfiguration);
Config.set("Alias.Console.Command.BungeeCommand", false, yamlConfiguration); T2Cconfig.set("Alias.Console.Command.BungeeCommand", false, yamlConfiguration);
Config.set("Alias.Console.Command.Commands", Collections.emptyList(), yamlConfiguration); T2Cconfig.set("Alias.Console.Command.Commands", Arrays.asList(), yamlConfiguration);
Config.set("Alias.Console.Message.Enable", false, yamlConfiguration); T2Cconfig.set("Alias.Console.Message.Enable", false, yamlConfiguration);
Config.set("Alias.Console.Message.Messages", Collections.emptyList(), yamlConfiguration); T2Cconfig.set("Alias.Console.Message.Messages", Arrays.asList(), yamlConfiguration);
try { try {
yamlConfiguration.save(config); yamlConfiguration.save(config);
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
send.console(Util.getPrefix() + " §2Alias/aliasexample.yml were successfully created." + " §7- §e" + (System.currentTimeMillis() - long_) + "ms"); T2Csend.console(Util.getPrefix() + " §2Alias/aliasexample.yml were successfully created." + " §7- §e" + (System.currentTimeMillis() - long_) + "ms");
} }
} }

View File

@@ -2,14 +2,16 @@ package net.t2code.alias.Spigot.config.alias;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import net.t2code.alias.Spigot.Main; import net.t2code.alias.Spigot.Main;
import net.t2code.alias.Spigot.config.config.SelectConfig;
import net.t2code.alias.Spigot.system.AliasRegister; import net.t2code.alias.Spigot.system.AliasRegister;
import net.t2code.alias.Spigot.objects.AliasObject; import net.t2code.alias.Spigot.objects.AliasObject;
import net.t2code.alias.Spigot.system.BukkitCommandWrap_Useless;
import net.t2code.alias.Util; import net.t2code.alias.Util;
import net.t2code.lib.Spigot.Lib.messages.send; import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend;
import net.t2code.t2codelib.SPIGOT.api.messages.T2Ctemplate;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import java.io.File; import java.io.File;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
@@ -24,6 +26,7 @@ public class SelectAlias {
Main.aliasHashMap.clear(); Main.aliasHashMap.clear();
Main.allAliases.clear(); Main.allAliases.clear();
File f = new File(Main.getPath() + "/Alias/"); File f = new File(Main.getPath() + "/Alias/");
File[] fileArray = f.listFiles(); File[] fileArray = f.listFiles();
for (File config_gui : fileArray) { for (File config_gui : fileArray) {
@@ -99,9 +102,10 @@ public class SelectAlias {
for (String al : aliasList) { for (String al : aliasList) {
Main.aliasHashMap.put(al, alias); Main.aliasHashMap.put(al, alias);
} }
T2Csend.console(Prefix + " §aAlias file §e" + config_gui.getName() + " §awas loaded");
} }
send.console(Prefix + " §aAlias file §e" + config_gui.getName() + " §awas loaded");
} }
T2Ctemplate.onLoadSeparateStroke(Util.getPrefix());
AliasRegister.onRegister(); AliasRegister.onRegister();
} }

View File

@@ -2,8 +2,8 @@ package net.t2code.alias.Spigot.config.config;
import net.t2code.alias.Spigot.Main; import net.t2code.alias.Spigot.Main;
import net.t2code.alias.Util; import net.t2code.alias.Util;
import net.t2code.lib.Spigot.Lib.messages.send; import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend;
import net.t2code.lib.Spigot.Lib.yamlConfiguration.Config; import net.t2code.t2codelib.SPIGOT.api.yaml.T2Cconfig;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
import java.io.File; import java.io.File;
@@ -15,25 +15,56 @@ public class CreateConfig {
public static void configCreate() { public static void configCreate() {
long long_ = System.currentTimeMillis(); long long_ = System.currentTimeMillis();
if (new File(Main.getPath(), "config.yml").exists()) { if (new File(Main.getPath(), "config.yml").exists()) {
if (Main.getPlugin().getConfig().getBoolean("Plugin.Debug")) send.console(Util.getPrefix() + " §5DEBUG: §6" + " §4config.yml are created / updated..."); if (Main.getPlugin().getConfig().getBoolean("Plugin.Debug")) T2Csend.console(Util.getPrefix() + " §5DEBUG: §6" + " §4config.yml are created / updated...");
} else send.console(Util.getPrefix() + " §4config.yml are created..."); } else T2Csend.console(Util.getPrefix() + " §4config.yml are created...");
File config = new File(Main.getPath(), "config.yml"); File config = new File(Main.getPath(), "config.yml");
YamlConfiguration yamlConfiguration = YamlConfiguration.loadConfiguration(config); YamlConfiguration yamlConfiguration = YamlConfiguration.loadConfiguration(config);
Config.set("Plugin.language", "english", yamlConfiguration);
Config.set("BungeeCord.Enable", false, yamlConfiguration); if (yamlConfiguration.contains("ConfigVersion") && yamlConfiguration.getInt("ConfigVersion") < 4) {
Config.set("BungeeCord.ThisServer", "server", yamlConfiguration); convert();
return;
}
Config.set("Buy.Message", true, yamlConfiguration); T2Cconfig.set("plugin.language", "english", yamlConfiguration);
Config.set("SubAlias.TabComplete", true, yamlConfiguration); T2Cconfig.set("plugin.updateCheck.onJoin", true, yamlConfiguration);
T2Cconfig.set("plugin.updateCheck.seePreReleaseUpdates", true, yamlConfiguration);
T2Cconfig.set("plugin.updateCheck.timeInterval", 60, yamlConfiguration);
T2Cconfig.set("buy.message", true, yamlConfiguration);
T2Cconfig.set("subAlias.tabComplete", true, yamlConfiguration);
try { try {
yamlConfiguration.save(config); yamlConfiguration.save(config);
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
send.console(Util.getPrefix() + " §2config.yml were successfully created / updated." + " §7- §e" + (System.currentTimeMillis() - long_) + "ms"); T2Csend.console(Util.getPrefix() + " §2config.yml were successfully created / updated." + " §7- §e" + (System.currentTimeMillis() - long_) + "ms");
}
private static void convert() {
File configOld = new File(Main.getPath(), "config.yml");
configOld.renameTo(new File(Main.getPath(), "configV3.yml"));
YamlConfiguration yamlConfigurationOld = YamlConfiguration.loadConfiguration(configOld);
File config = new File(Main.getPath(), "config.yml");
YamlConfiguration yamlConfiguration = YamlConfiguration.loadConfiguration(config);
T2Cconfig.set("plugin.language", yamlConfigurationOld.getString("Plugin.language"), yamlConfiguration);
T2Cconfig.set("plugin.updateCheck.onJoin", yamlConfigurationOld.getBoolean("Plugin.updateCheck.onJoin"), yamlConfiguration);
T2Cconfig.set("plugin.updateCheck.seePreReleaseUpdates", yamlConfigurationOld.getBoolean("Plugin.updateCheck.seePreReleaseUpdates"), yamlConfiguration);
T2Cconfig.set("plugin.updateCheck.timeInterval", yamlConfigurationOld.getInt("Plugin.updateCheck.timeInterval"), yamlConfiguration);
T2Cconfig.set("buy.message", yamlConfigurationOld.getBoolean("Buy.Message"), yamlConfiguration);
T2Cconfig.set("subAlias.tabComplete", yamlConfigurationOld.getBoolean("SubAlias.TabComplete"), yamlConfiguration);
try {
yamlConfiguration.save(config);
} catch (IOException e) {
e.printStackTrace();
}
configCreate();
} }
} }

View File

@@ -1,44 +1,78 @@
package net.t2code.alias.Spigot.config.config; package net.t2code.alias.Spigot.config.config;
import net.t2code.alias.Spigot.Main; import net.t2code.alias.Spigot.Main;
import net.t2code.t2codelib.SPIGOT.api.yaml.T2Cconfig;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
public class SelectConfig { public class SelectConfig {
private static Integer ConfigVersion = 3; private static Integer ConfigVersion = 4;
public static Integer isConfigVersion; private static Integer isConfigVersion;
public static Boolean UpdateCheckOnJoin; private static Boolean updateCheckOnJoin;
public static String language; private static Boolean updateCheckSeePreReleaseUpdates;
public static Boolean Bungee; private static Integer updateCheckTimeInterval;
public static String thisServer; private static String language;
public static Boolean buyMessage; private static Boolean buyMessage;
public static Boolean subAliasTab; private static Boolean subAliasTab;
public static void onSelect() { public static void onSelect() {
File config = new File(Main.getPath(), "config.yml"); File config = new File(Main.getPath(), "config.yml");
YamlConfiguration yamlConfiguration = YamlConfiguration.loadConfiguration(config); YamlConfiguration yamlConfiguration = YamlConfiguration.loadConfiguration(config);
isConfigVersion = yamlConfiguration.getInt("ConfigVersion"); isConfigVersion = yamlConfiguration.getInt("configVersion");
UpdateCheckOnJoin = yamlConfiguration.getBoolean("Plugin.UpdateCheckOnJoin"); updateCheckOnJoin = yamlConfiguration.getBoolean("plugin.updateCheck.onJoin");
language = yamlConfiguration.getString("Plugin.language"); updateCheckSeePreReleaseUpdates = yamlConfiguration.getBoolean("plugin.updateCheck.seePreReleaseUpdates");
Bungee = yamlConfiguration.getBoolean("BungeeCord.Enable"); updateCheckTimeInterval = yamlConfiguration.getInt("plugin.updateCheck.timeInterval");
thisServer = yamlConfiguration.getString("BungeeCord.ThisServer");
buyMessage = yamlConfiguration.getBoolean("Buy.Message"); language = yamlConfiguration.getString("plugin.language");
subAliasTab = yamlConfiguration.getBoolean("SubAlias.TabComplete");
buyMessage = yamlConfiguration.getBoolean("buy.message");
subAliasTab = yamlConfiguration.getBoolean("subAlias.tabComplete");
} }
public static void setConfigVersion() { public static void setConfigVersion() {
File config = new File(Main.getPath(), "config.yml"); File config = new File(Main.getPath(), "config.yml");
YamlConfiguration yamlConfiguration = YamlConfiguration.loadConfiguration(config); YamlConfiguration yamlConfiguration = YamlConfiguration.loadConfiguration(config);
yamlConfiguration.set("ConfigVersion", ConfigVersion); yamlConfiguration.set("configVersion", ConfigVersion);
try { try {
yamlConfiguration.save(config); yamlConfiguration.save(config);
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
public static Integer getConfigVersion() {
return ConfigVersion;
}
public static Integer getIsConfigVersion() {
return isConfigVersion;
}
public static Boolean getUpdateCheckOnJoin() {
return updateCheckOnJoin;
}
public static Boolean getUpdateCheckSeePreReleaseUpdates() {
return updateCheckSeePreReleaseUpdates;
}
public static Integer getUpdateCheckTimeInterval() {
return updateCheckTimeInterval;
}
public static String getLanguage() {
return language;
}
public static Boolean getBuyMessage() {
return buyMessage;
}
public static Boolean getSubAliasTab() {
return subAliasTab;
}
} }

View File

@@ -2,10 +2,9 @@ package net.t2code.alias.Spigot.config.languages;
import net.t2code.alias.Spigot.Main; import net.t2code.alias.Spigot.Main;
import net.t2code.alias.Util; import net.t2code.alias.Util;
import net.t2code.lib.Spigot.Lib.messages.send; import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend;
import net.t2code.lib.Spigot.Lib.yamlConfiguration.Config; import net.t2code.t2codelib.SPIGOT.api.yaml.T2Cconfig;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.plugin.Plugin;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@@ -13,7 +12,7 @@ import java.io.IOException;
public class LanguagesCreate { public class LanguagesCreate {
public static void langCreate() { public static void langCreate() {
send.debug(Main.getPlugin(),"§4Language files are created / updated..."); T2Csend.debug(Main.getPlugin(),"§4Language files are created / updated...");
long long_ = System.currentTimeMillis(); long long_ = System.currentTimeMillis();
/** /**
@@ -25,19 +24,20 @@ public class LanguagesCreate {
File messagesEN = new File(Main.getPath(), "languages/english_messages.yml"); File messagesEN = new File(Main.getPath(), "languages/english_messages.yml");
YamlConfiguration yamlConfigurationEN = YamlConfiguration.loadConfiguration(messagesEN); YamlConfiguration yamlConfigurationEN = YamlConfiguration.loadConfiguration(messagesEN);
Config.set("Plugin.OnlyForPlayer", MSG.EN_OnlyForPlayer, yamlConfigurationEN); T2Cconfig.set("Plugin.OnlyForPlayer", MSG.EN_OnlyForPlayer, yamlConfigurationEN);
Config.set("Plugin.AliasDisabled", MSG.EN_Disabled, yamlConfigurationEN); T2Cconfig.set("Plugin.AliasDisabled", MSG.EN_Disabled, yamlConfigurationEN);
Config.set("Plugin.Reload.Start", MSG.EN_ReloadStart, yamlConfigurationEN); T2Cconfig.set("Plugin.Reload.Start", MSG.EN_ReloadStart, yamlConfigurationEN);
Config.set("Plugin.Reload.End", MSG.EN_ReloadEnd, yamlConfigurationEN); T2Cconfig.set("Plugin.Reload.End", MSG.EN_ReloadEnd, yamlConfigurationEN);
Config.set("Plugin.ForCommand", MSG.EN_NoPermissionForCommand, yamlConfigurationEN); T2Cconfig.set("Plugin.ForCommand", MSG.EN_NoPermissionForCommand, yamlConfigurationEN);
T2Cconfig.set("Plugin.NoSubCommand", MSG.EN_NoSubCommand, yamlConfigurationEN);
Config. set("Cost.Buy", MSG.EN_Buy, yamlConfigurationEN); T2Cconfig. set("Cost.Buy", MSG.EN_Buy, yamlConfigurationEN);
Config.set("Cost.NoMoney", MSG.EN_NoMoney, yamlConfigurationEN); T2Cconfig.set("Cost.NoMoney", MSG.EN_NoMoney, yamlConfigurationEN);
try { try {
yamlConfigurationEN.save(messagesEN); yamlConfigurationEN.save(messagesEN);
} catch (IOException e) { } catch (IOException e) {
send.warning(Main.getPlugin(),e.getMessage()); T2Csend.warning(Main.getPlugin(),e.getMessage());
e.printStackTrace(); e.printStackTrace();
} }
@@ -51,24 +51,25 @@ public class LanguagesCreate {
File messagesDE = new File(Main.getPath(), "languages/german_messages.yml"); File messagesDE = new File(Main.getPath(), "languages/german_messages.yml");
YamlConfiguration yamlConfigurationDE = YamlConfiguration.loadConfiguration(messagesDE); YamlConfiguration yamlConfigurationDE = YamlConfiguration.loadConfiguration(messagesDE);
Config.set("Plugin.OnlyForPlayer", MSG.DE_OnlyForPlayer, yamlConfigurationDE); T2Cconfig.set("Plugin.OnlyForPlayer", MSG.DE_OnlyForPlayer, yamlConfigurationDE);
Config.set("Plugin.AliasDisabled", MSG.DE_Disabled, yamlConfigurationDE); T2Cconfig.set("Plugin.AliasDisabled", MSG.DE_Disabled, yamlConfigurationDE);
Config.set("Plugin.Reload.Start", MSG.DE_ReloadStart, yamlConfigurationDE); T2Cconfig.set("Plugin.Reload.Start", MSG.DE_ReloadStart, yamlConfigurationDE);
Config.set("Plugin.Reload.End", MSG.DE_ReloadEnd, yamlConfigurationDE); T2Cconfig.set("Plugin.Reload.End", MSG.DE_ReloadEnd, yamlConfigurationDE);
Config.set("Plugin.ForCommand", MSG.DE_NoPermissionForCommand, yamlConfigurationDE); T2Cconfig.set("Plugin.ForCommand", MSG.DE_NoPermissionForCommand, yamlConfigurationDE);
T2Cconfig.set("Plugin.NoSubCommand", MSG.DE_NoSubCommand, yamlConfigurationDE);
Config.set("Cost.Buy", MSG.DE_Buy, yamlConfigurationDE); T2Cconfig.set("Cost.Buy", MSG.DE_Buy, yamlConfigurationDE);
Config.set("Cost.NoMoney", MSG.DE_NoMoney, yamlConfigurationDE); T2Cconfig.set("Cost.NoMoney", MSG.DE_NoMoney, yamlConfigurationDE);
try { try {
yamlConfigurationDE.save(messagesDE); yamlConfigurationDE.save(messagesDE);
} catch (IOException e) { } catch (IOException e) {
send.warning(Main.getPlugin(),e.getMessage()); T2Csend.warning(Main.getPlugin(),e.getMessage());
e.printStackTrace(); e.printStackTrace();
} }
send.console(Util.getPrefix() + " §2Language files were successfully created / updated." + " §7- §e" + (System.currentTimeMillis() - long_) + "ms"); T2Csend.console(Util.getPrefix() + " §2Language files were successfully created / updated." + " §7- §e" + (System.currentTimeMillis() - long_) + "ms");
} }
} }

View File

@@ -26,6 +26,7 @@ public class MSG {
public static String EN_Buy = "[prefix] <dark_green>You have paid <gold>[price]</gold> for this command.</dark_green>"; public static String EN_Buy = "[prefix] <dark_green>You have paid <gold>[price]</gold> for this command.</dark_green>";
public static String EN_NoMoney = "[prefix] <red>You don't have enough money for this command!</red>"; public static String EN_NoMoney = "[prefix] <red>You don't have enough money for this command!</red>";
public static String EN_NoSubCommand = "[prefix] <red>This command does not exist!</red>";
// DE // DE
@@ -41,4 +42,6 @@ public class MSG {
public static String DE_Buy = "[prefix] <dark_green>Du hast f[ue]r diesen Command <gold>[price]</gold> bezahlt.</dark_green>"; public static String DE_Buy = "[prefix] <dark_green>Du hast f[ue]r diesen Command <gold>[price]</gold> bezahlt.</dark_green>";
public static String DE_NoMoney = "[prefix] <red>Du hast nicht gen[ue]gend Geld für diesen Command!</red>"; public static String DE_NoMoney = "[prefix] <red>Du hast nicht gen[ue]gend Geld für diesen Command!</red>";
public static String DE_NoSubCommand = "[prefix] <red>Diesen Befehl gibt es nicht!</red>";
} }

View File

@@ -3,9 +3,8 @@ package net.t2code.alias.Spigot.config.languages;
import net.t2code.alias.Spigot.Main; import net.t2code.alias.Spigot.Main;
import net.t2code.alias.Spigot.config.config.SelectConfig; import net.t2code.alias.Spigot.config.config.SelectConfig;
import net.t2code.alias.Util; import net.t2code.alias.Util;
import net.t2code.lib.Spigot.Lib.messages.send; import net.t2code.t2codelib.SPIGOT.api.messages.T2Creplace;
import net.t2code.lib.Spigot.Lib.replace.Replace; import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend;
import net.t2code.lib.Spigot.Lib.yamlConfiguration.Config;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
import java.io.File; import java.io.File;
@@ -18,6 +17,7 @@ public class SelectMessages {
public static String reloadEnd; public static String reloadEnd;
public static String noPermissionForCommand; public static String noPermissionForCommand;
public static String noSubCommand;
public static String aliasDisabled; public static String aliasDisabled;
public static String buy; public static String buy;
@@ -26,22 +26,22 @@ public class SelectMessages {
public static void onSelect(String Prefix) { public static void onSelect(String Prefix) {
send.debug(Main.getPlugin(), "§4Select language..."); T2Csend.debug(Main.getPlugin(), "§4Select language...");
long long_ = System.currentTimeMillis(); long long_ = System.currentTimeMillis();
File msg; File msg;
msg = new File(Main.getPath(), "languages/" + SelectConfig.language + "_messages.yml"); msg = new File(Main.getPath(), "languages/" + SelectConfig.getLanguage() + "_messages.yml");
if (!msg.isFile()) { if (!msg.isFile()) {
send.console(Prefix); T2Csend.console(Prefix);
send.console(Prefix + " §4!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); T2Csend.console(Prefix + " §4!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
send.console(Prefix + " §4The selected §c" + SelectConfig.language + " §4language file was not found."); T2Csend.console(Prefix + " §4The selected §c" + SelectConfig.getLanguage() + " §4language file was not found.");
send.console(Prefix + " §6The default language §eEnglish §6is used!"); T2Csend.console(Prefix + " §6The default language §eEnglish §6is used!");
send.console(Prefix + " §4!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); T2Csend.console(Prefix + " §4!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
send.console(Prefix); T2Csend.console(Prefix);
msg = new File(Main.getPath(), "languages/" + "english_messages.yml"); msg = new File(Main.getPath(), "languages/" + "english_messages.yml");
selectMSG = "english"; selectMSG = "english";
} else selectMSG = SelectConfig.language; } else selectMSG = SelectConfig.getLanguage();
YamlConfiguration yamlConfiguration = YamlConfiguration.loadConfiguration(msg); YamlConfiguration yamlConfiguration = YamlConfiguration.loadConfiguration(msg);
if (yamlConfiguration.get("Plugin.Prefix") != null) { if (yamlConfiguration.get("Plugin.Prefix") != null) {
@@ -52,13 +52,14 @@ public class SelectMessages {
reloadStart = replace(yamlConfiguration.getString("Plugin.Reload.Start")); reloadStart = replace(yamlConfiguration.getString("Plugin.Reload.Start"));
reloadEnd = replace(yamlConfiguration.getString("Plugin.Reload.End")); reloadEnd = replace(yamlConfiguration.getString("Plugin.Reload.End"));
noPermissionForCommand = replace(yamlConfiguration.getString("Plugin.ForCommand")); noPermissionForCommand = replace(yamlConfiguration.getString("Plugin.ForCommand"));
noSubCommand = replace(yamlConfiguration.getString("Plugin.NoSubCommand"));
buy = replace(yamlConfiguration.getString("Cost.Buy")); buy = replace(yamlConfiguration.getString("Cost.Buy"));
noMoney = replace(yamlConfiguration.getString("Cost.NoMoney")); noMoney = replace(yamlConfiguration.getString("Cost.NoMoney"));
send.console(Prefix + " §2Language successfully selected to: §6" + selectMSG + " §7- §e" + (System.currentTimeMillis() - long_) + "ms"); T2Csend.console(Prefix + " §2Language successfully selected to: §6" + selectMSG + " §7- §e" + (System.currentTimeMillis() - long_) + "ms");
} }
private static String replace(String text) { private static String replace(String text) {
return Replace.replace(Util.getPrefix(), text); return T2Creplace.replace(Util.getPrefix(), text);
} }
} }

View File

@@ -2,8 +2,8 @@ package net.t2code.alias.Spigot.config.subAlias;
import net.t2code.alias.Spigot.Main; import net.t2code.alias.Spigot.Main;
import net.t2code.alias.Util; import net.t2code.alias.Util;
import net.t2code.lib.Spigot.Lib.messages.send; import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend;
import net.t2code.lib.Spigot.Lib.yamlConfiguration.Config; import net.t2code.t2codelib.SPIGOT.api.yaml.T2Cconfig;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
import java.io.File; import java.io.File;
@@ -15,53 +15,53 @@ public class CreateExampleSubAliasConfig {
public static void configCreate() { public static void configCreate() {
long long_ = System.currentTimeMillis(); long long_ = System.currentTimeMillis();
send.console(Util.getPrefix() + " §4SubAlias/aliasexample.yml are created..."); T2Csend.console(Util.getPrefix() + " §4SubAlias/aliasexample.yml are created...");
File config = new File(Main.getPath(), "SubAlias/aliasexample.yml"); File config = new File(Main.getPath(), "SubAlias/aliasexample.yml");
YamlConfiguration yamlConfiguration = YamlConfiguration.loadConfiguration(config); YamlConfiguration yamlConfiguration = YamlConfiguration.loadConfiguration(config);
Config.set("SubAlias.Enable", true, yamlConfiguration); T2Cconfig.set("SubAlias.Enable", true, yamlConfiguration);
Config.set("SubAlias.SubAliasList", Arrays.asList("test"),yamlConfiguration); T2Cconfig.set("SubAlias.SubAliasList", Arrays.asList("test"), yamlConfiguration);
Config.set("SubAlias.SubAliasFor", "aliasexample1",yamlConfiguration); T2Cconfig.set("SubAlias.SubAliasFor", "aliasexample1", yamlConfiguration);
Config.set("SubAlias.Permission.Necessary", true, yamlConfiguration); T2Cconfig.set("SubAlias.Permission.Necessary", true, yamlConfiguration);
Config.set("SubAlias.Permission.Permission", "t2code.alias.use.subalias.<alias>", yamlConfiguration); T2Cconfig.set("SubAlias.Permission.Permission", "t2code.alias.use.subalias.<alias>", yamlConfiguration);
Config.set("SubAlias.Permission.CustomNoPermissionMSG", "", yamlConfiguration); T2Cconfig.set("SubAlias.Permission.CustomNoPermissionMSG", "", yamlConfiguration);
Config.set("SubAlias.Cost.Enable", false,yamlConfiguration); T2Cconfig.set("SubAlias.Cost.Enable", false, yamlConfiguration);
Config.set("SubAlias.Cost.Price", 0.0,yamlConfiguration); T2Cconfig.set("SubAlias.Cost.Price", 0.0, yamlConfiguration);
Config.set("SubAlias.Cost.AllowByPass", true,yamlConfiguration); T2Cconfig.set("SubAlias.Cost.AllowByPass", true, yamlConfiguration);
Config.set("SubAlias.Command.Enable", true, yamlConfiguration); T2Cconfig.set("SubAlias.Command.Enable", true, yamlConfiguration);
Config.set("SubAlias.Command.CommandAsConsole", true, yamlConfiguration); T2Cconfig.set("SubAlias.Command.CommandAsConsole", true, yamlConfiguration);
Config.set("SubAlias.Command.BungeeCommand", false, yamlConfiguration); T2Cconfig.set("SubAlias.Command.BungeeCommand", false, yamlConfiguration);
Config.set("SubAlias.Command.Commands", Collections.singletonList("say hi"), yamlConfiguration); T2Cconfig.set("SubAlias.Command.Commands", Arrays.asList("say hi"), yamlConfiguration);
Config.set("SubAlias.Message.Enable", false, yamlConfiguration); T2Cconfig.set("SubAlias.Message.Enable", false, yamlConfiguration);
Config.set("SubAlias.Message.Messages", Collections.emptyList(), yamlConfiguration); T2Cconfig.set("SubAlias.Message.Messages",Arrays.asList(), yamlConfiguration);
Config.set("SubAlias.Admin.Enable", true, yamlConfiguration); T2Cconfig.set("SubAlias.Admin.Enable", false, yamlConfiguration);
Config.set("SubAlias.Admin.Permission", "t2code.alias.admin", yamlConfiguration); T2Cconfig.set("SubAlias.Admin.Permission", "t2code.alias.admin", yamlConfiguration);
Config.set("SubAlias.Admin.Command.Enable", true, yamlConfiguration); T2Cconfig.set("SubAlias.Admin.Command.Enable", true, yamlConfiguration);
Config.set("SubAlias.Admin.Command.CommandAsConsole", true, yamlConfiguration); T2Cconfig.set("SubAlias.Admin.Command.CommandAsConsole", true, yamlConfiguration);
Config.set("SubAlias.Admin.Command.BungeeCommand", false, yamlConfiguration); T2Cconfig.set("SubAlias.Admin.Command.BungeeCommand", false, yamlConfiguration);
Config.set("SubAlias.Admin.Command.Commands", Collections.singletonList("say subalias hi"), yamlConfiguration); T2Cconfig.set("SubAlias.Admin.Command.Commands", Arrays.asList("say subalias hi"), yamlConfiguration);
Config.set("SubAlias.Admin.Message.Enable", false, yamlConfiguration); T2Cconfig.set("SubAlias.Admin.Message.Enable", false, yamlConfiguration);
Config.set("SubAlias.Admin.Message.Messages", Collections.emptyList(), yamlConfiguration); T2Cconfig.set("SubAlias.Admin.Message.Messages",Arrays.asList(), yamlConfiguration);
Config.set("SubAlias.Console.Enable", false, yamlConfiguration); T2Cconfig.set("SubAlias.Console.Enable", false, yamlConfiguration);
Config.set("SubAlias.Console.Command.Enable", false, yamlConfiguration); T2Cconfig.set("SubAlias.Console.Command.Enable", false, yamlConfiguration);
Config.set("SubAlias.Console.Command.BungeeCommand", false, yamlConfiguration); T2Cconfig.set("SubAlias.Console.Command.BungeeCommand", false, yamlConfiguration);
Config.set("SubAlias.Console.Command.Commands", Collections.emptyList(), yamlConfiguration); T2Cconfig.set("SubAlias.Console.Command.Commands",Arrays.asList(), yamlConfiguration);
Config.set("SubAlias.Console.Message.Enable", false, yamlConfiguration); T2Cconfig.set("SubAlias.Console.Message.Enable", false, yamlConfiguration);
Config.set("SubAlias.Console.Message.Messages", Collections.emptyList(), yamlConfiguration); T2Cconfig.set("SubAlias.Console.Message.Messages",Arrays.asList(), yamlConfiguration);
try { try {
yamlConfiguration.save(config); yamlConfiguration.save(config);
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
send.console(Util.getPrefix() + " §2Alias/aliasexample.yml were successfully created." + " §7- §e" + (System.currentTimeMillis() - long_) + "ms"); T2Csend.console(Util.getPrefix() + " §2Alias/aliasexample.yml were successfully created." + " §7- §e" + (System.currentTimeMillis() - long_) + "ms");
} }
} }

View File

@@ -5,7 +5,7 @@ import net.t2code.alias.Spigot.Main;
import net.t2code.alias.Spigot.config.alias.AliasConfigConverter; import net.t2code.alias.Spigot.config.alias.AliasConfigConverter;
import net.t2code.alias.Spigot.objects.SubAliasObject; import net.t2code.alias.Spigot.objects.SubAliasObject;
import net.t2code.alias.Util; import net.t2code.alias.Util;
import net.t2code.lib.Spigot.Lib.messages.send; import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
@@ -51,7 +51,7 @@ public class SelectSubAlias {
if (subAliasFor != null) { if (subAliasFor != null) {
String[] imp = subAliasFor.split(" "); String[] imp = subAliasFor.split(" ");
if (!Main.allAliases.contains(imp[0])) { if (!Main.allAliases.contains(imp[0])) {
send.error(Main.getPlugin(), "Den Alias " + imp[0] + " in der Datei " + config_gui.getName() + " existiert nicht!"); T2Csend.error(Main.getPlugin(), "The alias " + imp[0] + " in the file " + config_gui.getName() + " does not exist!");
} }
String[] args = subAliasFor.split(" "); String[] args = subAliasFor.split(" ");
subAliasArg = args.length - 1; subAliasArg = args.length - 1;
@@ -104,7 +104,7 @@ public class SelectSubAlias {
} }
Main.allSubAliases.addAll(subAliasList); Main.allSubAliases.addAll(subAliasList);
Main.allForSubAliases.add(subAliasFor); Main.allForSubAliases.add(subAliasFor);
send.console(Prefix + " §aSubAlias file §e" + config_gui.getName() + " §awas loaded"); T2Csend.console(Prefix + " §aSubAlias file §e" + config_gui.getName() + " §awas loaded");
} }
} }
} }

View File

@@ -1,32 +1,90 @@
package net.t2code.alias.Spigot.system; package net.t2code.alias.Spigot.system;
import net.t2code.alias.Spigot.Main; import net.t2code.alias.Spigot.Main;
import net.t2code.alias.Spigot.cmdManagement.AliasCmdExecuter;
import net.t2code.alias.Spigot.cmdManagement.RegisterCommands; import net.t2code.alias.Spigot.cmdManagement.RegisterCommands;
import net.t2code.lib.Spigot.Lib.messages.send; import net.t2code.alias.Util;
import net.t2code.lib.Spigot.Lib.minecraftVersion.NMSVersion; import net.t2code.t2codelib.SPIGOT.api.messages.T2Csend;
import net.t2code.t2codelib.SPIGOT.api.minecraftVersion.T2CmcVersion;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandMap; import org.bukkit.command.CommandMap;
import org.bukkit.plugin.Plugin; import org.bukkit.command.SimpleCommandMap;
import org.bukkit.entity.Player;
import org.bukkit.plugin.SimplePluginManager;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.Map;
import java.util.Objects;
public class AliasRegister { public class AliasRegister {
public static void onRegister() { public static void onRegister() {
for (String alias : Main.allAliases) { try {
if (Main.aliasHashMap.get(alias) != null) { final Field bukkitCommandMap = Bukkit.getServer().getClass().getDeclaredField("commandMap");
if (alias.equals(" ")) continue; bukkitCommandMap.setAccessible(true);
if (Main.aliasHashMap.get(alias).aliasEnable) { CommandMap commandMap = (CommandMap) bukkitCommandMap.get(Bukkit.getServer());
try { // onUnRegister(bukkitCommandMap);
final Field bukkitCommandMap = Bukkit.getServer().getClass().getDeclaredField("commandMap"); for (String alias : Main.allAliases) {
bukkitCommandMap.setAccessible(true); register(alias, commandMap);
CommandMap commandMap = (CommandMap) bukkitCommandMap.get(Bukkit.getServer()); // wrap(alias, commandMap);
commandMap.register(alias, new RegisterCommands(alias)); }
} catch (Exception e) {
e.printStackTrace();
} if (!(T2CmcVersion.isMc1_8() || T2CmcVersion.isMc1_9() || T2CmcVersion.isMc1_10() || T2CmcVersion.isMc1_11() || T2CmcVersion.isMc1_12())) {
} Main.getPlugin().getBukkitCommandWrap().sync();
} else send.warning(Main.getPlugin(), " §4AliasHashmap is null! - " + alias); if (Bukkit.getOnlinePlayers().size() >= 1)
for (Player player : Bukkit.getOnlinePlayers()) player.updateCommands();
}
} catch (Exception e) {
e.printStackTrace();
} }
} }
//public static void onUnRegister(Field bukkitCommandMap) throws IllegalAccessException {
//
// // if (Main.allAliases != null && !Main.allAliases.isEmpty()) {
// // if (!(Main.getPlugin().getBukkitCommandWrap() instanceof BukkitCommandWrap_Useless)) {
// // for (String alias : Main.allAliases) {
// // T2Csend.debugmsg(Main.getPlugin(),"uload: " + alias);
// // Main.getPlugin().
// // Main.getPlugin().getBukkitCommandWrap().unwrap(alias);
// // }
// // Main.getPlugin().getBukkitCommandWrap().sync();
// // if (Bukkit.getOnlinePlayers().size() >= 1)
// // for (Player player : Bukkit.getOnlinePlayers()) player.updateCommands();
// // }
// // }
// // commandMap.clearCommands();
//
//
// for (Map.Entry<String, Boolean> entry : Main.loadAliasHashMap.entrySet()) {
// ((SimpleCommandMap) bukkitCommandMap.get(simplePluginManager)).getCommand(entry.getKey()).unregister(bukkitCommandMap.get(Bukkit.getServer()));
//
//
// if (entry.getValue())
// Main.getPlugin().getBukkitCommandWrap().unwrap(entry.getKey());
// }
//
// Main.getPlugin().getBukkitCommandWrap().sync();
// if (Bukkit.getOnlinePlayers().size() >= 1)
// for (Player player : Bukkit.getOnlinePlayers()) player.updateCommands();
// Main.loadAliasHashMap.clear();
//
//}
private static void register(String alias, CommandMap commandMap) {
if (Main.aliasHashMap.get(alias) != null) {
if (alias.equals(" ")) return;
if (Main.aliasHashMap.get(alias).aliasEnable) {
commandMap.register(alias, new RegisterCommands(alias));
T2Csend.console(Util.getPrefix() + " §aAlias §e" + alias + " §aregister");
Main.loadAliasHashMap.put(alias, true);
} else Main.loadAliasHashMap.put(alias, false);
} else T2Csend.warning(Main.getPlugin(), " §4AliasHashmap is null! - " + alias);
}
private static void wrap(String alias, CommandMap commandMap) {
Command cmd = commandMap.getCommand(alias);
Main.getPlugin().getBukkitCommandWrap().wrap(cmd, alias);
}
} }

View File

@@ -1,7 +1,7 @@
package net.t2code.alias.Spigot.system; package net.t2code.alias.Spigot.system;
import net.t2code.alias.Spigot.Main; import net.t2code.alias.Spigot.Main;
import net.t2code.lib.Spigot.Lib.register.Register; import net.t2code.t2codelib.SPIGOT.api.register.T2Cregister;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
public class AliasRegisterPermissions { public class AliasRegisterPermissions {
@@ -9,7 +9,7 @@ public class AliasRegisterPermissions {
public static void onPermRegister() { public static void onPermRegister() {
for (String alias : Main.allAliases){ for (String alias : Main.allAliases){
if (Bukkit.getPluginManager().getPermission("t2code.alias.use." + alias.toLowerCase()) == null) { if (Bukkit.getPluginManager().getPermission("t2code.alias.use." + alias.toLowerCase()) == null) {
Register.permission("t2code.alias.use." + alias.toLowerCase(), Main.getPlugin()); T2Cregister.permission("t2code.alias.use." + alias.toLowerCase(), Main.getPlugin());
} }
} }
} }

View File

@@ -30,10 +30,10 @@ public class BCommandSenderReciver {
} }
if (sender instanceof Player) { if (sender instanceof Player) {
Player player = (Player) sender; Player player = (Player) sender;
player.sendPluginMessage(Main.getPlugin(), "t2codealias:bungee", stream.toByteArray()); player.sendPluginMessage(Main.getPlugin(), "t2c:bcmd", stream.toByteArray());
}else { }else {
for(Player player : Bukkit.getOnlinePlayers()){ for(Player player : Bukkit.getOnlinePlayers()){
player.sendPluginMessage(Main.getPlugin(), "t2codealias:bungee", stream.toByteArray()); player.sendPluginMessage(Main.getPlugin(), "t2c:bcmd", stream.toByteArray());
return; return;
} }
} }

View File

@@ -0,0 +1,247 @@
package net.t2code.alias.Spigot.system;
import com.mojang.brigadier.tree.CommandNode;
import com.mojang.brigadier.tree.RootCommandNode;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class BukkitCommandWrap {
private Field bField;
private Method removeCommandMethod;
private String nmsVersion;
private Class minecraftServerClass;
private Method aMethod;
private Method getServerMethod;
private Field vanillaCommandDispatcherField;
private Method getCommandDispatcherMethod;
private Method registerMethod;
private Method syncCommandsMethod;
private Constructor bukkitcommandWrapperConstructor;
public BukkitCommandWrap() {
try {
this.nmsVersion = Bukkit.getServer().getClass().getPackage().getName().replace(".", ",").split(",")[3];
} catch (ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
this.nmsVersion = null;
}
}
public void wrap(Command command, String alias) {
if (this.nmsVersion == null) return;
if (this.minecraftServerClass == null) try {
this.minecraftServerClass = Class.forName("net.minecraft.server." + this.nmsVersion + ".MinecraftServer");
} catch (ClassNotFoundException e) {
try {
this.minecraftServerClass = Class.forName("net.minecraft.server.MinecraftServer");
} catch (ClassNotFoundException classNotFoundException) {
classNotFoundException.addSuppressed(e);
classNotFoundException.printStackTrace();
return;
}
}
if (this.getServerMethod == null) try {
this.getServerMethod = this.minecraftServerClass.getMethod("getServer");
this.getServerMethod.setAccessible(true);
} catch (NoSuchMethodException e) {
e.printStackTrace();
return;
}
Object minecraftServer;
try {
minecraftServer = this.getServerMethod.invoke(this.minecraftServerClass);
} catch (IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
return;
}
if (this.vanillaCommandDispatcherField == null) try {
this.vanillaCommandDispatcherField = this.minecraftServerClass.getDeclaredField("vanillaCommandDispatcher");
this.vanillaCommandDispatcherField.setAccessible(true);
} catch (NoSuchFieldException e) {
e.printStackTrace();
return;
}
Object commandDispatcher = null;
try {
commandDispatcher = this.vanillaCommandDispatcherField.get(minecraftServer);
} catch (IllegalAccessException e) {
e.printStackTrace();
return;
}
if (this.bField == null) try {
this.bField = Class.forName("net.minecraft.commands.CommandDispatcher").getDeclaredField("g");
this.bField.setAccessible(true);
} catch (NoSuchFieldException | ClassNotFoundException e) {
e.printStackTrace();
return;
}
com.mojang.brigadier.CommandDispatcher b;
try {
b = (com.mojang.brigadier.CommandDispatcher) this.bField.get(commandDispatcher);
} catch (IllegalAccessException e) {
e.printStackTrace();
return;
}
if (this.aMethod == null) try {
this.aMethod = commandDispatcher.getClass().getDeclaredMethod("a");
this.aMethod.setAccessible(true);
} catch (NoSuchMethodException e) {
e.printStackTrace();
return;
}
if (this.bukkitcommandWrapperConstructor == null) try {
this.bukkitcommandWrapperConstructor = Class.forName("org.bukkit.craftbukkit." + this.nmsVersion + ".command.BukkitCommandWrapper").getDeclaredConstructor(Class.forName("org.bukkit.craftbukkit." + this.nmsVersion + ".CraftServer"), Command.class);
this.bukkitcommandWrapperConstructor.setAccessible(true);
} catch (NoSuchMethodException | ClassNotFoundException e) {
e.printStackTrace();
return;
}
Object commandWrapper;
try {
commandWrapper = this.bukkitcommandWrapperConstructor.newInstance(Bukkit.getServer(), command);
} catch (InstantiationException | IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
return;
}
Object a;
try {
a = this.aMethod.invoke(commandDispatcher);
} catch (IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
return;
}
if (this.registerMethod == null) try {
this.registerMethod = Class.forName("org.bukkit.craftbukkit." + this.nmsVersion + ".command.BukkitCommandWrapper").getMethod("register", com.mojang.brigadier.CommandDispatcher.class, String.class);
this.registerMethod.setAccessible(true);
} catch (NoSuchMethodException | ClassNotFoundException e) {
e.printStackTrace();
return;
}
try {
this.registerMethod.invoke(commandWrapper, a, alias);
} catch (IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
}
public void sync() {
if (this.syncCommandsMethod == null) try {
this.syncCommandsMethod = Class.forName("org.bukkit.craftbukkit." + this.nmsVersion + ".CraftServer").getDeclaredMethod("syncCommands");
this.syncCommandsMethod.setAccessible(true);
} catch (NoSuchMethodException | ClassNotFoundException e) {
e.printStackTrace();
return;
}
try {
this.syncCommandsMethod.invoke(Bukkit.getServer());
} catch (IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
}
public void unwrap(String command) {
if (this.nmsVersion == null) return;
if (this.minecraftServerClass == null) try {
this.minecraftServerClass = Class.forName("net.minecraft.server." + this.nmsVersion + ".MinecraftServer");
} catch (ClassNotFoundException e) {
try {
this.minecraftServerClass = Class.forName("net.minecraft.server.MinecraftServer");
} catch (ClassNotFoundException classNotFoundException) {
classNotFoundException.printStackTrace();
classNotFoundException.addSuppressed(e);
return;
}
}
if (this.getServerMethod == null) try {
this.getServerMethod = this.minecraftServerClass.getMethod("getServer");
this.getServerMethod.setAccessible(true);
} catch (NoSuchMethodException e) {
e.printStackTrace();
return;
}
Object server;
try {
server = this.getServerMethod.invoke(this.minecraftServerClass);
} catch (IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
return;
}
if (this.vanillaCommandDispatcherField == null) try {
this.vanillaCommandDispatcherField = this.minecraftServerClass.getDeclaredField("vanillaCommandDispatcher");
this.vanillaCommandDispatcherField.setAccessible(true);
} catch (NoSuchFieldException e) {
e.printStackTrace();
return;
}
Object commandDispatcher = null;
try {
commandDispatcher = this.vanillaCommandDispatcherField.get(server);
} catch (IllegalAccessException e) {
e.printStackTrace();
return;
}
if (this.bField == null) try {
this.bField = Class.forName("net.minecraft.server." + this.nmsVersion + ".CommandDispatcher").getDeclaredField("b");
this.bField.setAccessible(true);
} catch (NoSuchFieldException | ClassNotFoundException e) {
if (this.bField == null) try {
this.bField = Class.forName("net.minecraft.commands.CommandDispatcher").getDeclaredField("g");
this.bField.setAccessible(true);
} catch (NoSuchFieldException | ClassNotFoundException ex) {
ex.addSuppressed(e);
e.printStackTrace();
return;
}
}
com.mojang.brigadier.CommandDispatcher b;
try {
b = (com.mojang.brigadier.CommandDispatcher) this.bField.get(commandDispatcher);
} catch (IllegalAccessException e) {
e.printStackTrace();
return;
}
if (this.removeCommandMethod == null) try {
try {
this.removeCommandMethod = RootCommandNode.class.getDeclaredMethod("removeCommand", String.class);
} catch (NoSuchMethodException | NoSuchMethodError ex) {
this.removeCommandMethod = CommandNode.class.getDeclaredMethod("removeCommand", String.class);
}
} catch (NoSuchMethodException e) {
e.printStackTrace();
return;
}
try {
this.removeCommandMethod.invoke(b.getRoot(), command);
} catch (IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
}
}

View File

@@ -0,0 +1,17 @@
package net.t2code.alias.Spigot.system;
import org.bukkit.command.Command;
public class BukkitCommandWrap_Useless extends BukkitCommandWrap {
public BukkitCommandWrap_Useless() {
}
@Override
public void wrap(Command command, String alias) {
}
@Override
public void unwrap(String command) {
}
}

View File

@@ -4,19 +4,15 @@ package net.t2code.alias.Spigot.system;
import net.t2code.alias.Spigot.Main; import net.t2code.alias.Spigot.Main;
import net.t2code.alias.Util; import net.t2code.alias.Util;
import net.t2code.lib.Spigot.Lib.messages.send; import net.t2code.t2codelib.SPIGOT.api.update.T2CupdateAPI;
import net.t2code.lib.Spigot.Lib.update.UpdateAPI;
import net.t2code.lib.Spigot.system.config.SelectLibConfig;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerLoginEvent;
import org.bukkit.scheduler.BukkitRunnable;
public class JoinEvent implements Listener { public class JoinEvent implements Listener {
@EventHandler @EventHandler
public void onJoinEvent(PlayerLoginEvent event) { public void onJoinEvent(PlayerLoginEvent event) {
UpdateAPI.join(Main.getPlugin(),Util.getPrefix(), "t2code.alias.updatemsg", event.getPlayer(), Util.getSpigot(), Util.getDiscord()); T2CupdateAPI.join(Main.getPlugin(),Util.getPrefix(), "t2code.alias.updatemsg", event.getPlayer(), Util.getSpigotID(), Util.getDiscord());
} }
} }

View File

@@ -11,28 +11,27 @@ import net.t2code.alias.Spigot.config.languages.SelectMessages;
import net.t2code.alias.Spigot.config.subAlias.CreateExampleSubAliasConfig; import net.t2code.alias.Spigot.config.subAlias.CreateExampleSubAliasConfig;
import net.t2code.alias.Spigot.config.subAlias.SelectSubAlias; import net.t2code.alias.Spigot.config.subAlias.SelectSubAlias;
import net.t2code.alias.Util; import net.t2code.alias.Util;
import net.t2code.lib.Spigot.Lib.messages.T2CodeTemplate; import net.t2code.t2codelib.SPIGOT.api.messages.T2Ctemplate;
import net.t2code.lib.Spigot.Lib.messages.send; import net.t2code.t2codelib.SPIGOT.api.register.T2Cregister;
import net.t2code.lib.Spigot.Lib.register.Register; import net.t2code.t2codelib.SPIGOT.api.update.T2CupdateAPI;
import net.t2code.lib.Spigot.Lib.update.UpdateAPI; import net.t2code.t2codelib.SPIGOT.api.yaml.T2CLibConfig;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.plugin.Plugin;
import java.io.File; import java.io.File;
import java.util.List; import java.util.List;
public class Load { public class Load {
private static Main plugin = Main.getPlugin(); private static final Main plugin = Main.getPlugin();
public static void onLoad(String prefix, List autor, String version, String spigot, int spigotID, String discord, int bstatsID) { public static void onLoad(String prefix, List<String> autor, String version, String spigot, String discord, int bstatsID) {
Long long_ = T2CodeTemplate.onLoadHeader(prefix, autor, version, spigot, discord); Long long_ = T2Ctemplate.onLoadHeader(prefix, autor, version, spigot, discord);
plugin.getCommand("t2code-alias").setExecutor(new AliasCmdExecuter()); plugin.getCommand("t2code-alias").setExecutor(new AliasCmdExecuter());
loadReload(); loadReload();
UpdateAPI.onUpdateCheck(plugin, prefix, spigot, spigotID, discord); T2CupdateAPI.onUpdateCheck(plugin,prefix,Util.getGit(),Util.getSpigotID(),Util.getDiscord(),
SelectConfig.getUpdateCheckOnJoin(),SelectConfig.getUpdateCheckSeePreReleaseUpdates(),SelectConfig.getUpdateCheckTimeInterval());
Bukkit.getServer().getPluginManager().registerEvents(new JoinEvent(), plugin); Bukkit.getServer().getPluginManager().registerEvents(new JoinEvent(), plugin);
T2CodeTemplate.onLoadFooter(prefix, long_, version); T2Ctemplate.onLoadFooter(prefix, long_, version);
Metrics.Bstats(plugin, bstatsID); Metrics.Bstats(plugin, bstatsID);
} }
@@ -63,18 +62,17 @@ public class Load {
LanguagesCreate.langCreate(); LanguagesCreate.langCreate();
SelectConfig.onSelect(); SelectConfig.onSelect();
SelectMessages.onSelect(Util.getPrefix()); SelectMessages.onSelect(Util.getPrefix());
T2CodeTemplate.onLoadSeparateStroke(Util.getPrefix()); T2Ctemplate.onLoadSeparateStroke(Util.getPrefix());
SelectAlias.onSelect(); SelectAlias.onSelect();
T2CodeTemplate.onLoadSeparateStroke(Util.getPrefix()); T2Ctemplate.onLoadSeparateStroke(Util.getPrefix());
SelectSubAlias.onSelect(); SelectSubAlias.onSelect();
SelectConfig.setConfigVersion(); SelectConfig.setConfigVersion();
if (SelectConfig.subAliasTab) { if (SelectConfig.getSubAliasTab()) {
Register.listener(new TabEvent(), plugin); T2Cregister.listener(new TabEvent(), plugin);
} }
if (SelectConfig.Bungee) { if (T2CLibConfig.getBungee()) {
plugin.getServer().getMessenger().registerOutgoingPluginChannel(plugin, "BungeeCord"); Bukkit.getMessenger().registerOutgoingPluginChannel(plugin, "t2c:bcmd");
Bukkit.getMessenger().registerOutgoingPluginChannel(plugin, "t2codealias:bungee");
} }
AliasRegisterPermissions.onPermRegister(); AliasRegisterPermissions.onPermRegister();
} }

View File

@@ -3,7 +3,6 @@
package net.t2code.alias.Spigot.system; package net.t2code.alias.Spigot.system;
import net.t2code.alias.Spigot.Main;
import net.t2code.alias.Spigot.config.config.SelectConfig; import net.t2code.alias.Spigot.config.config.SelectConfig;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
@@ -34,7 +33,6 @@ public class Metrics {
public static void Bstats(Plugin plugin, int bstatsID) { public static void Bstats(Plugin plugin, int bstatsID) {
int pluginId = bstatsID; // <-- Replace with the id of your plugin! int pluginId = bstatsID; // <-- Replace with the id of your plugin!
Metrics metrics = new Metrics((JavaPlugin) plugin, pluginId); Metrics metrics = new Metrics((JavaPlugin) plugin, pluginId);
metrics.addCustomChart(new SimplePie("updatecheckonjoin", () -> String.valueOf(SelectConfig.UpdateCheckOnJoin)));
} }
private final Plugin plugin; private final Plugin plugin;

View File

@@ -1,38 +1,43 @@
package net.t2code.alias; package net.t2code.alias;
public class Util { public class Util {
private static String requiredT2CodeLibVersion = "12.4";
private static String Prefix = "§8[§4T2Code§7-§aAlias§8]";
private static Integer SpigotID = 96389; public static String getInfoText() {
private static Integer BstatsID = 12517; return "";
private static String Spigot = "https://www.spigotmc.org/resources/" + SpigotID; }
private static String Discord = "http://dc.t2code.net";
public static String getRequiredT2CodeLibVersion() { public static String getRequiredT2CodeLibVersion() {
return requiredT2CodeLibVersion; return "14.2";
} }
public static String getPrefix() { public static String getPrefix() {
return Prefix; return prefix;
} }
public static Integer getSpigotID() { public static Integer getSpigotID() {
return SpigotID; return 96389;
}
public static String getGit() {
return "JaTiTV/T2Code-Alias";
} }
public static Integer getBstatsID() { public static Integer getBstatsID() {
return BstatsID; return 12517;
} }
public static String getSpigot() { public static String getSpigot() {
return Spigot; return "https://www.spigotmc.org/resources/" + getSpigotID();
} }
public static String getDiscord() { public static String getDiscord() {
return Discord; return "http://dc.t2code.net";
} }
public static void setPrefix(String prefix) { public static void setPrefix(String pr) {
Prefix = prefix; prefix = pr;
} }
private static String prefix = "§8[§4T2Code§7-§aAlias§8]";
} }

View File

@@ -74,7 +74,7 @@ Alias:
# Player with Admin Perm: /server CityBuild # Player with Admin Perm: /server CityBuild
Admin: Admin:
# Here you can enable or disable the admin function # Here you can enable or disable the admin function
Enable: true Enable: false
# Here you set the permission for the admin function # Here you set the permission for the admin function
Permission: t2code.alias.admin Permission: t2code.alias.admin
Command: Command:

View File

@@ -10,8 +10,7 @@ SubAlias:
# For example: # For example:
# - aliasexample1 -> aliasexample1 <this SubAlias> # - aliasexample1 -> aliasexample1 <this SubAlias>
# - aliasexample2 test -> aliasexample2 test <this SubAlias> # - aliasexample2 test -> aliasexample2 test <this SubAlias>
SubAliasFor: SubAliasFor: aliasexample1
- aliasexample1
Permission: Permission:
# Here you can say if a permission is needed to use the alias# # Here you can say if a permission is needed to use the alias#
Necessary: true Necessary: true
@@ -74,7 +73,7 @@ SubAlias:
# Player with Admin Perm: /server CityBuild # Player with Admin Perm: /server CityBuild
Admin: Admin:
# Here you can enable or disable the admin function # Here you can enable or disable the admin function
Enable: true Enable: false
# Here you set the permission for the admin function # Here you set the permission for the admin function
Permission: t2code.alias.admin Permission: t2code.alias.admin
Command: Command:

View File

@@ -1,6 +0,0 @@
name: T2C-Alias
version: ${project.version}
main: net.t2code.alias.Bungee.BMain
description: T2Code Alias Plugin
author: JaTiTV
softdepends: [T2CodeLib]