mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-20 11:45:51 +00:00
General improvements and fixes
This commit is contained in:
parent
6b62a45ffa
commit
694d36afa6
@ -73,8 +73,8 @@ public class SlimefunLocalization extends Localization {
|
|||||||
setDefaultMessage("messages.cannot-place" ,"&cYou cannot place that block there!");
|
setDefaultMessage("messages.cannot-place" ,"&cYou cannot place that block there!");
|
||||||
setDefaultMessage("messages.no-pvp" ,"&cYou cannot pvp in here!");
|
setDefaultMessage("messages.no-pvp" ,"&cYou cannot pvp in here!");
|
||||||
setDefaultMessage("messages.radiation" ,"&4You have been exposed to deadly radiation! &cGet rid of the radioactive item or equip the complete hazmat suit!");
|
setDefaultMessage("messages.radiation" ,"&4You have been exposed to deadly radiation! &cGet rid of the radioactive item or equip the complete hazmat suit!");
|
||||||
setDefaultMessage("messages.opening-guide", "&bOpening guide...");
|
setDefaultMessage("messages.opening-guide", "&bOpening guide, this may take a few seconds...");
|
||||||
setDefaultMessage("messages.opening-backpack", "&bOpening backpack...");
|
setDefaultMessage("messages.opening-backpack", "&bOpening backpack, this may take a few seconds...");
|
||||||
|
|
||||||
setDefaultMessage("machines.pattern-not-found", "&eSorry, I could not recognize this Pattern. Please place the Items in the correct Pattern into the Dispenser.");
|
setDefaultMessage("machines.pattern-not-found", "&eSorry, I could not recognize this Pattern. Please place the Items in the correct Pattern into the Dispenser.");
|
||||||
setDefaultMessage("machines.unknown-material", "&eSorry, I could not recognize the Item in my Dispenser. Please put something in that I know.");
|
setDefaultMessage("machines.unknown-material", "&eSorry, I could not recognize the Item in my Dispenser. Please put something in that I know.");
|
||||||
|
@ -255,10 +255,8 @@ public final class SlimefunGuide {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static void openMainMenuAsync(final Player player, final boolean survival, final boolean book, final int selected_page) {
|
private static void openMainMenuAsync(final Player player, final boolean survival, final boolean book, final int selected_page) {
|
||||||
|
if (!PlayerProfile.get(player, profile -> Slimefun.runSync(() -> openMainMenu(profile, survival, book, selected_page))))
|
||||||
Slimefun.getLocal().sendMessage(player, "messages.opening-guide");
|
Slimefun.getLocal().sendMessage(player, "messages.opening-guide");
|
||||||
PlayerProfile.get(player, profile ->
|
|
||||||
Bukkit.getScheduler().runTask(SlimefunPlugin.instance, () -> openMainMenu(profile, survival, book, selected_page))
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void openMainMenu(final PlayerProfile profile, final boolean survival, final boolean book, final int selected_page) {
|
private static void openMainMenu(final PlayerProfile profile, final boolean survival, final boolean book, final int selected_page) {
|
||||||
@ -735,7 +733,7 @@ public final class SlimefunGuide {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void openSearch(Player player, String searchTerm, boolean cheat, boolean addToHistory) {
|
public static void openSearch(Player player, String searchTerm, boolean cheat, boolean addToHistory) {
|
||||||
final ChestMenu menu = new ChestMenu("Slimefun Guide Search");
|
final ChestMenu menu = new ChestMenu("Slimefun Guide Search");
|
||||||
|
|
||||||
menu.setEmptySlotsClickable(false);
|
menu.setEmptySlotsClickable(false);
|
||||||
|
@ -16,6 +16,7 @@ import org.bukkit.Bukkit;
|
|||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.OfflinePlayer;
|
import org.bukkit.OfflinePlayer;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
||||||
@ -207,6 +208,10 @@ public final class PlayerProfile {
|
|||||||
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7Total XP Levels spent: &b" + levels));
|
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7Total XP Levels spent: &b" + levels));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Player getPlayer() {
|
||||||
|
return Bukkit.getPlayer(getUUID());
|
||||||
|
}
|
||||||
|
|
||||||
public static PlayerProfile fromUUID(UUID uuid) {
|
public static PlayerProfile fromUUID(UUID uuid) {
|
||||||
PlayerProfile profile = SlimefunPlugin.getUtilities().profiles.get(uuid);
|
PlayerProfile profile = SlimefunPlugin.getUtilities().profiles.get(uuid);
|
||||||
|
|
||||||
@ -243,11 +248,18 @@ public final class PlayerProfile {
|
|||||||
return profile;
|
return profile;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void get(OfflinePlayer p, Consumer<PlayerProfile> callback) {
|
/**
|
||||||
|
* Get the PlayerProfile for a player asynchronously.
|
||||||
|
*
|
||||||
|
* @param p The player who's profile to retrieve
|
||||||
|
* @param callback The callback with the PlayerProfile
|
||||||
|
* @return If the player was cached or not.
|
||||||
|
*/
|
||||||
|
public static boolean get(OfflinePlayer p, Consumer<PlayerProfile> callback) {
|
||||||
PlayerProfile profile = SlimefunPlugin.getUtilities().profiles.get(p.getUniqueId());
|
PlayerProfile profile = SlimefunPlugin.getUtilities().profiles.get(p.getUniqueId());
|
||||||
if (profile != null) {
|
if (profile != null) {
|
||||||
callback.accept(profile);
|
callback.accept(profile);
|
||||||
return;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
Bukkit.getScheduler().runTaskAsynchronously(SlimefunPlugin.instance, () -> {
|
Bukkit.getScheduler().runTaskAsynchronously(SlimefunPlugin.instance, () -> {
|
||||||
@ -255,6 +267,7 @@ public final class PlayerProfile {
|
|||||||
SlimefunPlugin.getUtilities().profiles.put(p.getUniqueId(), pp);
|
SlimefunPlugin.getUtilities().profiles.put(p.getUniqueId(), pp);
|
||||||
callback.accept(pp);
|
callback.accept(pp);
|
||||||
});
|
});
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isLoaded(UUID uuid) {
|
public static boolean isLoaded(UUID uuid) {
|
||||||
|
@ -5,6 +5,7 @@ import java.util.Arrays;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
@ -323,4 +324,8 @@ public final class Slimefun {
|
|||||||
public static SlimefunLocalization getLocal() {
|
public static SlimefunLocalization getLocal() {
|
||||||
return SlimefunPlugin.getLocal();
|
return SlimefunPlugin.getLocal();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void runSync(Runnable r) {
|
||||||
|
Bukkit.getScheduler().runTask(SlimefunPlugin.instance, r);
|
||||||
|
}
|
||||||
}
|
}
|
@ -3,6 +3,7 @@ package me.mrCookieSlime.Slimefun.listeners;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunLocalization;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunLocalization;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.Sound;
|
import org.bukkit.Sound;
|
||||||
@ -82,43 +83,45 @@ public class BackpackListener implements Listener {
|
|||||||
@EventHandler
|
@EventHandler
|
||||||
public void onInteract(PlayerInteractEvent e) {
|
public void onInteract(PlayerInteractEvent e) {
|
||||||
if (e.getAction() == Action.RIGHT_CLICK_AIR || e.getAction() == Action.RIGHT_CLICK_BLOCK) {
|
if (e.getAction() == Action.RIGHT_CLICK_AIR || e.getAction() == Action.RIGHT_CLICK_BLOCK) {
|
||||||
ItemStack item = e.getItem();
|
|
||||||
Player p = e.getPlayer();
|
Player p = e.getPlayer();
|
||||||
|
ItemStack item = e.getItem();
|
||||||
|
SlimefunItem sfItem = SlimefunItem.getByItem(item);
|
||||||
|
if (sfItem == null) return;
|
||||||
|
|
||||||
if (SlimefunManager.isItemSimiliar(item, SlimefunItems.BACKPACK_SMALL, false)) {
|
// Surely this can be even simpler?
|
||||||
openBackpack(SlimefunItems.BACKPACK_SMALL, 9, e, p, item);
|
if (sfItem.isItem(SlimefunItems.BACKPACK_SMALL))
|
||||||
}
|
openBackpack(SlimefunItems.BACKPACK_SMALL, 9, e, p);
|
||||||
else if (SlimefunManager.isItemSimiliar(item, SlimefunItems.BACKPACK_MEDIUM, false)) {
|
else if (sfItem.isItem(SlimefunItems.BACKPACK_MEDIUM))
|
||||||
openBackpack(SlimefunItems.BACKPACK_MEDIUM, 18, e, p, item);
|
openBackpack(SlimefunItems.BACKPACK_MEDIUM, 18, e, p);
|
||||||
}
|
else if (sfItem.isItem(SlimefunItems.BACKPACK_LARGE))
|
||||||
else if (SlimefunManager.isItemSimiliar(item, SlimefunItems.BACKPACK_LARGE, false)) {
|
openBackpack(SlimefunItems.BACKPACK_LARGE, 27, e, p);
|
||||||
openBackpack(SlimefunItems.BACKPACK_LARGE, 27, e, p, item);
|
else if (sfItem.isItem(SlimefunItems.WOVEN_BACKPACK))
|
||||||
}
|
openBackpack(SlimefunItems.WOVEN_BACKPACK, 36, e, p);
|
||||||
else if (SlimefunManager.isItemSimiliar(item, SlimefunItems.WOVEN_BACKPACK, false)) {
|
else if (sfItem.isItem(SlimefunItems.GILDED_BACKPACK))
|
||||||
openBackpack(SlimefunItems.WOVEN_BACKPACK, 36, e, p, item);
|
openBackpack(SlimefunItems.GILDED_BACKPACK, 45, e, p);
|
||||||
}
|
else if (sfItem.isItem(SlimefunItems.RADIANT_BACKPACK))
|
||||||
else if (SlimefunManager.isItemSimiliar(item, SlimefunItems.GILDED_BACKPACK, false)) {
|
openBackpack(SlimefunItems.RADIANT_BACKPACK, 54, e, p);
|
||||||
openBackpack(SlimefunItems.GILDED_BACKPACK, 45, e, p, item);
|
else if (sfItem.isItem(SlimefunItems.BOUND_BACKPACK))
|
||||||
}
|
openBackpack(SlimefunItems.BOUND_BACKPACK, 36, e, p);
|
||||||
else if (SlimefunManager.isItemSimiliar(item, SlimefunItems.RADIANT_BACKPACK, false)) {
|
else if (sfItem.isItem(SlimefunItems.COOLER))
|
||||||
openBackpack(SlimefunItems.RADIANT_BACKPACK, 54, e, p, item);
|
openBackpack(SlimefunItems.COOLER, 27, e, p);
|
||||||
}
|
|
||||||
else if (SlimefunManager.isItemSimiliar(item, SlimefunItems.BOUND_BACKPACK, false)) {
|
|
||||||
openBackpack(SlimefunItems.BOUND_BACKPACK, 36, e, p, item);
|
|
||||||
}
|
|
||||||
else if (SlimefunManager.isItemSimiliar(item, SlimefunItems.COOLER, false)) {
|
|
||||||
openBackpack(SlimefunItems.COOLER, 27, e, p, item);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void openBackpack(ItemStack sfItem, int size, PlayerInteractEvent e, Player p, ItemStack item) {
|
private void openBackpack(ItemStack item, int size, PlayerInteractEvent e, Player p) {
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
|
|
||||||
if (item.getAmount() == 1) {
|
if (item.getAmount() == 1) {
|
||||||
if (Slimefun.hasUnlocked(p, sfItem, true)) {
|
if (Slimefun.hasUnlocked(p, item, true)) {
|
||||||
|
if (!PlayerProfile.get(p, profile -> openBackpack(item, profile, size)))
|
||||||
Slimefun.getLocal().sendMessage(p, "messages.opening-backpack");
|
Slimefun.getLocal().sendMessage(p, "messages.opening-backpack");
|
||||||
PlayerProfile.get(p, profile -> {
|
}
|
||||||
|
}
|
||||||
|
else SlimefunPlugin.getLocal().sendMessage(p, "backpack.no-stack", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void openBackpack(ItemStack item, PlayerProfile profile, int size) {
|
||||||
|
Player p = profile.getPlayer();
|
||||||
for (int line = 0; line < item.getItemMeta().getLore().size(); line++) {
|
for (int line = 0; line < item.getItemMeta().getLore().size(); line++) {
|
||||||
if (item.getItemMeta().getLore().get(line).equals(ChatColor.translateAlternateColorCodes('&', "&7ID: <ID>"))) {
|
if (item.getItemMeta().getLore().get(line).equals(ChatColor.translateAlternateColorCodes('&', "&7ID: <ID>"))) {
|
||||||
BackpackInventory backpack = profile.createBackpack(size);
|
BackpackInventory backpack = profile.createBackpack(size);
|
||||||
@ -129,15 +132,12 @@ public class BackpackListener implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(!SlimefunPlugin.getUtilities().backpack.containsValue(item)) {
|
if(!SlimefunPlugin.getUtilities().backpack.containsValue(item)) {
|
||||||
PlayerProfile.getBackpack(item).open(p);
|
|
||||||
p.playSound(p.getLocation(), Sound.ENTITY_HORSE_ARMOR, 1F, 1F);
|
p.playSound(p.getLocation(), Sound.ENTITY_HORSE_ARMOR, 1F, 1F);
|
||||||
SlimefunPlugin.getUtilities().backpack.put(p.getUniqueId(), item);
|
SlimefunPlugin.getUtilities().backpack.put(p.getUniqueId(), item);
|
||||||
|
|
||||||
|
Slimefun.runSync(() -> PlayerProfile.getBackpack(item).open(p));
|
||||||
}
|
}
|
||||||
else SlimefunPlugin.getLocal().sendMessage(p, "backpack.already-open", true);
|
else SlimefunPlugin.getLocal().sendMessage(p, "backpack.already-open", true);
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else SlimefunPlugin.getLocal().sendMessage(p, "backpack.no-stack", true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setBackpackId(Player p, ItemStack item, int line, int id) {
|
public static void setBackpackId(Player p, ItemStack item, int line, int id) {
|
||||||
|
@ -210,6 +210,7 @@ public class ItemListener implements Listener {
|
|||||||
|
|
||||||
final Player p = e.getPlayer();
|
final Player p = e.getPlayer();
|
||||||
ItemStack item = e.getItem();
|
ItemStack item = e.getItem();
|
||||||
|
SlimefunItem slimefunItem = SlimefunItem.getByItem(item);
|
||||||
|
|
||||||
if (SlimefunManager.isItemSimiliar(item, SlimefunGuide.getItem(SlimefunGuideLayout.BOOK), true)) {
|
if (SlimefunManager.isItemSimiliar(item, SlimefunGuide.getItem(SlimefunGuideLayout.BOOK), true)) {
|
||||||
if (p.isSneaking()) SlimefunGuide.openSettings(p, item);
|
if (p.isSneaking()) SlimefunGuide.openSettings(p, item);
|
||||||
@ -226,7 +227,7 @@ public class ItemListener implements Listener {
|
|||||||
else if (SlimefunManager.isItemSimiliar(item, SlimefunItems.DEBUG_FISH, true)) {
|
else if (SlimefunManager.isItemSimiliar(item, SlimefunItems.DEBUG_FISH, true)) {
|
||||||
// Ignore the debug fish in here
|
// Ignore the debug fish in here
|
||||||
}
|
}
|
||||||
else if (Slimefun.hasUnlocked(p, item, true)) {
|
else if (Slimefun.hasUnlocked(p, slimefunItem, true)) {
|
||||||
for (ItemHandler handler : SlimefunItem.getHandlers("ItemInteractionHandler")) {
|
for (ItemHandler handler : SlimefunItem.getHandlers("ItemInteractionHandler")) {
|
||||||
if (((ItemInteractionHandler) handler).onRightClick(e, p, item)) return;
|
if (((ItemInteractionHandler) handler).onRightClick(e, p, item)) return;
|
||||||
}
|
}
|
||||||
@ -249,8 +250,7 @@ public class ItemListener implements Listener {
|
|||||||
if (tool != null && tool.getType() != Material.AIR) {
|
if (tool != null && tool.getType() != Material.AIR) {
|
||||||
SlimefunItem sfItem = SlimefunItem.getByItem(tool);
|
SlimefunItem sfItem = SlimefunItem.getByItem(tool);
|
||||||
List<Integer> modes = ((MultiTool) sfItem).getModes();
|
List<Integer> modes = ((MultiTool) sfItem).getModes();
|
||||||
int index = 0;
|
int index = utilities.mode.getOrDefault(p.getUniqueId(), 0);
|
||||||
if (utilities.mode.containsKey(p.getUniqueId())) index = utilities.mode.get(p.getUniqueId());
|
|
||||||
|
|
||||||
if (!p.isSneaking()) {
|
if (!p.isSneaking()) {
|
||||||
float charge = ItemEnergy.getStoredEnergy(item);
|
float charge = ItemEnergy.getStoredEnergy(item);
|
||||||
|
Loading…
Reference in New Issue
Block a user