9
0
mirror of https://github.com/HibiscusMC/HMCCosmetics.git synced 2025-12-30 04:19:28 +00:00

Backpack no longer equipped on fly or swim

This commit is contained in:
LoJoSho
2023-02-20 18:41:11 -06:00
parent 0238ac8fc4
commit 0e1c9b3f7e
3 changed files with 34 additions and 7 deletions

View File

@@ -26,7 +26,7 @@ public class CosmeticBackpackType extends Cosmetic {
Location loc = player.getLocation().clone().add(0, 2, 0);
if (user.isInWardrobe()) return;
if (!user.isBackupSpawned()) return;
if (loc.getWorld() != user.getUserBackpackManager().getArmorstand().getWorld()) {
user.getUserBackpackManager().getArmorstand().teleport(loc);
}

View File

@@ -13,6 +13,7 @@ import com.hibiscusmc.hmccosmetics.config.Settings;
import com.hibiscusmc.hmccosmetics.cosmetic.Cosmetic;
import com.hibiscusmc.hmccosmetics.cosmetic.CosmeticSlot;
import com.hibiscusmc.hmccosmetics.cosmetic.types.CosmeticArmorType;
import com.hibiscusmc.hmccosmetics.cosmetic.types.CosmeticBackpackType;
import com.hibiscusmc.hmccosmetics.cosmetic.types.CosmeticBalloonType;
import com.hibiscusmc.hmccosmetics.cosmetic.types.CosmeticEmoteType;
import com.hibiscusmc.hmccosmetics.gui.Menu;
@@ -28,12 +29,10 @@ import org.bukkit.NamespacedKey;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.entity.Pose;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityPickupItemEvent;
import org.bukkit.event.entity.EntityPotionEffectEvent;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.entity.*;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.player.*;
@@ -157,14 +156,38 @@ public class PlayerGameListener implements Listener {
@EventHandler
public void onPlayerLook(PlayerMoveEvent event) {
if (event.isCancelled()) return;
Player player = event.getPlayer();
// TODO: Move to packets
CosmeticUser user = CosmeticUsers.getUser(event.getPlayer().getUniqueId());
CosmeticUser user = CosmeticUsers.getUser(player);
if (user == null) return;
// Really need to look into optimization of this
user.updateCosmetic(CosmeticSlot.BACKPACK);
user.updateCosmetic(CosmeticSlot.BALLOON);
}
@EventHandler
public void onPlayerPoseChange(EntityPoseChangeEvent event) {
MessagesUtil.sendDebugMessages("EntityPoseChangeEvent");
if (!(event.getEntity() instanceof Player)) return;
Player player = ((Player) event.getEntity()).getPlayer();
CosmeticUser user = CosmeticUsers.getUser(player);
if (user == null) return;
if (!user.hasCosmeticInSlot(CosmeticSlot.BACKPACK)) return;
Pose pose = event.getPose();
if (pose.equals(Pose.STANDING)) {
MessagesUtil.sendDebugMessages("Standing");
if (!user.isBackupSpawned()) {
user.spawnBackpack((CosmeticBackpackType) user.getCosmetic(CosmeticSlot.BACKPACK));
MessagesUtil.sendDebugMessages("backpack is not spawned");
}
return;
}
if (pose.equals(Pose.SLEEPING) || pose.equals(Pose.SWIMMING) || pose.equals(Pose.FALL_FLYING)) {
MessagesUtil.sendDebugMessages("misc");
user.despawnBackpack();
}
}
@EventHandler
public void onPlayerArmorDamage(PlayerItemDamageEvent event) {
// Possibly look into cancelling the event, then handling the damage on our own.

View File

@@ -286,6 +286,7 @@ public class CosmeticUser {
}
public void spawnBackpack(CosmeticBackpackType cosmeticBackpackType) {
if (this.userBackpackManager != null) return;
this.userBackpackManager = new UserBackpackManager(this);
userBackpackManager.spawnBackpack(cosmeticBackpackType);
}
@@ -296,7 +297,10 @@ public class CosmeticUser {
userBackpackManager = null;
}
public boolean isBackupSpawned() {
if (this.userBackpackManager == null) return false;
return true;
}
public void spawnBalloon(CosmeticBalloonType cosmeticBalloonType) {
Player player = Bukkit.getPlayer(getUniqueId());