개인 자료란 (JE)

  서버 커뮤니티

Profile whguswo 대표칭호 없음
Profile

질문하기 Java

자바 알고리즘 코딩 관련 질문

2023.01.19 조회 수 119 추천 수 0
이해도 초보자 
게임버전 (JE) 1.19.1 
게임버전 (BE) 관련없음 

커스텀 인벤토리를 열고 init 함수에서 테두리에 파란 유리판을 깔아둔뒤 시간이 지남에 따라 빨간색 유리판으로 변하게 하고싶습니다.

package auction;

import org.bukkit.*;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;

import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class auctionInventory implements InventoryHolder {
    private static Inventory inv;
    static int[] borderIndex = {0, 1, 2, 3, 4, 5, 6, 7, 8, 17, 26, 25, 24, 23, 22, 21, 20, 19, 18, 9};
    ItemStack border = new ItemStack(Material.BLUE_STAINED_GLASS_PANE, 1);
    static ItemStack redBorder = new ItemStack(Material.RED_STAINED_GLASS_PANE, 1);
    private static ScheduledFuture future;

    public auctionInventory(Player player) {
        inv = Bukkit.createInventory(this, 27, "경매장");
        init(player);
    }

    private void init(Player player) {

        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 9; j++) {
                if(i == 0 || i==2 || j == 0 || j == 8) {
                    inv.setItem(i * 9 + j, border);
                }
            }
        }

        ItemStack leftMoney = new ItemStack(Material.GOLD_INGOT);
        ItemMeta leftMoneyItemMeta = leftMoney.getItemMeta();
        leftMoneyItemMeta.setDisplayName(ChatColor.GOLD +"잔액: $" + userMap.getMoney(player.getName()));
        leftMoney.setItemMeta(leftMoneyItemMeta);
        inv.setItem(14, leftMoney);

        ItemStack pro = product.getProduct();
        inv.setItem(12, pro);
    }

    @Override
    public Inventory getInventory() {
        return inv;
    }

}

5초 동안에 borderIndex 안에있는 20개의 슬롯이 순서대로 빨간 슬롯으로 바뀌는 코드를 구현하고 싶은데 어떻게 해야할지 모르겠습니다.

4개의 댓글

0reo
2023.01.19
private static int j = 0;

private void init(Player player) {
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 9; j++) {
            if (i == 0 || i == 2 || j == 0 || j == 8) {
                inv.setItem(i * 9 + j, border);
            }
        }
    }
    ItemStack leftMoney = new ItemStack(Material.GOLD_INGOT);
    ItemMeta leftMoneyItemMeta = leftMoney.getItemMeta();
    leftMoneyItemMeta.setDisplayName(ChatColor.GOLD +"잔액: $" + userMap.getMoney(player.getName()));
    leftMoney.setItemMeta(leftMoneyItemMeta);
    inv.setItem(14, leftMoney);

    ItemStack pro = product.getProduct();
    inv.setItem(12, pro);
    j = 0;
    Bukkit.getScheduler().runTaskTimer(Main.getPlugin(Main.class), () -> {
        if (inv.getItem(j).getType().equals(Material.BLUE_STAINED_GLASS_PANE)) {
            inv.setItem(j, new ItemStack(Material.RED_STAINED_GLASS_PANE));
        }
        j++;
    }, 0, 20 * 5);
}
0reo
2023.01.19
@0reo

테스트안해봄 버그나면 고쳐쓰세요

whguswo
2023.01.20
@0reo

항상 감사합니닷!

Vencodor
2023.01.22

해결하셨나요? 다른 분께서 올려주신 코드는 원하시는 방향대로 작동하지 않을 것 같아서요!

뉴스 및 창작물
/files/thumbnails/761/908/003/262x150.crop.jpg?20241025153749

건축

서울 숭례문(崇禮門) 5

KHC

2024-10-25

2

/files/thumbnails/578/899/003/262x150.crop.jpg?20241010142350

건축

경주 월정교 1

KHC

2024-10-10

2

/files/thumbnails/219/899/003/262x150.crop.jpg?20241009200950

건축

송전탑+도시 2

dbasd12

2024-10-09

2

/files/thumbnails/246/898/003/262x150.crop.jpg?20241008102328

레드스톤

단다단 - 오토노케(オトノケ) | 마인크래프트 노트블럭 커버

노트블럭전문가

2024-10-08

1

/files/thumbnails/348/896/003/262x150.crop.jpg?20241006103035

디도스/봇테러등등을 낚는 방법 4

물귀신

2024-10-06

3