mirror of
https://github.com/HibiscusMC/HMCCosmetics.git
synced 2025-12-27 10:59:14 +00:00
Compare commits
24 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c98f132871 | ||
|
|
554bdf91bd | ||
|
|
fced771953 | ||
|
|
6ec47c3f08 | ||
|
|
2df2646622 | ||
|
|
e8d1dd1798 | ||
|
|
59479fc474 | ||
|
|
14b27abe92 | ||
|
|
8c2c6db81b | ||
|
|
5696039799 | ||
|
|
3068ce5a03 | ||
|
|
548d0c3e9a | ||
|
|
a37d6d984b | ||
|
|
d41b385b2a | ||
|
|
2ab59dd2b2 | ||
|
|
450083baf0 | ||
|
|
0d3129bc3f | ||
|
|
fe68c43c1f | ||
|
|
4aa1f412fe | ||
|
|
e53e0110f9 | ||
|
|
f645907ed5 | ||
|
|
af465180c0 | ||
|
|
210e6f61d6 | ||
|
|
14288479f4 |
@@ -8,7 +8,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
group = "com.hibiscusmc"
|
group = "com.hibiscusmc"
|
||||||
version = "2.5.0"
|
version = "2.5.2"
|
||||||
|
|
||||||
allprojects {
|
allprojects {
|
||||||
apply(plugin = "java")
|
apply(plugin = "java")
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import org.bukkit.Color;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class HMCCosmeticsAPI {
|
public class HMCCosmeticsAPI {
|
||||||
@@ -22,7 +23,7 @@ public class HMCCosmeticsAPI {
|
|||||||
* @return A {@link Cosmetic} if exists or null if it does not
|
* @return A {@link Cosmetic} if exists or null if it does not
|
||||||
*/
|
*/
|
||||||
@Nullable
|
@Nullable
|
||||||
public static Cosmetic getCosmetic(String cosmetic) {
|
public static Cosmetic getCosmetic(@NotNull String cosmetic) {
|
||||||
return Cosmetics.getCosmetic(cosmetic);
|
return Cosmetics.getCosmetic(cosmetic);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -35,7 +36,7 @@ public class HMCCosmeticsAPI {
|
|||||||
* @return A {@link CosmeticUser} if exists or null if it does not
|
* @return A {@link CosmeticUser} if exists or null if it does not
|
||||||
*/
|
*/
|
||||||
@Nullable
|
@Nullable
|
||||||
public static CosmeticUser getUser(UUID uuid) {
|
public static CosmeticUser getUser(@NotNull UUID uuid) {
|
||||||
return CosmeticUsers.getUser(uuid);
|
return CosmeticUsers.getUser(uuid);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -46,7 +47,7 @@ public class HMCCosmeticsAPI {
|
|||||||
* @return A {@link Menu} if exists or null if it does not
|
* @return A {@link Menu} if exists or null if it does not
|
||||||
*/
|
*/
|
||||||
@Nullable
|
@Nullable
|
||||||
public static Menu getMenu(String id) {
|
public static Menu getMenu(@NotNull String id) {
|
||||||
return Menus.getMenu(id);
|
return Menus.getMenu(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -74,7 +75,23 @@ public class HMCCosmeticsAPI {
|
|||||||
* @param user The user to remove the cosmetic from
|
* @param user The user to remove the cosmetic from
|
||||||
* @param slot The slot to remove the cosmetic from
|
* @param slot The slot to remove the cosmetic from
|
||||||
*/
|
*/
|
||||||
public static void unequipCosmetic(CosmeticUser user, CosmeticSlot slot) {
|
public static void unequipCosmetic(@NotNull CosmeticUser user, @NotNull CosmeticSlot slot) {
|
||||||
user.removeCosmeticSlot(slot);
|
user.removeCosmeticSlot(slot);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets all Cosmetics that are currently registered with HMCC. This list is immutable!
|
||||||
|
* @return A list of all registered cosmetics
|
||||||
|
*/
|
||||||
|
public static List<Cosmetic> getAllCosmetics() {
|
||||||
|
return List.copyOf(Cosmetics.values());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets all CosmeticUsers that are currently registered with HMCC. This list is immutable!
|
||||||
|
* @return A list of all registered CosmeticUsers
|
||||||
|
*/
|
||||||
|
public static List<CosmeticUser> getAllCosmeticUsers() {
|
||||||
|
return List.copyOf(CosmeticUsers.values());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,11 +21,7 @@ public class Settings {
|
|||||||
private static final String REQUIRE_EMPTY_PANTS_PATH = "require-empty-pants";
|
private static final String REQUIRE_EMPTY_PANTS_PATH = "require-empty-pants";
|
||||||
private static final String REQUIRE_EMPTY_BOOTS_PATH = "require-empty-boots";
|
private static final String REQUIRE_EMPTY_BOOTS_PATH = "require-empty-boots";
|
||||||
private static final String BALLOON_OFFSET = "balloon-offset";
|
private static final String BALLOON_OFFSET = "balloon-offset";
|
||||||
private static final String FIRST_PERSON_BACKPACK_MODE = "first-person-backpack-mode";
|
|
||||||
|
|
||||||
private static final transient String LOOK_DOWN_PITCH_PATH = "look-down-backpack-remove";
|
|
||||||
private static final String VIEW_DISTANCE_PATH = "view-distance";
|
private static final String VIEW_DISTANCE_PATH = "view-distance";
|
||||||
private static final String PARTICLE_COUNT = "particle-count";
|
|
||||||
private static final String DYE_MENU_PATH = "dye-menu";
|
private static final String DYE_MENU_PATH = "dye-menu";
|
||||||
private static final String DYE_MENU_NAME = "title";
|
private static final String DYE_MENU_NAME = "title";
|
||||||
private static final String DYE_MENU_INPUT_SLOT = "input-slot";
|
private static final String DYE_MENU_INPUT_SLOT = "input-slot";
|
||||||
@@ -51,6 +47,10 @@ public class Settings {
|
|||||||
private static final String COSMETIC_ADD_ENCHANTS_LEGGINGS_PATH = "leggings-add-enchantments";
|
private static final String COSMETIC_ADD_ENCHANTS_LEGGINGS_PATH = "leggings-add-enchantments";
|
||||||
private static final String COSMETIC_ADD_ENCHANTS_BOOTS_PATH = "boots-add-enchantments";
|
private static final String COSMETIC_ADD_ENCHANTS_BOOTS_PATH = "boots-add-enchantments";
|
||||||
private static final String COSMETIC_DESTROY_LOOSE_COSMETIC_PATH = "destroy-loose-cosmetics";
|
private static final String COSMETIC_DESTROY_LOOSE_COSMETIC_PATH = "destroy-loose-cosmetics";
|
||||||
|
private static final String MENU_SETTINGS_PATH = "menu-settings";
|
||||||
|
private static final String COSMETIC_TYPE_SETTINGS_PATH = "cosmetic-type";
|
||||||
|
private static final String EQUIP_CLICK_TYPE = "equip-click";
|
||||||
|
private static final String UNEQUIP_CLICK_TYPE = "unequip-click";
|
||||||
|
|
||||||
private static String defaultMenu;
|
private static String defaultMenu;
|
||||||
private static String dyeMenuName;
|
private static String dyeMenuName;
|
||||||
@@ -77,11 +77,12 @@ public class Settings {
|
|||||||
private static boolean emoteDamageLeave;
|
private static boolean emoteDamageLeave;
|
||||||
private static boolean emoteInvincible;
|
private static boolean emoteInvincible;
|
||||||
private static boolean destroyLooseCosmetics;
|
private static boolean destroyLooseCosmetics;
|
||||||
private static int lookDownPitch;
|
|
||||||
private static int viewDistance;
|
private static int viewDistance;
|
||||||
private static int tickPeriod;
|
private static int tickPeriod;
|
||||||
private static double emoteDistance;
|
private static double emoteDistance;
|
||||||
private static Vector balloonOffset;
|
private static Vector balloonOffset;
|
||||||
|
private static String cosmeticEquipClickType;
|
||||||
|
private static String cosmeticUnEquipClickType;
|
||||||
|
|
||||||
public static void load(ConfigurationNode source) {
|
public static void load(ConfigurationNode source) {
|
||||||
|
|
||||||
@@ -118,11 +119,14 @@ public class Settings {
|
|||||||
addChestplateEnchants = cosmeticSettings.node(COSMETIC_ADD_ENCHANTS_CHESTPLATE_PATH).getBoolean(false);
|
addChestplateEnchants = cosmeticSettings.node(COSMETIC_ADD_ENCHANTS_CHESTPLATE_PATH).getBoolean(false);
|
||||||
addLeggingEnchants = cosmeticSettings.node(COSMETIC_ADD_ENCHANTS_LEGGINGS_PATH).getBoolean(false);
|
addLeggingEnchants = cosmeticSettings.node(COSMETIC_ADD_ENCHANTS_LEGGINGS_PATH).getBoolean(false);
|
||||||
addBootsEnchants = cosmeticSettings.node(COSMETIC_ADD_ENCHANTS_BOOTS_PATH).getBoolean(false);
|
addBootsEnchants = cosmeticSettings.node(COSMETIC_ADD_ENCHANTS_BOOTS_PATH).getBoolean(false);
|
||||||
|
|
||||||
tickPeriod = cosmeticSettings.node(TICK_PERIOD_PATH).getInt(-1);
|
tickPeriod = cosmeticSettings.node(TICK_PERIOD_PATH).getInt(-1);
|
||||||
lookDownPitch = cosmeticSettings.node(LOOK_DOWN_PITCH_PATH).getInt();
|
|
||||||
viewDistance = cosmeticSettings.node(VIEW_DISTANCE_PATH).getInt();
|
viewDistance = cosmeticSettings.node(VIEW_DISTANCE_PATH).getInt();
|
||||||
|
|
||||||
|
ConfigurationNode menuSettings = source.node(MENU_SETTINGS_PATH);
|
||||||
|
ConfigurationNode cosmeticTypeSettings = menuSettings.node(COSMETIC_TYPE_SETTINGS_PATH);
|
||||||
|
cosmeticEquipClickType = cosmeticTypeSettings.node(EQUIP_CLICK_TYPE).getString("ALL");
|
||||||
|
cosmeticUnEquipClickType = cosmeticTypeSettings.node(UNEQUIP_CLICK_TYPE).getString("ALL");
|
||||||
|
|
||||||
final var balloonSection = cosmeticSettings.node(BALLOON_OFFSET);
|
final var balloonSection = cosmeticSettings.node(BALLOON_OFFSET);
|
||||||
|
|
||||||
balloonOffset = loadVector(balloonSection);
|
balloonOffset = loadVector(balloonSection);
|
||||||
@@ -218,10 +222,6 @@ public class Settings {
|
|||||||
return balloonOffset;
|
return balloonOffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int getLookDownPitch() {
|
|
||||||
return lookDownPitch;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int getViewDistance() {
|
public static int getViewDistance() {
|
||||||
return viewDistance;
|
return viewDistance;
|
||||||
}
|
}
|
||||||
@@ -322,4 +322,12 @@ public class Settings {
|
|||||||
|
|
||||||
plugin.saveConfig();
|
plugin.saveConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String getCosmeticEquipClickType() {
|
||||||
|
return cosmeticEquipClickType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getCosmeticUnEquipClickType() {
|
||||||
|
return cosmeticUnEquipClickType;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,8 +44,9 @@ public class CosmeticBackpackType extends Cosmetic {
|
|||||||
Location loc = entity.getLocation().clone().add(0, 2, 0);
|
Location loc = entity.getLocation().clone().add(0, 2, 0);
|
||||||
|
|
||||||
if (user.isInWardrobe() || !user.isBackpackSpawned()) return;
|
if (user.isInWardrobe() || !user.isBackpackSpawned()) return;
|
||||||
|
// This needs to be moved to purely packet based, there are far to many plugin doing dumb stuff that prevents spawning armorstands ignoring our spawn reason.
|
||||||
if (!user.getUserBackpackManager().IsValidBackpackEntity()) {
|
if (!user.getUserBackpackManager().IsValidBackpackEntity()) {
|
||||||
MessagesUtil.sendDebugMessages("Invalid Backpack Entity[owner=" + user.getUniqueId() + ",player_location=" + loc + "]!", Level.WARNING);
|
MessagesUtil.sendDebugMessages("Invalid Backpack Entity[owner=" + user.getUniqueId() + ",player_location=" + loc + "]!");
|
||||||
user.respawnBackpack();
|
user.respawnBackpack();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -57,7 +58,7 @@ public class CosmeticBackpackType extends Cosmetic {
|
|||||||
user.getUserBackpackManager().getArmorStand().setRotation(loc.getYaw(), loc.getPitch());
|
user.getUserBackpackManager().getArmorStand().setRotation(loc.getYaw(), loc.getPitch());
|
||||||
|
|
||||||
List<Player> outsideViewers = user.getUserBackpackManager().getCloudManager().refreshViewers(loc);
|
List<Player> outsideViewers = user.getUserBackpackManager().getCloudManager().refreshViewers(loc);
|
||||||
if (!user.isInWardrobe() && isFirstPersonCompadible()) {
|
if (!user.isInWardrobe() && isFirstPersonCompadible() && user.getPlayer() != null) {
|
||||||
List<Player> owner = List.of(user.getPlayer());
|
List<Player> owner = List.of(user.getPlayer());
|
||||||
|
|
||||||
ArrayList<Integer> particleCloud = user.getUserBackpackManager().getAreaEffectEntityId();
|
ArrayList<Integer> particleCloud = user.getUserBackpackManager().getAreaEffectEntityId();
|
||||||
@@ -84,4 +85,8 @@ public class CosmeticBackpackType extends Cosmetic {
|
|||||||
public boolean isFirstPersonCompadible() {
|
public boolean isFirstPersonCompadible() {
|
||||||
return firstPersonBackpack != null;
|
return firstPersonBackpack != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ItemStack getFirstPersonBackpack() {
|
||||||
|
return firstPersonBackpack;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ public class CosmeticBalloonType extends Cosmetic {
|
|||||||
|
|
||||||
private final String modelName;
|
private final String modelName;
|
||||||
private List<String> dyableParts;
|
private List<String> dyableParts;
|
||||||
private boolean showLead;
|
private final boolean showLead;
|
||||||
|
|
||||||
public CosmeticBalloonType(String id, ConfigurationNode config) {
|
public CosmeticBalloonType(String id, ConfigurationNode config) {
|
||||||
super(id, config);
|
super(id, config);
|
||||||
@@ -38,7 +38,7 @@ public class CosmeticBalloonType extends Cosmetic {
|
|||||||
// Seriously?
|
// Seriously?
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
|
if (modelId != null) modelId = modelId.toLowerCase(); // ME only accepts lowercase
|
||||||
this.modelName = modelId;
|
this.modelName = modelId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.hibiscusmc.hmccosmetics.gui;
|
|||||||
|
|
||||||
import com.hibiscusmc.hmccosmetics.HMCCosmeticsPlugin;
|
import com.hibiscusmc.hmccosmetics.HMCCosmeticsPlugin;
|
||||||
import com.hibiscusmc.hmccosmetics.api.events.PlayerMenuOpenEvent;
|
import com.hibiscusmc.hmccosmetics.api.events.PlayerMenuOpenEvent;
|
||||||
|
import com.hibiscusmc.hmccosmetics.config.Settings;
|
||||||
import com.hibiscusmc.hmccosmetics.config.serializer.ItemSerializer;
|
import com.hibiscusmc.hmccosmetics.config.serializer.ItemSerializer;
|
||||||
import com.hibiscusmc.hmccosmetics.gui.type.Type;
|
import com.hibiscusmc.hmccosmetics.gui.type.Type;
|
||||||
import com.hibiscusmc.hmccosmetics.gui.type.Types;
|
import com.hibiscusmc.hmccosmetics.gui.type.Types;
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.hibiscusmc.hmccosmetics.gui.type.types;
|
package com.hibiscusmc.hmccosmetics.gui.type.types;
|
||||||
|
|
||||||
import com.hibiscusmc.hmccosmetics.HMCCosmeticsPlugin;
|
import com.hibiscusmc.hmccosmetics.HMCCosmeticsPlugin;
|
||||||
|
import com.hibiscusmc.hmccosmetics.config.Settings;
|
||||||
import com.hibiscusmc.hmccosmetics.config.serializer.ItemSerializer;
|
import com.hibiscusmc.hmccosmetics.config.serializer.ItemSerializer;
|
||||||
import com.hibiscusmc.hmccosmetics.cosmetic.Cosmetic;
|
import com.hibiscusmc.hmccosmetics.cosmetic.Cosmetic;
|
||||||
import com.hibiscusmc.hmccosmetics.cosmetic.Cosmetics;
|
import com.hibiscusmc.hmccosmetics.cosmetic.Cosmetics;
|
||||||
@@ -53,6 +54,20 @@ public class TypeCosmetic extends Type {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean isUnEquippingCosmetic = false;
|
||||||
|
if (user.getCosmetic(cosmetic.getSlot()) == cosmetic) isUnEquippingCosmetic = true;
|
||||||
|
|
||||||
|
String requiredClick;
|
||||||
|
if (isUnEquippingCosmetic) requiredClick = Settings.getCosmeticUnEquipClickType();
|
||||||
|
else requiredClick = Settings.getCosmeticEquipClickType();
|
||||||
|
|
||||||
|
MessagesUtil.sendDebugMessages("Required click type: " + requiredClick);
|
||||||
|
MessagesUtil.sendDebugMessages("Click type: " + clickType.name());
|
||||||
|
if (!requiredClick.equalsIgnoreCase("ANY") && !requiredClick.equalsIgnoreCase(clickType.name())) {
|
||||||
|
MessagesUtil.sendMessage(user.getPlayer(), "invalid-click-type");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
List<String> actionStrings = new ArrayList<>();
|
List<String> actionStrings = new ArrayList<>();
|
||||||
ConfigurationNode actionConfig = config.node("actions");
|
ConfigurationNode actionConfig = config.node("actions");
|
||||||
|
|
||||||
@@ -70,7 +85,7 @@ public class TypeCosmetic extends Type {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (user.getCosmetic(cosmetic.getSlot()) == cosmetic) {
|
if (isUnEquippingCosmetic) {
|
||||||
if (!actionConfig.node("on-unequip").virtual()) actionStrings.addAll(actionConfig.node("on-unequip").getList(String.class));
|
if (!actionConfig.node("on-unequip").virtual()) actionStrings.addAll(actionConfig.node("on-unequip").getList(String.class));
|
||||||
MessagesUtil.sendDebugMessages("on-unequip");
|
MessagesUtil.sendDebugMessages("on-unequip");
|
||||||
user.removeCosmeticSlot(cosmetic);
|
user.removeCosmeticSlot(cosmetic);
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import dev.lone.itemsadder.api.CustomStack;
|
|||||||
import dev.lone.itemsadder.api.Events.ItemsAdderLoadDataEvent;
|
import dev.lone.itemsadder.api.Events.ItemsAdderLoadDataEvent;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
@@ -36,7 +37,7 @@ public class HookItemAdder extends Hook {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
public void onItemAdderDataLoad(ItemsAdderLoadDataEvent event) {
|
public void onItemAdderDataLoad(ItemsAdderLoadDataEvent event) {
|
||||||
// By default, it will only run once at startup, if hook setting is enabled
|
// By default, it will only run once at startup, if hook setting is enabled
|
||||||
if (enabled && !Settings.getItemsAdderReloadChange()) return;
|
if (enabled && !Settings.getItemsAdderReloadChange()) return;
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import com.hibiscusmc.hmccosmetics.user.CosmeticUser;
|
|||||||
import com.hibiscusmc.hmccosmetics.user.CosmeticUsers;
|
import com.hibiscusmc.hmccosmetics.user.CosmeticUsers;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -17,7 +18,7 @@ public class HookCMI extends Hook {
|
|||||||
super("CMI");
|
super("CMI");
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
public void onPlayerVanish(@NotNull CMIPlayerVanishEvent event) {
|
public void onPlayerVanish(@NotNull CMIPlayerVanishEvent event) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
CosmeticUser user = CosmeticUsers.getUser(player);
|
CosmeticUser user = CosmeticUsers.getUser(player);
|
||||||
@@ -25,7 +26,7 @@ public class HookCMI extends Hook {
|
|||||||
user.hideCosmetics(CosmeticUser.HiddenReason.PLUGIN);
|
user.hideCosmetics(CosmeticUser.HiddenReason.PLUGIN);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
public void onPlayerShow(@NotNull CMIPlayerUnVanishEvent event) {
|
public void onPlayerShow(@NotNull CMIPlayerUnVanishEvent event) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
CosmeticUser user = CosmeticUsers.getUser(player);
|
CosmeticUser user = CosmeticUsers.getUser(player);
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import me.libraryaddict.disguise.events.DisguiseEvent;
|
|||||||
import me.libraryaddict.disguise.events.UndisguiseEvent;
|
import me.libraryaddict.disguise.events.UndisguiseEvent;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
public class HookLibsDisguises extends Hook {
|
public class HookLibsDisguises extends Hook {
|
||||||
@@ -14,7 +15,7 @@ public class HookLibsDisguises extends Hook {
|
|||||||
super("LibsDisguises");
|
super("LibsDisguises");
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
public void onPlayerVanish(@NotNull DisguiseEvent event) {
|
public void onPlayerVanish(@NotNull DisguiseEvent event) {
|
||||||
if (!(event.getEntity() instanceof Player player)) return;
|
if (!(event.getEntity() instanceof Player player)) return;
|
||||||
CosmeticUser user = CosmeticUsers.getUser(player);
|
CosmeticUser user = CosmeticUsers.getUser(player);
|
||||||
@@ -22,7 +23,7 @@ public class HookLibsDisguises extends Hook {
|
|||||||
user.hideCosmetics(CosmeticUser.HiddenReason.PLUGIN);
|
user.hideCosmetics(CosmeticUser.HiddenReason.PLUGIN);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
public void onPlayerShow(@NotNull UndisguiseEvent event) {
|
public void onPlayerShow(@NotNull UndisguiseEvent event) {
|
||||||
if (!(event.getEntity() instanceof Player player)) return;
|
if (!(event.getEntity() instanceof Player player)) return;
|
||||||
CosmeticUser user = CosmeticUsers.getUser(player);
|
CosmeticUser user = CosmeticUsers.getUser(player);
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import de.myzelyam.api.vanish.PlayerHideEvent;
|
|||||||
import de.myzelyam.api.vanish.PlayerShowEvent;
|
import de.myzelyam.api.vanish.PlayerShowEvent;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -19,7 +20,7 @@ public class HookPremiumVanish extends Hook {
|
|||||||
super("PremiumVanish");
|
super("PremiumVanish");
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.NORMAL)
|
||||||
public void onPlayerVanish(@NotNull PlayerHideEvent event) {
|
public void onPlayerVanish(@NotNull PlayerHideEvent event) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
CosmeticUser user = CosmeticUsers.getUser(player);
|
CosmeticUser user = CosmeticUsers.getUser(player);
|
||||||
@@ -27,7 +28,7 @@ public class HookPremiumVanish extends Hook {
|
|||||||
user.hideCosmetics(CosmeticUser.HiddenReason.PLUGIN);
|
user.hideCosmetics(CosmeticUser.HiddenReason.PLUGIN);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.NORMAL)
|
||||||
public void onPlayerShow(@NotNull PlayerShowEvent event) {
|
public void onPlayerShow(@NotNull PlayerShowEvent event) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
CosmeticUser user = CosmeticUsers.getUser(player);
|
CosmeticUser user = CosmeticUsers.getUser(player);
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import de.myzelyam.api.vanish.PlayerHideEvent;
|
|||||||
import de.myzelyam.api.vanish.PlayerShowEvent;
|
import de.myzelyam.api.vanish.PlayerShowEvent;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -19,7 +20,7 @@ public class HookSuperVanish extends Hook {
|
|||||||
super("SuperVanish");
|
super("SuperVanish");
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.NORMAL)
|
||||||
public void onPlayerVanish(@NotNull PlayerHideEvent event) {
|
public void onPlayerVanish(@NotNull PlayerHideEvent event) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
CosmeticUser user = CosmeticUsers.getUser(player);
|
CosmeticUser user = CosmeticUsers.getUser(player);
|
||||||
@@ -27,7 +28,7 @@ public class HookSuperVanish extends Hook {
|
|||||||
user.hideCosmetics(CosmeticUser.HiddenReason.PLUGIN);
|
user.hideCosmetics(CosmeticUser.HiddenReason.PLUGIN);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.NORMAL)
|
||||||
public void onPlayerShow(@NotNull PlayerShowEvent event) {
|
public void onPlayerShow(@NotNull PlayerShowEvent event) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
CosmeticUser user = CosmeticUsers.getUser(player);
|
CosmeticUser user = CosmeticUsers.getUser(player);
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import com.sk89q.worldguard.protection.regions.RegionQuery;
|
|||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.player.PlayerMoveEvent;
|
import org.bukkit.event.player.PlayerMoveEvent;
|
||||||
import org.bukkit.event.player.PlayerTeleportEvent;
|
import org.bukkit.event.player.PlayerTeleportEvent;
|
||||||
@@ -23,7 +24,7 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
* Contains {@link com.sk89q.worldguard.WorldGuard WorldGuard} related event listeners
|
* Contains {@link com.sk89q.worldguard.WorldGuard WorldGuard} related event listeners
|
||||||
*/
|
*/
|
||||||
public class WGListener implements Listener {
|
public class WGListener implements Listener {
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
public void onPlayerMove(@NotNull PlayerMoveEvent event) {
|
public void onPlayerMove(@NotNull PlayerMoveEvent event) {
|
||||||
CosmeticUser user = CosmeticUsers.getUser(event.getPlayer());
|
CosmeticUser user = CosmeticUsers.getUser(event.getPlayer());
|
||||||
if (user == null) return;
|
if (user == null) return;
|
||||||
@@ -51,7 +52,7 @@ public class WGListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
public void onPlayerTeleport(PlayerTeleportEvent event) {
|
public void onPlayerTeleport(PlayerTeleportEvent event) {
|
||||||
CosmeticUser user = CosmeticUsers.getUser(event.getPlayer());
|
CosmeticUser user = CosmeticUsers.getUser(event.getPlayer());
|
||||||
if (user == null) return;
|
if (user == null) return;
|
||||||
@@ -79,7 +80,7 @@ public class WGListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.NORMAL)
|
||||||
public void onPlayerEmote(PlayerEmoteStartEvent event) {
|
public void onPlayerEmote(PlayerEmoteStartEvent event) {
|
||||||
Player player = event.getUser().getPlayer();
|
Player player = event.getUser().getPlayer();
|
||||||
if (player == null) return;
|
if (player == null) return;
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import org.bukkit.Bukkit;
|
|||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.player.PlayerJoinEvent;
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
import org.bukkit.event.player.PlayerQuitEvent;
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
@@ -18,10 +19,10 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
|
|
||||||
public class PlayerConnectionListener implements Listener {
|
public class PlayerConnectionListener implements Listener {
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
public void onPlayerJoin(@NotNull PlayerJoinEvent event) {
|
public void onPlayerJoin(@NotNull PlayerJoinEvent event) {
|
||||||
if (event.getPlayer().isOp() || event.getPlayer().hasPermission("hmccosmetics.notifyupdate")) {
|
if (event.getPlayer().isOp() || event.getPlayer().hasPermission("hmccosmetics.notifyupdate")) {
|
||||||
if (!HMCCosmeticsPlugin.getLatestVersion().equalsIgnoreCase(HMCCosmeticsPlugin.getInstance().getDescription().getVersion()) && HMCCosmeticsPlugin.getLatestVersion() != null)
|
if (!HMCCosmeticsPlugin.getLatestVersion().equalsIgnoreCase(HMCCosmeticsPlugin.getInstance().getDescription().getVersion()) && HMCCosmeticsPlugin.getLatestVersion().isEmpty())
|
||||||
MessagesUtil.sendMessageNoKey(
|
MessagesUtil.sendMessageNoKey(
|
||||||
event.getPlayer(),
|
event.getPlayer(),
|
||||||
"<br>" +
|
"<br>" +
|
||||||
@@ -47,7 +48,7 @@ public class PlayerConnectionListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
public void onPlayerQuit(@NotNull PlayerQuitEvent event) {
|
public void onPlayerQuit(@NotNull PlayerQuitEvent event) {
|
||||||
CosmeticUser user = CosmeticUsers.getUser(event.getPlayer());
|
CosmeticUser user = CosmeticUsers.getUser(event.getPlayer());
|
||||||
if (user == null) { // Remove any passengers if a user failed to initialize. Bugs can cause this to happen
|
if (user == null) { // Remove any passengers if a user failed to initialize. Bugs can cause this to happen
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ import org.bukkit.entity.EntityType;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.entity.Pose;
|
import org.bukkit.entity.Pose;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.entity.*;
|
import org.bukkit.event.entity.*;
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
@@ -45,6 +46,8 @@ import org.bukkit.persistence.PersistentDataType;
|
|||||||
import org.bukkit.potion.PotionEffectType;
|
import org.bukkit.potion.PotionEffectType;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
import org.spigotmc.event.entity.EntityDismountEvent;
|
||||||
|
import org.spigotmc.event.entity.EntityMountEvent;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@@ -62,7 +65,7 @@ public class PlayerGameListener implements Listener {
|
|||||||
//registerTeleportMovement();
|
//registerTeleportMovement();
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.LOW)
|
||||||
public void onPlayerClick(@NotNull InventoryClickEvent event) {
|
public void onPlayerClick(@NotNull InventoryClickEvent event) {
|
||||||
// || !event.getClickedInventory().getType().equals(InventoryType.PLAYER)
|
// || !event.getClickedInventory().getType().equals(InventoryType.PLAYER)
|
||||||
if (event.getClick().isShiftClick()) return;
|
if (event.getClick().isShiftClick()) return;
|
||||||
@@ -89,7 +92,7 @@ public class PlayerGameListener implements Listener {
|
|||||||
MessagesUtil.sendDebugMessages("Event fired, updated cosmetic " + cosmeticSlot);
|
MessagesUtil.sendDebugMessages("Event fired, updated cosmetic " + cosmeticSlot);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.LOW)
|
||||||
public void onPlayerShift(PlayerToggleSneakEvent event) {
|
public void onPlayerShift(PlayerToggleSneakEvent event) {
|
||||||
CosmeticUser user = CosmeticUsers.getUser(event.getPlayer().getUniqueId());
|
CosmeticUser user = CosmeticUsers.getUser(event.getPlayer().getUniqueId());
|
||||||
|
|
||||||
@@ -104,7 +107,7 @@ public class PlayerGameListener implements Listener {
|
|||||||
user.leaveWardrobe();
|
user.leaveWardrobe();
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.LOW)
|
||||||
public void onPlayerTeleport(PlayerTeleportEvent event) {
|
public void onPlayerTeleport(PlayerTeleportEvent event) {
|
||||||
CosmeticUser user = CosmeticUsers.getUser(event.getPlayer().getUniqueId());
|
CosmeticUser user = CosmeticUsers.getUser(event.getPlayer().getUniqueId());
|
||||||
|
|
||||||
@@ -134,7 +137,7 @@ public class PlayerGameListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.LOW)
|
||||||
public void portalTeleport(PlayerPortalEvent event) {
|
public void portalTeleport(PlayerPortalEvent event) {
|
||||||
CosmeticUser user = CosmeticUsers.getUser(event.getPlayer().getUniqueId());
|
CosmeticUser user = CosmeticUsers.getUser(event.getPlayer().getUniqueId());
|
||||||
|
|
||||||
@@ -154,7 +157,7 @@ public class PlayerGameListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.NORMAL)
|
||||||
public void onPlayerHit(EntityDamageByEntityEvent event) {
|
public void onPlayerHit(EntityDamageByEntityEvent event) {
|
||||||
if (event.isCancelled()) return;
|
if (event.isCancelled()) return;
|
||||||
Entity entity = event.getEntity();
|
Entity entity = event.getEntity();
|
||||||
@@ -164,11 +167,10 @@ public class PlayerGameListener implements Listener {
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.LOW)
|
||||||
public void onPlayerDamaged(EntityDamageEvent event) {
|
public void onPlayerDamaged(EntityDamageEvent event) {
|
||||||
if (event.isCancelled()) return;
|
if (event.isCancelled()) return;
|
||||||
if (!(event.getEntity() instanceof Player)) return;
|
if (!(event.getEntity() instanceof Player player)) return;
|
||||||
Player player = ((Player) event.getEntity()).getPlayer();
|
|
||||||
CosmeticUser user = CosmeticUsers.getUser(player);
|
CosmeticUser user = CosmeticUsers.getUser(player);
|
||||||
if (user == null) return;
|
if (user == null) return;
|
||||||
if (user.getUserEmoteManager().isPlayingEmote()) {
|
if (user.getUserEmoteManager().isPlayingEmote()) {
|
||||||
@@ -184,11 +186,10 @@ public class PlayerGameListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
public void onPlayerLook(PlayerMoveEvent event) {
|
public void onPlayerLook(PlayerMoveEvent event) {
|
||||||
if (event.isCancelled()) return;
|
if (event.isCancelled()) return;
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
// TODO: Move to packets
|
|
||||||
CosmeticUser user = CosmeticUsers.getUser(player);
|
CosmeticUser user = CosmeticUsers.getUser(player);
|
||||||
if (user == null) return;
|
if (user == null) return;
|
||||||
// Really need to look into optimization of this
|
// Really need to look into optimization of this
|
||||||
@@ -196,10 +197,9 @@ public class PlayerGameListener implements Listener {
|
|||||||
user.updateCosmetic(CosmeticSlot.BALLOON);
|
user.updateCosmetic(CosmeticSlot.BALLOON);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
public void onPlayerPoseChange(EntityPoseChangeEvent event) {
|
public void onPlayerPoseChange(EntityPoseChangeEvent event) {
|
||||||
if (!(event.getEntity() instanceof Player)) return;
|
if (!(event.getEntity() instanceof Player player)) return;
|
||||||
Player player = ((Player) event.getEntity()).getPlayer();
|
|
||||||
CosmeticUser user = CosmeticUsers.getUser(player);
|
CosmeticUser user = CosmeticUsers.getUser(player);
|
||||||
if (user == null) return;
|
if (user == null) return;
|
||||||
if (!user.hasCosmeticInSlot(CosmeticSlot.BACKPACK)) return;
|
if (!user.hasCosmeticInSlot(CosmeticSlot.BACKPACK)) return;
|
||||||
@@ -207,14 +207,7 @@ public class PlayerGameListener implements Listener {
|
|||||||
if (pose.equals(Pose.STANDING)) {
|
if (pose.equals(Pose.STANDING)) {
|
||||||
// #84, Riptides mess with backpacks
|
// #84, Riptides mess with backpacks
|
||||||
ItemStack currentItem = player.getInventory().getItemInMainHand();
|
ItemStack currentItem = player.getInventory().getItemInMainHand();
|
||||||
if (currentItem != null) {
|
if (currentItem.containsEnchantment(Enchantment.RIPTIDE)) return;
|
||||||
if (currentItem.hasItemMeta()) {
|
|
||||||
if (currentItem.containsEnchantment(Enchantment.RIPTIDE)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!user.isBackpackSpawned()) {
|
if (!user.isBackpackSpawned()) {
|
||||||
user.spawnBackpack((CosmeticBackpackType) user.getCosmetic(CosmeticSlot.BACKPACK));
|
user.spawnBackpack((CosmeticBackpackType) user.getCosmetic(CosmeticSlot.BACKPACK));
|
||||||
}
|
}
|
||||||
@@ -225,10 +218,9 @@ public class PlayerGameListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.LOW)
|
||||||
public void onPlayerArmorDamage(PlayerItemDamageEvent event) {
|
public void onPlayerArmorDamage(PlayerItemDamageEvent event) {
|
||||||
// Possibly look into cancelling the event, then handling the damage on our own.
|
// Possibly look into cancelling the event, then handling the damage on our own.
|
||||||
|
|
||||||
if (event.isCancelled()) return;
|
if (event.isCancelled()) return;
|
||||||
MessagesUtil.sendDebugMessages("PlayerItemDamageEvent");
|
MessagesUtil.sendDebugMessages("PlayerItemDamageEvent");
|
||||||
|
|
||||||
@@ -246,6 +238,7 @@ public class PlayerGameListener implements Listener {
|
|||||||
if (slot == -1) return;
|
if (slot == -1) return;
|
||||||
|
|
||||||
CosmeticUser user = CosmeticUsers.getUser(event.getPlayer().getUniqueId());
|
CosmeticUser user = CosmeticUsers.getUser(event.getPlayer().getUniqueId());
|
||||||
|
if (user == null) return;
|
||||||
CosmeticSlot cosmeticSlot = InventoryUtils.BukkitCosmeticSlot(slot);
|
CosmeticSlot cosmeticSlot = InventoryUtils.BukkitCosmeticSlot(slot);
|
||||||
|
|
||||||
if (!user.hasCosmeticInSlot(cosmeticSlot)) {
|
if (!user.hasCosmeticInSlot(cosmeticSlot)) {
|
||||||
@@ -259,7 +252,7 @@ public class PlayerGameListener implements Listener {
|
|||||||
}, 2);
|
}, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.LOW)
|
||||||
public void playerOffhandSwap(PlayerSwapHandItemsEvent event) {
|
public void playerOffhandSwap(PlayerSwapHandItemsEvent event) {
|
||||||
CosmeticUser user = CosmeticUsers.getUser(event.getPlayer().getUniqueId());
|
CosmeticUser user = CosmeticUsers.getUser(event.getPlayer().getUniqueId());
|
||||||
if (user == null) return;
|
if (user == null) return;
|
||||||
@@ -275,7 +268,7 @@ public class PlayerGameListener implements Listener {
|
|||||||
}, 2);
|
}, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.NORMAL)
|
||||||
public void onPlayerPickupItem(EntityPickupItemEvent event) {
|
public void onPlayerPickupItem(EntityPickupItemEvent event) {
|
||||||
if (!(event.getEntity() instanceof Player)) return;
|
if (!(event.getEntity() instanceof Player)) return;
|
||||||
CosmeticUser user = CosmeticUsers.getUser(event.getEntity().getUniqueId());
|
CosmeticUser user = CosmeticUsers.getUser(event.getEntity().getUniqueId());
|
||||||
@@ -283,7 +276,7 @@ public class PlayerGameListener implements Listener {
|
|||||||
if (user.isInWardrobe()) event.setCancelled(true);
|
if (user.isInWardrobe()) event.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.MONITOR)
|
||||||
public void playerInvisibility(EntityPotionEffectEvent event) {
|
public void playerInvisibility(EntityPotionEffectEvent event) {
|
||||||
if (event.isCancelled()) return;
|
if (event.isCancelled()) return;
|
||||||
if (!event.getModifiedType().equals(PotionEffectType.INVISIBILITY)) return;
|
if (!event.getModifiedType().equals(PotionEffectType.INVISIBILITY)) return;
|
||||||
@@ -301,7 +294,7 @@ public class PlayerGameListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.LOW)
|
||||||
public void onMainHandSwitch(PlayerItemHeldEvent event) {
|
public void onMainHandSwitch(PlayerItemHeldEvent event) {
|
||||||
CosmeticUser user = CosmeticUsers.getUser(event.getPlayer());
|
CosmeticUser user = CosmeticUsers.getUser(event.getPlayer());
|
||||||
if (user == null) return;
|
if (user == null) return;
|
||||||
@@ -322,7 +315,7 @@ public class PlayerGameListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.LOW)
|
||||||
public void onPlayerDeath(PlayerDeathEvent event) {
|
public void onPlayerDeath(PlayerDeathEvent event) {
|
||||||
CosmeticUser user = CosmeticUsers.getUser(event.getEntity());
|
CosmeticUser user = CosmeticUsers.getUser(event.getEntity());
|
||||||
if (user == null) return;
|
if (user == null) return;
|
||||||
@@ -334,7 +327,7 @@ public class PlayerGameListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.LOW)
|
||||||
public void onPlayerGamemodeSwitch(PlayerGameModeChangeEvent event) {
|
public void onPlayerGamemodeSwitch(PlayerGameModeChangeEvent event) {
|
||||||
CosmeticUser user = CosmeticUsers.getUser(event.getPlayer());
|
CosmeticUser user = CosmeticUsers.getUser(event.getPlayer());
|
||||||
if (user == null) return;
|
if (user == null) return;
|
||||||
@@ -348,16 +341,41 @@ public class PlayerGameListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler(priority = EventPriority.LOW)
|
||||||
public void onPlayerCosemticEquip(PlayerCosmeticPostEquipEvent event) {
|
public void onPlayerCosemticEquip(PlayerCosmeticPostEquipEvent event) {
|
||||||
CosmeticUser user = event.getUser();
|
CosmeticUser user = event.getUser();
|
||||||
if (user.isInWardrobe() && event.getCosmetic().getSlot().equals(CosmeticSlot.BALLOON)) {
|
if (user.isInWardrobe() && event.getCosmetic().getSlot().equals(CosmeticSlot.BALLOON)) {
|
||||||
Location NPCLocation = user.getWardrobeManager().getNpcLocation();
|
Location NPCLocation = user.getWardrobeManager().getNpcLocation();
|
||||||
PacketManager.sendTeleportPacket(user.getBalloonManager().getPufferfishBalloonId(), NPCLocation.add(Settings.getBalloonOffset()), false, List.of(event.getUser().getPlayer()));
|
// We know that no other entity besides a regular player will be in the wardrobe
|
||||||
|
PacketManager.sendTeleportPacket(user.getBalloonManager().getPufferfishBalloonId(), NPCLocation.add(Settings.getBalloonOffset()), false, List.of(user.getPlayer()));
|
||||||
user.getBalloonManager().getModelEntity().teleport(NPCLocation.add(Settings.getBalloonOffset()));
|
user.getBalloonManager().getModelEntity().teleport(NPCLocation.add(Settings.getBalloonOffset()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onPlayerMounted(EntityMountEvent event) {
|
||||||
|
if (!event.isCancelled() && event.getEntity() instanceof Player player) {
|
||||||
|
CosmeticUser user = CosmeticUsers.getUser(player);
|
||||||
|
if (user == null) return;
|
||||||
|
|
||||||
|
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(HMCCosmeticsPlugin.getInstance(), ()->{
|
||||||
|
user.respawnBackpack();
|
||||||
|
}, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onPlayerDismounted(EntityDismountEvent event) {
|
||||||
|
if (!event.isCancelled() && event.getDismounted() instanceof Player player) {
|
||||||
|
CosmeticUser user = CosmeticUsers.getUser(player);
|
||||||
|
if (user == null) return;
|
||||||
|
|
||||||
|
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(HMCCosmeticsPlugin.getInstance(), ()->{
|
||||||
|
user.respawnBackpack();
|
||||||
|
}, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void registerInventoryClickListener() {
|
private void registerInventoryClickListener() {
|
||||||
ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(HMCCosmeticsPlugin.getInstance(), ListenerPriority.NORMAL, PacketType.Play.Client.WINDOW_CLICK) {
|
ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(HMCCosmeticsPlugin.getInstance(), ListenerPriority.NORMAL, PacketType.Play.Client.WINDOW_CLICK) {
|
||||||
@Override
|
@Override
|
||||||
@@ -370,7 +388,7 @@ public class PlayerGameListener implements Listener {
|
|||||||
if (invTypeClicked != 0) return;
|
if (invTypeClicked != 0) return;
|
||||||
// -999 is when a player clicks outside their inventory. https://wiki.vg/Inventory#Player_Inventory
|
// -999 is when a player clicks outside their inventory. https://wiki.vg/Inventory#Player_Inventory
|
||||||
if (slotClicked == -999) return;
|
if (slotClicked == -999) return;
|
||||||
if (!(event.getPlayer() instanceof Player)) return;
|
if (event.getPlayer() == null) return;
|
||||||
|
|
||||||
CosmeticUser user = CosmeticUsers.getUser(player);
|
CosmeticUser user = CosmeticUsers.getUser(player);
|
||||||
if (user == null) return;
|
if (user == null) return;
|
||||||
@@ -390,7 +408,6 @@ public class PlayerGameListener implements Listener {
|
|||||||
MessagesUtil.sendDebugMessages("Menu Initial ");
|
MessagesUtil.sendDebugMessages("Menu Initial ");
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
if (event.getPlayer() == null) return;
|
if (event.getPlayer() == null) return;
|
||||||
if (!(event.getPlayer() instanceof Player)) return;
|
|
||||||
|
|
||||||
int windowID = event.getPacket().getIntegers().read(0);
|
int windowID = event.getPacket().getIntegers().read(0);
|
||||||
List<ItemStack> slotData = event.getPacket().getItemListModifier().read(0);
|
List<ItemStack> slotData = event.getPacket().getItemListModifier().read(0);
|
||||||
@@ -465,7 +482,7 @@ public class PlayerGameListener implements Listener {
|
|||||||
ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(HMCCosmeticsPlugin.getInstance(), ListenerPriority.NORMAL, PacketType.Play.Client.ARM_ANIMATION) {
|
ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(HMCCosmeticsPlugin.getInstance(), ListenerPriority.NORMAL, PacketType.Play.Client.ARM_ANIMATION) {
|
||||||
@Override
|
@Override
|
||||||
public void onPacketReceiving(PacketEvent event) {
|
public void onPacketReceiving(PacketEvent event) {
|
||||||
if (!(event.getPlayer() instanceof Player)) return;
|
if (event.getPlayer() == null) return;
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
CosmeticUser user = CosmeticUsers.getUser(player);
|
CosmeticUser user = CosmeticUsers.getUser(player);
|
||||||
if (user == null) return;
|
if (user == null) return;
|
||||||
@@ -486,9 +503,8 @@ public class PlayerGameListener implements Listener {
|
|||||||
ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(HMCCosmeticsPlugin.getInstance(), ListenerPriority.NORMAL, PacketType.Play.Client.USE_ENTITY) {
|
ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(HMCCosmeticsPlugin.getInstance(), ListenerPriority.NORMAL, PacketType.Play.Client.USE_ENTITY) {
|
||||||
@Override
|
@Override
|
||||||
public void onPacketReceiving(PacketEvent event) {
|
public void onPacketReceiving(PacketEvent event) {
|
||||||
if (!(event.getPlayer() instanceof Player)) return;
|
if (event.getPlayer() == null) return;
|
||||||
Player player = event.getPlayer();
|
CosmeticUser user = CosmeticUsers.getUser(event.getPlayer());
|
||||||
CosmeticUser user = CosmeticUsers.getUser(player);
|
|
||||||
if (user == null) return;
|
if (user == null) return;
|
||||||
if (user.getUserEmoteManager().isPlayingEmote() || user.isInWardrobe()) {
|
if (user.getUserEmoteManager().isPlayingEmote() || user.isInWardrobe()) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import org.bukkit.entity.EntityType;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class CosmeticUsers {
|
public class CosmeticUsers {
|
||||||
@@ -43,4 +44,8 @@ public class CosmeticUsers {
|
|||||||
if (entity.getType().equals(EntityType.PLAYER)) return null;
|
if (entity.getType().equals(EntityType.PLAYER)) return null;
|
||||||
return COSMETIC_USERS.get(entity.getUniqueId());
|
return COSMETIC_USERS.get(entity.getUniqueId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Set<CosmeticUser> values() {
|
||||||
|
return COSMETIC_USERS.values();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,10 +12,15 @@ import com.ticxo.modelengine.api.model.ActiveModel;
|
|||||||
import com.ticxo.modelengine.api.model.ModeledEntity;
|
import com.ticxo.modelengine.api.model.ModeledEntity;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.ArmorStand;
|
import org.bukkit.entity.ArmorStand;
|
||||||
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.EquipmentSlot;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
@@ -61,14 +66,38 @@ public class UserBackpackManager {
|
|||||||
if (this.invisibleArmorStand != null) return;
|
if (this.invisibleArmorStand != null) return;
|
||||||
this.invisibleArmorStand = (ArmorStand) NMSHandlers.getHandler().spawnBackpack(user, cosmeticBackpackType);
|
this.invisibleArmorStand = (ArmorStand) NMSHandlers.getHandler().spawnBackpack(user, cosmeticBackpackType);
|
||||||
|
|
||||||
|
Entity entity = user.getEntity();
|
||||||
|
|
||||||
|
int[] passengerIDs = new int[entity.getPassengers().size() + 1];
|
||||||
|
|
||||||
|
for (int i = 0; i < entity.getPassengers().size(); i++) {
|
||||||
|
passengerIDs[i] = entity.getPassengers().get(i).getEntityId();
|
||||||
|
}
|
||||||
|
|
||||||
|
passengerIDs[passengerIDs.length - 1] = this.getFirstArmorStandId();
|
||||||
|
|
||||||
|
List<Player> outsideViewers = user.getUserBackpackManager().getCloudManager().refreshViewers(user.getEntity().getLocation());
|
||||||
|
PacketManager.sendRidingPacket(user.getEntity().getEntityId(), passengerIDs, outsideViewers);
|
||||||
|
|
||||||
|
ArrayList<Player> owner = new ArrayList<>();
|
||||||
|
if (user.getPlayer() != null) owner.add(user.getPlayer());
|
||||||
|
|
||||||
if (cosmeticBackpackType.isFirstPersonCompadible()) {
|
if (cosmeticBackpackType.isFirstPersonCompadible()) {
|
||||||
for (int i = particleCloud.size(); i < 5; i++) {
|
for (int i = particleCloud.size(); i < 5; i++) {
|
||||||
int entityId = NMSHandlers.getHandler().getNextEntityId();
|
int entityId = NMSHandlers.getHandler().getNextEntityId();
|
||||||
PacketManager.sendEntitySpawnPacket(user.getPlayer().getLocation(), entityId, EntityType.AREA_EFFECT_CLOUD, UUID.randomUUID());
|
PacketManager.sendEntitySpawnPacket(user.getEntity().getLocation(), entityId, EntityType.AREA_EFFECT_CLOUD, UUID.randomUUID());
|
||||||
PacketManager.sendCloudEffect(entityId, PacketManager.getViewers(user.getPlayer().getLocation()));
|
PacketManager.sendCloudEffect(entityId, PacketManager.getViewers(user.getEntity().getLocation()));
|
||||||
this.particleCloud.add(entityId);
|
this.particleCloud.add(entityId);
|
||||||
}
|
}
|
||||||
|
// Copied code from updating the backpack
|
||||||
|
for (int i = 0; i < particleCloud.size(); i++) {
|
||||||
|
if (i == 0) PacketManager.sendRidingPacket(entity.getEntityId(), particleCloud.get(i), owner);
|
||||||
|
else PacketManager.sendRidingPacket(particleCloud.get(i - 1), particleCloud.get(i) , owner);
|
||||||
|
}
|
||||||
|
PacketManager.sendRidingPacket(particleCloud.get(particleCloud.size() - 1), user.getUserBackpackManager().getFirstArmorStandId(), owner);
|
||||||
|
if (!user.getHidden()) NMSHandlers.getHandler().equipmentSlotUpdate(user.getUserBackpackManager().getFirstArmorStandId(), EquipmentSlot.HEAD, cosmeticBackpackType.getFirstPersonBackpack(), owner);
|
||||||
}
|
}
|
||||||
|
PacketManager.sendRidingPacket(entity.getEntityId(), passengerIDs, outsideViewers);
|
||||||
|
|
||||||
// No one should be using ME because it barely works but some still use it, so it's here
|
// No one should be using ME because it barely works but some still use it, so it's here
|
||||||
if (cosmeticBackpackType.getModelName() != null && Hooks.isActiveHook("ModelEngine")) {
|
if (cosmeticBackpackType.getModelName() != null && Hooks.isActiveHook("ModelEngine")) {
|
||||||
@@ -82,8 +111,6 @@ public class UserBackpackManager {
|
|||||||
modeledEntity.addModel(model, false);
|
modeledEntity.addModel(model, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
cosmeticBackpackType.update(user);
|
|
||||||
|
|
||||||
MessagesUtil.sendDebugMessages("spawnBackpack Bukkit - Finish");
|
MessagesUtil.sendDebugMessages("spawnBackpack Bukkit - Finish");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -94,8 +121,8 @@ public class UserBackpackManager {
|
|||||||
this.invisibleArmorStand = null;
|
this.invisibleArmorStand = null;
|
||||||
}
|
}
|
||||||
if (particleCloud != null) {
|
if (particleCloud != null) {
|
||||||
for (int i = 0; i < particleCloud.size(); i++) {
|
for (Integer entityId : particleCloud) {
|
||||||
PacketManager.sendEntityDestroyPacket(particleCloud.get(i), getCloudManager().getViewers());
|
PacketManager.sendEntityDestroyPacket(entityId, getCloudManager().getViewers());
|
||||||
}
|
}
|
||||||
this.particleCloud = null;
|
this.particleCloud = null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -114,6 +114,8 @@ public class UserWardrobeManager {
|
|||||||
|
|
||||||
// Misc
|
// Misc
|
||||||
if (user.hasCosmeticInSlot(CosmeticSlot.BACKPACK)) {
|
if (user.hasCosmeticInSlot(CosmeticSlot.BACKPACK)) {
|
||||||
|
// Maybe null as backpack maybe despawned before entering
|
||||||
|
if (user.getUserBackpackManager() == null) user.respawnBackpack();
|
||||||
user.getUserBackpackManager().getArmorStand().teleport(npcLocation.clone().add(0, 2, 0));
|
user.getUserBackpackManager().getArmorStand().teleport(npcLocation.clone().add(0, 2, 0));
|
||||||
NMSHandlers.getHandler().equipmentSlotUpdate(user.getUserBackpackManager().getFirstArmorStandId(), EquipmentSlot.HEAD, user.getUserCosmeticItem(user.getCosmetic(CosmeticSlot.BACKPACK)), viewer);
|
NMSHandlers.getHandler().equipmentSlotUpdate(user.getUserBackpackManager().getFirstArmorStandId(), EquipmentSlot.HEAD, user.getUserCosmeticItem(user.getCosmetic(CosmeticSlot.BACKPACK)), viewer);
|
||||||
PacketManager.ridingMountPacket(NPC_ID, user.getUserBackpackManager().getFirstArmorStandId(), viewer);
|
PacketManager.ridingMountPacket(NPC_ID, user.getUserBackpackManager().getFirstArmorStandId(), viewer);
|
||||||
|
|||||||
@@ -1,20 +1,5 @@
|
|||||||
package com.hibiscusmc.hmccosmetics.util;
|
package com.hibiscusmc.hmccosmetics.util;
|
||||||
|
|
||||||
public class TranslationPair {
|
public record TranslationPair(String key, String value) {
|
||||||
|
|
||||||
private String key;
|
|
||||||
private String value;
|
|
||||||
|
|
||||||
public TranslationPair(String key, String value) {
|
|
||||||
this.key = key;
|
|
||||||
this.value = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getKey() {
|
|
||||||
return key;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getValue() {
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,19 +10,20 @@ import java.util.List;
|
|||||||
public class TranslationUtil {
|
public class TranslationUtil {
|
||||||
|
|
||||||
// unlocked-cosmetic -> true -> True
|
// unlocked-cosmetic -> true -> True
|
||||||
private static HashMap<String, List<TranslationPair>> keys = new HashMap<>();
|
private static final HashMap<String, List<TranslationPair>> keys = new HashMap<>();
|
||||||
|
|
||||||
public static void setup(ConfigurationNode config) {
|
public static void setup(ConfigurationNode config) {
|
||||||
|
keys.clear();
|
||||||
for (ConfigurationNode node : config.childrenMap().values()) {
|
for (ConfigurationNode node : config.childrenMap().values()) {
|
||||||
ArrayList<TranslationPair> pairs = new ArrayList<>();
|
ArrayList<TranslationPair> pairs = new ArrayList<>();
|
||||||
for (ConfigurationNode translatableMessage : node.childrenMap().values()) {
|
for (ConfigurationNode translatableMessage : node.childrenMap().values()) {
|
||||||
String key = translatableMessage.key().toString();
|
String key = translatableMessage.key().toString();
|
||||||
key.replaceAll("'", ""); // Autoupdater adds ' to it? Removes it from the key
|
key = key.replaceAll("'", ""); // Autoupdater adds ' to it? Removes it from the key
|
||||||
TranslationPair pair = new TranslationPair(key, translatableMessage.getString());
|
TranslationPair pair = new TranslationPair(key, translatableMessage.getString());
|
||||||
pairs.add(pair);
|
pairs.add(pair);
|
||||||
MessagesUtil.sendDebugMessages("setupTranslation key:" + node.key().toString() + " | " + node);
|
MessagesUtil.sendDebugMessages("setupTranslation key:" + node.key().toString() + " | " + node);
|
||||||
MessagesUtil.sendDebugMessages("Overall Key " + node.key().toString());
|
MessagesUtil.sendDebugMessages("Overall Key " + node.key().toString());
|
||||||
MessagesUtil.sendDebugMessages("Key '" + pair.getKey() + "' Value '" + pair.getValue() + "'");
|
MessagesUtil.sendDebugMessages("Key '" + pair.key() + "' Value '" + pair.value() + "'");
|
||||||
}
|
}
|
||||||
keys.put(node.key().toString().toLowerCase(), pairs);
|
keys.put(node.key().toString().toLowerCase(), pairs);
|
||||||
}
|
}
|
||||||
@@ -31,7 +32,7 @@ public class TranslationUtil {
|
|||||||
public static String getTranslation(String key, String message) {
|
public static String getTranslation(String key, String message) {
|
||||||
List<TranslationPair> pairs = keys.get(key);
|
List<TranslationPair> pairs = keys.get(key);
|
||||||
for (TranslationPair pair : pairs) {
|
for (TranslationPair pair : pairs) {
|
||||||
if (pair.getKey() == message) return StringUtils.parseStringToString(pair.getValue());
|
if (pair.key().equals(message)) return StringUtils.parseStringToString(pair.value());
|
||||||
}
|
}
|
||||||
|
|
||||||
return message;
|
return message;
|
||||||
|
|||||||
@@ -250,6 +250,25 @@ public class PacketManager extends BasePacket {
|
|||||||
sendRidingPacket(mountId, passengerId, getViewers(location));
|
sendRidingPacket(mountId, passengerId, getViewers(location));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mostly to deal with backpacks, this deals with entities riding other entities.
|
||||||
|
* @param mountId The entity that is the "mount", ex. a player
|
||||||
|
* @param passengerIds The entities that are riding the mount, ex. a armorstand for a backpack
|
||||||
|
* @param sendTo Whom to send the packet to
|
||||||
|
*/
|
||||||
|
public static void sendRidingPacket(
|
||||||
|
final int mountId,
|
||||||
|
final int[] passengerIds,
|
||||||
|
final @NotNull List<Player> sendTo
|
||||||
|
) {
|
||||||
|
PacketContainer packet = new PacketContainer(PacketType.Play.Server.MOUNT);
|
||||||
|
packet.getIntegers().write(0, mountId);
|
||||||
|
packet.getIntegerArrays().write(0, passengerIds);
|
||||||
|
for (final Player p : sendTo) {
|
||||||
|
sendPacket(p, packet);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Mostly to deal with backpacks, this deals with entities riding other entities.
|
* Mostly to deal with backpacks, this deals with entities riding other entities.
|
||||||
* @param mountId The entity that is the "mount", ex. a player
|
* @param mountId The entity that is the "mount", ex. a player
|
||||||
@@ -261,12 +280,7 @@ public class PacketManager extends BasePacket {
|
|||||||
final int passengerId,
|
final int passengerId,
|
||||||
final @NotNull List<Player> sendTo
|
final @NotNull List<Player> sendTo
|
||||||
) {
|
) {
|
||||||
PacketContainer packet = new PacketContainer(PacketType.Play.Server.MOUNT);
|
sendRidingPacket(mountId, new int[] {passengerId}, sendTo);
|
||||||
packet.getIntegers().write(0, mountId);
|
|
||||||
packet.getIntegerArrays().write(0, new int[]{passengerId});
|
|
||||||
for (final Player p : sendTo) {
|
|
||||||
sendPacket(p, packet);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -415,6 +429,7 @@ public class PacketManager extends BasePacket {
|
|||||||
* @param uuid What is the fake player UUID
|
* @param uuid What is the fake player UUID
|
||||||
* @param sendTo Whom to send the packet to
|
* @param sendTo Whom to send the packet to
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
public static void sendRemovePlayerPacket(
|
public static void sendRemovePlayerPacket(
|
||||||
final Player player,
|
final Player player,
|
||||||
final UUID uuid,
|
final UUID uuid,
|
||||||
@@ -422,6 +437,7 @@ public class PacketManager extends BasePacket {
|
|||||||
) {
|
) {
|
||||||
if (NMSHandlers.getVersion().contains("v1_18_R2") || NMSHandlers.getVersion().contains("v1_19_R1")) {
|
if (NMSHandlers.getVersion().contains("v1_18_R2") || NMSHandlers.getVersion().contains("v1_19_R1")) {
|
||||||
WrapperPlayServerPlayerInfo info = new WrapperPlayServerPlayerInfo();
|
WrapperPlayServerPlayerInfo info = new WrapperPlayServerPlayerInfo();
|
||||||
|
// Remove player is deprecated on 1.19.3+, but we still need to support 1.18.2
|
||||||
info.setAction(EnumWrappers.PlayerInfoAction.REMOVE_PLAYER);
|
info.setAction(EnumWrappers.PlayerInfoAction.REMOVE_PLAYER);
|
||||||
|
|
||||||
String name = "Mannequin-" + player.getEntityId();
|
String name = "Mannequin-" + player.getEntityId();
|
||||||
@@ -521,7 +537,7 @@ public class PacketManager extends BasePacket {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public static List<Player> getViewers(Location location) {
|
public static List<Player> getViewers(Location location) {
|
||||||
ArrayList<Player> viewers = new ArrayList();
|
ArrayList<Player> viewers = new ArrayList<>();
|
||||||
if (Settings.getViewDistance() <= 0) {
|
if (Settings.getViewDistance() <= 0) {
|
||||||
viewers.addAll(location.getWorld().getPlayers());
|
viewers.addAll(location.getWorld().getPlayers());
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -48,6 +48,11 @@ cosmetic-settings:
|
|||||||
x: 0.5
|
x: 0.5
|
||||||
y: 3
|
y: 3
|
||||||
z: 0.5
|
z: 0.5
|
||||||
|
menu-settings:
|
||||||
|
cosmetic-type:
|
||||||
|
# This allows you to specify if it should require a special click type for the interaction to work.
|
||||||
|
equip-click: "ANY" # ANY or ClickType, https://jd.papermc.io/paper/1.20/org/bukkit/event/inventory/ClickType.html
|
||||||
|
unequip-click: "ANY" # ANY or ClickType, https://jd.papermc.io/paper/1.20/org/bukkit/event/inventory/ClickType.html
|
||||||
dye-menu:
|
dye-menu:
|
||||||
# If you use ItemsAdder, set this to "§f:offset_-8::dye_menu:"
|
# If you use ItemsAdder, set this to "§f:offset_-8::dye_menu:"
|
||||||
# If you use Oraxen, set this to "<glyph:neg_shift_8><glyph:dye_menu>"
|
# If you use Oraxen, set this to "<glyph:neg_shift_8><glyph:dye_menu>"
|
||||||
|
|||||||
Reference in New Issue
Block a user