zAth Postado Fevereiro 3, 2018 Denunciar Compartilhar Postado Fevereiro 3, 2018 Info » SkyCrates é o plugin de caixas mais fácil de configurar que tem por ai, só pode ser configurado in-game; » Broadcast configurável do prémio com json; » Pode criar quantos tipos de caixas quiser, quantas caixas quiser e quantas animações quiser porém prémios só 28 por caixa; » Possibilidade de criarem vossas próprias animações SE souberem mexer com bukkit (tutorial em baixo); » Para apagar uma CAIXA, destrua segurando uma blaze rod, para apagar um TIPO DE CAIXA edite a caixa e clique no item para destruir; Comandos » /crate create - skycrates.command.create - cria um tipo de caixa. » /crate edit - skycrates.command.edit - edita um tipo de caixa. » /crate give - skycrates.command.give - da uma chave. » /crate locations -skycrates.command.locations - vê as localizações de todas as caixas e o seu tipo. » /crate set - skycrates.command.set - seta um bloco como caixa. » /crate reload- skycrates.command.reload - recarrega as configurações. » skycrates.admin - editar e apagar uma caixa ao clicar com blaze rod. Imagens https://streamable.com/kehku https://streamable.com/kjvbu https://streamable.com/kiwbc https://streamable.com/45nty https://streamable.com/yrn76 Dependências » Spigot 1.8 ( feito nessa versão, outras poderão, ou não funcionar ) » ProtocolLib DOWNLOAD SOURCE Atualizações » Adicionado comando para recarregar as configurações » Caixas que não precisam de chave » Arrumado bug ao alterar o comando de um prémio » Agora os blocos não irão ser alterados para enderchest ao serem setados como caixa » Adicionado broadcast com json » Arrumado bug onde os jogadores podiam dropar as caixas ao as abrir para que não as perdessem, obrigado por reportar [member=SaitO_M] TODO » Hologramas nas caixas - ?; Dev » Eventos @EventHandler public void onCrateOpen(CrateOpenEvent event) { Crate crate = event.getCrate(); // caixa boolean isOpening = crate.isOccupied(); // esta sendo aberta Location location = crate.getLocation(); // loc da caixa if (isOpening) { AbstractAnimation abstractAnimation = crate.getAnimation(); // animação abstractAnimation.end(); // finaliza a abertura da caixa } } @EventHandler public void onCrateWin(CrateWinEvent event) { Prize prize = event.getPrize(); // prêmio ItemStack itemStack = prize.getItemStack(); // item que representa o premio String cmd = prize.getCmd(); // comando do premio if(prize.getType() == Prize.TYPE.ITEM) System.out.println("Ganhou item " + itemStack.toString()); else System.out.println("Ganhou comando " + cmd); } » Própria animação » Main package me.zath.skycratesquickanimation; /* * MC * Created by zAth */ import me.zath.skycrates.SkyCrates; import org.bukkit.Bukkit; import org.bukkit.event.EventHandler; import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerPickupItemEvent; import org.bukkit.plugin.java.JavaPlugin; public class SkyCratesQuickAnimation extends JavaPlugin implements Listener { private static SkyCratesQuickAnimation skyCratesQuickAnimation; // instanciando a main @Override public void onEnable() { skyCratesQuickAnimation = this; if (getServer().getPluginManager().getPlugin("SkyCrates") == null) { Bukkit.getLogger().severe("SkyCrates não foi encontrado."); return; } SkyCrates.getSkyCrates().getCrateManager().registerAnimation(QuickAnimation.class); // registrando a animação getServer().getPluginManager().registerEvents(this, this); Bukkit.getConsoleSender().sendMessage("§6<§8-----------------------------§6>"); Bukkit.getConsoleSender().sendMessage("§6" + getDescription().getName() + " §8v.§6" + getDescription().getVersion() + " §8de§6 " + getDescription().getAuthors() + " §2Ativado"); Bukkit.getConsoleSender().sendMessage("§6<§8-----------------------------§6>"); } @Override public void onDisable() { Bukkit.getConsoleSender().sendMessage("§6<§8-----------------------------§6>"); Bukkit.getConsoleSender().sendMessage("§6" + getDescription().getName() + " §8v.§6" + getDescription().getVersion() + " §8de§6 " + getDescription().getAuthors() + " §4Desativado"); Bukkit.getConsoleSender().sendMessage("§6<§8-----------------------------§6>"); HandlerList.unregisterAll(); } public static SkyCratesQuickAnimation getSkyCratesQuickAnimation() { return skyCratesQuickAnimation; } @EventHandler public void onItemPickup(PlayerPickupItemEvent event) { // cancelando o evento // nossa animação vai dropar o prémio, para que não seja roubado temos que cancelar o evento // para sabermos que é um prémio iremos usar a metadata dele if (event.getItem().hasMetadata("quickcrate")) event.setCancelled(true); } } » Animação package me.zath.skycratesquickanimation; /* * MC * Created by zAth */ import me.zath.skycrates.SkyCrates; import me.zath.skycrates.objects.Crate; import me.zath.skycrates.objects.animations.AbstractAnimation; import org.bukkit.Material; import org.bukkit.entity.Entity; import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.util.Vector; public class QuickAnimation extends AbstractAnimation { // toda animação precisa extender AbstractAnimation public QuickAnimation(Crate crate) { // precisa ter um constructor, deixe ele somente com super(crate) super(crate); } @Override public void start() { // este método será chamado quando a animação começar prize = crate.getCrateType().getRandomPrize(); // pegando um prémio randômico Entity entity = null; if (!crate.getCrateType().isVirtual()) { // se a caixa necessita de uma chave String itemStackName = prize.getItemStack().hasItemMeta() && prize.getItemStack().getItemMeta().hasDisplayName() ? prize.getItemStack().getItemMeta().getDisplayName() : SkyCrates.getSkyCrates().getUtils().prettifyText(prize.getItemStack().getType().name()); // pegando o nome do item se o tiver, se não usaremos uma versão mais bonita do nome do material entity = crate.getLocation().getWorld().dropItem(crate.getLocation().clone().add(0.5, 1, 0.5), prize.getItemStack()); // spawnamos o prémio em cima da caixa entity.setVelocity(new Vector(0, 0.2, 0)); // jogamos ela um pouco para cima para a animar entity.setCustomName(itemStackName); entity.setCustomNameVisible(true); // setamos e deixamos o nome do prémio visivel entity.setMetadata("quickcrate", new FixedMetadataValue(SkyCratesQuickAnimation.getSkyCratesQuickAnimation(), true)); // aqui adicionamos a metadata "quickcrate" para que ninguém possa apanhar o item if (crate.getLocation().getBlock().getType() == Material.CHEST || crate.getLocation().getBlock().getType() == Material.ENDER_CHEST || crate.getLocation().getBlock().getType() == Material.TRAPPED_CHEST) { // verificamos se é algum tipo de bau, para abrirmos o baú SkyCrates.getSkyCrates().getUtils().changeChestState(crate.getLocation(), true); } } final Entity finalEntity = entity; new BukkitRunnable() { @Override public void run() { // passado 5 segundos if (!crate.getCrateType().isVirtual()) { // se a caixa necessita de uma chave if (finalEntity != null) { // se existe um item finalEntity.remove(); // removemos o item } if (crate.getLocation().getBlock().getType() == Material.CHEST || crate.getLocation().getBlock().getType() == Material.ENDER_CHEST || crate.getLocation().getBlock().getType() == Material.TRAPPED_CHEST) { // verificamos se é algum tipo de bau, para fecharmos o baú SkyCrates.getSkyCrates().getUtils().changeChestState(crate.getLocation(), false); } } end(); // terminamos a animação, TODA animação precisa chamar o end() no término da mesma } }.runTaskLater(SkyCratesQuickAnimation.getSkyCratesQuickAnimation(), 5 * 20); } @Override public void run() { // este método será chamado em um timer, não iremos usar nenhum nesta animação ; } } » Plugin.yml name: SkyCratesQuickAnimation version: 1.0.0 author: zAth main: me.zath.skycratesquickanimation.SkyCratesQuickAnimation softdepend: [SkyCrates] # IMPORTANTE, precisa colocar isso para que a sua animação carregue DEPOIS do SkyCrates » Resultado - https://streamable.com/cf744 » Download - http://www.mediafire.com/file/5cnnyu6y4jcnqcl/SkyCratesQuickAnimation.jar 12 Link para o comentário Compartilhar em outros sites More sharing options...
Saimon Postado Fevereiro 3, 2018 Denunciar Compartilhar Postado Fevereiro 3, 2018 1 sem -qq @topic parabens carai top Link para o comentário Compartilhar em outros sites More sharing options...
ShaoKhan Postado Fevereiro 3, 2018 Denunciar Compartilhar Postado Fevereiro 3, 2018 Nice esse plugin que eu precisava pra usar no meu sv Link para o comentário Compartilhar em outros sites More sharing options...
seck.png Postado Fevereiro 3, 2018 Denunciar Compartilhar Postado Fevereiro 3, 2018 Eu to vendo mal ou isso é free? AAAAAA Link para o comentário Compartilhar em outros sites More sharing options...
MarcioRUSH-OFICIAL- Postado Fevereiro 3, 2018 Denunciar Compartilhar Postado Fevereiro 3, 2018 Cara Muito bom irei usar Link para o comentário Compartilhar em outros sites More sharing options...
Wolf_131 Postado Fevereiro 3, 2018 Denunciar Compartilhar Postado Fevereiro 3, 2018 Muito bom plugin, muitos parabéns! Tenho uma sugestão: Adicionar o bloco da crate. Plugin está excelente. Obrigado por partilhar até a source o.O Link para o comentário Compartilhar em outros sites More sharing options...
SEVEN Postado Fevereiro 3, 2018 Denunciar Compartilhar Postado Fevereiro 3, 2018 Ótimo plugin, irei usar hehe Link para o comentário Compartilhar em outros sites More sharing options...
Gui_KillerBR Postado Fevereiro 3, 2018 Denunciar Compartilhar Postado Fevereiro 3, 2018 Belo plugin ... Boa sorte com o projeto ta foda d+ Link para o comentário Compartilhar em outros sites More sharing options...
TequilAxBr Postado Fevereiro 3, 2018 Denunciar Compartilhar Postado Fevereiro 3, 2018 Aí sim, parabéns! Link para o comentário Compartilhar em outros sites More sharing options...
Emanuel Boaventura Postado Fevereiro 3, 2018 Denunciar Compartilhar Postado Fevereiro 3, 2018 Ótimo plugin Link para o comentário Compartilhar em outros sites More sharing options...
quando eu tinha uma uzi Postado Fevereiro 3, 2018 Denunciar Compartilhar Postado Fevereiro 3, 2018 Bom plugin, como sempre free. Parabéns. Link para o comentário Compartilhar em outros sites More sharing options...
ʗɦąąąᵱïɳɦąℬʘȾ Postado Fevereiro 3, 2018 Denunciar Compartilhar Postado Fevereiro 3, 2018 Esse plugin, me lembra do CrazyCrates, é igual Link para o comentário Compartilhar em outros sites More sharing options...
zAth Postado Fevereiro 3, 2018 Autor Denunciar Compartilhar Postado Fevereiro 3, 2018 (editado) 1 sem -qq @topic parabens carai top Kct mlk rápido :o Nice esse plugin que eu precisava pra usar no meu sv Cara Muito bom irei usar Ótimo plugin, irei usar hehe Belo plugin ... Boa sorte com o projeto ta foda d+ Aí sim, parabéns! Ótimo plugin Bom plugin, como sempre free. Parabéns. Obrigado a todos Esse plugin, me lembra do CrazyCrates, é igual Afinal, é um plugin de caixa né xD esse é mais fácil de configurar e facilmente se faz addons para ter mais animações, eu depois mostro como. Muito bom plugin, muitos parabéns! Tenho uma sugestão: Adicionar o bloco da crate. Plugin está excelente. Obrigado por partilhar até a source o.O Como assim bloco da crate? Vlw kkj Eu to vendo mal ou isso é free? AAAAAA é isso mesmo @edit » Arrumado bug ao alterar o comando de um prémio » Agora os blocos não irão ser alterados para enderchest ao serem setados como caixa » Adicionado broadcast com json https://streamable.com/45nty Editado Fevereiro 4, 2018 por zAth 1 Link para o comentário Compartilhar em outros sites More sharing options...
ShaoKhan Postado Fevereiro 4, 2018 Denunciar Compartilhar Postado Fevereiro 4, 2018 Como eu coloco comando? Link para o comentário Compartilhar em outros sites More sharing options...
zAth Postado Fevereiro 5, 2018 Autor Denunciar Compartilhar Postado Fevereiro 5, 2018 Como eu coloco comando? https://streamable.com/kehku?t=150 Link para o comentário Compartilhar em outros sites More sharing options...
yurirp4 Postado Fevereiro 5, 2018 Denunciar Compartilhar Postado Fevereiro 5, 2018 acho que os comandos poderiam ser br mais assim tbm server muito top parabéns Link para o comentário Compartilhar em outros sites More sharing options...
Nuno M. Postado Fevereiro 6, 2018 Denunciar Compartilhar Postado Fevereiro 6, 2018 Caraca mano, muito topzão, estou já baixando e.e Link para o comentário Compartilhar em outros sites More sharing options...
??? Postado Fevereiro 6, 2018 Denunciar Compartilhar Postado Fevereiro 6, 2018 AI sim, namoral, curti, parabéns, fodaun Link para o comentário Compartilhar em outros sites More sharing options...
zAth Postado Fevereiro 8, 2018 Autor Denunciar Compartilhar Postado Fevereiro 8, 2018 (editado) acho que os comandos poderiam ser br mais assim tbm server muito top parabéns Eu não gosto de misturar br no java porque ele é todo inglês ae não faz muito sentido e quem sabe algum dia eu posto o plugin no spigot rsrs Caraca mano, muito topzão, estou já baixando e.e e.e AI sim, namoral, curti, parabéns, fodaun QUE mike curtiu meu pl *-* @topic Começei trabalhando em caixas que não precisa de chave, tipo caixa misteriosa de muitos servers que tem ae. Coloquei no tópico como criar vossas próprias animações SE souberem programar como também uma animação de exemplo, depois eu colocarei a animação para baixarem. https://streamable.com/cf744 Dev » Eventos @EventHandler public void onCrateOpen(CrateOpenEvent event) { Crate crate = event.getCrate(); // caixa boolean isOpening = crate.isOccupied(); // esta sendo aberta Location location = crate.getLocation(); // loc da caixa, null se for caixa virtual (WIP) if (isOpening && location != null) { AbstractAnimation abstractAnimation = crate.getAnimation(); // animação abstractAnimation.end(); // finaliza a abertura da caixa } } @EventHandler public void onCrateWin(CrateWinEvent event) { Prize prize = event.getPrize(); // prêmio ItemStack itemStack = prize.getItemStack(); // item que representa o premio String cmd = prize.getCmd(); // comando do premio if(prize.getType() == Prize.TYPE.ITEM) System.out.println("Ganhou item " + itemStack.toString()); else System.out.println("Ganhou comando " + cmd); } » Própria animação » Main package me.zath.skycratesquickanimation; /* * MC * Created by zAth */ import me.zath.skycrates.SkyCrates; import org.bukkit.Bukkit; import org.bukkit.event.EventHandler; import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerPickupItemEvent; import org.bukkit.plugin.java.JavaPlugin; public class SkyCratesQuickAnimation extends JavaPlugin implements Listener { private static SkyCratesQuickAnimation skyCratesQuickAnimation; // instanciando a main @Override public void onEnable() { skyCratesQuickAnimation = this; if (getServer().getPluginManager().getPlugin("SkyCrates") == null) { Bukkit.getLogger().severe("SkyCrates não foi encontrado."); return; } SkyCrates.getSkyCrates().getCrateManager().registerAnimation(QuickAnimation.class); // registrando a animação getServer().getPluginManager().registerEvents(this, this); Bukkit.getConsoleSender().sendMessage("§6<§8-----------------------------§6>"); Bukkit.getConsoleSender().sendMessage("§6" + getDescription().getName() + " §8v.§6" + getDescription().getVersion() + " §8de§6 " + getDescription().getAuthors() + " §2Ativado"); Bukkit.getConsoleSender().sendMessage("§6<§8-----------------------------§6>"); } @Override public void onDisable() { Bukkit.getConsoleSender().sendMessage("§6<§8-----------------------------§6>"); Bukkit.getConsoleSender().sendMessage("§6" + getDescription().getName() + " §8v.§6" + getDescription().getVersion() + " §8de§6 " + getDescription().getAuthors() + " §4Desativado"); Bukkit.getConsoleSender().sendMessage("§6<§8-----------------------------§6>"); HandlerList.unregisterAll(); } public static SkyCratesQuickAnimation getSkyCratesQuickAnimation() { return skyCratesQuickAnimation; } @EventHandler public void onItemPickup(PlayerPickupItemEvent event) { // cancelando o evento // nossa animação vai dropar o prémio, para que não seja roubado temos que cancelar o evento // para sabermos que é um prémio iremos usar a metadata dele if (event.getItem().hasMetadata("quickcrate")) event.setCancelled(true); } } » Animação package me.zath.skycratesquickanimation; /* * MC * Created by zAth */ import me.zath.skycrates.SkyCrates; import me.zath.skycrates.objects.Crate; import me.zath.skycrates.objects.animations.AbstractAnimation; import org.bukkit.Material; import org.bukkit.entity.Entity; import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.util.Vector; public class QuickAnimation extends AbstractAnimation { // toda animação precisa extender AbstractAnimation public QuickAnimation(Crate crate) { // precisa ter um constructor, deixe ele somente com super(crate) super(crate); } @Override public void start() { // este método será chamado quando a animação começar prize = crate.getCrateType().getRandomPrize(); // pegando um prémio randômico Entity entity = null; if (!crate.getCrateType().isVirtual()) { // se a caixa necessita de uma chave String itemStackName = prize.getItemStack().hasItemMeta() && prize.getItemStack().getItemMeta().hasDisplayName() ? prize.getItemStack().getItemMeta().getDisplayName() : SkyCrates.getSkyCrates().getUtils().prettifyText(prize.getItemStack().getType().name()); // pegando o nome do item se o tiver, se não usaremos uma versão mais bonita do nome do material entity = crate.getLocation().getWorld().dropItem(crate.getLocation().clone().add(0.5, 1, 0.5), prize.getItemStack()); // spawnamos o prémio em cima da caixa entity.setVelocity(new Vector(0, 0.2, 0)); // jogamos ela um pouco para cima para a animar entity.setCustomName(itemStackName); entity.setCustomNameVisible(true); // setamos e deixamos o nome do prémio visivel entity.setMetadata("quickcrate", new FixedMetadataValue(SkyCratesQuickAnimation.getSkyCratesQuickAnimation(), true)); // aqui adicionamos a metadata "quickcrate" para que ninguém possa apanhar o item if (crate.getLocation().getBlock().getType() == Material.CHEST || crate.getLocation().getBlock().getType() == Material.ENDER_CHEST || crate.getLocation().getBlock().getType() == Material.TRAPPED_CHEST) { // verificamos se é algum tipo de bau, para abrirmos o baú SkyCrates.getSkyCrates().getUtils().changeChestState(crate.getLocation(), true); } } final Entity finalEntity = entity; new BukkitRunnable() { @Override public void run() { // passado 5 segundos if (!crate.getCrateType().isVirtual()) { // se a caixa necessita de uma chave if (finalEntity != null) { // se existe um item finalEntity.remove(); // removemos o item } if (crate.getLocation().getBlock().getType() == Material.CHEST || crate.getLocation().getBlock().getType() == Material.ENDER_CHEST || crate.getLocation().getBlock().getType() == Material.TRAPPED_CHEST) { // verificamos se é algum tipo de bau, para fecharmos o baú SkyCrates.getSkyCrates().getUtils().changeChestState(crate.getLocation(), false); } } end(); // terminamos a animação, TODA animação precisa chamar o end() no término da mesma } }.runTaskLater(SkyCratesQuickAnimation.getSkyCratesQuickAnimation(), 5 * 20); } @Override public void run() { // este método será chamado em um timer, não iremos usar nenhum nesta animação ; } } » Plugin.yml name: SkyCratesQuickAnimation version: 1.0.0 author: zAth main: me.zath.skycratesquickanimation.SkyCratesQuickAnimation softdepend: [SkyCrates] # IMPORTANTE, precisa colocar isso para que a sua animação carregue DEPOIS do SkyCrates » Resultado - https://streamable.com/cf744 » Download - http://www.mediafire.com/file/5cnnyu6y4jcnqcl/SkyCratesQuickAnimation.jar @edit Atualizações » Caixas que não precisam de chave https://streamable.com/yrn76 Editado Fevereiro 9, 2018 por zAth 1 Link para o comentário Compartilhar em outros sites More sharing options...
??? Postado Fevereiro 9, 2018 Denunciar Compartilhar Postado Fevereiro 9, 2018 Eu não gosto de misturar br no java porque ele é todo inglês ae não faz muito sentido e quem sabe algum dia eu posto o plugin no spigot rsrs e.e QUE mike curtiu meu pl *-* @topic Começei trabalhando em caixas que não precisa de chave, tipo caixa misteriosa de muitos servers que tem ae. Coloquei no tópico como criar vossas próprias animações SE souberem programar como também uma animação de exemplo, depois eu colocarei a animação para baixarem. https://streamable.com/cf744 Dev » Eventos @EventHandler public void onCrateOpen(CrateOpenEvent event) { Crate crate = event.getCrate(); // caixa boolean isOpening = crate.isOccupied(); // esta sendo aberta Location location = crate.getLocation(); // loc da caixa, null se for caixa virtual (WIP) if (isOpening && location != null) { AbstractAnimation abstractAnimation = crate.getAnimation(); // animação abstractAnimation.end(); // finaliza a abertura da caixa } } @EventHandler public void onCrateWin(CrateWinEvent event) { Prize prize = event.getPrize(); // prêmio ItemStack itemStack = prize.getItemStack(); // item que representa o premio String cmd = prize.getCmd(); // comando do premio if(prize.getType() == Prize.TYPE.ITEM) System.out.println("Ganhou item " + itemStack.toString()); else System.out.println("Ganhou comando " + cmd); } » Própria animação » Main package me.zath.skycratesquickanimation; /* * MC * Created by zAth */ import me.zath.skycrates.SkyCrates; import org.bukkit.Bukkit; import org.bukkit.event.EventHandler; import org.bukkit.event.HandlerList; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerPickupItemEvent; import org.bukkit.plugin.java.JavaPlugin; public class SkyCratesQuickAnimation extends JavaPlugin implements Listener { private static SkyCratesQuickAnimation skyCratesQuickAnimation; // instanciando a main @Override public void onEnable() { skyCratesQuickAnimation = this; if (getServer().getPluginManager().getPlugin("SkyCrates") == null) { Bukkit.getLogger().severe("SkyCrates não foi encontrado."); return; } SkyCrates.getSkyCrates().getCrateManager().registerAnimation(QuickAnimation.class); // registrando a animação getServer().getPluginManager().registerEvents(this, this); Bukkit.getConsoleSender().sendMessage("§6<§8-----------------------------§6>"); Bukkit.getConsoleSender().sendMessage("§6" + getDescription().getName() + " §8v.§6" + getDescription().getVersion() + " §8de§6 " + getDescription().getAuthors() + " §2Ativado"); Bukkit.getConsoleSender().sendMessage("§6<§8-----------------------------§6>"); } @Override public void onDisable() { Bukkit.getConsoleSender().sendMessage("§6<§8-----------------------------§6>"); Bukkit.getConsoleSender().sendMessage("§6" + getDescription().getName() + " §8v.§6" + getDescription().getVersion() + " §8de§6 " + getDescription().getAuthors() + " §4Desativado"); Bukkit.getConsoleSender().sendMessage("§6<§8-----------------------------§6>"); HandlerList.unregisterAll(); } public static SkyCratesQuickAnimation getSkyCratesQuickAnimation() { return skyCratesQuickAnimation; } @EventHandler public void onItemPickup(PlayerPickupItemEvent event) { // cancelando o evento // nossa animação vai dropar o prémio, para que não seja roubado temos que cancelar o evento // para sabermos que é um prémio iremos usar a metadata dele if (event.getItem().hasMetadata("quickcrate")) event.setCancelled(true); } } » Animação package me.zath.skycratesquickanimation; /* * MC * Created by zAth */ import me.zath.skycrates.SkyCrates; import me.zath.skycrates.objects.Crate; import me.zath.skycrates.objects.animations.AbstractAnimation; import org.bukkit.Material; import org.bukkit.entity.Entity; import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.util.Vector; public class QuickAnimation extends AbstractAnimation { // toda animação precisa extender AbstractAnimation public QuickAnimation(Crate crate) { // precisa ter um constructor, deixe ele somente com super(crate) super(crate); } @Override public void start() { // este método será chamado quando a animação começar prize = crate.getCrateType().getRandomPrize(); // pegando um prémio randômico Entity entity = null; if (!crate.getCrateType().isVirtual()) { // se a caixa necessita de uma chave String itemStackName = prize.getItemStack().hasItemMeta() && prize.getItemStack().getItemMeta().hasDisplayName() ? prize.getItemStack().getItemMeta().getDisplayName() : SkyCrates.getSkyCrates().getUtils().prettifyText(prize.getItemStack().getType().name()); // pegando o nome do item se o tiver, se não usaremos uma versão mais bonita do nome do material entity = crate.getLocation().getWorld().dropItem(crate.getLocation().clone().add(0.5, 1, 0.5), prize.getItemStack()); // spawnamos o prémio em cima da caixa entity.setVelocity(new Vector(0, 0.2, 0)); // jogamos ela um pouco para cima para a animar entity.setCustomName(itemStackName); entity.setCustomNameVisible(true); // setamos e deixamos o nome do prémio visivel entity.setMetadata("quickcrate", new FixedMetadataValue(SkyCratesQuickAnimation.getSkyCratesQuickAnimation(), true)); // aqui adicionamos a metadata "quickcrate" para que ninguém possa apanhar o item if (crate.getLocation().getBlock().getType() == Material.CHEST || crate.getLocation().getBlock().getType() == Material.ENDER_CHEST || crate.getLocation().getBlock().getType() == Material.TRAPPED_CHEST) { // verificamos se é algum tipo de bau, para abrirmos o baú SkyCrates.getSkyCrates().getUtils().changeChestState(crate.getLocation(), true); } } final Entity finalEntity = entity; new BukkitRunnable() { @Override public void run() { // passado 5 segundos if (!crate.getCrateType().isVirtual()) { // se a caixa necessita de uma chave if (finalEntity != null) { // se existe um item finalEntity.remove(); // removemos o item } if (crate.getLocation().getBlock().getType() == Material.CHEST || crate.getLocation().getBlock().getType() == Material.ENDER_CHEST || crate.getLocation().getBlock().getType() == Material.TRAPPED_CHEST) { // verificamos se é algum tipo de bau, para fecharmos o baú SkyCrates.getSkyCrates().getUtils().changeChestState(crate.getLocation(), false); } } end(); // terminamos a animação, TODA animação precisa chamar o end() no término da mesma } }.runTaskLater(SkyCratesQuickAnimation.getSkyCratesQuickAnimation(), 5 * 20); } @Override public void run() { // este método será chamado em um timer, não iremos usar nenhum nesta animação ; } } » Plugin.yml name: SkyCratesQuickAnimation version: 1.0.0 author: zAth main: me.zath.skycratesquickanimation.SkyCratesQuickAnimation softdepend: [SkyCrates] # IMPORTANTE, precisa colocar isso para que a sua animação carregue DEPOIS do SkyCrates » Resultado - https://streamable.com/cf744 » Download - http://www.mediafire.com/file/5cnnyu6y4jcnqcl/SkyCratesQuickAnimation.jar @edit Atualizações » Caixas que não precisam de chave https://streamable.com/yrn76 carai, ai sim, foda mesmo haha, isso sim é um bom projeto Link para o comentário Compartilhar em outros sites More sharing options...
quando eu tinha uma glock Postado Fevereiro 9, 2018 Denunciar Compartilhar Postado Fevereiro 9, 2018 nossa, eu fui ver isso só hoje, triste estou que projeto foda, parabéns ! Link para o comentário Compartilhar em outros sites More sharing options...
SEVEN Postado Fevereiro 12, 2018 Denunciar Compartilhar Postado Fevereiro 12, 2018 (editado) @Sugestão Poderia fazer um comando pra dar reload no plugin /crate reload Editado Fevereiro 12, 2018 por Sevenn Link para o comentário Compartilhar em outros sites More sharing options...
zAth Postado Fevereiro 12, 2018 Autor Denunciar Compartilhar Postado Fevereiro 12, 2018 @Sugestão Poderia fazer um comando pra dar reload no plugin /crate reload Feito :3 1 Link para o comentário Compartilhar em outros sites More sharing options...
SEVEN Postado Fevereiro 12, 2018 Denunciar Compartilhar Postado Fevereiro 12, 2018 Feito :3 Minha nossa nossa, obrigado :3 Link para o comentário Compartilhar em outros sites More sharing options...
Cinco Postado Fevereiro 17, 2018 Denunciar Compartilhar Postado Fevereiro 17, 2018 Plugin realmente bom, irá ajudar várias pessoas Link para o comentário Compartilhar em outros sites More sharing options...
SaitO_M Postado Março 3, 2018 Denunciar Compartilhar Postado Março 3, 2018 no meu não tem o lugar de digitar... ai não da para colocar a chance ;-; Link para o comentário Compartilhar em outros sites More sharing options...
SaitO_M Postado Março 3, 2018 Denunciar Compartilhar Postado Março 3, 2018 se vc colocar a crate em modo caixa para abir sem chave tem como dupar................ Link para o comentário Compartilhar em outros sites More sharing options...
zAth Postado Março 3, 2018 Autor Denunciar Compartilhar Postado Março 3, 2018 no meu não tem o lugar de digitar... ai não da para colocar a chance ;-; Não tem lugar de digitar tipo.. não aparece item no gui ou não aparece a tableta? Tem o protocollib? se vc colocar a crate em modo caixa para abir sem chave tem como dupar................ E como que alcança tal proeza? Link para o comentário Compartilhar em outros sites More sharing options...
SaitO_M Postado Março 3, 2018 Denunciar Compartilhar Postado Março 3, 2018 Não tem lugar de digitar tipo.. não aparece item no gui ou não aparece a tableta? Tem o protocollib? E como que alcança tal proeza? é so vc colocar a crate para abrir sem key e quando ir abrir vai dar aquela tela de aceitar e cancelar, ai é so vc aperta para abrir e dropar a caixa no msm tempo ai vai ficar com o menu de aceitar, ai vc aceita e a caixa abre sem ter caixa, dps é so pegar a caixa do chão e fazer isso de novo. Link para o comentário Compartilhar em outros sites More sharing options...
SockOnHand Postado Março 3, 2018 Denunciar Compartilhar Postado Março 3, 2018 Como eu crio um Pedido de Skript Porfavor me ajudem Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados