mirror of
https://github.com/nulli0n/ExcellentEnchants-spigot.git
synced 2025-02-07 23:51:23 +01:00
v4.2.2
This commit is contained in:
parent
8623159ca6
commit
4399137733
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>ExcellentEnchants</artifactId>
|
||||
<groupId>su.nightexpress.excellentenchants</groupId>
|
||||
<version>4.2.1</version>
|
||||
<version>4.2.2</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
|
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>ExcellentEnchants</artifactId>
|
||||
<groupId>su.nightexpress.excellentenchants</groupId>
|
||||
<version>4.2.1</version>
|
||||
<version>4.2.2</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
@ -48,7 +48,6 @@
|
||||
<id>codemc-releases</id>
|
||||
<url>https://repo.codemc.io/repository/maven-releases/</url>
|
||||
</repository>
|
||||
|
||||
</repositories>
|
||||
|
||||
<dependencies>
|
||||
@ -90,19 +89,19 @@
|
||||
<dependency>
|
||||
<groupId>su.nightexpress.excellentenchants</groupId>
|
||||
<artifactId>API</artifactId>
|
||||
<version>4.2.1</version>
|
||||
<version>4.2.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>su.nightexpress.excellentenchants</groupId>
|
||||
<artifactId>NMS</artifactId>
|
||||
<version>4.2.1</version>
|
||||
<version>4.2.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>su.nightexpress.excellentenchants</groupId>
|
||||
<artifactId>MC_1_21</artifactId>
|
||||
<version>4.2.1</version>
|
||||
<version>4.2.2</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
@ -52,6 +52,15 @@ public class BaseCommands {
|
||||
.executes((context, arguments) -> enchantItem(plugin, context, arguments))
|
||||
);
|
||||
|
||||
rootNode.addChildren(DirectNode.builder(plugin, "disenchant")
|
||||
.description(Lang.COMMAND_DISENCHANT_DESC)
|
||||
.permission(Perms.COMMAND_DISENCHANT)
|
||||
.withArgument(CommandArguments.enchantArgument(CommandArguments.ENCHANT).required())
|
||||
.withArgument(ArgumentTypes.player(CommandArguments.PLAYER))
|
||||
.withArgument(CommandArguments.slotArgument(CommandArguments.SLOT))
|
||||
.executes((context, arguments) -> disenchantItem(plugin, context, arguments))
|
||||
);
|
||||
|
||||
rootNode.addChildren(DirectNode.builder(plugin, "list")
|
||||
.playerOnly()
|
||||
.description(Lang.COMMAND_LIST_DESC)
|
||||
@ -85,7 +94,7 @@ public class BaseCommands {
|
||||
|
||||
private static int getLevel(@NotNull Enchantment enchantment, @NotNull ParsedArguments arguments) {
|
||||
int level = arguments.getIntArgument(CommandArguments.LEVEL, -1);
|
||||
if (level < 1) {
|
||||
if (level <= 0) {
|
||||
level = EnchantUtils.randomLevel(enchantment);
|
||||
}
|
||||
return level;
|
||||
@ -128,9 +137,6 @@ public class BaseCommands {
|
||||
if (level > 0) {
|
||||
EnchantUtils.add(item, enchantment, level, true);
|
||||
}
|
||||
else EnchantUtils.remove(item, enchantment);
|
||||
|
||||
//player.getInventory().setItem(slot, item);
|
||||
|
||||
(context.getSender() == player ? Lang.COMMAND_ENCHANT_DONE_SELF : Lang.COMMAND_ENCHANT_DONE_OTHERS).getMessage()
|
||||
.replace(Placeholders.forPlayer(player))
|
||||
@ -142,6 +148,30 @@ public class BaseCommands {
|
||||
return true;
|
||||
}
|
||||
|
||||
public static boolean disenchantItem(@NotNull EnchantsPlugin plugin, @NotNull CommandContext context, @NotNull ParsedArguments arguments) {
|
||||
Player player = CommandUtil.getPlayerOrSender(context, arguments, CommandArguments.PLAYER);
|
||||
if (player == null) return false;
|
||||
|
||||
EquipmentSlot slot = arguments.getArgument(CommandArguments.SLOT, EquipmentSlot.class, EquipmentSlot.HAND);
|
||||
|
||||
ItemStack item = player.getInventory().getItem(slot);
|
||||
if (item == null || item.getType().isAir()) {
|
||||
Lang.COMMAND_ENCHANT_ERROR_NO_ITEM.getMessage().send(context.getSender());
|
||||
return false;
|
||||
}
|
||||
|
||||
Enchantment enchantment = arguments.getEnchantmentArgument(CommandArguments.ENCHANT);
|
||||
EnchantUtils.remove(item, enchantment);
|
||||
|
||||
(context.getSender() == player ? Lang.COMMAND_DISENCHANT_DONE_SELF : Lang.COMMAND_DISENCHANT_DONE_OTHERS).getMessage()
|
||||
.replace(Placeholders.forPlayer(player))
|
||||
.replace(Placeholders.GENERIC_ITEM, ItemUtil.getItemName(item))
|
||||
.replace(Placeholders.GENERIC_ENCHANT, EnchantUtils.getLocalized(enchantment))
|
||||
.send(context.getSender());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public static boolean giveFuel(@NotNull EnchantsPlugin plugin, @NotNull CommandContext context, @NotNull ParsedArguments arguments) {
|
||||
Player player = context.getPlayerOrThrow();
|
||||
CustomEnchantment enchantment = arguments.getArgument(CommandArguments.ENCHANT, CustomEnchantment.class);
|
||||
|
@ -15,6 +15,7 @@ public class Lang extends CoreLang {
|
||||
|
||||
public static final LangString COMMAND_LIST_DESC = LangString.of("Command.List.Desc", "List of custom enchantments.");
|
||||
public static final LangString COMMAND_ENCHANT_DESC = LangString.of("Command.Enchant.Desc", "Enchant item in specific slot.");
|
||||
public static final LangString COMMAND_DISENCHANT_DESC = LangString.of("Command.Disenchant.Desc", "Disenchant item in specific slot.");
|
||||
public static final LangString COMMAND_BOOK_DESC = LangString.of("Command.Book.Desc", "Give a book with specific enchantment.");
|
||||
public static final LangString COMMAND_RARITY_BOOK_DESC = LangString.of("Command.RarityBook.Desc", "Give a book with enchantment of specific rarity.");
|
||||
public static final LangString COMMAND_GET_FUEL_DESC = LangString.of("Command.GetFuel.Desc", "Get enchantment fuel item.");
|
||||
@ -41,6 +42,14 @@ public class Lang extends CoreLang {
|
||||
LIGHT_GRAY.enclose(LIGHT_YELLOW.enclose(PLAYER_DISPLAY_NAME) + "'s " + LIGHT_YELLOW.enclose(GENERIC_ITEM) + " enchanted with " + LIGHT_YELLOW.enclose(GENERIC_ENCHANT + " " + GENERIC_LEVEL) + "!")
|
||||
);
|
||||
|
||||
public static final LangText COMMAND_DISENCHANT_DONE_SELF = LangText.of("Command.Disenchant.Done.Self",
|
||||
LIGHT_GRAY.enclose(LIGHT_YELLOW.enclose(GENERIC_ITEM) + " disenchanted from " + LIGHT_YELLOW.enclose(GENERIC_ENCHANT) + "!")
|
||||
);
|
||||
|
||||
public static final LangText COMMAND_DISENCHANT_DONE_OTHERS = LangText.of("Command.Disenchant.Done.Others",
|
||||
LIGHT_GRAY.enclose(LIGHT_YELLOW.enclose(PLAYER_DISPLAY_NAME) + "'s " + LIGHT_YELLOW.enclose(GENERIC_ITEM) + " disenchanted from " + LIGHT_YELLOW.enclose(GENERIC_ENCHANT) + "!")
|
||||
);
|
||||
|
||||
public static final LangText COMMAND_ENCHANT_ERROR_NO_ITEM = LangText.of("Command.Enchant.Error.NoItem",
|
||||
LIGHT_RED.enclose("There is no item to enchant!")
|
||||
);
|
||||
|
@ -13,6 +13,7 @@ public class Perms {
|
||||
|
||||
public static final UniPermission COMMAND_BOOK = new UniPermission(PREFIX_COMMAND + "book");
|
||||
public static final UniPermission COMMAND_ENCHANT = new UniPermission(PREFIX_COMMAND + "enchant");
|
||||
public static final UniPermission COMMAND_DISENCHANT = new UniPermission(PREFIX_COMMAND + "disenchant");
|
||||
public static final UniPermission COMMAND_GET_FUEL = new UniPermission(PREFIX_COMMAND + "getfuel");
|
||||
public static final UniPermission COMMAND_LIST = new UniPermission(PREFIX_COMMAND + "list");
|
||||
public static final UniPermission COMMAND_LIST_OTHERS = new UniPermission(PREFIX_COMMAND + "list.others");
|
||||
@ -25,6 +26,7 @@ public class Perms {
|
||||
COMMAND.addChildren(
|
||||
COMMAND_BOOK,
|
||||
COMMAND_ENCHANT,
|
||||
COMMAND_DISENCHANT,
|
||||
COMMAND_GET_FUEL,
|
||||
COMMAND_LIST, COMMAND_LIST_OTHERS,
|
||||
COMMAND_RELOAD,
|
||||
|
@ -54,6 +54,7 @@ public class AutoReelEnchant extends GameEnchantment implements FishingEnchant {
|
||||
|
||||
this.plugin.runTask(task -> {
|
||||
if (event.isCancelled()) return;
|
||||
if (!event.getHook().isValid()) return;
|
||||
|
||||
plugin.getEnchantNMS().sendAttackPacket(event.getPlayer(), id);
|
||||
plugin.getEnchantNMS().retrieveHook(event.getHook(), item, slot);
|
||||
|
@ -1,5 +1,6 @@
|
||||
package su.nightexpress.excellentenchants.enchantment.impl.tool;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockState;
|
||||
@ -158,23 +159,38 @@ public class SilkChestEnchant extends GameEnchantment implements BlockDropEnchan
|
||||
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
||||
public void onSilkChestStore(InventoryClickEvent event) {
|
||||
Inventory inventory = event.getInventory();
|
||||
if (inventory.getType() == InventoryType.CRAFTING || inventory.getType() == InventoryType.CREATIVE) return;
|
||||
|
||||
if (inventory.getType() != InventoryType.CRAFTING) {
|
||||
int hotkey = event.getHotbarButton();
|
||||
if (hotkey >= 0) {
|
||||
Player player = (Player) event.getWhoClicked();
|
||||
ItemStack item;
|
||||
if (event.getHotbarButton() >= 0) {
|
||||
item = player.getInventory().getItem(event.getHotbarButton());
|
||||
}
|
||||
else item = event.getCurrentItem();
|
||||
|
||||
if (item == null || item.getType().isAir() || !this.isSilkChest(item)) return;
|
||||
|
||||
Inventory clicked = event.getClickedInventory();
|
||||
if (event.getClick() != ClickType.NUMBER_KEY) {
|
||||
if (clicked != null && clicked.equals(event.getView().getTopInventory())) return;
|
||||
}
|
||||
|
||||
ItemStack hotItem = player.getInventory().getItem(hotkey);
|
||||
if (hotItem != null && this.isSilkChest(hotItem)) {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
ItemStack item = event.getCurrentItem();
|
||||
if (item == null) return;
|
||||
|
||||
if (this.isSilkChest(item)) {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
ItemStack item = event.getCurrentItem();
|
||||
if (item == null) return;
|
||||
|
||||
boolean isRightClick = (event.isRightClick() && !event.isShiftClick()) || event.getClick() == ClickType.CREATIVE;
|
||||
if (item.getType() == Material.BUNDLE && isRightClick) {
|
||||
ItemStack cursor = event.getView().getCursor(); // Creative is shit, undetectable.
|
||||
if (cursor != null && this.isSilkChest(cursor)) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
|
||||
|
@ -14,6 +14,7 @@ import io.github.retrooper.packetevents.util.SpigotConversionUtil;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import su.nightexpress.excellentenchants.EnchantsPlugin;
|
||||
import su.nightexpress.excellentenchants.util.EnchantUtils;
|
||||
|
||||
@ -30,10 +31,6 @@ public class PacketEventsHook {
|
||||
registered = true;
|
||||
}
|
||||
|
||||
// public static void shutdown() {
|
||||
// if (!registered) return;
|
||||
// }
|
||||
|
||||
private static class Listener implements PacketListener {
|
||||
|
||||
@Override
|
||||
@ -46,32 +43,46 @@ public class PacketEventsHook {
|
||||
if (type == PacketType.Play.Server.SET_SLOT) {
|
||||
WrapperPlayServerSetSlot setSlot = new WrapperPlayServerSetSlot(event);
|
||||
|
||||
ItemStack item = SpigotConversionUtil.toBukkitItemStack(setSlot.getItem());
|
||||
item = EnchantUtils.addDescription(item);
|
||||
|
||||
setSlot.setItem(SpigotConversionUtil.fromBukkitItemStack(item));
|
||||
event.markForReEncode(true);
|
||||
ItemStack item = EnchantUtils.addDescription(toBukkit(setSlot.getItem()));
|
||||
setSlot.setItem(fromBukkit(item));
|
||||
}
|
||||
else if (type == PacketType.Play.Server.WINDOW_ITEMS) {
|
||||
WrapperPlayServerWindowItems windowItems = new WrapperPlayServerWindowItems(event);
|
||||
|
||||
windowItems.getItems().replaceAll(packetItem -> {
|
||||
return SpigotConversionUtil.fromBukkitItemStack(EnchantUtils.addDescription(SpigotConversionUtil.toBukkitItemStack(packetItem)));
|
||||
return fromBukkit(EnchantUtils.addDescription(toBukkit(packetItem)));
|
||||
});
|
||||
|
||||
event.markForReEncode(true);
|
||||
}
|
||||
else if (type == PacketType.Play.Server.MERCHANT_OFFERS) {
|
||||
WrapperPlayServerMerchantOffers merchantOffers = new WrapperPlayServerMerchantOffers(event);
|
||||
|
||||
List<MerchantOffer> offers = merchantOffers.getMerchantOffers();
|
||||
offers.forEach(offer -> {
|
||||
ItemStack result = SpigotConversionUtil.toBukkitItemStack(offer.getOutputItem());
|
||||
offer.setOutputItem(SpigotConversionUtil.fromBukkitItemStack(EnchantUtils.addDescription(result)));
|
||||
ItemStack result = toBukkit(offer.getOutputItem());
|
||||
offer.setOutputItem(fromBukkit(EnchantUtils.addDescription(result)));
|
||||
});
|
||||
}
|
||||
else return;
|
||||
|
||||
event.markForReEncode(true);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static ItemStack toBukkit(@NotNull com.github.retrooper.packetevents.protocol.item.ItemStack pooperStack/*, @NotNull ClientVersion version*/) {
|
||||
// pooperStack.getEnchantments(version).forEach(enchantment -> {
|
||||
// String name = enchantment.getType().getName().getKey();
|
||||
// CustomEnchantment custom = EnchantRegistry.getById(name);
|
||||
// if (custom == null) return;
|
||||
//
|
||||
// EnchantUtils.add(item, custom.getBukkitEnchantment(), enchantment.getLevel(), true);
|
||||
// });
|
||||
|
||||
return SpigotConversionUtil.toBukkitItemStack(pooperStack);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static com.github.retrooper.packetevents.protocol.item.ItemStack fromBukkit(@Nullable ItemStack itemStack) {
|
||||
return itemStack == null ? null : SpigotConversionUtil.fromBukkitItemStack(itemStack);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>su.nightexpress.excellentenchants</groupId>
|
||||
<artifactId>ExcellentEnchants</artifactId>
|
||||
<version>4.2.1</version>
|
||||
<version>4.2.2</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>MC_1_21</artifactId>
|
||||
@ -28,13 +28,13 @@
|
||||
<dependency>
|
||||
<groupId>su.nightexpress.excellentenchants</groupId>
|
||||
<artifactId>API</artifactId>
|
||||
<version>4.2.1</version>
|
||||
<version>4.2.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>su.nightexpress.excellentenchants</groupId>
|
||||
<artifactId>NMS</artifactId>
|
||||
<version>4.2.1</version>
|
||||
<version>4.2.2</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
@ -346,8 +346,6 @@ public class Internal_1_21 implements EnchantNMS {
|
||||
ServerPlayer entity = craftPlayer.getHandle();
|
||||
ClientboundAnimatePacket packet = new ClientboundAnimatePacket(entity, id);
|
||||
craftPlayer.getHandle().connection.send(packet);
|
||||
|
||||
player.spigot().sendMessage();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -5,7 +5,7 @@
|
||||
<parent>
|
||||
<artifactId>ExcellentEnchants</artifactId>
|
||||
<groupId>su.nightexpress.excellentenchants</groupId>
|
||||
<version>4.2.1</version>
|
||||
<version>4.2.2</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
@ -34,7 +34,7 @@
|
||||
<dependency>
|
||||
<groupId>su.nightexpress.excellentenchants</groupId>
|
||||
<artifactId>API</artifactId>
|
||||
<version>4.2.1</version>
|
||||
<version>4.2.2</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user