Plugin update on shutdown+fromcmd

Fromcmd: whether a message was sent by using a command
Yesterday
This commit is contained in:
Norbi Peti 2018-05-07 20:01:36 +02:00
parent eb9deb39b4
commit bdf824e20e
106 changed files with 145 additions and 163 deletions

0
.idea/ButtonCore.iml Normal file → Executable file
View file

0
.idea/compiler.xml Normal file → Executable file
View file

0
.idea/encodings.xml Normal file → Executable file
View file

View file

View file

0
.idea/libraries/Maven__com_google_guava_guava_15_0.xml Normal file → Executable file
View file

0
.idea/libraries/Maven__commons_io_commons_io_1_3_2.xml Normal file → Executable file
View file

View file

View file

0
.idea/libraries/Maven__junit_junit_3_8_1.xml Normal file → Executable file
View file

View file

View file

View file

0
.idea/libraries/Maven__org_avaje_ebean_2_8_1.xml Normal file → Executable file
View file

View file

View file

View file

0
.idea/libraries/Maven__org_objenesis_objenesis_2_5.xml Normal file → Executable file
View file

View file

View file

View file

0
.idea/libraries/Maven__org_yaml_snakeyaml_1_15.xml Normal file → Executable file
View file

0
.idea/misc.xml Normal file → Executable file
View file

0
.idea/modules.xml Normal file → Executable file
View file

0
.idea/vcs.xml Normal file → Executable file
View file

0
.project Normal file → Executable file
View file

0
.settings/org.eclipse.m2e.core.prefs Normal file → Executable file
View file

0
.travis.yml Normal file → Executable file
View file

0
ButtonCore/.factorypath Normal file → Executable file
View file

0
ButtonCore/.gitignore vendored Normal file → Executable file
View file

0
ButtonCore/.project Normal file → Executable file
View file

0
ButtonCore/.settings/org.eclipse.core.resources.prefs Normal file → Executable file
View file

0
ButtonCore/.settings/org.eclipse.jdt.apt.core.prefs Normal file → Executable file
View file

0
ButtonCore/.settings/org.eclipse.jdt.core.prefs Normal file → Executable file
View file

0
ButtonCore/.settings/org.eclipse.m2e.core.prefs Normal file → Executable file
View file

0
ButtonCore/License.md Normal file → Executable file
View file

0
ButtonCore/README.md Normal file → Executable file
View file

0
ButtonCore/pom.xml Normal file → Executable file
View file

View file

@ -1,14 +1,15 @@
package buttondevteam.core;
import java.util.Arrays;
import buttondevteam.lib.TBMCCoreAPI;
import buttondevteam.lib.chat.TBMCChatAPI;
import buttondevteam.lib.chat.TBMCCommandBase;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.PluginCommand;
import org.bukkit.plugin.java.JavaPlugin;
import buttondevteam.lib.TBMCCoreAPI;
import buttondevteam.lib.chat.TBMCChatAPI;
import buttondevteam.lib.chat.TBMCCommandBase;
import java.util.Arrays;
public class CommandCaller implements CommandExecutor {

View file

View file

View file

@ -1,5 +1,8 @@
package buttondevteam.core;
import buttondevteam.lib.ScheduledServerRestartEvent;
import buttondevteam.lib.chat.CommandClass;
import buttondevteam.lib.chat.TBMCCommandBase;
import org.bukkit.Bukkit;
import org.bukkit.boss.BarColor;
import org.bukkit.boss.BarFlag;
@ -8,10 +11,6 @@ import org.bukkit.boss.BossBar;
import org.bukkit.command.CommandSender;
import org.bukkit.scheduler.BukkitTask;
import buttondevteam.lib.ScheduledServerRestartEvent;
import buttondevteam.lib.chat.CommandClass;
import buttondevteam.lib.chat.TBMCCommandBase;
@CommandClass(modOnly = true, path = "schrestart")
public class ScheduledRestartCommand extends TBMCCommandBase {
private static volatile int restartcounter;

View file

@ -1,9 +1,8 @@
package buttondevteam.core;
import java.util.Collection;
import java.util.Collections;
import java.util.logging.Logger;
import buttondevteam.lib.chat.Channel;
import buttondevteam.lib.chat.Color;
import buttondevteam.lib.chat.TBMCChatAPI;
import org.bukkit.Bukkit;
import org.bukkit.Server;
import org.bukkit.plugin.PluginManager;
@ -11,9 +10,9 @@ import org.mockito.Mockito;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import buttondevteam.lib.chat.Channel;
import buttondevteam.lib.chat.Color;
import buttondevteam.lib.chat.TBMCChatAPI;
import java.util.Collection;
import java.util.Collections;
import java.util.logging.Logger;
public class TestPrepare {
public static void PrepareServer() {

View file

@ -1,12 +1,11 @@
package buttondevteam.core;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import buttondevteam.lib.PluginUpdater;
import buttondevteam.lib.TBMCCoreAPI;
import buttondevteam.lib.chat.CommandClass;
import buttondevteam.lib.chat.TBMCCommandBase;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
@CommandClass(modOnly = true)
public class UpdatePluginCommand extends TBMCCommandBase {

View file

@ -1,25 +1,20 @@
package buttondevteam.lib;
import com.google.common.collect.Lists;
import org.apache.commons.lang.Validate;
import org.bukkit.event.Event;
import org.bukkit.event.EventException;
import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener;
import org.bukkit.plugin.*;
import java.lang.reflect.Method;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.commons.lang.Validate;
import org.bukkit.event.Event;
import org.bukkit.event.EventException;
import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener;
import org.bukkit.plugin.EventExecutor;
import org.bukkit.plugin.IllegalPluginAccessException;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.RegisteredListener;
import com.google.common.collect.Lists;
abstract class EventExceptionHandler { // https://gist.github.com/aadnk/5430459
// For wrapping a registered listener
private static class ExceptionRegisteredListener extends RegisteredListener {

View file

@ -1,5 +1,15 @@
package buttondevteam.lib;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import org.apache.commons.io.FileUtils;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
@ -9,21 +19,12 @@ import java.nio.file.StandardCopyOption;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import org.apache.commons.io.FileUtils;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
public class PluginUpdater {
private PluginUpdater() {
}
private static final File updatedir = new File("updateplugins");
/**
* See {@link TBMCCoreAPI#UpdatePlugin(String, CommandSender, String)}
*/
@ -57,11 +58,11 @@ public class PluginUpdater {
return false;
}
info(sender, "Updating TBMC plugin: " + correctname + " from " + correctbranch.get());
return updatePluginJitPack(sender, correctname, correctbranch);
return updatePluginJitPack(sender, correctname, correctbranch.get());
}
private static boolean updatePluginJitPack(CommandSender sender, String correctname,
Optional<String> correctbranch) {
String correctbranch) {
URL url;
final boolean isWindows = System.getProperty("os.name").contains("Windows");
File result = new File("plugins/" + correctname + (isWindows ? ".jar" : ".jar_tmp"));
@ -69,24 +70,24 @@ public class PluginUpdater {
try {
url = new URL("https://jitpack.io/com/github/TBMCPlugins/"
+ (correctname.equals("ButtonCore") ? "ButtonCore/ButtonCore" : correctname) + "/"
+ correctbranch.get() + "-SNAPSHOT/" + correctname + "-" + correctbranch.get() + "-SNAPSHOT.jar"); // ButtonCore exception required since it hosts Towny as well
+ correctbranch + "-SNAPSHOT/" + correctname + "-" + correctbranch + "-SNAPSHOT.jar"); // ButtonCore exception required since it hosts Towny as well
FileUtils.copyURLToFile(url, result);
if (!result.exists() || result.length() < 25) {
result.delete();
error(sender, "The downloaded JAR for " + correctname + " from " + correctbranch.get()
error(sender, "The downloaded JAR for " + correctname + " from " + correctbranch
+ " is too small (smnaller than 25 bytes). Am I downloading from the right place?");
return false;
} else {
if (!isWindows)
Files.move(result.toPath(), finalresult.toPath(), StandardCopyOption.REPLACE_EXISTING);
info(sender, "Updating plugin " + correctname + " from " + correctbranch.get() + " done!");
info(sender, "Updating plugin " + correctname + " from " + correctbranch + " done!");
return true;
}
} catch (FileNotFoundException e) {
error(sender,
"Can't find JAR for " + correctname + " from " + correctbranch.get()
"Can't find JAR for " + correctname + " from " + correctbranch
+ ", the build probably failed. Build log (scroll to bottom):" + "\n"
+ "https://jitpack.io/com/github/TBMCPlugins/" + correctname + "/" + correctbranch.get()
+ "https://jitpack.io/com/github/TBMCPlugins/" + correctname + "/" + correctbranch
+ "-SNAPSHOT/build.log\nIf you'd like to rebuild the same commit, go to:\nhttps://jitpack.io/#TBMCPlugins/"
+ correctname + "\nAnd delete the newest build.");
} catch (IOException e) {

View file

@ -1,27 +1,28 @@
package buttondevteam.lib;
import org.bukkit.command.CommandSender;
import org.bukkit.event.HandlerList;
import buttondevteam.lib.chat.Channel;
import lombok.Getter;
import org.bukkit.command.CommandSender;
import org.bukkit.event.HandlerList;
/**
* Make sure to only send the message to users who {@link #shouldSendTo(CommandSender)} returns true.
* Make sure to only send the message to users where {@link #shouldSendTo(CommandSender)} returns true.
*
* @author NorbiPeti
*
*/
@Getter
public class TBMCChatEvent extends TBMCChatEventBase {
public TBMCChatEvent(CommandSender sender, Channel channel, String message, int score) {
public TBMCChatEvent(CommandSender sender, Channel channel, String message, int score, boolean fromcmd) {
super(channel, message, score);
this.sender = sender;
this.fromcmd = fromcmd;
}
private static final HandlerList handlers = new HandlerList();
private CommandSender sender;
private boolean fromcmd;
// TODO: Message object with data?
@Override

View file

@ -1,14 +1,14 @@
package buttondevteam.lib;
import org.bukkit.command.CommandSender;
import org.bukkit.event.Cancellable;
import org.bukkit.event.Event;
import buttondevteam.lib.chat.Channel;
import buttondevteam.lib.chat.Channel.RecipientTestResult;
import lombok.Getter;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import org.bukkit.command.CommandSender;
import org.bukkit.event.Cancellable;
import org.bukkit.event.Event;
@Getter
@RequiredArgsConstructor

View file

@ -1,10 +1,8 @@
package buttondevteam.lib;
import java.io.*;
import java.net.*;
import java.util.*;
import java.util.Map.Entry;
import buttondevteam.core.MainPlugin;
import buttondevteam.lib.player.ChromaGamerBase;
import buttondevteam.lib.potato.DebugPotato;
import org.apache.commons.io.IOUtils;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
@ -12,9 +10,15 @@ import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.plugin.Plugin;
import buttondevteam.core.MainPlugin;
import buttondevteam.lib.player.ChromaGamerBase;
import buttondevteam.lib.potato.DebugPotato;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map.Entry;
public class TBMCCoreAPI {
static List<String> coders = new ArrayList<String>() {
@ -67,8 +71,8 @@ public class TBMCCoreAPI {
return body;
}
private static HashMap<String, Throwable> exceptionsToSend = new HashMap<>();
private static List<String> debugMessagesToSend = new ArrayList<>();
private static final HashMap<String, Throwable> exceptionsToSend = new HashMap<>();
private static final List<String> debugMessagesToSend = new ArrayList<>();
/**
* Send exception to the {@link TBMCExceptionEvent}.

View file

View file

@ -1,10 +1,9 @@
package buttondevteam.lib;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
/**
* <p>

View file

@ -1,10 +1,9 @@
package buttondevteam.lib;
import org.bukkit.command.CommandSender;
import org.bukkit.event.HandlerList;
import buttondevteam.lib.chat.Channel;
import lombok.Getter;
import org.bukkit.command.CommandSender;
import org.bukkit.event.HandlerList;
/**
* Make sure to only send the message to users who {@link #shouldSendTo(CommandSender)} returns true.

View file

View file

@ -1,8 +1,9 @@
package buttondevteam.lib.chat;
import org.bukkit.command.CommandSender;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.command.CommandSender;
public class ChatRoom extends Channel {
private List<CommandSender> usersInRoom = new ArrayList<>();

View file

View file

@ -1,10 +1,6 @@
package buttondevteam.lib.chat;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.annotation.*;
/**
* <b>Abstract classes with no {@link CommandClass} annotations will be ignored.</b> Classes that are not abstract or have the annotation will be included in the command path unless

View file

View file

@ -1,10 +1,9 @@
package buttondevteam.lib.chat;
import buttondevteam.lib.TBMCCoreAPI;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import buttondevteam.lib.TBMCCoreAPI;
public abstract class OptionallyPlayerCommandBase extends TBMCCommandBase {
public boolean OnCommand(Player player, String alias, String[] args) {
if (getClass().isAnnotationPresent(OptionallyPlayerCommandClass.class)

View file

@ -1,10 +1,6 @@
package buttondevteam.lib.chat;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.annotation.*;
/**
* Only needed to use with {@link OptionallyPlayerCommandBase} command classes

View file

View file

View file

@ -1,13 +1,12 @@
package buttondevteam.lib.chat;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Set;
import java.util.function.Consumer;
import buttondevteam.core.CommandCaller;
import buttondevteam.core.MainPlugin;
import buttondevteam.lib.TBMCChatEvent;
import buttondevteam.lib.TBMCChatPreprocessEvent;
import buttondevteam.lib.TBMCCoreAPI;
import buttondevteam.lib.TBMCSystemChatEvent;
import buttondevteam.lib.chat.Channel.RecipientTestResult;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@ -17,13 +16,13 @@ import org.reflections.scanners.SubTypesScanner;
import org.reflections.util.ClasspathHelper;
import org.reflections.util.ConfigurationBuilder;
import buttondevteam.core.CommandCaller;
import buttondevteam.core.MainPlugin;
import buttondevteam.lib.TBMCChatEvent;
import buttondevteam.lib.TBMCChatPreprocessEvent;
import buttondevteam.lib.TBMCCoreAPI;
import buttondevteam.lib.TBMCSystemChatEvent;
import buttondevteam.lib.chat.Channel.RecipientTestResult;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Set;
import java.util.function.Consumer;
public class TBMCChatAPI {
@ -119,7 +118,7 @@ public class TBMCChatAPI {
continue;
TBMCCommandBase c = cmd.newInstance();
c.plugin = plugin;
if (!CheckForNulls(plugin, c))
if (HasNulls(plugin, c))
continue;
commands.put(c.GetCommandPath(), c);
CommandCaller.RegisterCommand(c);
@ -155,7 +154,7 @@ public class TBMCChatAPI {
else
c = thecmdclass.newInstance();
c.plugin = plugin;
if (!CheckForNulls(plugin, c))
if (HasNulls(plugin, c))
return;
commands.put(c.GetCommandPath(), c);
CommandCaller.RegisterCommand(c);
@ -181,7 +180,7 @@ public class TBMCChatAPI {
* The command to add
*/
public static void AddCommand(JavaPlugin plugin, TBMCCommandBase cmd) {
if (!CheckForNulls(plugin, cmd))
if (HasNulls(plugin, cmd))
return;
// plugin.getLogger().info("Registering command /" + cmd.GetCommandPath() + " for " + plugin.getName());
try {
@ -193,17 +192,17 @@ public class TBMCChatAPI {
}
}
private static boolean CheckForNulls(JavaPlugin plugin, TBMCCommandBase cmd) {
private static boolean HasNulls(JavaPlugin plugin, TBMCCommandBase cmd) {
if (cmd == null) {
TBMCCoreAPI.SendException("An error occured while registering a command for plugin " + plugin.getName(),
new Exception("The command is null!"));
return false;
return true;
} else if (cmd.GetCommandPath() == null) {
TBMCCoreAPI.SendException("An error occured while registering command " + cmd.getClass().getSimpleName()
+ " for plugin " + plugin.getName(), new Exception("The command path is null!"));
return false;
return true;
}
return true;
return false;
}
/**
@ -218,6 +217,19 @@ public class TBMCChatAPI {
* @return The event cancelled state
*/
public static boolean SendChatMessage(Channel channel, CommandSender sender, String message) {
return SendChatMessage(channel, sender, message, false);
}
/**
* Sends a chat message to Minecraft. Make sure that the channel is registered with {@link #RegisterChatChannel(Channel)}.
*
* @param channel The channel to send to
* @param sender The sender to send from
* @param message The message to send
* @param fromcommand Whether this message comes from running a command, used to determine whether to delete Discord messages for example
* @return The event cancelled state
*/
public static boolean SendChatMessage(Channel channel, CommandSender sender, String message, boolean fromcommand) {
if (!Channel.getChannels().contains(channel))
throw new RuntimeException("Channel " + channel.DisplayName + " not registered!");
TBMCChatPreprocessEvent eventPre = new TBMCChatPreprocessEvent(sender, channel, message);
@ -227,7 +239,7 @@ public class TBMCChatAPI {
int score = getScoreOrSendError(channel, sender);
if (score == -1)
return true;
TBMCChatEvent event = new TBMCChatEvent(sender, channel, eventPre.getMessage(), score);
TBMCChatEvent event = new TBMCChatEvent(sender, channel, eventPre.getMessage(), score, fromcommand);
Bukkit.getPluginManager().callEvent(event);
return event.isCancelled();
}

View file

@ -1,11 +1,10 @@
package buttondevteam.lib.chat;
import java.util.function.Function;
import javassist.Modifier;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.Plugin;
import javassist.Modifier;
import java.util.function.Function;
/**
* Extend this class to create new TBMCCommand and use {@link TBMCChatAPI#AddCommand(org.bukkit.plugin.java.JavaPlugin, TBMCCommandBase)} to add it. <u><b>Note:</b></u> The command path (command name

View file

@ -1,10 +1,6 @@
package buttondevteam.lib.player;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.annotation.*;
/**
* Specifies a {@link ChromaGamerBase} direct subclass which's abstract. For Minecraft data, use {@link PlayerClass}

View file

@ -1,17 +1,15 @@
package buttondevteam.lib.player;
import buttondevteam.lib.TBMCCoreAPI;
import com.google.common.collect.HashBiMap;
import lombok.val;
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.YamlConfiguration;
import java.io.File;
import java.util.HashMap;
import java.util.function.Consumer;
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.YamlConfiguration;
import com.google.common.collect.HashBiMap;
import buttondevteam.lib.TBMCCoreAPI;
import lombok.val;
@ChromaGamerEnforcer
public abstract class ChromaGamerBase implements AutoCloseable {
public static final String TBMC_PLAYERS_DIR = "TBMC/players/";

View file

@ -1,10 +1,6 @@
package buttondevteam.lib.player;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.annotation.*;
@Retention(RetentionPolicy.SOURCE)
@Target(ElementType.TYPE)

View file

View file

View file

View file

View file

@ -1,23 +1,21 @@
package buttondevteam.lib.player;
import buttondevteam.lib.TBMCCoreAPI;
import com.palmergames.bukkit.towny.Towny;
import com.palmergames.bukkit.towny.exceptions.AlreadyRegisteredException;
import com.palmergames.bukkit.towny.exceptions.NotRegisteredException;
import com.palmergames.bukkit.towny.object.Resident;
import com.palmergames.bukkit.towny.object.TownyUniverse;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
import com.palmergames.bukkit.towny.Towny;
import com.palmergames.bukkit.towny.exceptions.AlreadyRegisteredException;
import com.palmergames.bukkit.towny.exceptions.NotRegisteredException;
import com.palmergames.bukkit.towny.object.Resident;
import com.palmergames.bukkit.towny.object.TownyUniverse;
import buttondevteam.lib.TBMCCoreAPI;
@AbstractUserClass(foldername = "minecraft", prototype = TBMCPlayer.class)
public abstract class TBMCPlayerBase extends ChromaGamerBase {
protected UUID uuid;

View file

@ -1,14 +1,13 @@
package buttondevteam.lib.player;
import buttondevteam.lib.player.ChromaGamerBase.InfoTarget;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import buttondevteam.lib.player.ChromaGamerBase.InfoTarget;
/**
* <p>
* This event gets called when player information is requested. It can be used to give more per-plugin information about a player.

View file

View file

@ -1,10 +1,6 @@
package buttondevteam.lib.player;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.annotation.*;
/**
* Specifies a {@link ChromaGamerBase} direct subclass which can be instantiated. For Minecraft data, use {@link PlayerClass}

View file

@ -1,15 +1,15 @@
package buttondevteam.lib.potato;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class DebugPotato {
private List<String> message;
private String type;

View file

0
ButtonCore/src/main/resources/plugin.yml Normal file → Executable file
View file

View file

@ -1,16 +1,15 @@
package buttondevteam.core;
import java.io.File;
import java.util.UUID;
import org.apache.commons.io.FileUtils;
import buttondevteam.core.TestPlayerClass.TestEnum;
import buttondevteam.lib.player.ChromaGamerBase;
import buttondevteam.lib.player.TBMCPlayerBase;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.util.UUID;
public class PlayerDataTest extends TestCase {
public PlayerDataTest() {

View file

0
ButtonProcessor/.classpath Normal file → Executable file
View file

0
ButtonProcessor/.gitignore vendored Normal file → Executable file
View file

0
ButtonProcessor/.project Normal file → Executable file
View file

View file

0
ButtonProcessor/.settings/org.eclipse.jdt.core.prefs Normal file → Executable file
View file

0
ButtonProcessor/.settings/org.eclipse.m2e.core.prefs Normal file → Executable file
View file

0
ButtonProcessor/ButtonProcessor.iml Normal file → Executable file
View file

0
ButtonProcessor/License.md Normal file → Executable file
View file

0
ButtonProcessor/pom.xml Normal file → Executable file
View file

Some files were not shown because too many files have changed in this diff Show more