Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Pytanie] Skript vs Java


Qwant1

Rekomendowane odpowiedzi

Opublikowano

<------------- Reklama

<------------- Reklama

<------------- Reklama

<------------- Reklama

<------------- Reklama

<------------- Reklama

<------------- Reklama

<------------- Reklama

<------------- Reklama

<------------- Reklama

<------------- Reklama

<------------- Reklama

 

 

 

 

 

 

 

 

 

 

Cześć !

Oto porównanie między skryptem a javą.

Temat powstał po to ,abyście wyrażali swoją opinie na temat skryptu a javą.

Niżej macie plusy oraz minusy Skript i Javy:

 

 

SKRIPT

 

PLUSY:

 

- Prosty w obsłudze

- Nie trzeba ponownie uruchamiać serwera po aktualizacji skryptu

- Opiera się na języku angielskim

 

MINUSY:

 

- Ważne spacje/taby

- Opiera się na języku angielskim

 

JAVA

 

PLUSY:

 

- Nie zależy od spacji/tabów

- Jest w niej więcej możliwości

- Wszystko w Bukkit API może być użyte resztę w (net.minecraft.server)

 

MINUSY:

 

- Trzeba aktualizować, zmieniać linijki kodu przy najnowszych wersjach bukkita

- 10 razy więcej kodu ,aby zrobić prostą rzecz

- Trudny język

 

 

OTO ODPOWIEDNIKI MIĘDZY SKRYPTEM A JAVĄ JEŻELI CHODZI O KOD:

 

W skrypcie
# To jest komunikat
on join:
message "Czesc!"
W javie
// To jest komunikat
// Odpowiednik on join
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event){
// Equivalent of "message "Czesc""
Player player = event.getPlayer();
player.sendMessage("Czesc");
}
W skrypcie
on sneak toggle:
if player is not sneaking:
message "&9Gdzie ty lecisz?"
push the player upwards at speed 10
W javie
@EventHandler
public void onPlayerToggleSneak(PlayerToggleSneakEvent event){
Player player = event.getPlayer();
if(!player.isSneaking()){
player.sendMessage(ChatColor.AQUA + "Gdzie ty lecisz?");
player.setVelocity(new Vector(0, 10, 0));
}
}
W skrypcie
every 10 seconds:
loop all players:
kill loop-player
W javie
@Override
public void onEnable(){
Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable(){
@Override
public void run(){
for(Player player : getServer().getOnlinePlayers()){
player.damage(100000);
}
}
}, 0, 200);
}
Piszcie co według was jest bardziej opłacalne i czego używacie ;P
Opublikowano

Gdy stworzysz plugin masz jakaś satysfakcje ,że coś osiągnąłeś ,jest więcej możliwości niż w skrypcie.Nigdy nie pisałem skryptów w tym pluginie i nie zamierzam ,moim zdaniem plugin ten powstał dla ludzi mniej umiejętnych i leniwych aby poświęcić parę godzin,dni na naukę języka.

1379958827-U247153.png


Opublikowano

Jak dla mnie ten temat wyczerpuje wszystko, a jak nie to po uj robić 2, napiszcie w tamtym :)

Polecam przeczytanie całego o ile macie silę :P
http://www.mpcforum.pl/topic/1117246-pytanie-co-sadzicie-o-skryptach/?p=9632008

+ odnośnik do mojego postu w tym temacie... myślę że jest też tam w miarę dużo wyjaśnione, i mam nadzieje że w miarę poprawnie :)
http://www.mpcforum.pl/topic/1117246-pytanie-co-sadzicie-o-skryptach/?p=9661594

To już jest koniec smerfa:


http://www.mpcforum.pl/topic/1323530-info-znikam/


GG: 48522543


PS: Na innych forach i stronach znajdziesz mnie pod nickiem: 


BukkitSmerf

Opublikowano

Od kiedy Java jest trudnym językiem ?

I porównanie słabe , porównuj coś dużego do czegoś dużego , a nie kilka linijek

 

np. MSG w javie

package dCrafters.cmd;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import dCrafters.Main;

public class Tell
  implements CommandExecutor
{
  Main plugin;

  public Tell(Main plugin)
  {
    this.plugin = plugin;
    this.plugin.getCommand("tell").setExecutor(this);
  }

  public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    if ((sender instanceof Player)) {
      Player player = (Player)sender;
      if (args.length > 1) {
        Player other = Bukkit.getPlayerExact(args[0]);
        if (other != null) {
          if ((!other.hasPermission("dcrafters.tell.nomessage")) || ((other.hasPermission("dcrafters.tell.nomessage")) && (player.hasPermission("dcrafters.tell.nomessage")))) {
            this.plugin.Reply.lastMessageSender.put(other, player);
            this.plugin.Reply.lastMessageSender.put(player, other);
            StringBuilder sb = new StringBuilder();

            for (int i = 1; i < args.length; i++) {
              sb.append(args[i]).append(" ");
            }
            String message = sb.toString();
            other.sendMessage(ChatColor.GOLD + "[" + ChatColor.GRAY + player.getDisplayName() + ChatColor.GOLD + " -> ja] " + ChatColor.WHITE + message);
            player.sendMessage(ChatColor.GOLD + "[ja -> " + ChatColor.RED + other.getDisplayName() + ChatColor.GOLD + "] " + ChatColor.WHITE + message);
            return true;
          }

          player.sendMessage(ChatColor.RED + "Do tego gracza nie mozesz wysylac wiadomosci!");
        }
        else
        {
          player.sendMessage(ChatColor.DARK_RED + "Podany gracz nie jest online!");
        }
      }
      else
      {
        player.sendMessage(ChatColor.RED + "Poprawne uzycie: " + ChatColor.GOLD + "/tell <gracz> <wiadomosc>");
      }
    }
    else
    {
      sender.sendMessage(ChatColor.DARK_RED + "To polecenie nie moze byc wywolane z konsoli!");
    }
    return false;
  }
}

Czy nawet /kick

package dCrafters.cmd;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import dCrafters.Main;

public class Kick
  implements CommandExecutor
{
  Main plugin;

  public Kick(Main plugin)
  {
    this.plugin = plugin;
    this.plugin.getCommand("kick").setExecutor(this);
  }

  public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    if (args.length > 1) {
      Player kicked = Bukkit.getPlayerExact(args[0]);
      if (kicked != null) {
        if (!kicked.hasPermission("dcrafters.kick.bypass")) {
          String bannedDisplayName = kicked.getName();
          StringBuilder sb = new StringBuilder();

          for (int i = 1; i < args.length; i++) {
            sb.append(args[i]).append(" ");
          }
          String kickReason = sb.toString();

          String displayName = ChatColor.RED + "konsole";
          if ((sender instanceof Player)) {
            Player admin = (Player)sender;
            displayName = admin.getName();
          }
              Bukkit.broadcastMessage(ChatColor.RED + bannedDisplayName + ChatColor.GRAY + " zostal wyrzucony przez " + ChatColor.RED + displayName + ChatColor.GRAY + ". Powod: " + kickReason);
              kicked.kickPlayer(ChatColor.AQUA + "Zostales wyrzucony\n\n" + ChatColor.YELLOW + "Przez: " + ChatColor.RED + displayName + "\n\n" + ChatColor.YELLOW + "Za: " + ChatColor.RED + kickReason);
          return true;
        }

        sender.sendMessage(ChatColor.RED + "Ten gracz nie moze byc wyrzucony!");
      }
      else
      {
        sender.sendMessage(ChatColor.DARK_RED + "Podany gracz nie jest online!");
      }
    }
    else
    {
      sender.sendMessage(ChatColor.RED + "Poprawne uzycie: " + ChatColor.GOLD + "/kick <nick> <powod>");
    }
    return false;
  }
}

Aktualna próba: Postaw serwer mt2 na vps z ubuntu.

Opublikowano

 

Od kiedy Java jest trudnym językiem ?

I porównanie słabe , porównuj coś dużego do czegoś dużego , a nie kilka linijek

 

np. MSG w javie

package dCrafters.cmd;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import dCrafters.Main;

public class Tell
  implements CommandExecutor
{
  Main plugin;

  public Tell(Main plugin)
  {
    this.plugin = plugin;
    this.plugin.getCommand("tell").setExecutor(this);
  }

  public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    if ((sender instanceof Player)) {
      Player player = (Player)sender;
      if (args.length > 1) {
        Player other = Bukkit.getPlayerExact(args[0]);
        if (other != null) {
          if ((!other.hasPermission("dcrafters.tell.nomessage")) || ((other.hasPermission("dcrafters.tell.nomessage")) && (player.hasPermission("dcrafters.tell.nomessage")))) {
            this.plugin.Reply.lastMessageSender.put(other, player);
            this.plugin.Reply.lastMessageSender.put(player, other);
            StringBuilder sb = new StringBuilder();

            for (int i = 1; i < args.length; i++) {
              sb.append(args[i]).append(" ");
            }
            String message = sb.toString();
            other.sendMessage(ChatColor.GOLD + "[" + ChatColor.GRAY + player.getDisplayName() + ChatColor.GOLD + " -> ja] " + ChatColor.WHITE + message);
            player.sendMessage(ChatColor.GOLD + "[ja -> " + ChatColor.RED + other.getDisplayName() + ChatColor.GOLD + "] " + ChatColor.WHITE + message);
            return true;
          }

          player.sendMessage(ChatColor.RED + "Do tego gracza nie mozesz wysylac wiadomosci!");
        }
        else
        {
          player.sendMessage(ChatColor.DARK_RED + "Podany gracz nie jest online!");
        }
      }
      else
      {
        player.sendMessage(ChatColor.RED + "Poprawne uzycie: " + ChatColor.GOLD + "/tell <gracz> <wiadomosc>");
      }
    }
    else
    {
      sender.sendMessage(ChatColor.DARK_RED + "To polecenie nie moze byc wywolane z konsoli!");
    }
    return false;
  }
}

Czy nawet /kick

package dCrafters.cmd;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import dCrafters.Main;

public class Kick
  implements CommandExecutor
{
  Main plugin;

  public Kick(Main plugin)
  {
    this.plugin = plugin;
    this.plugin.getCommand("kick").setExecutor(this);
  }

  public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    if (args.length > 1) {
      Player kicked = Bukkit.getPlayerExact(args[0]);
      if (kicked != null) {
        if (!kicked.hasPermission("dcrafters.kick.bypass")) {
          String bannedDisplayName = kicked.getName();
          StringBuilder sb = new StringBuilder();

          for (int i = 1; i < args.length; i++) {
            sb.append(args[i]).append(" ");
          }
          String kickReason = sb.toString();

          String displayName = ChatColor.RED + "konsole";
          if ((sender instanceof Player)) {
            Player admin = (Player)sender;
            displayName = admin.getName();
          }
              Bukkit.broadcastMessage(ChatColor.RED + bannedDisplayName + ChatColor.GRAY + " zostal wyrzucony przez " + ChatColor.RED + displayName + ChatColor.GRAY + ". Powod: " + kickReason);
              kicked.kickPlayer(ChatColor.AQUA + "Zostales wyrzucony\n\n" + ChatColor.YELLOW + "Przez: " + ChatColor.RED + displayName + "\n\n" + ChatColor.YELLOW + "Za: " + ChatColor.RED + kickReason);
          return true;
        }

        sender.sendMessage(ChatColor.RED + "Ten gracz nie moze byc wyrzucony!");
      }
      else
      {
        sender.sendMessage(ChatColor.DARK_RED + "Podany gracz nie jest online!");
      }
    }
    else
    {
      sender.sendMessage(ChatColor.RED + "Poprawne uzycie: " + ChatColor.GOLD + "/kick <nick> <powod>");
    }
    return false;
  }
}

Sorry ale musze :*

po co w 1 kodzie sprawdzać czy wysyłający to konsola? świat wybuchnie jak ktoś wpisze top z konsoli? to powinno nawet wspierać konsole i umożliwiać wysyłanie do niej wiadomości.

getPlayerExact? jak dla mnie bez sensu... zwykłe getPlayer było by znacznie wygodniejsze.

I nie ma wspomagania dla kolorków :(

Do tego łatwiej było by trzymać HashMape do opcji Reply w tej samej klasie co komenda Reply, i nie musieć dodawać

Main plugin;

public Tell(Main plugin)

{

this.plugin = plugin;

this.plugin.getCommand("tell").setExecutor(this);

}

Do tego zamiast robić coś takiego można w głównej klasie zrobić:

private static MyPlugin plugin;

public static MyPlugin getThis(){

return plugin;

}

I w metodzie onEnable na samym początku

plugin = this;

 

 

Sorry, zawsze muszę się przypierdzielić :D Widzę że kod raczej pisany dla celów prywatnych, bo zwykle wiadomości pobiera się z configu :P

żeby nie było, mój kick:

public class CmdKick implements CommandExecutor {

	@Override
	public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
		if (!sender.hasPermission("ProWarns.kick"))
			return Utils.fixSAndSend(Lang.config.commands.kick.noPermissions, sender, cmd.getName());
		if (args.length == 0)
			return Utils.fixSAndSend(Lang.config.commands.kick.use, sender, cmd.getName());
		String reason = Lang.config.commands.kick.reason, nickname = null;
		int i = 1;
		for (String arg : args) {
			if (i == 1)
				nickname = arg;
			else if (i == 2)
				reason = arg + " ";
			else
				reason += arg + " ";
			i++;
		}
		Player p = Bukkit.getPlayer(nickname);
		if (p == null)
			return Utils.fixSAndSend(Lang.config.commands.kick.noPlayer, sender, cmd.getName());
		p.kickPlayer(Utils.fixString(Lang.config.commands.kick.msg.replace("<%>reason<%>", reason), sender.getName(), cmd.getName()));
		return Utils.fixSAndSend(Lang.config.commands.kick.success.replace("<%>player<%>", nickname).replace("<%>reason<%>", reason), sender, cmd.getName());
	}
}

Powinnam użyć StringBuildera do powodu, ale tak już było wygodniej, może potem się zmieni :D (taka pętla była wygodniejsza w komendach w których jest np po 5/6 argumentów i nie muszą być koniecznie wszystkie, ale tu jest tylko nick i powód)

 

 

No ale tak poza tym to jestem zawiedziona, nie mam się do czego przypierdzielić ;/

 

 

 

EDIT: @down

Jak pisze tylko dla sb to też nie chce mi się dodawać configu wiadomości :P bo i tak raczej nie bd tego zmieniać

To już jest koniec smerfa:


http://www.mpcforum.pl/topic/1323530-info-znikam/


GG: 48522543


PS: Na innych forach i stronach znajdziesz mnie pod nickiem: 


BukkitSmerf

Opublikowano

Sorry ale musze :*

po co w 1 kodzie sprawdzać czy wysyłający to konsola? świat wybuchnie jak ktoś wpisze top z konsoli? to powinno nawet wspierać konsole i umożliwiać wysyłanie do niej wiadomości.

getPlayerExact? jak dla mnie bez sensu... zwykłe getPlayer było by znacznie wygodniejsze.

I nie ma wspomagania dla kolorków :(

Do tego łatwiej było by trzymać HashMape do opcji Reply w tej samej klasie co komenda Reply, i nie musieć dodawać

Main plugin;

public Tell(Main plugin)

{

this.plugin = plugin;

this.plugin.getCommand("tell").setExecutor(this);

}

Do tego zamiast robić coś takiego można w głównej klasie zrobić:

private static MyPlugin plugin;

public static MyPlugin getThis(){

return plugin;

}

I w metodzie onEnable na samym początku

plugin = this;

 

 

Sorry, zawsze muszę się przypierdzielić :D Widzę że kod raczej pisany dla celów prywatnych, bo zwykle wiadomości pobiera się z configu :P

żeby nie było, mój kick:

public class CmdKick implements CommandExecutor {

	@Override
	public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
		if (!sender.hasPermission("ProWarns.kick"))
			return Utils.fixSAndSend(Lang.config.commands.kick.noPermissions, sender, cmd.getName());
		if (args.length == 0)
			return Utils.fixSAndSend(Lang.config.commands.kick.use, sender, cmd.getName());
		String reason = Lang.config.commands.kick.reason, nickname = null;
		int i = 1;
		for (String arg : args) {
			if (i == 1)
				nickname = arg;
			else if (i == 2)
				reason = arg + " ";
			else
				reason += arg + " ";
			i++;
		}
		Player p = Bukkit.getPlayer(nickname);
		if (p == null)
			return Utils.fixSAndSend(Lang.config.commands.kick.noPlayer, sender, cmd.getName());
		p.kickPlayer(Utils.fixString(Lang.config.commands.kick.msg.replace("<%>reason<%>", reason), sender.getName(), cmd.getName()));
		return Utils.fixSAndSend(Lang.config.commands.kick.success.replace("<%>player<%>", nickname).replace("<%>reason<%>", reason), sender, cmd.getName());
	}
}

Powinnam użyć StringBuildera do powodu, ale tak już było wygodniej, może potem się zmieni :D (taka pętla była wygodniejsza w komendach w których jest np po 5/6 argumentów i nie muszą być koniecznie wszystkie, ale tu jest tylko nick i powód)

 

 

No ale tak poza tym to jestem zawiedziona, nie mam się do czego przypierdzielić ;/

Mi to nie przeszkadza że ktoś przypierdzieli się do wszystkiego ^^

Plugin pisałem dla siebie.

Aktualna próba: Postaw serwer mt2 na vps z ubuntu.

  • 4 miesiące temu...
Opublikowano

- Trzeba aktualizować, zmieniać linijki kodu przy najnowszych wersjach bukkita

 

WTF

Opublikowano


Według mnie java zawszę będzie lepsze od skript czy mniej znanego varscript.
 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...