Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.lairon.diamondworld.percent;
- import com.destroystokyo.paper.ParticleBuilder;
- import com.lairon.diamondworld.DiamondWorld;
- import com.lairon.diamondworld.event.OnDisableEvent;
- import com.lairon.diamondworld.utils.ItemStackUtils;
- import com.lairon.diamondworld.utils.LocationUtils;
- import net.citizensnpcs.api.CitizensAPI;
- import net.citizensnpcs.api.npc.NPC;
- import net.md_5.bungee.api.chat.BaseComponent;
- import net.md_5.bungee.api.chat.ClickEvent;
- import net.md_5.bungee.api.chat.ComponentBuilder;
- import org.bukkit.*;
- import org.bukkit.block.Block;
- import org.bukkit.entity.EntityType;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.player.PlayerInteractAtEntityEvent;
- import org.bukkit.event.player.PlayerInteractEvent;
- import org.bukkit.event.player.PlayerItemConsumeEvent;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.inventory.ShapedRecipe;
- import org.bukkit.potion.PotionEffect;
- import org.bukkit.potion.PotionEffectType;
- import java.util.Collection;
- import java.util.HashMap;
- import java.util.HashSet;
- public class ZeroPercent implements Percent, Listener, OnDisableEvent {
- private ItemStack diamondBread = new ItemStack(Material.BREAD);
- private ItemStack diamondWheat = new ItemStack(Material.YELLOW_DYE);
- private ItemStack diamondTable = new ItemStack(Material.DEAD_HORN_CORAL_BLOCK);
- private HashSet<Material> notReplaceableMaterials = new HashSet<>();
- private HashMap<Material, ItemStack> replaceableItems = new HashMap<>();
- private DiamondWorld main = DiamondWorld.getInstance();
- private NPC diamondHelper;
- private boolean isHelperStarted = false;
- private String[] helperMessagesClick = {
- "§7[§3Алмазный Король§7]: §fФуух.. наконец-то кто-то пришел ко мне на помощь..",
- "§7[§3Алмазный Король§7]: §fКогда-то моя деревня была самой красивой и.. АЛМАЗНОЙ..",
- "§7[§3Алмазный Король§7]: §fНо, сейчас она абсолютно пустая…",
- "§7[§3Алмазный Король§7]: §fОкажи мне услуги, преврати все деревню в ее алмазный вид и тогда, я помогу заполнить тебе твой босс бар.. Идет?"
- };
- private ZeroPercent() {
- initItems();
- Bukkit.getScheduler().runTaskTimer(DiamondWorld.getInstance(), () -> {
- Collection<? extends Player> onlinePlayers = Bukkit.getOnlinePlayers();
- onlinePlayers.forEach(this::setDiamondBlockOnGround);
- onlinePlayers.forEach(this::replaceItem);
- }, 1, 1);
- addNotReplaceableMaterials(Material.DIAMOND_BLOCK,
- Material.DIAMOND, Material.DIAMOND_AXE,
- Material.DIAMOND_SHOVEL, Material.DIAMOND_PICKAXE,
- Material.DIAMOND_SWORD, Material.DIAMOND_HOE,
- Material.DIAMOND_CHESTPLATE, Material.DIAMOND_BOOTS,
- Material.DIAMOND_LEGGINGS, Material.DIAMOND_HELMET,
- Material.DIAMOND_HORSE_ARMOR, Material.DIAMOND_ORE,
- Material.BREAD);
- addReplaceableItems(Material.WHEAT, diamondWheat);
- addReplaceableItems(Material.CRAFTING_TABLE, diamondTable);
- Bukkit.getPluginCommand("diamondHelperSpawn").setExecutor((sender, command, label, args) -> {
- Player player = (Player) sender;
- if(diamondHelper != null){
- diamondHelper.despawn();
- diamondHelper.destroy();
- }
- diamondHelper = CitizensAPI.getNPCRegistry().createNPC(EntityType.PLAYER, "Алмазный Король");
- diamondHelper.spawn(player.getLocation());
- return false;
- });
- }
- private void initItems() {
- //Алмазный Хлеб
- ItemStackUtils.setDisplayName(diamondBread, "§x§0§6§8§5§f§bА§x§1§1§6§d§f§bл§x§1§c§5§5§f§cм§x§2§7§3§c§f§cа§x§3§2§2§4§f§cз§x§3§d§0§c§f§dн§x§3§d§0§e§f§aы§x§3§2§2§a§f§3й §x§2§8§4§6§e§cХ§x§1§e§6§1§e§5л§x§1§3§7§d§d§eе§x§0§9§9§9§d§7б");
- //Алмазная пшеница
- ItemStackUtils.setDisplayName(diamondWheat, "§x§0§6§8§5§f§bА§x§0§f§7§2§f§bл§x§1§7§5§f§f§cм§x§2§0§4§c§f§cа§x§2§8§3§9§f§cз§x§3§1§2§6§f§cн§x§3§9§1§3§f§dа§x§4§2§0§0§f§dя §x§3§a§1§6§f§8п§x§3§2§2§c§f§2ш§x§2§a§4§2§e§dе§x§2§1§5§7§e§7н§x§1§9§6§d§e§2и§x§1§1§8§3§d§cц§x§0§9§9§9§d§7а");
- //Алмазный верстак
- ItemStackUtils.setDisplayName(diamondTable, "§x§0§6§8§5§f§bА§x§0§f§7§2§f§bл§x§1§7§5§f§f§cм§x§2§0§4§c§f§cа§x§2§8§3§9§f§cз§x§3§1§2§6§f§cн§x§3§9§1§3§f§dы§x§4§2§0§0§f§dй §x§3§a§1§6§f§8в§x§3§2§2§c§f§2е§x§2§a§4§2§e§dр§x§2§1§5§7§e§7с§x§1§9§6§d§e§2т§x§1§1§8§3§d§cа§x§0§9§9§9§d§7к");
- }
- @EventHandler
- public void onInteractAtDiamondHelperEvent(PlayerInteractAtEntityEvent e){
- // if(diamondHelper == null) return;
- if(e.getRightClicked() != diamondHelper.getEntity()) return;
- if(!isHelperStarted) return;
- isHelperStarted = true;
- final int[] messageTime = {0};
- for (int i = 0; i < helperMessagesClick.length; i++) {
- int finalI = i;
- Bukkit.getScheduler().runTaskLater(main, ()-> {
- messageTime[0] += 100;
- e.getPlayer().sendMessage(helperMessagesClick[finalI]);
- }, messageTime[0]);
- }
- Bukkit.getScheduler().runTaskLater(main, ()->{
- BaseComponent[] yesOrNo = new ComponentBuilder("§7[§aДА§7] [§cНЕТ§7]")
- .event(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "diamondHelperSpawn yes"))
- .create();
- e.getPlayer().sendMessage(yesOrNo);
- }, messageTime[0]);
- }
- @EventHandler
- public void onTable(PlayerInteractEvent e){
- if(e.getClickedBlock() == null) return;
- if(e.getClickedBlock().getType() != diamondTable.getType()) return;
- e.getPlayer().openWorkbench(e.getClickedBlock().getLocation(), true);
- }
- @EventHandler
- public void onItemConsume(PlayerItemConsumeEvent e) {
- if (!e.getItem().isSimilar(diamondBread)) return;
- Collection<Location> locations = LocationUtils.blockRadiusH(e.getPlayer().getLocation().clone().add(0, 1.7f, 0), 1, 10);
- locations.forEach((location ->
- new ParticleBuilder(Particle.FLAME)
- .location(location)
- .spawn()));
- e.getPlayer().addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 200, 2));
- }
- private void setDiamondBlockOnGround(Player player) {
- if (!player.isOnGround()) return;
- Block block = player.getLocation().clone().subtract(0, 1, 0).getBlock();
- if (block.getType() == Material.AIR
- || block.getType() == Material.WATER
- || block.getType() == Material.LAVA
- || block.getType() == Material.DIAMOND_BLOCK
- ) return;
- main.getProgressManager().addBlockComplete(player);
- block.setType(Material.DIAMOND_BLOCK);
- }
- private void replaceItem(Player player) {
- ItemStack itemInMainHand = player.getInventory().getItemInMainHand();
- if (itemInMainHand.getType() == Material.AIR) return;
- if (notReplaceableMaterials.contains(itemInMainHand.getType())) return;
- if (replaceableItems.containsKey(itemInMainHand.getType()))
- player.getInventory().setItem(player.getInventory().getHeldItemSlot(), replaceableItems.get(itemInMainHand.getType()));
- else player.getInventory().setItem(player.getInventory().getHeldItemSlot(), new ItemStack(Material.DIAMOND));
- }
- public void addReplaceableItems(Material material, ItemStack itemStack) {
- replaceableItems.put(material, itemStack);
- addNotReplaceableMaterials(itemStack.getType());
- }
- public void addNotReplaceableMaterials(Material... materials) {
- for (Material material :
- materials) {
- notReplaceableMaterials.add(material);
- }
- }
- @Override
- public HashSet<ShapedRecipe> shapedRecipes() {
- HashSet<ShapedRecipe> shapedRecipes = new HashSet<>();
- NamespacedKey breadKey = new NamespacedKey(main, "DiamondBread");
- ShapedRecipe breadRecipe = new ShapedRecipe(breadKey, diamondBread);
- breadRecipe.shape(" ", "www", " ");
- breadRecipe.setIngredient('w', diamondWheat.getType());
- shapedRecipes.add(breadRecipe);
- return shapedRecipes;
- }
- @Override
- public Listener listener() {
- return this;
- }
- public static ZeroPercent getInstance() {
- return new ZeroPercent();
- }
- @Override
- public void onDisable() {
- if(diamondHelper != null){
- diamondHelper.despawn();
- diamondHelper.destroy();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment