Made opening the gui's async
This commit is contained in:
parent
4bb26035d6
commit
c538a68160
|
|
@ -2,6 +2,7 @@ package com.alttd.GUI.windows;
|
|||
|
||||
import com.alttd.GUI.GUIMerchant;
|
||||
import com.alttd.config.Config;
|
||||
import com.alttd.objects.Price;
|
||||
import com.alttd.objects.VillagerType;
|
||||
import com.alttd.util.Utilities;
|
||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||
|
|
@ -19,11 +20,14 @@ public class BuyGUI extends GUIMerchant {
|
|||
Template.of("trader", villagerType.getDisplayName()),
|
||||
Template.of("percentage", "100")), villagerType); //TODO get percentage from player somehow
|
||||
for (ItemStack itemStack : villagerType.getBuying()) {
|
||||
double price = Utilities.getWorth(itemStack);
|
||||
Price price = Utilities.getPrice(itemStack);
|
||||
if (price == null)
|
||||
continue;
|
||||
double money = price.getPrice(itemStack.getAmount());
|
||||
addItem(itemStack,
|
||||
getPriceItem(price),
|
||||
getPriceItem(money),
|
||||
null,
|
||||
player -> player.sendMessage(MiniMessage.get().parse("Hi! you bought: " + itemStack.getAmount() + " " + itemStack.getType().name() + " for " + price + "."))
|
||||
player -> player.sendMessage(MiniMessage.get().parse("Hi! you bought: " + itemStack.getAmount() + " " + itemStack.getType().name() + " for " + money + "."))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.alttd.GUI.windows;
|
||||
|
||||
import com.alttd.GUI.GUIInventory;
|
||||
import com.alttd.VillagerUI;
|
||||
import com.alttd.config.Config;
|
||||
import com.alttd.objects.VillagerType;
|
||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||
|
|
@ -9,6 +10,7 @@ import org.bukkit.Material;
|
|||
import org.bukkit.event.inventory.InventoryType;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
public class OpenGUI extends GUIInventory {
|
||||
|
||||
|
|
@ -34,7 +36,29 @@ public class OpenGUI extends GUIInventory {
|
|||
super(InventoryType.HOPPER, MiniMessage.get().parse(Config.INITIAL_VILLAGER_WINDOW,
|
||||
Template.of("trader", villagerType.getDisplayName()),
|
||||
Template.of("percentage", "100"))); //TODO get percentage from player somehow
|
||||
setItem(1, BUY, player -> new BuyGUI(villagerType).open(player));
|
||||
setItem(3, SELL, player -> new SellGUI(villagerType).open(player));
|
||||
setItem(1, BUY, player -> new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
BuyGUI buyGUI = new BuyGUI(villagerType);
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
buyGUI.open(player);
|
||||
}
|
||||
}.runTask(VillagerUI.getInstance());
|
||||
}
|
||||
}.runTaskAsynchronously(VillagerUI.getInstance()));
|
||||
setItem(3, SELL, player -> new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
SellGUI sellGUI = new SellGUI(villagerType);
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
sellGUI.open(player);
|
||||
}
|
||||
}.runTask(VillagerUI.getInstance());
|
||||
}
|
||||
}.runTaskAsynchronously(VillagerUI.getInstance()));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package com.alttd.GUI.windows;
|
|||
|
||||
import com.alttd.GUI.GUIMerchant;
|
||||
import com.alttd.config.Config;
|
||||
import com.alttd.objects.Price;
|
||||
import com.alttd.objects.VillagerType;
|
||||
import com.alttd.util.Utilities;
|
||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||
|
|
@ -19,11 +20,14 @@ public class SellGUI extends GUIMerchant {
|
|||
Template.of("trader", villagerType.getDisplayName()),
|
||||
Template.of("percentage", "100")), villagerType); //TODO get percentage from player somehow
|
||||
for (ItemStack itemStack : villagerType.getSelling()) {
|
||||
double price = Utilities.getWorth(itemStack);
|
||||
Price price = Utilities.getPrice(itemStack);
|
||||
if (price == null)
|
||||
continue;
|
||||
double money = price.getPrice(itemStack.getAmount());;
|
||||
addItem(itemStack,
|
||||
getPriceItem(price),
|
||||
getPriceItem(money),
|
||||
null,
|
||||
player -> player.sendMessage(MiniMessage.get().parse("Hi! you sold: " + itemStack.getAmount() + " " + itemStack.getType().name() + " for " + price + "."))
|
||||
player -> player.sendMessage(MiniMessage.get().parse("Hi! you sold: " + itemStack.getAmount() + " " + itemStack.getType().name() + " for " + money + "."))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,14 @@
|
|||
package com.alttd.events;
|
||||
|
||||
import com.alttd.GUI.windows.OpenGUI;
|
||||
import com.alttd.VillagerUI;
|
||||
import com.alttd.objects.LoadedVillagers;
|
||||
import com.alttd.objects.VillagerType;
|
||||
import org.bukkit.entity.Villager;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
public class VillagerInteract implements Listener {
|
||||
|
||||
|
|
@ -19,6 +21,17 @@ public class VillagerInteract implements Listener {
|
|||
if (loadedVillager == null)
|
||||
return;
|
||||
|
||||
new OpenGUI(loadedVillager).open(event.getPlayer());
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
OpenGUI openGUI = new OpenGUI(loadedVillager);
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
openGUI.open(event.getPlayer());
|
||||
}
|
||||
}.runTask(VillagerUI.getInstance());
|
||||
}
|
||||
}.runTaskAsynchronously(VillagerUI.getInstance());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user