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:
parent
3d8d9ed624
commit
7cac093419
8
pom.xml
8
pom.xml
@ -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>
|
||||
|
@ -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()) {
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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));
|
||||
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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();
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
|
32
src/me/mrCookieSlime/Slimefun/commands/SubCommand.java
Normal file
32
src/me/mrCookieSlime/Slimefun/commands/SubCommand.java
Normal 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;
|
||||
}
|
||||
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -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>"));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -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>"));
|
||||
}
|
||||
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -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;
|
||||
|
||||
|
@ -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")) {
|
||||
|
@ -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>"))) {
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user