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

DL iRank - autorski tab, topka w gui i wiele więcej! / 1.8


bartzz

Rekomendowane odpowiedzi

Opublikowano

 

Mi na spigot 1.8.6 nie działa. Wywala błąd w konsoli.

Could not load 'plugins/iRank.jar' in folder 'plugins'
org.bukkit.plugin.InvalidPluginException: java.lang.UnsupportedClassVersionError: net/bartzz/irank/RankPlugin : Unsupported major.minor version 52.0
	at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:135) ~[spigot_1.8.6.jar:git-Spigot-044d928-e8c6403]
	at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:329) ~[spigot_1.8.6.jar:git-Spigot-044d928-e8c6403]
	at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:251) [spigot_1.8.6.jar:git-Spigot-044d928-e8c6403]
	at org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugins(CraftServer.java:291) [spigot_1.8.6.jar:git-Spigot-044d928-e8c6403]
	at net.minecraft.server.v1_8_R3.DedicatedServer.init(DedicatedServer.java:198) [spigot_1.8.6.jar:git-Spigot-044d928-e8c6403]
	at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:528) [spigot_1.8.6.jar:git-Spigot-044d928-e8c6403]
	at java.lang.Thread.run(Thread.java:745) [?:1.7.0_95]
Caused by: java.lang.UnsupportedClassVersionError: net/bartzz/irank/RankPlugin : Unsupported major.minor version 52.0
	at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.7.0_95]
	at java.lang.ClassLoader.defineClass(ClassLoader.java:800) ~[?:1.7.0_95]
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[?:1.7.0_95]
	at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) ~[?:1.7.0_95]
	at java.net.URLClassLoader.access$100(URLClassLoader.java:71) ~[?:1.7.0_95]
	at java.net.URLClassLoader$1.run(URLClassLoader.java:361) ~[?:1.7.0_95]
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355) ~[?:1.7.0_95]
	at java.security.AccessController.doPrivileged(Native Method) ~[?:1.7.0_95]
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354) ~[?:1.7.0_95]
	at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:101) ~[spigot_1.8.6.jar:git-Spigot-044d928-e8c6403]
	at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:86) ~[spigot_1.8.6.jar:git-Spigot-044d928-e8c6403]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[?:1.7.0_95]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[?:1.7.0_95]
	at java.lang.Class.forName0(Native Method) ~[?:1.7.0_95]
	at java.lang.Class.forName(Class.java:278) ~[?:1.7.0_95]
	at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:64) ~[spigot_1.8.6.jar:git-Spigot-044d928-e8c6403]
	at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:131) ~[spigot_1.8.6.jar:git-Spigot-044d928-e8c6403]
	... 6 more

Zainstaluj Javę 8 na serwerze i powinno działać. :D

  • Odpowiedzi 117
  • Dodano
  • Ostatniej odpowiedzi
Opublikowano

Puk puk, mogę się wtrącić?

 

YTGuilds by Kamilkime (gówno, ale jednak) https://github.com/Kamilkime/YTGuilds/blob/master/pl/kamilkime/ytguilds/objects/utils/RankChanger.java

public class RankChanger {

	public static double[] getExpectations(Rank rankA, Rank rankB){
		double[] ranks = new double[2];
		double estA = 1.0D / (1.0D + Math.pow(10.0D, (rankB.getRank() - rankA.getRank()) / 400.0D));
	    double estB = 1.0D / (1.0D + Math.pow(10.0D, (rankA.getRank() - rankB.getRank()) / 400.0D));
	    ranks[0] = estA;
	    ranks[1] = estB;
		return ranks;
	}
	
	public static int getConstant(int ranking) {
		if (ranking < 2000)
			return 32;
		if (ranking < 2401)
			return 24;
		return 16;
	}

	public static int[] getNewRankings(Rank rankA, Rank rankB, boolean victoryA) {
		double[] ests = new double[2];
		int[] ret = new int[2];
		ests = getExpectations(rankA, rankB);
		int newRankA = (int)(rankA.getRank() + getConstant(rankA.getRank()) * ((victoryA ? 1 : 0) - ests[0]));
		int newRankB = (int)(rankB.getRank() + getConstant(rankB.getRank()) * ((victoryA ? 0 : 1) - ests[1]));
		ret[0] = Math.round(newRankA);
		ret[1] = Math.round(newRankB);
		return ret;
	}
} 

Twój plugin:

public class RankChanger
{
  public static double[] getExpectations(User rankA, User rankB)
  {
    double[] ranks = new double[2];
    double estA = 1.0D / (1.0D + Math.pow(10.0D, (rankB.getPoints() - rankA.getPoints()) / 400.0D));
    double estB = 1.0D / (1.0D + Math.pow(10.0D, (rankA.getPoints() - rankB.getPoints()) / 400.0D));
    ranks[0] = estA;
    ranks[1] = estB;
    return ranks;
  }

  public static int getConstant(int ranking) {
    if (ranking < 2000)
      return 32;
    if (ranking < 2401)
      return 24;
    return 16;
  }

  public static int[] getNewRankings(User rankA, User rankB, boolean victoryA) {
    double[] ests = new double[2];
    int[] ret = new int[2];
    ests = getExpectations(rankA, rankB);
    int newRankA = (int)(rankA.getPoints() + getConstant(rankA.getPoints()) * ((victoryA ? 1 : 0) - ests[0]));
    int newRankB = (int)(rankB.getPoints() + getConstant(rankB.getPoints()) * ((victoryA ? 0 : 1) - ests[1]));
    ret[0] = Math.round(newRankA);
    ret[1] = Math.round(newRankB);
    return ret;
  }
}

Po drugie,

 

Po co to?

public class AutoSave
  implements Runnable
{
  public void run()
  {
  }
} 

Po trzecie,

public class Messages
{
  private static Messages inst;
  private YamlConfiguration messages;

  public Messages()
  {
    inst = this;
    check();
  }

  private void check() {
    File messagesFile = new File(RankPlugin.getInstance().getDataFolder(), "messages.yml");
    if (!messagesFile.exists()) {
      RankPlugin.getInstance().saveResource("messages.yml", true);
    }

    this.messages = YamlConfiguration.loadConfiguration(messagesFile);
  }

  public String getMessage(String path) {
    if ((this.messages.getString(path).isEmpty()) || (this.messages.getString(path) == null)) {
      return "The path '" + path + "' to message do not exists.";
    }

    return ChatColor.translateAlternateColorCodes('&', this.messages.getString(path));
  }

  public List<String> getList(String path) {
    if ((this.messages.getStringList(path).isEmpty()) || (this.messages.getStringList(path) == null)) {
      return Lists.newArrayList();
    }

    return colorList(this.messages.getStringList(path));
  }

  private List<String> colorList(List<String> array) {
    List toReturn = Lists.newArrayList();
    String s;
    for (Iterator localIterator = array.iterator(); localIterator.hasNext(); toReturn.add(ChatColor.translateAlternateColorCodes('&', s))) s = (String)localIterator.next();
    return toReturn;
  }

  public static Messages getInstance() {
    if (inst != null) return inst;
    return new Messages();
  }
}

Trochę bez sensu, nie lepiej po prostu zrobić pliczek, a potem fajnie ogarnąć to refleksjami, podpatrz sobie 

https://github.com/xVacuum/qGuilds/tree/master/src/java/pl/za/xvacuum/guilds/misc

 

Może i więcej klas, więcej zachodu ale działanie i efekt idealny!

 

@Edit

O k***a, co to jest?

for (Iterator localIterator = array.iterator(); localIterator.hasNext(); toReturn.add(ChatColor.translateAlternateColorCodes('&', s))) s = (String)localIterator.next();

Zerżnięte na ślepo z JD-GUI? Przecież ten kod nie ma prawa bytu. Błagam popraw to ._.

i...

    final User finalUser = user;
    Thread thread = new Thread() {
      public void run() {
        finalUser.getPlayerList().refresh();
      }
    };
    thread.start(); 

To jest ta wielowątkowość co opisywałeś? Aha.

 

­

Moja oficjalna strona! :)

http://socketbyte.pl/ 

Opublikowano

Puk puk, mogę się wtrącić?

 

YTGuilds by Kamilkime (gówno, ale jednak) https://github.com/Kamilkime/YTGuilds/blob/master/pl/kamilkime/ytguilds/objects/utils/RankChanger.java

public class RankChanger {

	public static double[] getExpectations(Rank rankA, Rank rankB){
		double[] ranks = new double[2];
		double estA = 1.0D / (1.0D + Math.pow(10.0D, (rankB.getRank() - rankA.getRank()) / 400.0D));
	    double estB = 1.0D / (1.0D + Math.pow(10.0D, (rankA.getRank() - rankB.getRank()) / 400.0D));
	    ranks[0] = estA;
	    ranks[1] = estB;
		return ranks;
	}
	
	public static int getConstant(int ranking) {
		if (ranking < 2000)
			return 32;
		if (ranking < 2401)
			return 24;
		return 16;
	}

	public static int[] getNewRankings(Rank rankA, Rank rankB, boolean victoryA) {
		double[] ests = new double[2];
		int[] ret = new int[2];
		ests = getExpectations(rankA, rankB);
		int newRankA = (int)(rankA.getRank() + getConstant(rankA.getRank()) * ((victoryA ? 1 : 0) - ests[0]));
		int newRankB = (int)(rankB.getRank() + getConstant(rankB.getRank()) * ((victoryA ? 0 : 1) - ests[1]));
		ret[0] = Math.round(newRankA);
		ret[1] = Math.round(newRankB);
		return ret;
	}
} 

Twój plugin:

public class RankChanger
{
  public static double[] getExpectations(User rankA, User rankB)
  {
    double[] ranks = new double[2];
    double estA = 1.0D / (1.0D + Math.pow(10.0D, (rankB.getPoints() - rankA.getPoints()) / 400.0D));
    double estB = 1.0D / (1.0D + Math.pow(10.0D, (rankA.getPoints() - rankB.getPoints()) / 400.0D));
    ranks[0] = estA;
    ranks[1] = estB;
    return ranks;
  }

  public static int getConstant(int ranking) {
    if (ranking < 2000)
      return 32;
    if (ranking < 2401)
      return 24;
    return 16;
  }

  public static int[] getNewRankings(User rankA, User rankB, boolean victoryA) {
    double[] ests = new double[2];
    int[] ret = new int[2];
    ests = getExpectations(rankA, rankB);
    int newRankA = (int)(rankA.getPoints() + getConstant(rankA.getPoints()) * ((victoryA ? 1 : 0) - ests[0]));
    int newRankB = (int)(rankB.getPoints() + getConstant(rankB.getPoints()) * ((victoryA ? 0 : 1) - ests[1]));
    ret[0] = Math.round(newRankA);
    ret[1] = Math.round(newRankB);
    return ret;
  }
}

Po drugie,

 

Po co to?

public class AutoSave
  implements Runnable
{
  public void run()
  {
  }
} 

Po trzecie,

public class Messages
{
  private static Messages inst;
  private YamlConfiguration messages;

  public Messages()
  {
    inst = this;
    check();
  }

  private void check() {
    File messagesFile = new File(RankPlugin.getInstance().getDataFolder(), "messages.yml");
    if (!messagesFile.exists()) {
      RankPlugin.getInstance().saveResource("messages.yml", true);
    }

    this.messages = YamlConfiguration.loadConfiguration(messagesFile);
  }

  public String getMessage(String path) {
    if ((this.messages.getString(path).isEmpty()) || (this.messages.getString(path) == null)) {
      return "The path '" + path + "' to message do not exists.";
    }

    return ChatColor.translateAlternateColorCodes('&', this.messages.getString(path));
  }

  public List<String> getList(String path) {
    if ((this.messages.getStringList(path).isEmpty()) || (this.messages.getStringList(path) == null)) {
      return Lists.newArrayList();
    }

    return colorList(this.messages.getStringList(path));
  }

  private List<String> colorList(List<String> array) {
    List toReturn = Lists.newArrayList();
    String s;
    for (Iterator localIterator = array.iterator(); localIterator.hasNext(); toReturn.add(ChatColor.translateAlternateColorCodes('&', s))) s = (String)localIterator.next();
    return toReturn;
  }

  public static Messages getInstance() {
    if (inst != null) return inst;
    return new Messages();
  }
}

Trochę bez sensu, nie lepiej po prostu zrobić pliczek, a potem fajnie ogarnąć to refleksjami, podpatrz sobie 

https://github.com/xVacuum/qGuilds/tree/master/src/java/pl/za/xvacuum/guilds/misc

 

Może i więcej klas, więcej zachodu ale działanie i efekt idealny!

 

@Edit

O k***a, co to jest?

for (Iterator localIterator = array.iterator(); localIterator.hasNext(); toReturn.add(ChatColor.translateAlternateColorCodes('&', s))) s = (String)localIterator.next();

Zerżnięte na ślepo z JD-GUI? Przecież ten kod nie ma prawa bytu. Błagam popraw to ._.

i...

    final User finalUser = user;
    Thread thread = new Thread() {
      public void run() {
        finalUser.getPlayerList().refresh();
      }
    };
    thread.start(); 

To jest ta wielowątkowość co opisywałeś? Aha.

­

Ziomeczku, Ciebie akurat proszę się o nieudzielanie się, bo jak widzę Twoje kody to płaczę i śmieję się razem, np. qGuilds. :D

Ad1. System echo, nie chciało mi się bawić więc wziąłem, po to on jest.

Ad2. Gdyby nie utrata projektu to prawdopodobnie byłby tam task od automatycznego zapisu i wrzucany do ThreadPool'a, no ale pisałem, wielowątkowość tutaj leży.

Ad3. Jakbyś miał jakiekolwiek pojęcie, to refleksje nie mają prawa bytu w Bukkicie, są zbyt wolne. Już jak się uczepisz to na upartego można to ogarnąć JavaAssist'em.

Ad4. Używasz ch*jowego dekompilatora to się nie dziw.

Ad5. Wielowątkowość tutaj leży tak jak opisywałem, zarządzanie wątkami do wyjebania, wątki powinny na starcie zostać utworzone, i w onEnable() zainicjowane pole ThreadPoolExecutor'a. Potem tylko tworzysz sobie taski i wrzucasz je do ThreadPool'a, i proszę, śmiga pięknie. 

Pozdrawiam wielkiego pana Javę, który oczywiście zawsze wie lepiej i chwali się kodem qEssentials, pozderki.

Opublikowano

Puk puk, mogę się wtrącić?

 

YTGuilds by Kamilkime (gówno, ale jednak) https://github.com/Kamilkime/YTGuilds/blob/master/pl/kamilkime/ytguilds/objects/utils/RankChanger.java

public class RankChanger {	public static double[] getExpectations(Rank rankA, Rank rankB){		double[] ranks = new double[2];		double estA = 1.0D / (1.0D + Math.pow(10.0D, (rankB.getRank() - rankA.getRank()) / 400.0D));	    double estB = 1.0D / (1.0D + Math.pow(10.0D, (rankA.getRank() - rankB.getRank()) / 400.0D));	    ranks[0] = estA;	    ranks[1] = estB;		return ranks;	}		public static int getConstant(int ranking) {		if (ranking < 2000)			return 32;		if (ranking < 2401)			return 24;		return 16;	}	public static int[] getNewRankings(Rank rankA, Rank rankB, boolean victoryA) {		double[] ests = new double[2];		int[] ret = new int[2];		ests = getExpectations(rankA, rankB);		int newRankA = (int)(rankA.getRank() + getConstant(rankA.getRank()) * ((victoryA ? 1 : 0) - ests[0]));		int newRankB = (int)(rankB.getRank() + getConstant(rankB.getRank()) * ((victoryA ? 0 : 1) - ests[1]));		ret[0] = Math.round(newRankA);		ret[1] = Math.round(newRankB);		return ret;	}}
Twój plugin:
public class RankChanger{  public static double[] getExpectations(User rankA, User rankB)  {    double[] ranks = new double[2];    double estA = 1.0D / (1.0D + Math.pow(10.0D, (rankB.getPoints() - rankA.getPoints()) / 400.0D));    double estB = 1.0D / (1.0D + Math.pow(10.0D, (rankA.getPoints() - rankB.getPoints()) / 400.0D));    ranks[0] = estA;    ranks[1] = estB;    return ranks;  }  public static int getConstant(int ranking) {    if (ranking < 2000)      return 32;    if (ranking < 2401)      return 24;    return 16;  }  public static int[] getNewRankings(User rankA, User rankB, boolean victoryA) {    double[] ests = new double[2];    int[] ret = new int[2];    ests = getExpectations(rankA, rankB);    int newRankA = (int)(rankA.getPoints() + getConstant(rankA.getPoints()) * ((victoryA ? 1 : 0) - ests[0]));    int newRankB = (int)(rankB.getPoints() + getConstant(rankB.getPoints()) * ((victoryA ? 0 : 1) - ests[1]));    ret[0] = Math.round(newRankA);    ret[1] = Math.round(newRankB);    return ret;  }}
Po drugie,

 

Po co to?

public class AutoSave  implements Runnable{  public void run()  {  }}
Po trzecie,
public class Messages{  private static Messages inst;  private YamlConfiguration messages;  public Messages()  {    inst = this;    check();  }  private void check() {    File messagesFile = new File(RankPlugin.getInstance().getDataFolder(), "messages.yml");    if (!messagesFile.exists()) {      RankPlugin.getInstance().saveResource("messages.yml", true);    }    this.messages = YamlConfiguration.loadConfiguration(messagesFile);  }  public String getMessage(String path) {    if ((this.messages.getString(path).isEmpty()) || (this.messages.getString(path) == null)) {      return "The path '" + path + "' to message do not exists.";    }    return ChatColor.translateAlternateColorCodes('&', this.messages.getString(path));  }  public List<String> getList(String path) {    if ((this.messages.getStringList(path).isEmpty()) || (this.messages.getStringList(path) == null)) {      return Lists.newArrayList();    }    return colorList(this.messages.getStringList(path));  }  private List<String> colorList(List<String> array) {    List toReturn = Lists.newArrayList();    String s;    for (Iterator localIterator = array.iterator(); localIterator.hasNext(); toReturn.add(ChatColor.translateAlternateColorCodes('&', s))) s = (String)localIterator.next();    return toReturn;  }  public static Messages getInstance() {    if (inst != null) return inst;    return new Messages();  }}
Trochę bez sensu, nie lepiej po prostu zrobić pliczek, a potem fajnie ogarnąć to refleksjami, podpatrz sobie

https://github.com/xVacuum/qGuilds/tree/master/src/java/pl/za/xvacuum/guilds/misc

 

Może i więcej klas, więcej zachodu ale działanie i efekt idealny!

 

@Edit

O k***a, co to jest?

for (Iterator localIterator = array.iterator(); localIterator.hasNext(); toReturn.add(ChatColor.translateAlternateColorCodes('&', s))) s = (String)localIterator.next();
Zerżnięte na ślepo z JD-GUI? Przecież ten kod nie ma prawa bytu. Błagam popraw to ._.

i...

final User finalUser = user;    Thread thread = new Thread() {      public void run() {        finalUser.getPlayerList().refresh();      }    };    thread.start();
To jest ta wielowątkowość co opisywałeś? Aha.

­

Ziomeczku, Ciebie akurat proszę się o nieudzielanie się, bo jak widzę Twoje kody to płaczę i śmieję się razem, np. qGuilds. :D

Ad1. System echo, nie chciało mi się bawić więc wziąłem, po to on jest.

Ad2. Gdyby nie utrata projektu to prawdopodobnie byłby tam task od automatycznego zapisu i wrzucany do ThreadPool'a, no ale pisałem, wielowątkowość tutaj leży.

Ad3. Jakbyś miał jakiekolwiek pojęcie, to refleksje nie mają prawa bytu w Bukkicie, są zbyt wolne. Już jak się uczepisz to na upartego można to ogarnąć JavaAssist'em.

Ad4. Używasz ch*jowego dekompilatora to się nie dziw.

Ad5. Wielowątkowość tutaj leży tak jak opisywałem, zarządzanie wątkami do wyjebania, wątki powinny na starcie zostać utworzone, i w onEnable() zainicjowane pole ThreadPoolExecutor'a. Potem tylko tworzysz sobie taski i wrzucasz je do ThreadPool'a, i proszę, śmiga pięknie.

Pozdrawiam wielkiego pana Javę, który oczywiście zawsze wie lepiej i chwali się kodem qEssentials, pozderki.

No i proszę, jeszcze tylko ograniczyć najazdy na mnie i mamy perfekcyjną odpowiedź o jaką mi chodziło, brawo! Zazwyczaj dostaje podobne odpowiedzi, tyle że bez tych mądrych kawałków.

 

Również pozdrawiam

 

PS; wybacz za stylistykę tamtego postu, po prostu gdy pisze do ludzi których nie znam, staram się znizac do poziomu większości ludzi na tym forum, a tutaj mamy troszkę bardziej kompetentną osobę ;)

Moja oficjalna strona! :)

http://socketbyte.pl/ 

Opublikowano

 

 

Puk puk, mogę się wtrącić?

 

YTGuilds by Kamilkime (gówno, ale jednak) https://github.com/Kamilkime/YTGuilds/blob/master/pl/kamilkime/ytguilds/objects/utils/RankChanger.java

public class RankChanger {

	public static double[] getExpectations(Rank rankA, Rank rankB){
		double[] ranks = new double[2];
		double estA = 1.0D / (1.0D + Math.pow(10.0D, (rankB.getRank() - rankA.getRank()) / 400.0D));
	    double estB = 1.0D / (1.0D + Math.pow(10.0D, (rankA.getRank() - rankB.getRank()) / 400.0D));
	    ranks[0] = estA;
	    ranks[1] = estB;
		return ranks;
	}
	
	public static int getConstant(int ranking) {
		if (ranking < 2000)
			return 32;
		if (ranking < 2401)
			return 24;
		return 16;
	}

	public static int[] getNewRankings(Rank rankA, Rank rankB, boolean victoryA) {
		double[] ests = new double[2];
		int[] ret = new int[2];
		ests = getExpectations(rankA, rankB);
		int newRankA = (int)(rankA.getRank() + getConstant(rankA.getRank()) * ((victoryA ? 1 : 0) - ests[0]));
		int newRankB = (int)(rankB.getRank() + getConstant(rankB.getRank()) * ((victoryA ? 0 : 1) - ests[1]));
		ret[0] = Math.round(newRankA);
		ret[1] = Math.round(newRankB);
		return ret;
	}
}
Twój plugin:
public class RankChanger
{
  public static double[] getExpectations(User rankA, User rankB)
  {
    double[] ranks = new double[2];
    double estA = 1.0D / (1.0D + Math.pow(10.0D, (rankB.getPoints() - rankA.getPoints()) / 400.0D));
    double estB = 1.0D / (1.0D + Math.pow(10.0D, (rankA.getPoints() - rankB.getPoints()) / 400.0D));
    ranks[0] = estA;
    ranks[1] = estB;
    return ranks;
  }

  public static int getConstant(int ranking) {
    if (ranking < 2000)
      return 32;
    if (ranking < 2401)
      return 24;
    return 16;
  }

  public static int[] getNewRankings(User rankA, User rankB, boolean victoryA) {
    double[] ests = new double[2];
    int[] ret = new int[2];
    ests = getExpectations(rankA, rankB);
    int newRankA = (int)(rankA.getPoints() + getConstant(rankA.getPoints()) * ((victoryA ? 1 : 0) - ests[0]));
    int newRankB = (int)(rankB.getPoints() + getConstant(rankB.getPoints()) * ((victoryA ? 0 : 1) - ests[1]));
    ret[0] = Math.round(newRankA);
    ret[1] = Math.round(newRankB);
    return ret;
  }
}
Po drugie,

 

Po co to?

public class AutoSave
  implements Runnable
{
  public void run()
  {
  }
}
Po trzecie,
public class Messages
{
  private static Messages inst;
  private YamlConfiguration messages;

  public Messages()
  {
    inst = this;
    check();
  }

  private void check() {
    File messagesFile = new File(RankPlugin.getInstance().getDataFolder(), "messages.yml");
    if (!messagesFile.exists()) {
      RankPlugin.getInstance().saveResource("messages.yml", true);
    }

    this.messages = YamlConfiguration.loadConfiguration(messagesFile);
  }

  public String getMessage(String path) {
    if ((this.messages.getString(path).isEmpty()) || (this.messages.getString(path) == null)) {
      return "The path '" + path + "' to message do not exists.";
    }

    return ChatColor.translateAlternateColorCodes('&', this.messages.getString(path));
  }

  public List<String> getList(String path) {
    if ((this.messages.getStringList(path).isEmpty()) || (this.messages.getStringList(path) == null)) {
      return Lists.newArrayList();
    }

    return colorList(this.messages.getStringList(path));
  }

  private List<String> colorList(List<String> array) {
    List toReturn = Lists.newArrayList();
    String s;
    for (Iterator localIterator = array.iterator(); localIterator.hasNext(); toReturn.add(ChatColor.translateAlternateColorCodes('&', s))) s = (String)localIterator.next();
    return toReturn;
  }

  public static Messages getInstance() {
    if (inst != null) return inst;
    return new Messages();
  }
}
Trochę bez sensu, nie lepiej po prostu zrobić pliczek, a potem fajnie ogarnąć to refleksjami, podpatrz sobie

https://github.com/xVacuum/qGuilds/tree/master/src/java/pl/za/xvacuum/guilds/misc

 

Może i więcej klas, więcej zachodu ale działanie i efekt idealny!

 

@Edit

O k***a, co to jest?

for (Iterator localIterator = array.iterator(); localIterator.hasNext(); toReturn.add(ChatColor.translateAlternateColorCodes('&', s))) s = (String)localIterator.next();
Zerżnięte na ślepo z JD-GUI? Przecież ten kod nie ma prawa bytu. Błagam popraw to ._.

i...

    final User finalUser = user;
    Thread thread = new Thread() {
      public void run() {
        finalUser.getPlayerList().refresh();
      }
    };
    thread.start();
To jest ta wielowątkowość co opisywałeś? Aha.

­

 

Ziomeczku, Ciebie akurat proszę się o nieudzielanie się, bo jak widzę Twoje kody to płaczę i śmieję się razem, np. qGuilds. :D

Ad1. System echo, nie chciało mi się bawić więc wziąłem, po to on jest.

Ad2. Gdyby nie utrata projektu to prawdopodobnie byłby tam task od automatycznego zapisu i wrzucany do ThreadPool'a, no ale pisałem, wielowątkowość tutaj leży.

Ad3. Jakbyś miał jakiekolwiek pojęcie, to refleksje nie mają prawa bytu w Bukkicie, są zbyt wolne. Już jak się uczepisz to na upartego można to ogarnąć JavaAssist'em.

Ad4. Używasz ch*jowego dekompilatora to się nie dziw.

Ad5. Wielowątkowość tutaj leży tak jak opisywałem, zarządzanie wątkami do wyjebania, wątki powinny na starcie zostać utworzone, i w onEnable() zainicjowane pole ThreadPoolExecutor'a. Potem tylko tworzysz sobie taski i wrzucasz je do ThreadPool'a, i proszę, śmiga pięknie.

Pozdrawiam wielkiego pana Javę, który oczywiście zawsze wie lepiej i chwali się kodem qEssentials, pozderki.

 

No i proszę, jeszcze tylko ograniczyć najazdy na mnie i mamy perfekcyjną odpowiedź o jaką mi chodziło, brawo! Zazwyczaj dostaje podobne odpowiedzi, tyle że bez tych mądrych tekstów.

 

Również pozdrawiam

 

Nie chodziło mi o to, aby na Ciebie "najechać", po prostu denerwujące jest jak uwagi zwraca Ci osoba, która robi takie byki, że wiesz.. 

W dodatku podajesz mi gorsze rozwiązania.. :D

I sorry, jak Cię to uraziło, ale byłem pod wpływem emocji. A plugin mało optymalny, wiem o tym.

Opublikowano

Puk puk, mogę się wtrącić?

 

YTGuilds by Kamilkime (gówno, ale jednak) https://github.com/Kamilkime/YTGuilds/blob/master/pl/kamilkime/ytguilds/objects/utils/RankChanger.java

public class RankChanger {

	public static double[] getExpectations(Rank rankA, Rank rankB){
		double[] ranks = new double[2];
		double estA = 1.0D / (1.0D + Math.pow(10.0D, (rankB.getRank() - rankA.getRank()) / 400.0D));
	    double estB = 1.0D / (1.0D + Math.pow(10.0D, (rankA.getRank() - rankB.getRank()) / 400.0D));
	    ranks[0] = estA;
	    ranks[1] = estB;
		return ranks;
	}
	
	public static int getConstant(int ranking) {
		if (ranking < 2000)
			return 32;
		if (ranking < 2401)
			return 24;
		return 16;
	}

	public static int[] getNewRankings(Rank rankA, Rank rankB, boolean victoryA) {
		double[] ests = new double[2];
		int[] ret = new int[2];
		ests = getExpectations(rankA, rankB);
		int newRankA = (int)(rankA.getRank() + getConstant(rankA.getRank()) * ((victoryA ? 1 : 0) - ests[0]));
		int newRankB = (int)(rankB.getRank() + getConstant(rankB.getRank()) * ((victoryA ? 0 : 1) - ests[1]));
		ret[0] = Math.round(newRankA);
		ret[1] = Math.round(newRankB);
		return ret;
	}
}
Twój plugin:
public class RankChanger
{
  public static double[] getExpectations(User rankA, User rankB)
  {
    double[] ranks = new double[2];
    double estA = 1.0D / (1.0D + Math.pow(10.0D, (rankB.getPoints() - rankA.getPoints()) / 400.0D));
    double estB = 1.0D / (1.0D + Math.pow(10.0D, (rankA.getPoints() - rankB.getPoints()) / 400.0D));
    ranks[0] = estA;
    ranks[1] = estB;
    return ranks;
  }

  public static int getConstant(int ranking) {
    if (ranking < 2000)
      return 32;
    if (ranking < 2401)
      return 24;
    return 16;
  }

  public static int[] getNewRankings(User rankA, User rankB, boolean victoryA) {
    double[] ests = new double[2];
    int[] ret = new int[2];
    ests = getExpectations(rankA, rankB);
    int newRankA = (int)(rankA.getPoints() + getConstant(rankA.getPoints()) * ((victoryA ? 1 : 0) - ests[0]));
    int newRankB = (int)(rankB.getPoints() + getConstant(rankB.getPoints()) * ((victoryA ? 0 : 1) - ests[1]));
    ret[0] = Math.round(newRankA);
    ret[1] = Math.round(newRankB);
    return ret;
  }
}
Po drugie,

 

Po co to?

public class AutoSave
  implements Runnable
{
  public void run()
  {
  }
}
Po trzecie,
public class Messages
{
  private static Messages inst;
  private YamlConfiguration messages;

  public Messages()
  {
    inst = this;
    check();
  }

  private void check() {
    File messagesFile = new File(RankPlugin.getInstance().getDataFolder(), "messages.yml");
    if (!messagesFile.exists()) {
      RankPlugin.getInstance().saveResource("messages.yml", true);
    }

    this.messages = YamlConfiguration.loadConfiguration(messagesFile);
  }

  public String getMessage(String path) {
    if ((this.messages.getString(path).isEmpty()) || (this.messages.getString(path) == null)) {
      return "The path '" + path + "' to message do not exists.";
    }

    return ChatColor.translateAlternateColorCodes('&', this.messages.getString(path));
  }

  public List<String> getList(String path) {
    if ((this.messages.getStringList(path).isEmpty()) || (this.messages.getStringList(path) == null)) {
      return Lists.newArrayList();
    }

    return colorList(this.messages.getStringList(path));
  }

  private List<String> colorList(List<String> array) {
    List toReturn = Lists.newArrayList();
    String s;
    for (Iterator localIterator = array.iterator(); localIterator.hasNext(); toReturn.add(ChatColor.translateAlternateColorCodes('&', s))) s = (String)localIterator.next();
    return toReturn;
  }

  public static Messages getInstance() {
    if (inst != null) return inst;
    return new Messages();
  }
}
Trochę bez sensu, nie lepiej po prostu zrobić pliczek, a potem fajnie ogarnąć to refleksjami, podpatrz sobie

https://github.com/xVacuum/qGuilds/tree/master/src/java/pl/za/xvacuum/guilds/misc

 

Może i więcej klas, więcej zachodu ale działanie i efekt idealny!

 

@"Edit"

O k***a, co to jest?

for (Iterator localIterator = array.iterator(); localIterator.hasNext(); toReturn.add(ChatColor.translateAlternateColorCodes('&', s))) s = (String)localIterator.next();
Zerżnięte na ślepo z JD-GUI? Przecież ten kod nie ma prawa bytu. Błagam popraw to ._.

i...

    final User finalUser = user;
    Thread thread = new Thread() {
      public void run() {
        finalUser.getPlayerList().refresh();
      }
    };
    thread.start();
To jest ta wielowątkowość co opisywałeś? Aha.

­

 

Ziomeczku, Ciebie akurat proszę się o nieudzielanie się, bo jak widzę Twoje kody to płaczę i śmieję się razem, np. qGuilds. :D

Ad1. System echo, nie chciało mi się bawić więc wziąłem, po to on jest.

Ad2. Gdyby nie utrata projektu to prawdopodobnie byłby tam task od automatycznego zapisu i wrzucany do ThreadPool'a, no ale pisałem, wielowątkowość tutaj leży.

Ad3. Jakbyś miał jakiekolwiek pojęcie, to refleksje nie mają prawa bytu w Bukkicie, są zbyt wolne. Już jak się uczepisz to na upartego można to ogarnąć JavaAssist'em.

Ad4. Używasz ch*jowego dekompilatora to się nie dziw.

Ad5. Wielowątkowość tutaj leży tak jak opisywałem, zarządzanie wątkami do wyjebania, wątki powinny na starcie zostać utworzone, i w onEnable() zainicjowane pole ThreadPoolExecutor'a. Potem tylko tworzysz sobie taski i wrzucasz je do ThreadPool'a, i proszę, śmiga pięknie.

Pozdrawiam wielkiego pana Javę, który oczywiście zawsze wie lepiej i chwali się kodem qEssentials, pozderki.

 

No i proszę, jeszcze tylko ograniczyć najazdy na mnie i mamy perfekcyjną odpowiedź o jaką mi chodziło, brawo! Zazwyczaj dostaje podobne odpowiedzi, tyle że bez tych mądrych tekstów.

 

Również pozdrawiam

 

Nie chodziło mi o to, aby na Ciebie "najechać", po prostu denerwujące jest jak uwagi zwraca Ci osoba, która robi takie byki, że wiesz..

W dodatku podajesz mi gorsze rozwiązania.. :D

I sorry, jak Cię to uraziło, ale byłem pod wpływem emocji. A plugin mało optymalny, wiem o tym.

Nie no, nie ma sprawy. Sam uważam że moje stare pluginy to okropny shit, bardziej operuje w c# niż w tym jezyku. Poza tym spójrz na datę różnych postów w których to prawda, chwalilem się tym. Staram się już tego nie robić, a przynajmniej nie tamtym. I nie wiem czemu boisz się refleksji, co w nich bylo takiego złego, wybacz ale tak jak wspominałem teraz jadę na c# więc nie kojarzę faktów.

 

Pozdrawiam i dobrej nocy życzę.

Moja oficjalna strona! :)

http://socketbyte.pl/ 

Opublikowano

Jednak okazałeś się być normalną osobą, przepraszam za tamte posty :)
Refleksje są bardzo wolne, i jest to zuooo! 
Nie polecam używać, ale jak musisz, bo w końcu Java zmusza, to ogarnij sobie JavaAssist.

Jest o wiele szybszy. :D

 

Również pozdrawiam i życzę dobranoc. ;)

  • 1 miesiąc temu...
Opublikowano

Plugin jest okej myślę ze plugin będzie dopracowywany ! :)

Służę pomocą również innym użytkownikom :) jak potrzeba pomocy zapraszam na pw na pewno pomogę

Opublikowano

@bartzz

 

 

Refleksje sa po to aby ich uzywac, mowienie ze sa wolne to tak jakbys mowil ze obiektow nie wolno uyzwac bo zzeraja duzo pamieci, bez sensu argument.

Opublikowano

@bartzz

 

 

Refleksje sa po to aby ich uzywac, mowienie ze sa wolne to tak jakbys mowil ze obiektow nie wolno uyzwac bo zzeraja duzo pamieci, bez sensu argument.

Tiaaa, może w czystej Javie i ta, ale w Bukkit'cie? Jedynie, jeżeli lepszego wyjścia nie ma.

 

Bez sensu to jest Twoje najeżdżanie na mnie, ale po Twoich postach, widzę że nie tylko ja jestem ofiarą Twojego buractwa.

Pozdro! :D

  • 2 tygodnie później...
  • 2 tygodnie później...
Opublikowano

@bartzz

Mogę użyć zmiennych do iRanku do mojego tabu w qEssentials? Po prostu dodam dodatkowe zmienne które będą zwracały twoje dane. 

Bierz co chcesz.

 

­

Opublikowano

@AdamGrzegorz nie ma to jak tab w toolsach ;p

 

A co do pluginu to rzeczywiście na wersji 1.7 miałby jeszcze większą popularność no ale cóż...

 

Nie będę żył przeszłością :) poproscie kogoś innego.

Szkoda

Veni, vidi, vici

I came, I saw, I conqered

Opublikowano

@AdamGrzegorz nie ma to jak tab w toolsach ;p

 

A co do pluginu to rzeczywiście na wersji 1.7 miałby jeszcze większą popularność no ale cóż...

 

Nie będę żył przeszłością :) poproscie kogoś innego.

Szkoda
Według wyników głosowań wyszło na to, że większość woli na 1.9
Opublikowano

 

@AdamGrzegorz nie ma to jak tab w toolsach ;p

 

A co do pluginu to rzeczywiście na wersji 1.7 miałby jeszcze większą popularność no ale cóż...

Nie będę żył przeszłością :) poproscie kogoś innego.

Szkoda
Według wyników głosowań wyszło na to, że większość woli na 1.9

 

To wygada na to że ktoś bardzo chciał plugin na 1.9 i robił multikonta na mpc :p

Veni, vidi, vici

I came, I saw, I conqered

Opublikowano

@AdamGrzegorz nie ma to jak tab w toolsach ;p

 

A co do pluginu to rzeczywiście na wersji 1.7 miałby jeszcze większą popularność no ale cóż...

 

Nie będę żył przeszłością :) poproscie kogoś innego.

Szkoda

Coś nie tak? Może nie każdy ma te jebane gildie a chciałby mieć tab na 1.9...

 

 

// dobra wiem, i tak każdy ma gildie.

 

­

Moja oficjalna strona! :)

http://socketbyte.pl/ 

Opublikowano

 

@AdamGrzegorz nie ma to jak tab w toolsach ;p

 

A co do pluginu to rzeczywiście na wersji 1.7 miałby jeszcze większą popularność no ale cóż...

 

Nie będę żył przeszłością :) poproscie kogoś innego.

Szkoda

Coś nie tak? Może nie każdy ma te jebane gildie a chciałby mieć tab na 1.9...

 

 

// dobra wiem, i tak każdy ma gildie.

 

­

 

Zamiast taba do toolsów zrobiłbyś coś oryginalniejszego a nie ciągle Gildie, Toolsy , Gildie, Toolsy.

Może rozbudowany plugin RealLife?

I nie narzucam Ci co masz robić tylko sugeruję.

 

@antioldisowyodstraszacz

Czy mozesz dodac do pladzinu komendy @?

Bardzo by sie przydoły

Jak tok to kiedy

Veni, vidi, vici

I came, I saw, I conqered

Opublikowano

 

 

@AdamGrzegorz nie ma to jak tab w toolsach ;p

 

A co do pluginu to rzeczywiście na wersji 1.7 miałby jeszcze większą popularność no ale cóż...

 

Nie będę żył przeszłością :) poproscie kogoś innego.

Szkoda

Coś nie tak? Może nie każdy ma te jebane gildie a chciałby mieć tab na 1.9...

 

 

// dobra wiem, i tak każdy ma gildie.

 

­

 

Zamiast taba do toolsów zrobiłbyś coś oryginalniejszego a nie ciągle Gildie, Toolsy , Gildie, Toolsy.

Może rozbudowany plugin RealLife?

I nie narzucam Ci co masz robić tylko sugeruję.

 

@antioldisowyodstraszacz

Czy mozesz dodac do pladzinu komendy @?

Bardzo by sie przydoły

Jak tok to kiedy

 

Który i tak nikt nie użyje. Takie są realia. 

Chcieli reaktywacji chujowego qEssentials, to im robię, a znam już sporo osób które chcą ten plugin i na niego czekają więc...

 

 

­

Moja oficjalna strona! :)

http://socketbyte.pl/ 

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...