Compare commits
5
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
61873f6dd7 | ||
|
|
44f3226838 | ||
|
|
71203206d1 | ||
|
|
d1dcc34708 | ||
|
|
ac8744c0f3 |
No files matched your search
+1
-1
@@ -5,7 +5,7 @@ plugins {
|
||||
}
|
||||
|
||||
group = 'me.redtea'
|
||||
version = '1.0.3-SNAPSHOT'
|
||||
version = '1.0.3c-SNAPSHOT'
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
|
||||
@@ -105,6 +105,7 @@ public final class NoDropX extends JavaPlugin {
|
||||
noDropCosmeticService.add(textContext.getLoreStrategy());
|
||||
noDropCosmeticService.load(YamlConfiguration.loadConfiguration(textContext.getCosmetics()));
|
||||
|
||||
dropConfirmService = getConfig().getBoolean("confirmThrowNoDropItem") ? new DropConfirmServiceImpl() : new DropConfirmNull();
|
||||
NBTService nbtService = new Tr7zwNBTServiceImpl();
|
||||
noDropService = new NoDropServiceImpl(nbtService, noDropCosmeticService);
|
||||
NoDropItemFactory noDropItemFactory = new NoDropItemFactoryImpl(noDropService);
|
||||
@@ -123,13 +124,11 @@ public final class NoDropX extends JavaPlugin {
|
||||
.build();
|
||||
itemStackService = initItemStackService();
|
||||
|
||||
dropConfirmService = getConfig().getBoolean("confirmThrowNoDropItem") ? new DropConfirmServiceImpl() : new DropConfirmNull();
|
||||
|
||||
menuFacade = initMenus();
|
||||
StorageService storageService = new StorageServiceImpl(menuFacade, personalStorageRepo, noDropService);
|
||||
|
||||
|
||||
|
||||
NoDropAPI noDropAPI = new NoDropXFacade(noDropService, noDropItemFactory, storageService, capacityService, itemStackService);
|
||||
noDropAPIInstance = noDropAPI;
|
||||
|
||||
@@ -147,7 +146,7 @@ public final class NoDropX extends JavaPlugin {
|
||||
commandManager.getMessageHandler().register("cmd.no.exists", sender -> messages.get("noExists").send(sender));
|
||||
commandManager.getMessageHandler().register("cmd.wrong.usage", sender -> messages.get("usage").send(sender));
|
||||
commandManager.getCompletionHandler().register("#materials", input -> itemStackService.allMaterials());
|
||||
commandManager.register(new NoDropCommand(messages, noDropAPI, menuFacade, this, itemStackService));
|
||||
commandManager.register(new NoDropCommand(messages, noDropAPI, menuFacade, this, itemStackService, dropConfirmService));
|
||||
bStatsInit();
|
||||
printCredits();
|
||||
checkUpdates();
|
||||
@@ -160,9 +159,10 @@ public final class NoDropX extends JavaPlugin {
|
||||
personalStorageCachedMenu = singlePageGui;
|
||||
Bukkit.getPluginManager().registerEvents(new SinglePageGuiHandler(new SinglePageController(noDropService,
|
||||
singlePageGui, personalStorageRepo, foliaSupportedUtils), singlePageGui), this);
|
||||
} else personalStorageCachedMenu = new MFPageGui(messages, personalStorageRepo, noDropService, itemStackService, this);
|
||||
} else
|
||||
personalStorageCachedMenu = new MFPageGui(messages, personalStorageRepo, noDropService, itemStackService, this);
|
||||
|
||||
Menu confirmMenu = new DropConfirmMFGui(messages, dropConfirmService);
|
||||
Menu confirmMenu = new DropConfirmMFGui(messages, dropConfirmService, this);
|
||||
return new MenuFacadeImpl(personalStorageCachedMenu, confirmMenu);
|
||||
}
|
||||
|
||||
@@ -199,13 +199,17 @@ public final class NoDropX extends JavaPlugin {
|
||||
|
||||
|
||||
private void printCredits() {
|
||||
Bukkit.getLogger().info(ChatColor.GREEN + "************************************************************");
|
||||
Bukkit.getLogger().info(ChatColor.GREEN + "* " + ChatColor.YELLOW + "NoDropX version " + ChatColor.GOLD + getDescription().getVersion() + ChatColor.GRAY + " (uses CarcadeX v. 1.0.7)");
|
||||
Bukkit.getLogger().info(ChatColor.GREEN + "* " + ChatColor.YELLOW + "By " + ChatColor.RED + "itzRedTea");
|
||||
Bukkit.getLogger().info(ChatColor.GREEN + "* "+ ChatColor.YELLOW + "Detected bukkit version " + ChatColor.GOLD + Bukkit.getBukkitVersion());
|
||||
Bukkit.getLogger().info(ChatColor.GREEN + "* "+ ChatColor.YELLOW + "support HEX colors " + (supportHEX ? ChatColor.DARK_GREEN + "YES" : ChatColor.DARK_RED + "NO"));
|
||||
Bukkit.getLogger().info(ChatColor.GREEN + "* "+ ChatColor.YELLOW + "support Kyori as lore " + (supportKyoriLore ? ChatColor.DARK_GREEN + "YES" : ChatColor.DARK_RED + "NO"));
|
||||
Bukkit.getLogger().info(ChatColor.GREEN + "************************************************************");
|
||||
printCreditLine("&a************************************************************");
|
||||
printCreditLine("&a* &eNoDropX version &6" + getDescription().getVersion() + "&7 (uses CarcadeX v. 1.0.7)");
|
||||
printCreditLine("&a* &eBy &citzRedTea");
|
||||
printCreditLine("&a* &eDetected bukkit version &6" + Bukkit.getBukkitVersion());
|
||||
printCreditLine("&a* &esupport HEX colors " + (supportHEX ? "&2YES" : "&4NO"));
|
||||
printCreditLine("&a* &esupport Kyori as lore " + (supportKyoriLore ? "&2YES" : "&4NO"));
|
||||
printCreditLine("&a************************************************************");
|
||||
}
|
||||
|
||||
private void printCreditLine(String s) {
|
||||
Bukkit.getConsoleSender().sendMessage(ChatColor.translateAlternateColorCodes('&', s));
|
||||
}
|
||||
|
||||
public void onReload() {
|
||||
|
||||
@@ -8,8 +8,10 @@ import me.redtea.nodropx.NoDropX;
|
||||
import me.redtea.nodropx.api.facade.NoDropAPI;
|
||||
import me.redtea.nodropx.menu.facade.MenuFacade;
|
||||
import me.redtea.nodropx.libs.message.container.Messages;
|
||||
import me.redtea.nodropx.service.dropconfirm.DropConfirmService;
|
||||
import me.redtea.nodropx.service.material.ItemStackService;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
@@ -30,6 +32,7 @@ public class NoDropCommand extends CommandBase {
|
||||
private final MenuFacade menuFacade;
|
||||
private final NoDropX plugin;
|
||||
private final ItemStackService itemStackService;
|
||||
private final DropConfirmService confirmService;
|
||||
|
||||
@Default
|
||||
public void onDefault(final CommandSender sender) {
|
||||
@@ -90,6 +93,60 @@ public class NoDropCommand extends CommandBase {
|
||||
|
||||
}
|
||||
|
||||
@SubCommand("ignoreConfirm")
|
||||
@Permission("nodropx.ignoreConfirm")
|
||||
public void onIgnoreConfirm(final CommandSender sender, @Optional Player target) {
|
||||
if(target == null) {
|
||||
if(!(sender instanceof Player)) {
|
||||
sender.sendMessage("player only");
|
||||
return;
|
||||
} else {
|
||||
confirmService.forceConfirm((Player) sender);
|
||||
}
|
||||
} else {
|
||||
confirmService.forceConfirm(target);
|
||||
}
|
||||
}
|
||||
|
||||
@SubCommand("ignoreConfirmTimed")
|
||||
@Permission("nodropx.ignoreConfirm.timed")
|
||||
public void onIgnoreConfirmTimed(final CommandSender sender, Integer sec, @Optional Player target) {
|
||||
if(target == null) {
|
||||
if(!(sender instanceof Player)) {
|
||||
sender.sendMessage("player only");
|
||||
return;
|
||||
} else {
|
||||
confirmService.forceConfirm((Player) sender);
|
||||
try {
|
||||
Bukkit.getScheduler().runTaskLater(plugin,() -> confirmService.removeForceConfirm((Player) sender),20L*sec);
|
||||
} catch (UnsupportedOperationException e) {
|
||||
sender.sendMessage(ChatColor.RED + "This operation didn't supports on your environment");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
confirmService.forceConfirm(target);
|
||||
try {
|
||||
Bukkit.getScheduler().runTaskLater(plugin,() -> confirmService.removeForceConfirm(target),20L*sec);
|
||||
} catch (UnsupportedOperationException e) {
|
||||
sender.sendMessage(ChatColor.RED + "This operation didn't supports on your environment");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SubCommand("noIgnoreConfirm")
|
||||
@Permission("nodropx.noIgnoreConfirm")
|
||||
public void onNoIgnoreConfirm(final CommandSender sender, @Optional Player target) {
|
||||
if(target == null) {
|
||||
if(!(sender instanceof Player)) {
|
||||
sender.sendMessage("player only");
|
||||
return;
|
||||
} else {
|
||||
confirmService.removeForceConfirm((Player) sender);
|
||||
}
|
||||
} else {
|
||||
confirmService.removeForceConfirm(target);
|
||||
}
|
||||
}
|
||||
@SubCommand("applyHand")
|
||||
@Permission("nodropx.applyhand")
|
||||
public void onApplyHand(final Player sender) {
|
||||
|
||||
@@ -25,6 +25,7 @@ public class FoliaSupporter {
|
||||
|
||||
@SneakyThrows
|
||||
public void run(RespawnService respawnService, Plugin plugin) {
|
||||
try {
|
||||
String version = ((JsonObject) new JsonParser().parse(new FileReader("version_history.json"))).get("currentVersion").getAsString();
|
||||
if(!version.toLowerCase().contains("folia") && !plugin.getConfig().getBoolean("forceUseFoliaPatches")) {
|
||||
return;
|
||||
@@ -34,6 +35,8 @@ public class FoliaSupporter {
|
||||
this.respawnService = respawnService;
|
||||
Bukkit.getPluginManager().registerEvents(new FoliaDeathListener(), plugin);
|
||||
plugin.getLogger().info("Patches for Folia successfully applied!");
|
||||
} catch (Throwable ignored) {}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ package me.redtea.nodropx.listener;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import me.redtea.nodropx.api.event.NoDropItemThrownEvent;
|
||||
import me.redtea.nodropx.menu.facade.MenuFacade;
|
||||
import me.redtea.nodropx.service.dropconfirm.DropConfirmService;
|
||||
import me.redtea.nodropx.service.event.EventService;
|
||||
import me.redtea.nodropx.service.nodrop.NoDropService;
|
||||
import me.redtea.nodropx.service.respawn.RespawnService;
|
||||
@@ -14,7 +15,10 @@ import org.bukkit.event.player.PlayerDropItemEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.event.player.PlayerRespawnEvent;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class PlayerHandler implements Listener {
|
||||
|
||||
@@ -5,18 +5,26 @@ import dev.triumphteam.gui.guis.Gui;
|
||||
import me.redtea.nodropx.libs.message.container.Messages;
|
||||
import me.redtea.nodropx.menu.Menu;
|
||||
import me.redtea.nodropx.service.dropconfirm.DropConfirmService;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
public class DropConfirmMFGui implements Menu {
|
||||
private final Gui gui;
|
||||
public DropConfirmMFGui(Messages messages, DropConfirmService dropConfirmService) {
|
||||
private final Set<UUID> inMenu = new HashSet<>();
|
||||
private final DropConfirmService dropConfirmService;
|
||||
private final Plugin plugin;
|
||||
public DropConfirmMFGui(Messages messages, DropConfirmService dropConfirmService, Plugin plugin) {
|
||||
gui = Gui.gui()
|
||||
.rows(1)
|
||||
.title(messages.get("gui.confirm.title").asComponent())
|
||||
.disableAllInteractions()
|
||||
.create();
|
||||
this.plugin = plugin;
|
||||
gui.setItem(1, ItemBuilder.from(messages.get("gui.confirm.yesButton.material").toMaterial())
|
||||
.name(messages.get("gui.confirm.yesButton.name").asComponent())
|
||||
.lore(messages.get("gui.confirm.yesButton.lore").asComponent())
|
||||
@@ -29,10 +37,28 @@ public class DropConfirmMFGui implements Menu {
|
||||
.name(messages.get("gui.confirm.noButton.name").asComponent())
|
||||
.lore(messages.get("gui.confirm.noButton.lore").asComponent())
|
||||
.asGuiItem((event -> event.getWhoClicked().closeInventory())));
|
||||
gui.setCloseGuiAction((e) -> {
|
||||
inMenu.remove(e.getPlayer().getUniqueId());
|
||||
});
|
||||
this.dropConfirmService = dropConfirmService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void open(Player player) {
|
||||
if(inMenu.contains(player.getUniqueId())) {
|
||||
dropConfirmService.forceConfirm(player);
|
||||
player.closeInventory();
|
||||
try {
|
||||
Bukkit.getScheduler().runTaskLater(plugin,
|
||||
() -> dropConfirmService.removeForceConfirm(player),
|
||||
20*15L);
|
||||
} catch (Throwable e) {
|
||||
plugin.getLogger().severe("Can not start task. Maybe will bugs. Do you run on Folia?");
|
||||
e.printStackTrace();
|
||||
}
|
||||
return;
|
||||
}
|
||||
inMenu.add(player.getUniqueId());
|
||||
gui.open(player);
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,7 @@ import lombok.RequiredArgsConstructor;
|
||||
import me.redtea.nodropx.libs.carcadex.repo.MutableRepo;
|
||||
import me.redtea.nodropx.libs.message.container.Messages;
|
||||
import me.redtea.nodropx.menu.CachedMenu;
|
||||
import me.redtea.nodropx.util.MD5ColorUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
@@ -25,7 +26,7 @@ public class SinglePageGui implements CachedMenu {
|
||||
player.openInventory(cache.get(player.getUniqueId()));
|
||||
return;
|
||||
}
|
||||
Inventory gui = Bukkit.createInventory(null, 54, messages.get("gui.personalStorage.title").asComponent());
|
||||
Inventory gui = Bukkit.createInventory(null, 54, MD5ColorUtils.translateHexColorCodes(messages.get("gui.personalStorage.title").asUnparsedString()));
|
||||
for(ItemStack item : personalStorageRepo.get(player.getUniqueId()).orElse(new ArrayList<>())) if(item != null) gui.addItem(item);
|
||||
|
||||
cache.put(player.getUniqueId(), gui);
|
||||
|
||||
@@ -6,4 +6,7 @@ public interface DropConfirmService {
|
||||
boolean isConfirmed(Player player);
|
||||
void confirm(Player player);
|
||||
void resetConfirm(Player player);
|
||||
|
||||
void forceConfirm(Player player);
|
||||
void removeForceConfirm(Player player);
|
||||
}
|
||||
@@ -18,4 +18,14 @@ public class DropConfirmNull implements DropConfirmService {
|
||||
public void resetConfirm(Player player) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void forceConfirm(Player player) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeForceConfirm(Player player) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -9,8 +9,10 @@ import java.util.UUID;
|
||||
|
||||
public class DropConfirmServiceImpl implements DropConfirmService {
|
||||
private Set<UUID> confirmed = new HashSet<>();
|
||||
private Set<UUID> force = new HashSet<>();
|
||||
@Override
|
||||
public boolean isConfirmed(Player player) {
|
||||
if(force.contains(player.getUniqueId()) || player.isDead()) return true;
|
||||
return confirmed.contains(player.getUniqueId());
|
||||
}
|
||||
|
||||
@@ -24,4 +26,14 @@ public class DropConfirmServiceImpl implements DropConfirmService {
|
||||
confirmed.remove(player.getUniqueId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void forceConfirm(Player player) {
|
||||
force.add(player.getUniqueId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeForceConfirm(Player player) {
|
||||
force.remove(player.getUniqueId());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -7,6 +7,7 @@ import lombok.ToString;
|
||||
import me.redtea.nodropx.api.event.NoDropItemDropOnDeathEvent;
|
||||
import me.redtea.nodropx.libs.carcadex.repo.Repo;
|
||||
import me.redtea.nodropx.service.capasity.CapacityService;
|
||||
import me.redtea.nodropx.service.dropconfirm.DropConfirmService;
|
||||
import me.redtea.nodropx.service.nodrop.NoDropService;
|
||||
import me.redtea.nodropx.service.respawn.RespawnService;
|
||||
import org.bukkit.Bukkit;
|
||||
@@ -31,7 +32,6 @@ public class RespawnServiceImpl implements RespawnService {
|
||||
for(Pair pair : pairs) player.getInventory().setItem(pair.slot, pair.item);
|
||||
toRespawn.remove(player.getName());
|
||||
}
|
||||
player.updateInventory();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -4,7 +4,10 @@ forceUseFoliaPatches: false
|
||||
|
||||
checkForUpdates: true
|
||||
|
||||
confirmThrowNoDropItem: true
|
||||
# Not recommended on Forge servers!
|
||||
# Use it on your own risk
|
||||
confirmThrowNoDropItem: false
|
||||
|
||||
#Can be SINGLE_PAGE or MULTI_PAGES
|
||||
#Single did not supports minimessages!
|
||||
#Can be SINGLE_PAGE or MULTI_PAGES (Use MULTI_PAGES on your own risk)
|
||||
personalStorageType: SINGLE_PAGE
|
||||
Reference in new issue
Block a user