1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-19 19:25:48 +00:00

Updated CS-CoreLib2 and refactored commands

This commit is contained in:
TheBusyBiscuit 2019-10-01 02:57:58 +02:00
parent 3d8d9ed624
commit 7cac093419
29 changed files with 632 additions and 303 deletions

View File

@ -66,10 +66,14 @@
<filter>
<artifact>com.github.thebusybiscuit:CS-CoreLib2</artifact>
<includes>
<include>**/cscorelib2/chat/**</include>
<include>**/cscorelib2/config/**</include>
<include>**/cscorelib2/updater/**</include>
<include>**/cscorelib2/materials/**</include>
<include>**/cscorelib2/math/**</include>
<include>**/cscorelib2/protection/**</include>
<include>**/cscorelib2/players/**</include>
<include>**/cscorelib2/reflection/**</include>
<include>**/cscorelib2/item/**</include>
</includes>
</filter>
@ -120,13 +124,13 @@
<dependency>
<groupId>com.github.TheBusyBiscuit</groupId>
<artifactId>CS-CoreLib</artifactId>
<version>45909a0324</version>
<version>6e17183656</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.github.thebusybiscuit</groupId>
<artifactId>CS-CoreLib2</artifactId>
<version>0.5.3</version>
<version>0.5.4</version>
<scope>compile</scope>
</dependency>
<dependency>

View File

@ -112,7 +112,7 @@ public class LockedCategory extends Category {
* @since 4.0
*/
public boolean hasUnlocked(Player p) {
PlayerProfile profile = PlayerProfile.fromUUID(p.getUniqueId());
PlayerProfile profile = PlayerProfile.get(p);
for (Category category: parents) {
for (SlimefunItem item: category.getItems()) {

View File

@ -4,12 +4,10 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.UUID;
import java.util.logging.Level;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
import org.bukkit.Sound;
import org.bukkit.command.CommandSender;
@ -217,7 +215,7 @@ public class Research {
*/
@Deprecated
public void lock(Player p) {
PlayerProfile.fromUUID(p.getUniqueId()).setResearched(this, false);
PlayerProfile.get(p).setResearched(this, false);
SlimefunPlugin.getLocal().sendMessage(p, "commands.research.reset-target", true);
}
@ -235,7 +233,7 @@ public class Research {
Bukkit.getPluginManager().callEvent(event);
Runnable runnable = () -> {
PlayerProfile.fromUUID(p.getUniqueId()).setResearched(this, true);
PlayerProfile.get(p).setResearched(this, true);
SlimefunPlugin.getLocal().sendMessage(p, "messages.unlocked", true, msg -> msg.replace("%research%", getName()));
if (SlimefunPlugin.getCfg().getBoolean("options.research-unlock-fireworks")) {
@ -334,24 +332,7 @@ public class Research {
*/
@Deprecated
public static void sendStats(CommandSender sender, Player p) {
PlayerProfile profile = PlayerProfile.fromUUID(p.getUniqueId());
Set<Research> researched = profile.getResearches();
int levels = researched.stream().mapToInt(Research::getCost).sum();
String progress = String.valueOf(Math.round(((researched.size() * 100.0F) / list().size()) * 100.0F) / 100.0F);
if (Float.parseFloat(progress) < 16.0F) progress = "&4" + progress + " &r% ";
else if (Float.parseFloat(progress) < 32.0F) progress = "&c" + progress + " &r% ";
else if (Float.parseFloat(progress) < 48.0F) progress = "&6" + progress + " &r% ";
else if (Float.parseFloat(progress) < 64.0F) progress = "&e" + progress + " &r% ";
else if (Float.parseFloat(progress) < 80.0F) progress = "&2" + progress + " &r% ";
else progress = "&a" + progress + " &r% ";
sender.sendMessage("");
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7Statistics for Player: &b" + p.getName()));
sender.sendMessage("");
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7Title: &b" + getTitle(p, researched)));
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7Research Progress: " + progress + "&e(" + researched.size() + " / " + list().size() + ")"));
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7Total XP Levels spent: &b" + levels));
PlayerProfile.get(p).sendStats(sender);
}
/**
@ -366,7 +347,7 @@ public class Research {
*/
@Deprecated
public static String getTitle(Player p, Collection<Research> researched) {
return PlayerProfile.fromUUID(p.getUniqueId()).getTitle();
return PlayerProfile.get(p).getTitle();
}
/**

View File

@ -39,7 +39,7 @@ public class KnowledgeTome extends SimpleSlimefunItem<ItemInteractionHandler> {
return true;
}
else if (SlimefunManager.isItemSimiliar(item, getItem(), false)) {
PlayerProfile profile = PlayerProfile.fromUUID(p.getUniqueId());
PlayerProfile profile = PlayerProfile.get(p);
Set<Research> researches = PlayerProfile.fromUUID(UUID.fromString(ChatColor.stripColor(item.getItemMeta().getLore().get(1)))).getResearches();
researches.forEach(research -> profile.setResearched(research, true));

View File

@ -104,7 +104,7 @@ public class EnhancedCraftingTable extends MultiBlockMachine {
if (id.equals("")) {
for (int line = 0; line < adding.getItemMeta().getLore().size(); line++) {
if (adding.getItemMeta().getLore().get(line).equals(ChatColor.translateAlternateColorCodes('&', "&7ID: <ID>"))) {
int backpackID = PlayerProfile.fromUUID(p.getUniqueId()).createBackpack(size).getID();
int backpackID = PlayerProfile.get(p).createBackpack(size).getID();
ItemMeta im = adding.getItemMeta();
List<String> lore = im.getLore();

View File

@ -110,7 +110,7 @@ public class MagicWorkbench extends MultiBlockMachine {
if (id.isEmpty()) {
for (int line = 0; line < adding.getItemMeta().getLore().size(); line++) {
if (adding.getItemMeta().getLore().get(line).equals(ChatColor.translateAlternateColorCodes('&', "&7ID: <ID>"))) {
int backpackID = PlayerProfile.fromUUID(p.getUniqueId()).createBackpack(size).getID();
int backpackID = PlayerProfile.get(p).createBackpack(size).getID();
ItemMeta im = adding.getItemMeta();
List<String> lore = im.getLore();

View File

@ -14,7 +14,6 @@ import org.bukkit.command.CommandSender;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.CSCoreLibPlugin.general.Chat.Colors;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItemSerializer;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItemSerializer.ItemFlag;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
@ -201,16 +200,15 @@ public final class MiscSetup {
}
CommandSender sender = Bukkit.getConsoleSender();
ChatColor color = Colors.getRandom();
for (PostSlimefunLoadingHandler handler: SlimefunPlugin.getUtilities().postHandlers) {
handler.run(pre, init, post);
}
sender.sendMessage(color + "###################### - Slimefun - ######################");
sender.sendMessage(color + "Successfully loaded " + SlimefunItem.list().size() + " Items (" + Research.list().size() + " Researches)");
sender.sendMessage(color + "( " + SlimefunPlugin.getUtilities().vanillaItems + " Items from Slimefun, " + (SlimefunItem.list().size() - SlimefunPlugin.getUtilities().vanillaItems) + " Items from Addons )");
sender.sendMessage(color + "##########################################################");
sender.sendMessage(ChatColor.GREEN + "###################### - Slimefun - ######################");
sender.sendMessage(ChatColor.GREEN + "Successfully loaded " + SlimefunItem.list().size() + " Items (" + Research.list().size() + " Researches)");
sender.sendMessage(ChatColor.GREEN + "( " + SlimefunPlugin.getUtilities().vanillaItems + " Items from Slimefun, " + (SlimefunItem.list().size() - SlimefunPlugin.getUtilities().vanillaItems) + " Items from Addons )");
sender.sendMessage(ChatColor.GREEN + "##########################################################");
SlimefunPlugin.getItemCfg().save();
SlimefunPlugin.getResearchCfg().save();
SlimefunPlugin.getWhitelist().save();

View File

@ -534,7 +534,7 @@ public final class SlimefunGuide {
public void run(final Player p) {
if (!Research.isResearching(p)) {
if (research.canUnlock(p)) {
PlayerProfile profile = PlayerProfile.fromUUID(p.getUniqueId());
PlayerProfile profile = PlayerProfile.get(p);
if (profile.hasUnlocked(research)) {
openCategory(p, category, true, selected_page, book);
@ -679,7 +679,7 @@ public final class SlimefunGuide {
menu.addMenuClickHandler(index, (pl, slot, item, action) -> {
if (!Research.isResearching(pl)) {
if (research.canUnlock(pl)) {
PlayerProfile profile = PlayerProfile.fromUUID(p.getUniqueId());
PlayerProfile profile = PlayerProfile.get(p);
if (profile.hasUnlocked(research)) {
openCategory(p, category, true, selected_page, book);

View File

@ -11,7 +11,10 @@ import java.util.Set;
import java.util.UUID;
import java.util.stream.IntStream;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.CommandSender;
import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
@ -27,6 +30,7 @@ import me.mrCookieSlime.Slimefun.api.inventory.BackpackInventory;
*/
public final class PlayerProfile {
private String name;
private UUID uuid;
private Config cfg;
private boolean dirty = false;
@ -35,8 +39,20 @@ public final class PlayerProfile {
private Set<Research> researches = new HashSet<>();
private Map<Integer, BackpackInventory> backpacks = new HashMap<>();
private PlayerProfile(OfflinePlayer p) {
this.uuid = p.getUniqueId();
this.name = p.getName();
cfg = new Config(new File("data-storage/Slimefun/Players/" + uuid.toString() + ".yml"));
for (Research research: Research.list()) {
if (cfg.contains("researches." + research.getID())) researches.add(research);
}
}
private PlayerProfile(UUID uuid) {
this.uuid = uuid;
this.name = Bukkit.getOfflinePlayer(uuid).getName();
cfg = new Config(new File("data-storage/Slimefun/Players/" + uuid.toString() + ".yml"));
for (Research research: Research.list()) {
@ -166,6 +182,26 @@ public final class PlayerProfile {
return titles.get(index);
}
public void sendStats(CommandSender sender) {
Set<Research> researched = getResearches();
int levels = researched.stream().mapToInt(Research::getCost).sum();
String progress = String.valueOf(Math.round(((researched.size() * 100.0F) / Research.list().size()) * 100.0F) / 100.0F);
if (Float.parseFloat(progress) < 16.0F) progress = "&4" + progress + " &r% ";
else if (Float.parseFloat(progress) < 32.0F) progress = "&c" + progress + " &r% ";
else if (Float.parseFloat(progress) < 48.0F) progress = "&6" + progress + " &r% ";
else if (Float.parseFloat(progress) < 64.0F) progress = "&e" + progress + " &r% ";
else if (Float.parseFloat(progress) < 80.0F) progress = "&2" + progress + " &r% ";
else progress = "&a" + progress + " &r% ";
sender.sendMessage("");
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7Statistics for Player: &b" + name));
sender.sendMessage("");
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7Title: &b" + getTitle()));
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7Research Progress: " + progress + "&e(" + researched.size() + " / " + Research.list().size() + ")"));
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7Total XP Levels spent: &b" + levels));
}
public static PlayerProfile fromUUID(UUID uuid) {
PlayerProfile profile = SlimefunPlugin.getUtilities().profiles.get(uuid);
@ -179,6 +215,20 @@ public final class PlayerProfile {
return profile;
}
public static PlayerProfile get(OfflinePlayer p) {
PlayerProfile profile = SlimefunPlugin.getUtilities().profiles.get(p.getUniqueId());
if (profile == null) {
profile = new PlayerProfile(p);
SlimefunPlugin.getUtilities().profiles.put(p.getUniqueId(), profile);
}
else {
profile.markedForDeletion = false;
}
return profile;
}
public static boolean isLoaded(UUID uuid) {
return SlimefunPlugin.getUtilities().profiles.containsKey(uuid);

View File

@ -128,7 +128,7 @@ public final class Slimefun {
}
else if (isEnabled(p, item, message) && hasPermission(p, sfItem, message)) {
if (sfItem.getResearch() == null) return true;
else if (PlayerProfile.fromUUID(p.getUniqueId()).hasUnlocked(sfItem.getResearch())) return true;
else if (PlayerProfile.get(p).hasUnlocked(sfItem.getResearch())) return true;
else {
if (message && !(sfItem instanceof VanillaItem)) SlimefunPlugin.getLocal().sendMessage(p, "messages.not-researched", true);
return false;
@ -150,7 +150,7 @@ public final class Slimefun {
public static boolean hasUnlocked(Player p, SlimefunItem sfItem, boolean message) {
if (isEnabled(p, sfItem, message) && hasPermission(p, sfItem, message)) {
if (sfItem.getResearch() == null) return true;
else if (PlayerProfile.fromUUID(p.getUniqueId()).hasUnlocked(sfItem.getResearch())) return true;
else if (PlayerProfile.get(p).hasUnlocked(sfItem.getResearch())) return true;
else {
if (message && !(sfItem instanceof VanillaItem)) SlimefunPlugin.getLocal().sendMessage(p, "messages.not-researched", true);
return false;

View File

@ -7,8 +7,8 @@ import org.bukkit.Location;
import org.bukkit.block.Block;
import org.bukkit.block.Skull;
import io.github.thebusybiscuit.cscorelib2.math.DoubleHandler;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.api.BlockStorage;

View File

@ -9,8 +9,6 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory;
public final class ItemEnergy {
private ItemEnergy() {}
@ -100,8 +98,6 @@ public final class ItemEnergy {
p.getInventory().setChestplate(chargeItem(p.getInventory().getChestplate(), energy));
p.getInventory().setLeggings(chargeItem(p.getInventory().getLeggings(), energy));
p.getInventory().setBoots(chargeItem(p.getInventory().getBoots(), energy));
PlayerInventory.update(p);
}
}

View File

@ -20,9 +20,9 @@ import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import io.github.thebusybiscuit.cscorelib2.math.DoubleHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
import me.mrCookieSlime.Slimefun.api.BlockStorage;

View File

@ -1,147 +1,68 @@
package me.mrCookieSlime.Slimefun.commands;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.logging.Level;
import java.util.stream.Collectors;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.OfflinePlayer;
import org.bukkit.block.BlockFace;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.plugin.Plugin;
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
import me.mrCookieSlime.CSCoreLibPlugin.general.Chat.CommandHelp;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.CSCoreLibPlugin.general.Player.Players;
import me.mrCookieSlime.CSCoreLibPlugin.general.Reflection.ReflectionUtils;
import me.mrCookieSlime.CSCoreLibPlugin.general.World.TitleBuilder;
import me.mrCookieSlime.CSCoreLibPlugin.general.World.TitleBuilder.TitleType;
import me.mrCookieSlime.Slimefun.SlimefunGuide;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.GPS.GPSNetwork;
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
import me.mrCookieSlime.Slimefun.Objects.Research;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.api.BlockStorage;
import me.mrCookieSlime.Slimefun.api.PlayerProfile;
import me.mrCookieSlime.Slimefun.api.Slimefun;
import me.mrCookieSlime.Slimefun.api.SlimefunGuideLayout;
import me.mrCookieSlime.Slimefun.commands.subcommands.CheatCommand;
import me.mrCookieSlime.Slimefun.commands.subcommands.GiveCommand;
import me.mrCookieSlime.Slimefun.commands.subcommands.GuideCommand;
import me.mrCookieSlime.Slimefun.commands.subcommands.HelpCommand;
import me.mrCookieSlime.Slimefun.commands.subcommands.OpenGuideCommand;
import me.mrCookieSlime.Slimefun.commands.subcommands.ResearchCommand;
import me.mrCookieSlime.Slimefun.commands.subcommands.StatsCommand;
import me.mrCookieSlime.Slimefun.commands.subcommands.TeleporterCommand;
import me.mrCookieSlime.Slimefun.commands.subcommands.TimingsCommand;
import me.mrCookieSlime.Slimefun.commands.subcommands.VersionsCommand;
public class SlimefunCommand implements CommandExecutor, Listener {
private final SlimefunPlugin plugin;
private final List<String> arguments = new ArrayList<>();
private final List<String> descriptions = new ArrayList<>();
private final List<String> tabs = new ArrayList<>();
private final List<SubCommand> commands = new LinkedList<>();
public SlimefunCommand(SlimefunPlugin plugin) {
this.plugin = plugin;
arguments.add("/sf help");
tabs.add("help");
descriptions.add(SlimefunPlugin.getLocal().getMessage("commands.help"));
arguments.add("/sf versions");
tabs.add("versions");
descriptions.add(SlimefunPlugin.getLocal().getMessage("commands.versions"));
arguments.add("/sf cheat");
tabs.add("cheat");
descriptions.add(SlimefunPlugin.getLocal().getMessage("commands.cheat"));
arguments.add("/sf give");
tabs.add("give");
descriptions.add(SlimefunPlugin.getLocal().getMessage("commands.give"));
arguments.add("/sf research");
tabs.add("research");
descriptions.add(SlimefunPlugin.getLocal().getMessage("commands.research.desc"));
arguments.add("/sf guide");
tabs.add("guide");
descriptions.add(SlimefunPlugin.getLocal().getMessage("commands.guide"));
arguments.add("/sf stats");
tabs.add("stats");
descriptions.add(SlimefunPlugin.getLocal().getMessage("commands.stats"));
arguments.add("/sf timings");
tabs.add("timings");
descriptions.add(SlimefunPlugin.getLocal().getMessage("commands.timings"));
arguments.add("/sf teleporter");
tabs.add("teleporter");
descriptions.add(SlimefunPlugin.getLocal().getMessage("commands.teleporter"));
arguments.add("/sf open_guide");
tabs.add("open_guide");
descriptions.add(SlimefunPlugin.getLocal().getMessage("commands.open_guide"));
commands.add(new HelpCommand(plugin, this));
commands.add(new VersionsCommand(plugin, this));
commands.add(new CheatCommand(plugin, this));
commands.add(new GuideCommand(plugin, this));
commands.add(new GiveCommand(plugin, this));
commands.add(new ResearchCommand(plugin, this));
commands.add(new StatsCommand(plugin, this));
commands.add(new TimingsCommand(plugin, this));
commands.add(new TeleporterCommand(plugin, this));
commands.add(new OpenGuideCommand(plugin, this));
plugin.getServer().getPluginManager().registerEvents(this, plugin);
}
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (args.length == 0) {
sendHelp(sender);
}
else if (args.length > 0) {
if (args[0].equalsIgnoreCase("cheat")) {
if (sender instanceof Player) {
if (sender.hasPermission("slimefun.cheat.items")) SlimefunGuide.openCheatMenu((Player) sender);
else SlimefunPlugin.getLocal().sendMessage(sender, "messages.no-permission", true);
}
else SlimefunPlugin.getLocal().sendMessage(sender, "messages.only-players", true);
}
else if (args[0].equalsIgnoreCase("guide")) {
if (sender instanceof Player) {
if (sender.hasPermission("slimefun.command.guide")) ((Player) sender).getInventory().addItem(SlimefunGuide.getItem(SlimefunPlugin.getCfg().getBoolean("guide.default-view-book") ? SlimefunGuideLayout.BOOK : SlimefunGuideLayout.CHEST));
else SlimefunPlugin.getLocal().sendMessage(sender, "messages.no-permission", true);
}
else SlimefunPlugin.getLocal().sendMessage(sender, "messages.only-players", true);
}
else if (args[0].equalsIgnoreCase("open_guide")) {
if (sender instanceof Player) {
if (sender.hasPermission("slimefun.command.open_guide")) SlimefunGuide.openGuide((Player) sender, SlimefunPlugin.getCfg().getBoolean("guide.default-view-book"));
else SlimefunPlugin.getLocal().sendMessage(sender, "messages.no-permission", true);
}
else SlimefunPlugin.getLocal().sendMessage(sender, "messages.only-players", true);
}
else if (args[0].equalsIgnoreCase("debug_fish")) {
if (args.length > 0) {
if (args[0].equalsIgnoreCase("debug_fish")) {
if (sender instanceof Player && sender.isOp()) {
((Player) sender).getInventory().addItem(SlimefunItems.DEBUG_FISH);
}
else SlimefunPlugin.getLocal().sendMessage(sender, "messages.no-permission", true);
}
else if (args[0].equalsIgnoreCase("stats")) {
if (args.length > 1) {
if (sender.hasPermission("slimefun.stats.others") || sender instanceof ConsoleCommandSender) {
if (Players.isOnline(args[1])) {
Research.sendStats(sender, Bukkit.getPlayer(args[1]));
}
else {
SlimefunPlugin.getLocal().sendMessage(sender, "messages.not-online", true, msg -> msg.replace("%player%", args[1]));
}
}
else SlimefunPlugin.getLocal().sendMessage(sender, "messages.no-permission", true);
}
else if (sender instanceof Player) {
Research.sendStats((Player) sender, (Player) sender);
}
else {
SlimefunPlugin.getLocal().sendMessage(sender, "messages.only-players", true);
SlimefunPlugin.getLocal().sendMessage(sender, "messages.no-permission", true);
}
return true;
}
else if (args[0].equalsIgnoreCase("elevator")) {
if (sender instanceof Player && args.length == 4) {
@ -154,6 +75,7 @@ public class SlimefunCommand implements CommandExecutor, Listener {
float yaw = ((Player) sender).getEyeLocation().getYaw() + 180;
if (yaw > 180) yaw = -180 + (yaw - 180);
((Player) sender).teleport(new Location(((Player) sender).getWorld(), x, y, z, yaw, ((Player) sender).getEyeLocation().getPitch()));
try {
TitleBuilder title = (TitleBuilder) new TitleBuilder(20, 60, 20).addText("&r" + ChatColor.translateAlternateColorCodes('&', BlockStorage.getLocationInfo(((Player) sender).getWorld().getBlockAt(Integer.parseInt(args[1]), Integer.parseInt(args[2]), Integer.parseInt(args[3])).getLocation(), "floor")));
TitleBuilder subtitle = (TitleBuilder) new TitleBuilder(20, 60, 20).addText(" ");
@ -165,169 +87,42 @@ public class SlimefunCommand implements CommandExecutor, Listener {
}
}
}
}
else if (args[0].equalsIgnoreCase("timings")) {
if (sender.hasPermission("slimefun.command.timings")|| sender instanceof ConsoleCommandSender) {
SlimefunPlugin.getTicker().info(sender);
}
else SlimefunPlugin.getLocal().sendMessage(sender, "messages.no-permission", true);
}
else if (args[0].equalsIgnoreCase("versions")) {
if (sender.hasPermission("slimefun.command.versions")|| sender instanceof ConsoleCommandSender) {
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&a" + Bukkit.getName() + " &2" + ReflectionUtils.getVersion()));
sender.sendMessage("");
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&aCS-CoreLib &2v" + CSCoreLib.getLib().getDescription().getVersion()));
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&aSlimefun &2v" + plugin.getDescription().getVersion()));
sender.sendMessage("");
List<String> addons = new ArrayList<>();
for (Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
if (plugin.getDescription().getDepend().contains("Slimefun") || plugin.getDescription().getSoftDepend().contains("Slimefun")) {
if (Bukkit.getPluginManager().isPluginEnabled(plugin)) {
addons.add(ChatColor.translateAlternateColorCodes('&', " &a" + plugin.getName() + " &2v" + plugin.getDescription().getVersion()));
}
else {
addons.add(ChatColor.translateAlternateColorCodes('&', " &c" + plugin.getName() + " &4v" + plugin.getDescription().getVersion()));
}
}
}
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7Installed Addons &8(" + addons.size() + ")"));
for (String addon : addons) {
sender.sendMessage(addon);
}
}
else {
SlimefunPlugin.getLocal().sendMessage(sender, "messages.no-permission", true);
}
}
else if (args[0].equalsIgnoreCase("give")) {
if (sender.hasPermission("slimefun.cheat.items") || !(sender instanceof Player)) {
if (args.length == 3) {
if (Players.isOnline(args[1])) {
if (Slimefun.listIDs().contains(args[2].toUpperCase())) {
Player p = Bukkit.getPlayer(args[1]);
SlimefunPlugin.getLocal().sendMessage(p, "messages.given-item", true, msg -> msg.replace("%item%", SlimefunItem.getByID(args[2].toUpperCase()).getItem().getItemMeta().getDisplayName()).replace("%amount%", "1"));
p.getInventory().addItem(SlimefunItem.getByID(args[2].toUpperCase()).getItem());
SlimefunPlugin.getLocal().sendMessage(sender, "messages.give-item", true, msg -> msg.replace("%player%", args[1]).replace("%item%", SlimefunItem.getByID(args[2].toUpperCase()).getItem().getItemMeta().getDisplayName()).replace("%amount%", "1"));
}
else SlimefunPlugin.getLocal().sendMessage(sender, "messages.not-valid-item", true, msg -> msg.replace("%item%", args[2]));
}
else SlimefunPlugin.getLocal().sendMessage(sender, "messages.not-online", true, msg -> msg.replace("%player%", args[1]));
}
else if (args.length == 4){
if (Players.isOnline(args[1])) {
if (Slimefun.listIDs().contains(args[2].toUpperCase())) {
try {
int amount = Integer.parseInt(args[3]);
if (amount > 0) {
SlimefunPlugin.getLocal().sendMessage(Bukkit.getPlayer(args[1]), "messages.given-item", true, msg -> msg.replace("%item%", SlimefunItem.getByID(args[2].toUpperCase()).getItem().getItemMeta().getDisplayName()).replace("%amount%", String.valueOf(amount)));
Bukkit.getPlayer(args[1]).getInventory().addItem(new CustomItem(SlimefunItem.getByID(args[2].toUpperCase()).getItem(), amount));
SlimefunPlugin.getLocal().sendMessage(sender, "messages.give-item", true, msg -> msg.replace("%player%", args[1]).replace("%item%", SlimefunItem.getByID(args[2].toUpperCase()).getItem().getItemMeta().getDisplayName()).replace("%amount%", String.valueOf(amount)));
}
else SlimefunPlugin.getLocal().sendMessage(sender, "messages.not-valid-amount", true, msg -> msg.replace("%amount%", String.valueOf(amount)));
} catch (NumberFormatException e){
SlimefunPlugin.getLocal().sendMessage(sender, "messages.not-valid-amount", true, msg -> msg.replace("%amount%", args[3]));
}
}
else SlimefunPlugin.getLocal().sendMessage(sender, "messages.not-valid-item", true, msg -> msg.replace("%item%", args[2]));
}
else SlimefunPlugin.getLocal().sendMessage(sender, "messages.not-online", true, msg -> msg.replace("%player%", args[1]));
}
else SlimefunPlugin.getLocal().sendMessage(sender, "messages.usage", true, msg -> msg.replace("%usage%", "/sf give <Player> <Slimefun Item> [Amount]"));
}
else SlimefunPlugin.getLocal().sendMessage(sender, "messages.no-permission", true);
}
else if (args[0].equalsIgnoreCase("teleporter")) {
if (args.length == 2) {
if (sender.hasPermission("slimefun.command.teleporter") && sender instanceof Player) {
OfflinePlayer player = Bukkit.getOfflinePlayer(args[1]);
if (player.getName() != null) {
GPSNetwork.openTeleporterGUI((Player) sender, player.getUniqueId(), ((Player) sender).getLocation().getBlock().getRelative(BlockFace.DOWN), 999999999);
}
else sender.sendMessage("&4Unknown Player: &c" + args[1]);
}
else SlimefunPlugin.getLocal().sendMessage(sender, "messages.no-permission", true);
}
else SlimefunPlugin.getLocal().sendMessage(sender, "messages.usage", true, msg -> msg.replace("%usage%", "/sf teleporter <Player>"));
}
else if (args[0].equalsIgnoreCase("research")) {
if (args.length == 3) {
if (sender.hasPermission("slimefun.cheat.researches") || !(sender instanceof Player)) {
if (Players.isOnline(args[1])) {
Player p = Bukkit.getPlayer(args[1]);
PlayerProfile profile = PlayerProfile.fromUUID(p.getUniqueId());
if (args[2].equalsIgnoreCase("all")) {
for (Research res : Research.list()) {
if (!profile.hasUnlocked(res)) SlimefunPlugin.getLocal().sendMessage(sender, "messages.give-research", true, msg -> msg.replace("%player%", p.getName()).replace("%research%", res.getName()));
res.unlock(p, true);
}
}
else if (args[2].equalsIgnoreCase("reset")) {
for (Research res : Research.list()) {
profile.setResearched(res, false);
}
SlimefunPlugin.getLocal().sendMessage(p, "commands.research.reset", true, msg -> msg.replace("%player%", args[1]));
}
else {
Research research = null;
for (Research res : Research.list()) {
if (res.getName().toUpperCase().replace(' ', '_').equalsIgnoreCase(args[2])) {
research = res;
break;
}
}
if (research != null) {
research.unlock(p, true);
final Research r = research;
SlimefunPlugin.getLocal().sendMessage(sender, "messages.give-research", true, msg -> msg.replace("%player%", p.getName()).replace("%research%", r.getName()));
}
else {
SlimefunPlugin.getLocal().sendMessage(sender, "messages.not-valid-research", true, msg -> msg.replace("%research%", args[2]));
}
}
}
else {
SlimefunPlugin.getLocal().sendMessage(sender, "messages.not-online", true, msg -> msg.replace("%player%", args[1]));
}
}
else SlimefunPlugin.getLocal().sendMessage(sender, "messages.no-permission", true);
}
else {
SlimefunPlugin.getLocal().sendMessage(sender, "messages.usage", true, msg -> msg.replace("%usage%", "/sf research <Player> <all/reset/Research>"));
}
return true;
}
else {
sendHelp(sender);
for (SubCommand command: commands) {
if (args[0].equalsIgnoreCase(command.getName())) {
command.onExecute(sender, args);
return true;
}
}
}
}
sendHelp(sender);
return true;
}
private void sendHelp(CommandSender sender) {
public void sendHelp(CommandSender sender) {
sender.sendMessage("");
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&aSlimefun &2v" + plugin.getDescription().getVersion()));
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&aSlimefun &2v" + Slimefun.getVersion()));
sender.sendMessage("");
for (int i = 0; i < arguments.size(); i++) {
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&3" + arguments.get(i) + " &b") + descriptions.get(i));
for (SubCommand cmd: commands) {
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&3/sf " + cmd.getName() + " &b") + cmd.getDescription());
}
}
@EventHandler
public void onCommand(PlayerCommandPreprocessEvent e) {
if (e.getMessage().equalsIgnoreCase("/help slimefun")) {
CommandHelp.sendCommandHelp(e.getPlayer(), plugin, arguments, descriptions);
sendHelp(e.getPlayer());
e.setCancelled(true);
}
}
public List<String> getTabArguments() {
return tabs;
return commands.stream().map(cmd -> cmd.getName()).collect(Collectors.toList());
}
}

View File

@ -0,0 +1,32 @@
package me.mrCookieSlime.Slimefun.commands;
import org.bukkit.command.CommandSender;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
public abstract class SubCommand {
protected final SlimefunPlugin plugin;
protected final SlimefunCommand cmd;
private final String description;
protected SubCommand(SlimefunPlugin plugin, SlimefunCommand cmd) {
this.plugin = plugin;
this.cmd = cmd;
this.description = SlimefunPlugin.getLocal().getMessage(getDescriptionPath());
}
public abstract String getName();
public abstract void onExecute(CommandSender sender, String[] args);
protected String getDescriptionPath() {
return "commands." + getName();
}
public String getDescription() {
return description;
}
}

View File

@ -0,0 +1,37 @@
package me.mrCookieSlime.Slimefun.commands.subcommands;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import me.mrCookieSlime.Slimefun.SlimefunGuide;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.commands.SlimefunCommand;
import me.mrCookieSlime.Slimefun.commands.SubCommand;
public class CheatCommand extends SubCommand {
public CheatCommand(SlimefunPlugin plugin, SlimefunCommand cmd) {
super(plugin, cmd);
}
@Override
public String getName() {
return "cheat";
}
@Override
public void onExecute(CommandSender sender, String[] args) {
if (sender instanceof Player) {
if (sender.hasPermission("slimefun.cheat.items")) {
SlimefunGuide.openCheatMenu((Player) sender);
}
else {
SlimefunPlugin.getLocal().sendMessage(sender, "messages.no-permission", true);
}
}
else {
SlimefunPlugin.getLocal().sendMessage(sender, "messages.only-players", true);
}
}
}

View File

@ -0,0 +1,72 @@
package me.mrCookieSlime.Slimefun.commands.subcommands;
import java.util.Optional;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import io.github.thebusybiscuit.cscorelib2.players.PlayerList;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.api.Slimefun;
import me.mrCookieSlime.Slimefun.commands.SlimefunCommand;
import me.mrCookieSlime.Slimefun.commands.SubCommand;
public class GiveCommand extends SubCommand {
public GiveCommand(SlimefunPlugin plugin, SlimefunCommand cmd) {
super(plugin, cmd);
}
@Override
public String getName() {
return "give";
}
@Override
public void onExecute(CommandSender sender, String[] args) {
if (sender.hasPermission("slimefun.cheat.items") || !(sender instanceof Player)) {
if (args.length == 3) {
Optional<Player> player = PlayerList.findByName(args[1]);
if (player.isPresent()) {
Player p = player.get();
if (Slimefun.listIDs().contains(args[2].toUpperCase())) {
SlimefunPlugin.getLocal().sendMessage(p, "messages.given-item", true, msg -> msg.replace("%item%", SlimefunItem.getByID(args[2].toUpperCase()).getItem().getItemMeta().getDisplayName()).replace("%amount%", "1"));
p.getInventory().addItem(SlimefunItem.getByID(args[2].toUpperCase()).getItem());
SlimefunPlugin.getLocal().sendMessage(sender, "messages.give-item", true, msg -> msg.replace("%player%", args[1]).replace("%item%", SlimefunItem.getByID(args[2].toUpperCase()).getItem().getItemMeta().getDisplayName()).replace("%amount%", "1"));
}
else SlimefunPlugin.getLocal().sendMessage(sender, "messages.not-valid-item", true, msg -> msg.replace("%item%", args[2]));
}
else SlimefunPlugin.getLocal().sendMessage(sender, "messages.not-online", true, msg -> msg.replace("%player%", args[1]));
}
else if (args.length == 4) {
Optional<Player> player = PlayerList.findByName(args[1]);
if (player.isPresent()) {
Player p = player.get();
if (Slimefun.listIDs().contains(args[2].toUpperCase())) {
try {
int amount = Integer.parseInt(args[3]);
if (amount > 0) {
SlimefunPlugin.getLocal().sendMessage(p, "messages.given-item", true, msg -> msg.replace("%item%", SlimefunItem.getByID(args[2].toUpperCase()).getItem().getItemMeta().getDisplayName()).replace("%amount%", String.valueOf(amount)));
p.getInventory().addItem(new CustomItem(SlimefunItem.getByID(args[2].toUpperCase()).getItem(), amount));
SlimefunPlugin.getLocal().sendMessage(sender, "messages.give-item", true, msg -> msg.replace("%player%", args[1]).replace("%item%", SlimefunItem.getByID(args[2].toUpperCase()).getItem().getItemMeta().getDisplayName()).replace("%amount%", String.valueOf(amount)));
}
else SlimefunPlugin.getLocal().sendMessage(sender, "messages.not-valid-amount", true, msg -> msg.replace("%amount%", String.valueOf(amount)));
} catch (NumberFormatException e){
SlimefunPlugin.getLocal().sendMessage(sender, "messages.not-valid-amount", true, msg -> msg.replace("%amount%", args[3]));
}
}
else SlimefunPlugin.getLocal().sendMessage(sender, "messages.not-valid-item", true, msg -> msg.replace("%item%", args[2]));
}
else SlimefunPlugin.getLocal().sendMessage(sender, "messages.not-online", true, msg -> msg.replace("%player%", args[1]));
}
else SlimefunPlugin.getLocal().sendMessage(sender, "messages.usage", true, msg -> msg.replace("%usage%", "/sf give <Player> <Slimefun Item> [Amount]"));
}
else SlimefunPlugin.getLocal().sendMessage(sender, "messages.no-permission", true);
}
}

View File

@ -0,0 +1,38 @@
package me.mrCookieSlime.Slimefun.commands.subcommands;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import me.mrCookieSlime.Slimefun.SlimefunGuide;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.api.SlimefunGuideLayout;
import me.mrCookieSlime.Slimefun.commands.SlimefunCommand;
import me.mrCookieSlime.Slimefun.commands.SubCommand;
public class GuideCommand extends SubCommand {
public GuideCommand(SlimefunPlugin plugin, SlimefunCommand cmd) {
super(plugin, cmd);
}
@Override
public String getName() {
return "guide";
}
@Override
public void onExecute(CommandSender sender, String[] args) {
if (sender instanceof Player) {
if (sender.hasPermission("slimefun.command.guide")) {
((Player) sender).getInventory().addItem(SlimefunGuide.getItem(SlimefunPlugin.getCfg().getBoolean("guide.default-view-book") ? SlimefunGuideLayout.BOOK : SlimefunGuideLayout.CHEST));
}
else {
SlimefunPlugin.getLocal().sendMessage(sender, "messages.no-permission", true);
}
}
else {
SlimefunPlugin.getLocal().sendMessage(sender, "messages.only-players", true);
}
}
}

View File

@ -0,0 +1,25 @@
package me.mrCookieSlime.Slimefun.commands.subcommands;
import org.bukkit.command.CommandSender;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.commands.SlimefunCommand;
import me.mrCookieSlime.Slimefun.commands.SubCommand;
public class HelpCommand extends SubCommand {
public HelpCommand(SlimefunPlugin plugin, SlimefunCommand cmd) {
super(plugin, cmd);
}
@Override
public String getName() {
return "help";
}
@Override
public void onExecute(CommandSender sender, String[] args) {
cmd.sendHelp(sender);
}
}

View File

@ -0,0 +1,37 @@
package me.mrCookieSlime.Slimefun.commands.subcommands;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import me.mrCookieSlime.Slimefun.SlimefunGuide;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.commands.SlimefunCommand;
import me.mrCookieSlime.Slimefun.commands.SubCommand;
public class OpenGuideCommand extends SubCommand {
public OpenGuideCommand(SlimefunPlugin plugin, SlimefunCommand cmd) {
super(plugin, cmd);
}
@Override
public String getName() {
return "open_guide";
}
@Override
public void onExecute(CommandSender sender, String[] args) {
if (sender instanceof Player) {
if (sender.hasPermission("slimefun.command.open_guide")) {
SlimefunGuide.openGuide((Player) sender, SlimefunPlugin.getCfg().getBoolean("guide.default-view-book"));
}
else {
SlimefunPlugin.getLocal().sendMessage(sender, "messages.no-permission", true);
}
}
else {
SlimefunPlugin.getLocal().sendMessage(sender, "messages.only-players", true);
}
}
}

View File

@ -0,0 +1,83 @@
package me.mrCookieSlime.Slimefun.commands.subcommands;
import java.util.Optional;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import io.github.thebusybiscuit.cscorelib2.players.PlayerList;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Objects.Research;
import me.mrCookieSlime.Slimefun.api.PlayerProfile;
import me.mrCookieSlime.Slimefun.commands.SlimefunCommand;
import me.mrCookieSlime.Slimefun.commands.SubCommand;
public class ResearchCommand extends SubCommand {
public ResearchCommand(SlimefunPlugin plugin, SlimefunCommand cmd) {
super(plugin, cmd);
}
@Override
public String getName() {
return "research";
}
@Override
protected String getDescriptionPath() {
return "commands.research.desc";
}
@Override
public void onExecute(CommandSender sender, String[] args) {
if (args.length == 3) {
if (sender.hasPermission("slimefun.cheat.researches") || !(sender instanceof Player)) {
Optional<Player> player = PlayerList.findByName(args[1]);
if (player.isPresent()) {
Player p = player.get();
PlayerProfile profile = PlayerProfile.get(p);
if (args[2].equalsIgnoreCase("all")) {
for (Research res : Research.list()) {
if (!profile.hasUnlocked(res)) SlimefunPlugin.getLocal().sendMessage(sender, "messages.give-research", true, msg -> msg.replace("%player%", p.getName()).replace("%research%", res.getName()));
res.unlock(p, true);
}
}
else if (args[2].equalsIgnoreCase("reset")) {
for (Research res : Research.list()) {
profile.setResearched(res, false);
}
SlimefunPlugin.getLocal().sendMessage(p, "commands.research.reset", true, msg -> msg.replace("%player%", args[1]));
}
else {
Research research = null;
for (Research res : Research.list()) {
if (res.getName().toUpperCase().replace(' ', '_').equalsIgnoreCase(args[2])) {
research = res;
break;
}
}
if (research != null) {
research.unlock(p, true);
final Research r = research;
SlimefunPlugin.getLocal().sendMessage(sender, "messages.give-research", true, msg -> msg.replace("%player%", p.getName()).replace("%research%", r.getName()));
}
else {
SlimefunPlugin.getLocal().sendMessage(sender, "messages.not-valid-research", true, msg -> msg.replace("%research%", args[2]));
}
}
}
else {
SlimefunPlugin.getLocal().sendMessage(sender, "messages.not-online", true, msg -> msg.replace("%player%", args[1]));
}
}
else SlimefunPlugin.getLocal().sendMessage(sender, "messages.no-permission", true);
}
else {
SlimefunPlugin.getLocal().sendMessage(sender, "messages.usage", true, msg -> msg.replace("%usage%", "/sf research <Player> <all/reset/Research>"));
}
}
}

View File

@ -0,0 +1,48 @@
package me.mrCookieSlime.Slimefun.commands.subcommands;
import java.util.Optional;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
import io.github.thebusybiscuit.cscorelib2.players.PlayerList;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.api.PlayerProfile;
import me.mrCookieSlime.Slimefun.commands.SlimefunCommand;
import me.mrCookieSlime.Slimefun.commands.SubCommand;
public class StatsCommand extends SubCommand {
public StatsCommand(SlimefunPlugin plugin, SlimefunCommand cmd) {
super(plugin, cmd);
}
@Override
public String getName() {
return "stats";
}
@Override
public void onExecute(CommandSender sender, String[] args) {
if (args.length > 1) {
if (sender.hasPermission("slimefun.stats.others") || sender instanceof ConsoleCommandSender) {
Optional<Player> player = PlayerList.findByName(args[1]);
if (player.isPresent()) {
PlayerProfile.get(player.get()).sendStats(sender);
}
else {
SlimefunPlugin.getLocal().sendMessage(sender, "messages.not-online", true, msg -> msg.replace("%player%", args[1]));
}
}
else SlimefunPlugin.getLocal().sendMessage(sender, "messages.no-permission", true);
}
else if (sender instanceof Player) {
PlayerProfile.get((Player) sender).sendStats(sender);
}
else {
SlimefunPlugin.getLocal().sendMessage(sender, "messages.only-players", true);
}
}
}

View File

@ -0,0 +1,40 @@
package me.mrCookieSlime.Slimefun.commands.subcommands;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.block.BlockFace;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.GPS.GPSNetwork;
import me.mrCookieSlime.Slimefun.commands.SlimefunCommand;
import me.mrCookieSlime.Slimefun.commands.SubCommand;
public class TeleporterCommand extends SubCommand {
public TeleporterCommand(SlimefunPlugin plugin, SlimefunCommand cmd) {
super(plugin, cmd);
}
@Override
public String getName() {
return "teleporter";
}
@Override
public void onExecute(CommandSender sender, String[] args) {
if (args.length == 2) {
if (sender.hasPermission("slimefun.command.teleporter") && sender instanceof Player) {
OfflinePlayer player = Bukkit.getOfflinePlayer(args[1]);
if (player.getName() != null) {
GPSNetwork.openTeleporterGUI((Player) sender, player.getUniqueId(), ((Player) sender).getLocation().getBlock().getRelative(BlockFace.DOWN), 999999999);
}
else sender.sendMessage("&4Unknown Player: &c" + args[1]);
}
else SlimefunPlugin.getLocal().sendMessage(sender, "messages.no-permission", true);
}
else SlimefunPlugin.getLocal().sendMessage(sender, "messages.usage", true, msg -> msg.replace("%usage%", "/sf teleporter <Player>"));
}
}

View File

@ -0,0 +1,31 @@
package me.mrCookieSlime.Slimefun.commands.subcommands;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.commands.SlimefunCommand;
import me.mrCookieSlime.Slimefun.commands.SubCommand;
public class TimingsCommand extends SubCommand {
public TimingsCommand(SlimefunPlugin plugin, SlimefunCommand cmd) {
super(plugin, cmd);
}
@Override
public String getName() {
return "timings";
}
@Override
public void onExecute(CommandSender sender, String[] args) {
if (sender.hasPermission("slimefun.command.timings")|| sender instanceof ConsoleCommandSender) {
SlimefunPlugin.getTicker().info(sender);
}
else {
SlimefunPlugin.getLocal().sendMessage(sender, "messages.no-permission", true);
}
}
}

View File

@ -0,0 +1,62 @@
package me.mrCookieSlime.Slimefun.commands.subcommands;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.plugin.Plugin;
import io.github.thebusybiscuit.cscorelib2.reflection.ReflectionUtils;
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.commands.SlimefunCommand;
import me.mrCookieSlime.Slimefun.commands.SubCommand;
public class VersionsCommand extends SubCommand {
public VersionsCommand(SlimefunPlugin plugin, SlimefunCommand cmd) {
super(plugin, cmd);
}
@Override
public String getName() {
return "versions";
}
@Override
public void onExecute(CommandSender sender, String[] args) {
if (sender.hasPermission("slimefun.command.versions")|| sender instanceof ConsoleCommandSender) {
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&a" + Bukkit.getName() + " &2" + ReflectionUtils.getVersion()));
sender.sendMessage("");
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&aCS-CoreLib &2v" + CSCoreLib.getLib().getDescription().getVersion()));
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&aSlimefun &2v" + plugin.getDescription().getVersion()));
sender.sendMessage("");
List<String> addons = new ArrayList<>();
for (Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
if (plugin.getDescription().getDepend().contains("Slimefun") || plugin.getDescription().getSoftDepend().contains("Slimefun")) {
if (Bukkit.getPluginManager().isPluginEnabled(plugin)) {
addons.add(ChatColor.translateAlternateColorCodes('&', " &a" + plugin.getName() + " &2v" + plugin.getDescription().getVersion()));
}
else {
addons.add(ChatColor.translateAlternateColorCodes('&', " &c" + plugin.getName() + " &4v" + plugin.getDescription().getVersion()));
}
}
}
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7Installed Addons &8(" + addons.size() + ")"));
for (String addon : addons) {
sender.sendMessage(addon);
}
}
else {
SlimefunPlugin.getLocal().sendMessage(sender, "messages.no-permission", true);
}
}
}

View File

@ -7,7 +7,7 @@ import org.bukkit.block.Block;
import org.bukkit.entity.ArmorStand;
import org.bukkit.entity.Entity;
import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler;
import io.github.thebusybiscuit.cscorelib2.math.DoubleHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.World.ArmorStandFactory;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;

View File

@ -41,12 +41,12 @@ public class PlaceholderAPIHook extends PlaceholderExpansion {
@Override
public String onRequest(OfflinePlayer p, String params) {
if (params.equals("researches_total_xp_levels_spent")) {
Stream<Research> stream = PlayerProfile.fromUUID(p.getUniqueId()).getResearches().stream();
Stream<Research> stream = PlayerProfile.get(p).getResearches().stream();
return String.valueOf(stream.mapToInt(Research::getCost).sum());
}
if (params.equals("researches_total_researches_unlocked")) {
Set<Research> set = PlayerProfile.fromUUID(p.getUniqueId()).getResearches();
Set<Research> set = PlayerProfile.get(p).getResearches();
return String.valueOf(set.size());
}
@ -55,12 +55,12 @@ public class PlaceholderAPIHook extends PlaceholderExpansion {
}
if (params.equals("researches_percentage_researches_unlocked")) {
Set<Research> set = PlayerProfile.fromUUID(p.getUniqueId()).getResearches();
Set<Research> set = PlayerProfile.get(p).getResearches();
return String.valueOf(Math.round(((set.size() * 100.0F) / Research.list().size()) * 100.0F) / 100.0F);
}
if (params.equals("researches_title")) {
return PlayerProfile.fromUUID(p.getUniqueId()).getTitle();
return PlayerProfile.get(p).getTitle();
}
if (params.equals("gps_complexity")) {

View File

@ -116,7 +116,7 @@ public class BackpackListener implements Listener {
if (item.getAmount() == 1) {
if (Slimefun.hasUnlocked(p, sfItem, true)) {
PlayerProfile profile = PlayerProfile.fromUUID(p.getUniqueId());
PlayerProfile profile = PlayerProfile.get(p);
for (int line = 0; line < item.getItemMeta().getLore().size(); line++) {
if (item.getItemMeta().getLore().get(line).equals(ChatColor.translateAlternateColorCodes('&', "&7ID: <ID>"))) {

View File

@ -18,7 +18,7 @@ public class PlayerQuitListener implements Listener {
SlimefunPlugin.getUtilities().guideHistory.remove(e.getPlayer().getUniqueId());
if (PlayerProfile.isLoaded(e.getPlayer().getUniqueId())) {
PlayerProfile.fromUUID(e.getPlayer().getUniqueId()).markForDeletion();
PlayerProfile.get(e.getPlayer()).markForDeletion();
}
}