Skip to content

Commit

Permalink
feat(cosmetics): Added a cosmetic previewer.
Browse files Browse the repository at this point in the history
  • Loading branch information
Shuvlyy committed Oct 6, 2024
1 parent 1adea2f commit f2059b5
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 9 deletions.
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
package fr.hashtek.spigot.breakffa.cosmetics;

import fr.hashtek.spigot.breakffa.cosmetics.types.AbstractCosmetic;
import org.bukkit.Material;

/**
* @param <T> Cosmetic type
*/
public class Cosmetic<T>
public class Cosmetic<T extends AbstractCosmetic>
{

private final Material material;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,29 @@
package fr.hashtek.spigot.breakffa.cosmetics.types;

/**
* Cosmetic targeting interface.
*/
public interface AbstractCosmetic
{}
import org.bukkit.entity.Player;

public abstract class AbstractCosmetic
{

/**
* Previews the cosmetic to a player.
* <br>
* Some cosmetic can't be previewed (like custom helmets) so,
* by default, this function is empty.
* For example, see {@link CosmeticTypeKSFX#preview(Player)}.
* <br>
* But it can be overriden by children!
*
* @param player Player
*/
public void preview(Player player) {}

/**
* @return True if cosmetic can be previewed.
*/
public boolean canBePreviewed()
{
return false;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import fr.hashtek.spigot.hashitem.HashItem;
import org.bukkit.Material;

public class CosmeticTypeCustomHelmet implements AbstractCosmetic
public class CosmeticTypeCustomHelmet extends AbstractCosmetic
{

public enum CustomHelmet implements CosmeticCategoryArticles<CosmeticTypeCustomHelmet>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@

import fr.hashtek.spigot.breakffa.cosmetics.Cosmetic;
import fr.hashtek.spigot.breakffa.cosmetics.CosmeticCategoryArticles;
import net.kyori.adventure.sound.SoundStop;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.Player;

/**
* KSFX stands for Kill SFX.
*/
public class CosmeticTypeKSFX implements AbstractCosmetic
public class CosmeticTypeKSFX extends AbstractCosmetic
{

public enum KillSfx implements CosmeticCategoryArticles<CosmeticTypeKSFX>
Expand Down Expand Up @@ -70,6 +72,20 @@ public CosmeticTypeKSFX(Sound sfx)
}


@Override
public void preview(Player player)
{
player.stopSound(SoundStop.all());
player.playSound(player.getLocation(), this.getSfx(), 1, 1);
}

@Override
public boolean canBePreviewed()
{
return true;
}


/**
* @return SFX
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.inventory.ItemStack;

public abstract class GuiCosmeticsCategory<
Expand Down Expand Up @@ -154,6 +155,7 @@ private HashItem createCosmeticItem(
CosmeticManager manager
)
{
final T cosmeticCosmetic = cosmetic.getCosmetic();
final Cosmetic<T> currentCosmetic = currentCosmeticGetter.getGetter(manager).get();

final HashItem item = new HashItem(cosmetic.getMaterial())
Expand All @@ -171,9 +173,20 @@ private HashItem createCosmeticItem(
item.addEnchant(Enchantment.DURABILITY, 1);
}

if (cosmeticCosmetic.canBePreviewed()) {
item.addLore(Component.text("right click 4 preview!!"));
item.addClickHandler(
new ClickHandler()
.addClickTypes(ClickType.RIGHT, ClickType.SHIFT_RIGHT)
.setClickAction((Player player, HashGui hashGui, ItemStack i, int slot) ->
cosmeticCosmetic.preview(player)
)
);
}

item.addClickHandler(
new ClickHandler()
.addAllClickTypes()
.addClickTypes(ClickType.LEFT, ClickType.SHIFT_LEFT)
.setClickAction((Player player, HashGui hashGui, ItemStack i, int slot) -> {
if (!(hashGui instanceof GuiCosmeticsCategory<?, ?> guiCosmeticsCategory)) {
return;
Expand Down

0 comments on commit f2059b5

Please sign in to comment.