leonardosc Postado Setembro 27, 2016 Denunciar Compartilhar Postado Setembro 27, 2016 Eu não vou explicar oq é jasmin pq eu to com preguiça, só procurar no google. Jasmin Download: https://sourceforge.net/projects/jasmin/files/(Se tu tiver interessado em compilar isso, e/ou editar) O único proposito disso pra mim é pra conhecimento. É simplesmente um código (em jasmin) que quando compilado e transformado em plugin (adicionado em um jar com plugin.yml)vai simplesmente "adicionar" um comando (/jasmintest) que quando você executar você vai ganhar um diamante, gg ez Código: (Eu comentei quase todas as instruções, só não comentei onde não achei necessário) ; ======================== ; ; Criado por leonardosnt ; ; Data: 27/09/2016 ; ; ======================== ; .class public JasminTest .super org/bukkit/plugin/java/JavaPlugin ; Construtor padrao .method public <init>()V aload_0 invokenonvirtual org/bukkit/plugin/java/JavaPlugin/<init>()V return .end method ; Metodo onEnable .method public onEnable()V .limit stack 3 .limit locals 2 aload_0 ; Carrega o this na stack invokevirtual JasminTest/getLogger()Ljava/util/logging/Logger; ; Chama o método getLogger e carrega na stack ldc "Iniciando plugin e.e" ; Carrega a string na stack invokevirtual java/util/logging/Logger/info(Ljava/lang/String;)V ; Chama o metodo Logger.info return .end method ; Metodo onCommand .method public onCommand(Lorg/bukkit/command/CommandSender;Lorg/bukkit/command/Command;Ljava/lang/String;[Ljava/lang/String;)Z .limit stack 10 ; Nao to afim de calcular o tamanho da stack/locals .limit locals 10 ; entao vou colocar em 10, pelo menos vai funcionar aload_1 ; Carrega o sender na stack instanceof org/bukkit/entity/Player ; Verifica se ele é um player (instanceof Player) ifeq console ; Se nao for ele vai pra label console player: ; Label player aload_1 ; Carrega o CommandSender na stack ldc "Vc quer um dima? Toma ai" ; Carrega a string na stack invokeinterface org/bukkit/command/CommandSender/sendMessage(Ljava/lang/String;)V 2 ; Chama o metodo CommandSender.sendMessage aload_1 ; Carrega o sender na stack checkcast org/bukkit/entity/Player ; 'Faz' o cast pra player invokeinterface org/bukkit/entity/Player/getInventory()Lorg/bukkit/inventory/PlayerInventory; 1 ; Chama o metodo Player.getInventory iconst_1 ; Carrega o numero 1 na stack (tamanho do array) anewarray org/bukkit/inventory/ItemStack ; Cria um novo array do tipo ItemStack dup iconst_0 ; Carrega o numero 0 na stack (posicao que o item vai ser guardado no array) new org/bukkit/inventory/ItemStack ; Cria um novo ItemStack dup getstatic org/bukkit/Material/DIAMOND Lorg/bukkit/Material; ; Carrega o Material.DIAMOND na stack invokespecial org/bukkit/inventory/ItemStack/<init>(Lorg/bukkit/Material;)V ; Chama o construtor do ItemStack aastore ; Guarda o item no array invokeinterface org/bukkit/inventory/PlayerInventory/addItem([Lorg/bukkit/inventory/ItemStack;)Ljava/util/HashMap; 2 ; Chama o método PlayerInventory.addItem pop ; Remove, o retorno desse método que foi chamado acima, da stack goto end ; Vai pra label end console: ; Label console aload_1 ; Carrega o CommandSender na stack ldc "Vc eh apenas um console, nao tem dima pra vc" ; Carrega a string na stack invokeinterface org/bukkit/command/CommandSender/sendMessage(Ljava/lang/String;)V 2 ; Chama o metodo CommandSender.sendMessage end: iconst_1 ; Carrega 1 (true) na stack ireturn ; Retorna .end method Código com highlight: https://gist.github.com/leonardosnt/465d60d458dce13fa0a2278814aaa9a8 O código em java seria mais ou menos assim import org.bukkit.plugin.java.*; import org.bukkit.*; import org.bukkit.entity.*; import org.bukkit.inventory.*; import org.bukkit.command.*; public class Foo extends JavaPlugin { @Override public void onEnable() { getLogger().info("Iniciando plugin e.e"); } @Override public boolean onCommand(CommandSender sender, Command command, String label, String ... args) { if (sender instanceof Player) { sender.sendMessage("Vc quer um dima? Toma ai"); ((Player) sender).getInventory().addItem(new ItemStack(Material.DIAMOND)); } else { sender.sendMessage("Vc eh apenas um console, nao tem dima pra vc"); } return true; } } Plugin.yml name: JasminTest main: JasminTest version: 1.0.0 author: leonardosnt commands: jasmintest: Comando pra compilar: REM Compila java -jar jasmin.jar JasminTest.j REM Cria um jar e adiiciona a classe e o plugin.yml jar cvf JasminTest.jar plugin.yml JasminTest.class 2 Link para o comentário Compartilhar em outros sites More sharing options...
lucakiksd07 Postado Junho 29, 2019 Denunciar Compartilhar Postado Junho 29, 2019 Seu tópico foi marcado como Inativo. Para reverter esta ação, entre em contato com a equipe de Moderação. OBS: Essa mensagem é automática. Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados