package me.pommeskiwi.command; import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.concurrent.ThreadLocalRandom; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.scheduler.BukkitRunnable; import me.pommeskiwi.main.Main; public class Gamble implements CommandExecutor, Listener{ @SuppressWarnings("unused") private Main main; @SuppressWarnings("unused") private Main plugin; public List invs = new ArrayList(); public ItemStack[] contents; public int itemIndex = 0; public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if(label.equalsIgnoreCase("spin")) { if(!(sender instanceof Player)){ sender.sendMessage("Kein Glücksspiel für die Konsole :("); } Player player = (Player) sender; ItemStack fee = new ItemStack(Material.DIAMOND); fee.setAmount(10); if (player.getInventory().getItemInMainHand().getType().equals(Material.DIAMOND) && player.getInventory().getItemInMainHand().getAmount() >= 3){ player.getInventory().removeItem(fee); //dreh die GUI !! spin(player); return true; } player.sendMessage("§7Du benötigst §l§910 Diamanten§7, um zu spielen"); return true; } return false; } public void shuffle(Inventory inv){ if(contents == null){ ItemStack[] items = new ItemStack[32]; //Normal Gewinn items[0] = new ItemStack(Material.DIRT, 32); items[1] = new ItemStack(Material.EGG, 16); items[2] = new ItemStack(Material.APPLE, 64); items[3] = new ItemStack(Material.GLASS, 32); items[4] = new ItemStack(Material.JUNGLE_WOOD, 25); items[5] = new ItemStack(Material.CACTUS, 3); items[6] = new ItemStack(Material.HONEY_BOTTLE, 2); items[7] = new ItemStack(Material.ARROW, 12); items[8] = new ItemStack(Material.IRON_NUGGET, 30); items[9] = new ItemStack(Material.CAKE, 2); items[10] = new ItemStack(Material.STICK, 34); items[11] = new ItemStack(Material.SUNFLOWER, 11); items[12] = new ItemStack(Material.BREAD, 45); items[13] = new ItemStack(Material.SEAGRASS, 32); items[14] = new ItemStack(Material.RED_TULIP, 64); items[15] = new ItemStack(Material.YELLOW_STAINED_GLASS,23); //Selten Gewinn items[16] = new ItemStack(Material.ICE, 2); items[17] = new ItemStack(Material.WET_SPONGE, 5); items[18] = new ItemStack(Material.BEE_SPAWN_EGG, 2); items[19] = new ItemStack(Material.BEE_NEST, 2); items[20] = new ItemStack(Material.DISPENSER, 1); items[21] = new ItemStack(Material.BLUE_SHULKER_BOX, 1); //EPIC Gewinn items[22] = new ItemStack(Material.DIAMOND, 10); items[23] = new ItemStack(Material.COW_SPAWN_EGG, 4); items[24] = new ItemStack(Material.SHEEP_SPAWN_EGG, 4); items[25] = new ItemStack(Material.PIG_SPAWN_EGG, 4); items[26] = new ItemStack(Material.SPAWNER, 1); //Extream Gewinn items[27] = new ItemStack(Material.ELYTRA, 1); items[28] = new ItemStack(Material.GOLDEN_APPLE, 4); items[29] = new ItemStack(Material.NETHER_STAR, 2); items[30] = new ItemStack(Material.EXPERIENCE_BOTTLE, 10); items[31] = new ItemStack(Material.NOTE_BLOCK, 1); contents = items; } int startingIndex = ThreadLocalRandom.current().nextInt(contents.length); for (int index = 0; index < startingIndex; index++){ for(int itemstacks = 9; itemstacks < 18; itemstacks++){ inv.setItem(itemstacks, contents[(itemstacks + itemIndex)% contents.length]); } itemIndex++; } //Customsize ItemStack item = new ItemStack(Material.HOPPER); ItemMeta meta = item.getItemMeta(); meta.setDisplayName("§7§l|"); item.setItemMeta(meta); inv.setItem(4, item); ItemStack randItem = new ItemStack(Material.GRAY_STAINED_GLASS_PANE); ItemMeta randMeta = randItem.getItemMeta(); randMeta.setDisplayName("§7 "); randItem.setItemMeta(randMeta); inv.setItem(0, randItem); inv.setItem(1, randItem); inv.setItem(2, randItem); inv.setItem(3, randItem); inv.setItem(5, randItem); inv.setItem(6, randItem); inv.setItem(7, randItem); inv.setItem(8, randItem); inv.setItem(18, randItem); inv.setItem(19, randItem); inv.setItem(20, randItem); inv.setItem(21, randItem); inv.setItem(22, randItem); inv.setItem(23, randItem); inv.setItem(24, randItem); inv.setItem(25, randItem); inv.setItem(26, randItem); } public void spin(final Player player){ Inventory inv = Bukkit.createInventory(null, 27, "§e§lViel Glück!"); shuffle(inv); invs.add(inv); player.openInventory(inv); Random r = new Random(); double seconds = 7.0 + (12.0 - 7.0) * r.nextDouble(); new BukkitRunnable(){ double delay = 0; int ticks = 0; boolean done = false; public void run(){ if(done) return; ticks++; delay += 1 / (20 *seconds); if(ticks > delay *10){ ticks = 0; for(int itemstacks = 9; itemstacks < 18; itemstacks++) inv.setItem(itemstacks,contents[(itemstacks + itemIndex)% contents.length]); itemIndex++; if(delay >= .5){ done = true; new BukkitRunnable(){ public void run(){ ItemStack item = inv.getItem(13); player.getInventory().addItem(item); player.updateInventory(); player.closeInventory(); cancel(); } }.runTaskLater(Main.getPlugin(Main.class), 50); cancel(); } } } }.runTaskTimer(Main.getPlugin(Main.class), 0, 1); } @EventHandler public void onClick(InventoryClickEvent event){ if(!invs.contains(event.getInventory())) return; event.setCancelled(true); return; } }