Skip to content

Commit

Permalink
casino crate now checks for tiers properly and gives rewards
Browse files Browse the repository at this point in the history
  • Loading branch information
ryderbelserion committed Feb 11, 2024
1 parent b38330a commit 7023669
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 38 deletions.
Expand Up @@ -369,6 +369,13 @@ public ItemStack getDisplayItem() {
return getCrate().pickPrize(getPlayer()).getDisplayItem();
}

/**
* @return the display item of the picked prize with a tier.
*/
public ItemStack getDisplayItem(Tier tier) {
return getCrate().pickPrize(getPlayer(), tier).getDisplayItem();
}

/**
* Plays a sound at different volume levels with fallbacks.
*
Expand Down
Expand Up @@ -20,7 +20,10 @@
import org.jetbrains.annotations.NotNull;
import com.badbones69.crazycrates.api.utils.MiscUtils;
import com.badbones69.crazycrates.api.utils.MsgUtils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Random;

import static java.util.regex.Matcher.quoteReplacement;
Expand All @@ -36,20 +39,13 @@ public class PrizeManager {
* @param player who the prize is for.
* @param crate the player is opening.
* @param prize the player is being given.
* @param tier the tier the player got.
*/
public void givePrize(Player player, Prize prize, Crate crate, Tier tier) {
public void givePrize(Player player, Prize prize, Crate crate) {
if (prize == null) {
if (this.plugin.isLogging()) this.plugin.getLogger().warning("No prize was found when giving " + player.getName() + " a prize.");
return;
}

if (tier == null) {
if (this.plugin.isLogging()) this.plugin.getLogger().warning("No tier was found when giving " + player.getName() + " a prize.");


}

prize = prize.hasPermission(player) ? prize.getAlternativePrize() : prize;

for (ItemStack item : prize.getItems()) {
Expand Down Expand Up @@ -154,17 +150,6 @@ public void givePrize(Player player, Prize prize, Crate crate, Tier tier) {
}
}

/**
* Gets the prize for the player.
*
* @param player who the prize is for.
* @param crate the player is opening.
* @param prize the player is being given.
*/
public void givePrize(Player player, Prize prize, Crate crate) {
givePrize(player, prize, crate, null);
}

/**
* Gets the prize for the player.
*
Expand All @@ -191,21 +176,7 @@ public void getPrize(Crate crate, Inventory inventory, int slot, Player player)

Prize prize = crate.getPrize(item);

ItemStack itemStack = prize.getDisplayItem();
ItemMeta itemMeta = itemStack.getItemMeta();
PersistentDataContainer container = itemMeta.getPersistentDataContainer();
container.set(PersistentKeys.crate_tier.getNamespacedKey(), PersistentDataType.STRING, getTier(crate).getName());
itemStack.setItemMeta(itemMeta);

prize.setItemStack(itemStack);

Tier tier = crate.getTier(prize.getDisplayItem().getItemMeta().getPersistentDataContainer().get(PersistentKeys.crate_tier.getNamespacedKey(), PersistentDataType.STRING));

givePrize(player, prize, crate, tier);

if (prize.useFireworks()) MiscUtils.spawnFirework(player.getLocation().add(0, 1, 0), null);

this.plugin.getServer().getPluginManager().callEvent(new PlayerPrizeEvent(player, crate, crate.getName(), prize));
givePrize(player, prize, crate);
}

public Tier getTier(Crate crate) {
Expand Down
Expand Up @@ -4,6 +4,7 @@
import com.badbones69.crazycrates.api.builders.CrateBuilder;
import com.badbones69.crazycrates.api.enums.PersistentKeys;
import com.badbones69.crazycrates.api.objects.Crate;
import com.badbones69.crazycrates.api.objects.Tier;
import com.badbones69.crazycrates.api.utils.MiscUtils;
import org.bukkit.SoundCategory;
import org.bukkit.entity.Player;
Expand All @@ -12,6 +13,7 @@
import org.bukkit.persistence.PersistentDataContainer;
import org.bukkit.scheduler.BukkitRunnable;
import us.crazycrew.crazycrates.api.enums.types.KeyType;
import java.util.Random;

public class CasinoCrate extends CrateBuilder {

Expand Down Expand Up @@ -102,15 +104,15 @@ public void open(KeyType type, boolean checkHand) {
return;
}

setDisplayItems();
setDisplayItems(getCrate().getTiers().get(new Random().nextInt(getCrate().getTiers().size())));

getPlayer().openInventory(getInventory());
}

private void setDisplayItems() {
private void setDisplayItems(Tier tier) {
for (int index = 0; index <= 26; index++) {
if (index == 2 || index == 4 || index == 6 || index == 11 || index == 13 || index == 15 || index == 20 || index == 22 || index == 24) {
setItem(index, getDisplayItem());
setItem(index, getDisplayItem(tier));
} else {
setItem(index, getRandomGlassPane());
}
Expand All @@ -132,6 +134,6 @@ private void cycle() {
}
}

setDisplayItems();
setDisplayItems(getCrate().getTiers().get(new Random().nextInt(getCrate().getTiers().size())));
}
}

0 comments on commit 7023669

Please sign in to comment.