Ir para conteúdo

AstroCoder

Membros
  • Total de itens

    61
  • Registro em

  • Última visita

Tudo que AstroCoder postou

  1. AstroCoder

    Sério isso?

    Apesar do trending ser minecraft nao quer dizer que o forum seja apenas e unicamente dedicado ao minecraft, "barzinho de desenvolvedores" eu sou developer e nao desenvolvo so para minecraft xD
  2. Manda o codigo completo, nao sei qual é o codigo da linha 204 sff.
  3. Programar é como uma arte, tu deves ser o mestre dela deves a compreender para a poder executar, logica, conceitos, design patterns. Nao aprendes isso a decompilar plugins, aprendes isso a fazer real projects a tentar decifrar exercicios ir a code battles e coisas do genero.
  4. Antes de aprender java ou aprender APIs devesse aprender algoritmia e antes de se aprender APIs devesse aprender Polimorfismo,abstraçao, OOP, Generics, entre outros.
  5. Enganas-te fundamento de java nao tem SQL 80% java e 60% php nao quer dizer que ele saiba sql :) um programador nunca sabe tudo da linguagem nunca, eu programo java a 7 anos e so aprendi sql no meu 4 ano.
  6. Parabéns pelo plugin, devias adicionar 2 tipos de backend: file e SQL que hoje em dia são os mais utilizados e se queres deixar mais interativo pega no Chat Component API e faz 2 ações: Aceitar e Rejeitar quando o jogador clicar sobre uma delas irá fazer X comando neste caso será o comando de aceitar e o comando de rejeitar. Boa sorte
  7. AstroCoder

    [API] BossBar

    BossBar Requer: ProtocolLib Bem a uns dias atrás comecei a fazer o core da minha network e comecei a perceber que precisava de uma BossBar para passar mais facilmente anúncios e não estar a utilizar excessivamente o Title,chat ou o ActionBar, portanto peguei no protocol lib e fiz esta pequena api para me ajudar neste trabalho. Se tás a perguntar o porque de usar protocol lib a resposta é muito simples por mais que eu adore NMS/Packets etc ele faz esse trabalho ser mais fácil BossBar Classe: import com.comphenix.protocol.PacketType; import com.comphenix.protocol.ProtocolLibrary; import com.comphenix.protocol.events.PacketContainer; import com.comphenix.protocol.reflect.StructureModifier; import com.comphenix.protocol.wrappers.WrappedDataWatcher; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.plugin.Plugin; import org.bukkit.scheduler.BukkitRunnable; import java.lang.reflect.Field; import java.util.HashMap; public class BossBar { private static int enderdragonId; private static Plugin plugin = aTuaMainClass; private static HashMap<String, BukkitRunnable> toHide = new HashMap<String, BukkitRunnable>(); static { try { Field field = Class.forName( "net.minecraft.server." + Bukkit.getServer().getClass().getName().split("\\.")[3] + ".Entity") .getDeclaredField("entityCount"); field.setAccessible(true); enderdragonId = field.getInt(null); field.set(null, enderdragonId + 1); } catch (Exception ex) { ex.printStackTrace(); } } public static void removeBar(final Player player, int ticks) { if (player.hasMetadata("SeesEnderdragon") && !toHide.containsKey(player.getName())) { BukkitRunnable runnable = new BukkitRunnable() { @Override public void run() { player.removeMetadata("SeesEnderdragon", plugin); sendRemove(player); toHide.remove(player.getName()); } }; runnable.runTaskLater(plugin, ticks); toHide.put(player.getName(), runnable); } } /* Remove Packet */ private static void sendRemove(Player player) { try { PacketContainer spawnPacket = new PacketContainer(PacketType.Play.Server.ENTITY_DESTROY); spawnPacket.getIntegerArrays().write(0, new int[] { enderdragonId }); ProtocolLibrary.getProtocolManager().sendServerPacket(player, spawnPacket, false); } catch (Exception ex) { ex.printStackTrace(); } } /* Spawn Packet */ private static void sendSpawn(Player player, String message, float health) throws Exception { PacketContainer spawnPacket = new PacketContainer(PacketType.Play.Server.SPAWN_ENTITY_LIVING); StructureModifier<Object> spawnPacketModifier = spawnPacket.getModifier(); Location toSpawn = player.getEyeLocation().add(player.getEyeLocation().getDirection().normalize().multiply(23)); spawnPacketModifier.write(0, enderdragonId); spawnPacketModifier.write(1, (byte) 64); spawnPacketModifier.write(2, toSpawn.getBlockX() * 32); spawnPacketModifier.write(3, toSpawn.getBlockY() * 32); spawnPacketModifier.write(4, toSpawn.getBlockZ() * 32); WrappedDataWatcher watcher = new WrappedDataWatcher(); watcher.setObject(0, (byte) 32); watcher.setObject(2, message); watcher.setObject(6, health, true); watcher.setObject(10, message); watcher.setObject(20, 881); spawnPacket.getDataWatcherModifier().write(0, watcher); ProtocolLibrary.getProtocolManager().sendServerPacket(player, spawnPacket, false); } public static void setBossName(Player player, String message, float health) { try { if (!player.hasMetadata("SeesEnderdragon")) { player.setMetadata("SeesEnderdragon", new FixedMetadataValue(plugin, true)); } if (toHide.containsKey(player.getName())) { toHide.remove(player.getName()).cancel(); } sendSpawn(player, message, health); } catch (Exception ex) { ex.printStackTrace(); } } }
  8. 50% do lucro? tás a dar a source e queres 50% do lucro se vender? Source-code completa? Posso perguntar só uma coisa mas que raio de developer és tu? Não sei se fazes plugins por hobby ou se levas a profissional como eu o faço mas dou te um conselho quando metes algo open-source não esperes algo em troca, se fosses pedir créditos era completamente compreensível. Não leves isto como uma ofensa.
  9. AstroCoder

    TGHome

    Isto e impossivel em termos de plugin, resource pack ou mod. Razão de ser impossivel: minecraft não aceita musicas .wav, mal disses-te isso eu começei me a rir, alem disso iniciar um thread e meter um new music cheira logo a fake, nao terias apenas 2 classes para fazer tal "plugin".
  10. Eu usei a uns tempos foi portugol que tambem é muito bom para logica http://www.dei.estt.ipt.pt/portugol/
  11. Para primeiro ate podia ser um simples o hello world o primeiro ja é o inicio de muitos. Boa sorte
  12. AstroCoder

    [API] TitleAPI

    TitleAPI Eu sempre fui o tipo de pessoa que gosta de deixar o servidor todo bonito, portanto para todos os meus servidores eu fiz esta api para que pudesse facilmente criar um title, title é uma feature da versão 1.8. titleAPI.class (voce pode renomear como é obvio) import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer; import org.bukkit.entity.Player; import org.spigotmc.ProtocolInjector; import net.minecraft.server.v1_7_R4.ChatSerializer; import net.minecraft.server.v1_7_R4.IChatBaseComponent; /* API criada por AstroCoder */ public class titleAPI { public static void sendTitleAndSubTo(Player p, String title, String subtitle) { if (((CraftPlayer)p).getHandle().playerConnection.networkManager.getVersion() < 47) { return; } IChatBaseComponent chatTitle = ChatSerializer.a("{\"text\": \"" + title + "\"}"); ProtocolInjector.PacketTitle t = new ProtocolInjector.PacketTitle(ProtocolInjector.PacketTitle.Action.TITLE, chatTitle); IChatBaseComponent subTitle = ChatSerializer.a("{\"text\": \"" + subtitle + "\"}"); ProtocolInjector.PacketTitle sub = new ProtocolInjector.PacketTitle(ProtocolInjector.PacketTitle.Action.SUBTITLE, subTitle); ProtocolInjector.PacketTitle time = new ProtocolInjector.PacketTitle(ProtocolInjector.PacketTitle.Action.TIMES, 20, 120, 20); ((CraftPlayer)p).getHandle().playerConnection.sendPacket(time); ((CraftPlayer)p).getHandle().playerConnection.sendPacket(t); ((CraftPlayer)p).getHandle().playerConnection.sendPacket(sub); } public static void sendTitleTo(Player p, String title) { if (((CraftPlayer)p).getHandle().playerConnection.networkManager.getVersion() < 47) { //ver a version do player return; } IChatBaseComponent chatTitle = ChatSerializer.a("{\"text\": \"" + title + "\"}"); ProtocolInjector.PacketTitle t = new ProtocolInjector.PacketTitle(ProtocolInjector.PacketTitle.Action.TITLE, chatTitle); ProtocolInjector.PacketTitle time = new ProtocolInjector.PacketTitle(ProtocolInjector.PacketTitle.Action.TIMES, 20, 120, 20); ((CraftPlayer)p).getHandle().playerConnection.sendPacket(time); ((CraftPlayer)p).getHandle().playerConnection.sendPacket(t); } } Como usar? (Exemplo num join event) @EventHandler public void OnJoin(PlayerJoinEvent e) { Player p = e.getPlayer(); e.setJoinMessage(null); titleAPI.sendTitleAndSubTo(p, "seu titulo", "seu subtitulo"); titleAPI.sendTitleTo(p, "seu titulo"); //sem subtitulo } Atenção: Utilizei ProtocolHack para fazer esta api Muito fácil de usar e eficiente. O resto de um bom coding.
  13. Basta analisar o codigo e irá ver que o mesmo cria um villager note nesta linha. Villager villager = localizacao.getWorld().spawn(localizacao, Villager.class);
×
×
  • Criar Novo...