diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/CosmeticHolder.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/CosmeticHolder.java index 8f41ee4f..4c7ad516 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/CosmeticHolder.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/CosmeticHolder.java @@ -3,6 +3,7 @@ package com.hibiscusmc.hmccosmetics.cosmetic; import com.google.common.collect.ImmutableCollection; import com.hibiscusmc.hmccosmetics.user.CosmeticUser; import org.bukkit.Color; +import org.bukkit.Location; import org.bukkit.entity.Player; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; @@ -54,7 +55,9 @@ public interface CosmeticHolder { boolean canEquipCosmetic(@NotNull Cosmetic cosmetic, boolean ignoreWardrobe); - void updateCosmetic(@NotNull CosmeticSlot slot); + boolean updateCosmetic(@NotNull CosmeticSlot slot); + + boolean updateMovementCosmetic(@NotNull CosmeticSlot slot, final Location from, final Location to); /** * Just for backwards compatibility, ensures that the given viewer and the given cosmetic holder diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/behavior/CosmeticMovementBehavior.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/behavior/CosmeticMovementBehavior.java index 81a78e97..ef4e7c92 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/behavior/CosmeticMovementBehavior.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/behavior/CosmeticMovementBehavior.java @@ -3,6 +3,9 @@ package com.hibiscusmc.hmccosmetics.cosmetic.behavior; import com.hibiscusmc.hmccosmetics.user.CosmeticUser; import org.bukkit.Location; +/** + * Updates cosmetics whenever a player moves. + */ public interface CosmeticMovementBehavior { void dispatchMove( final CosmeticUser user, diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/behavior/CosmeticUpdateBehavior.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/behavior/CosmeticUpdateBehavior.java index 5ca6995e..c7944485 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/behavior/CosmeticUpdateBehavior.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/cosmetic/behavior/CosmeticUpdateBehavior.java @@ -2,6 +2,9 @@ package com.hibiscusmc.hmccosmetics.cosmetic.behavior; import com.hibiscusmc.hmccosmetics.user.CosmeticUser; +/** + * Generic updates that happen every tick or when manually requested to be dispatched. + */ public interface CosmeticUpdateBehavior { void dispatchUpdate(final CosmeticUser user); } \ No newline at end of file diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/user/CosmeticUser.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/user/CosmeticUser.java index 697de6ae..99909f16 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/user/CosmeticUser.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/user/CosmeticUser.java @@ -301,36 +301,39 @@ public class CosmeticUser implements CosmeticHolder { } @Override - public void updateCosmetic(@NotNull CosmeticSlot slot) { + public boolean updateCosmetic(@NotNull CosmeticSlot slot) { final Cosmetic cosmetic = playerCosmetics.get(slot); if(cosmetic == null) { - return; + return false; } if(!(cosmetic instanceof CosmeticUpdateBehavior behavior)) { - throw new IllegalArgumentException("attempted to update a cosmetic that does not implement CosmeticUpdateBehavior, " + - "please ensure this cosmetic is properly allowed to update."); + MessagesUtil.sendDebugMessages("Attempted to update cosmetic that does not implement CosmeticUpdateBehavior"); + return false; } behavior.dispatchUpdate(this); + return true; } - public void updateMovementCosmetic(CosmeticSlot slot, final Location from, final Location to) { + @Override + public boolean updateMovementCosmetic(CosmeticSlot slot, final Location from, final Location to) { final Cosmetic cosmetic = playerCosmetics.get(slot); if(cosmetic == null) { - return; + return false; } if(!(cosmetic instanceof CosmeticMovementBehavior behavior)) { - throw new IllegalArgumentException("attempted to update a cosmetic that does not implement CosmeticUpdateBehavior, " + - "please ensure this cosmetic is properly allowed to update."); + MessagesUtil.sendDebugMessages("Attempted to update cosmetic that does not implement CosmeticMovementBehavior"); + return false; } behavior.dispatchMove(this, from, to); + return true; } - public void updateCosmetic(Cosmetic cosmetic) { - updateCosmetic(cosmetic.getSlot()); + public boolean updateCosmetic(final Cosmetic cosmetic) { + return updateCosmetic(cosmetic.getSlot()); } public void updateCosmetic() {