Add versionDependantCall, See #144 BauSystem #80
@ -23,7 +23,6 @@ import com.google.common.io.ByteArrayDataInput;
|
||||
import com.google.common.io.ByteStreams;
|
||||
import de.steamwar.comms.handlers.BungeeHandler;
|
||||
import de.steamwar.comms.handlers.InventoryHandler;
|
||||
import de.steamwar.core.Core;
|
||||
import de.steamwar.core.VersionedRunnable;
|
||||
import de.steamwar.sql.*;
|
||||
import org.bukkit.Bukkit;
|
||||
@ -47,7 +46,7 @@ public class BungeeReceiver implements PluginMessageListener {
|
||||
UUID uuid = SteamwarUser.get(byteArrayDataInput.readInt()).getUUID();
|
||||
if(Bukkit.getPlayer(uuid).isOnline()) {
|
||||
Player player = Bukkit.getPlayer(uuid);
|
||||
VersionedRunnable.versionDependantCall(new VersionedRunnable(() -> BungeeReceiver_8.playPling(player), 8),
|
||||
VersionedRunnable.call(new VersionedRunnable(() -> BungeeReceiver_8.playPling(player), 8),
|
||||
new VersionedRunnable(() -> BungeeReceiver_9.playpling(player), 9));
|
||||
|
||||
}
|
||||
|
||||
|
@ -82,5 +82,4 @@ public class Core extends JavaPlugin{
|
||||
private static void setInstance(Core instance) {
|
||||
Core.instance = instance;
|
||||
}
|
||||
|
||||
}
|
||||
Lixfel
hat
Echt tolle nötige Newline! Echt tolle nötige Newline!
|
||||
|
@ -71,7 +71,7 @@ public class TPSWatcher {
|
||||
}
|
||||
|
||||
private static double[] getSpigotTPS() {
|
||||
return VersionedCallable.versionDependantCall(new VersionedCallable<>(SpigotTPS_8::getTps, 8),
|
||||
return VersionedCallable.call(new VersionedCallable<>(SpigotTPS_8::getTps, 8),
|
||||
new VersionedCallable<>(SpigotTPS_9::getTps, 9),
|
||||
new VersionedCallable<>(SpigotTPS_10::getTps, 10),
|
||||
new VersionedCallable<>(SpigotTPS_12::getTps, 12),
|
||||
|
@ -35,15 +35,14 @@ public class VersionedCallable<T> {
|
||||
return exceptionlessCallable.call();
|
||||
}
|
||||
|
||||
public static <T> T versionDependantCall(VersionedCallable<T>... versionedCallables) {
|
||||
int version = Core.getVersion();
|
||||
public static <T> T call(VersionedCallable<T>... versionedCallables) {
|
||||
Lixfel
hat
Könnte man auch einfach in call umbenennen, weil es ist ja schon durch den Klassennamen klar, dass es versionsabhängig ist. Könnte man auch einfach in call umbenennen, weil es ist ja schon durch den Klassennamen klar, dass es versionsabhängig ist.
|
||||
for (int i = versionedCallables.length - 1; i >= 0; i--) {
|
||||
Lixfel
hat
Du musst die version nicht zwischenspeichern, Core.getVersion() ist kostenlos. Du musst die version nicht zwischenspeichern, Core.getVersion() ist kostenlos.
|
||||
VersionedCallable<T> versionedCallable = versionedCallables[i];
|
||||
Lixfel
hat
Kann man nicht einfach einen reverse-iterator verwenden? Wäre wesentlich sauberer Kann man nicht einfach einen reverse-iterator verwenden? Wäre wesentlich sauberer
YoyoNow
hat
Ich glaube nicht so ganz Ich glaube nicht so ganz
YoyoNow
hat
Außerdem wäre ein Reverse-Iterator wieder ein Objekt mehr. Ich glaube die einfache Schleife reicht da. Außerdem wäre ein Reverse-Iterator wieder ein Objekt mehr. Ich glaube die einfache Schleife reicht da.
|
||||
if (version >= versionedCallable.minVersion || i == 0) {
|
||||
if (Core.getVersion() >= versionedCallable.minVersion) {
|
||||
return versionedCallable.call();
|
||||
Lixfel
hat
Kein überprüfen auf i == 0 hier! Kein überprüfen auf i == 0 hier!
YoyoNow
hat
Wenn ich dies nicht mache, können NullPointerExceptions fliegen! Wenn ich dies nicht mache, können NullPointerExceptions fliegen!
Lixfel
hat
Bitte erstmal weiterlesen! Ja! Wenn hier nichts zutrifft, ist das ein Fehler! Bitte erstmal weiterlesen! Ja! Wenn hier nichts zutrifft, ist das ein Fehler!
YoyoNow
hat
Habe ich ja jetzt schon behoben! Habe ich ja jetzt schon behoben!
|
||||
}
|
||||
}
|
||||
return null;
|
||||
throw new SecurityException();
|
||||
}
|
||||
Lixfel
hat
Wird nie aufgerufen & gefällt mir nicht. Wenn diese Zeile erreicht wird, ist das ein Fehler und sollte auch entsprechend geworfen werden (als Programmierer, also Silent fehler, z.B. SecurityException) Wird nie aufgerufen & gefällt mir nicht. Wenn diese Zeile erreicht wird, ist das ein Fehler und sollte auch entsprechend geworfen werden (als Programmierer, also Silent fehler, z.B. SecurityException)
|
||||
|
||||
}
|
||||
|
@ -35,11 +35,10 @@ public class VersionedRunnable {
|
||||
runnable.run();
|
||||
}
|
||||
|
||||
public static void versionDependantCall(VersionedRunnable... versionedRunnables) {
|
||||
int version = Core.getVersion();
|
||||
public static void call(VersionedRunnable... versionedRunnables) {
|
||||
for (int i = versionedRunnables.length - 1; i >= 0; i--) {
|
||||
VersionedRunnable versionedRunnable = versionedRunnables[i];
|
||||
Lixfel
hat
Siehe VersionedCallable. Siehe VersionedCallable.
|
||||
if (version >= versionedRunnable.minVersion) {
|
||||
if (Core.getVersion() >= versionedRunnable.minVersion) {
|
||||
versionedRunnable.run();
|
||||
return;
|
||||
}
|
||||
|
@ -72,7 +72,7 @@ public class ChunkListener {
|
||||
}
|
||||
|
||||
public static void sendChunk(Player p, int chunkX, int chunkZ){
|
||||
VersionedRunnable.versionDependantCall(new VersionedRunnable(() -> Chunk_8.sendChunk(p, chunkX, chunkZ), 8),
|
||||
VersionedRunnable.call(new VersionedRunnable(() -> Chunk_8.sendChunk(p, chunkX, chunkZ), 8),
|
||||
new VersionedRunnable(() -> Chunk_9.sendChunk(p, chunkX, chunkZ), 9),
|
||||
new VersionedRunnable(() -> Chunk_10.sendChunk(p, chunkX, chunkZ), 10),
|
||||
new VersionedRunnable(() -> Chunk_12.sendChunk(p, chunkX, chunkZ), 12),
|
||||
|
@ -21,7 +21,6 @@ package de.steamwar.inventory;
|
||||
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonObject;
|
||||
import de.steamwar.core.Core;
|
||||
import de.steamwar.core.VersionedCallable;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
@ -45,7 +44,7 @@ public class SWItem {
|
||||
|
||||
public static SWItem getPlayerSkull(String playerName){
|
||||
SWItem p = new SWItem();
|
||||
ItemStack head = VersionedCallable.versionDependantCall(new VersionedCallable<>(() -> SWItem_8.setSkullOwner(playerName), 8),
|
||||
ItemStack head = VersionedCallable.call(new VersionedCallable<>(() -> SWItem_8.setSkullOwner(playerName), 8),
|
||||
new VersionedCallable<>(() -> SWItem_14.setSkullOwner(playerName), 14));
|
||||
p.setItemStack(head);
|
||||
return p;
|
||||
@ -53,7 +52,7 @@ public class SWItem {
|
||||
|
||||
public static Material getMaterial(String material){
|
||||
try{
|
||||
return VersionedCallable.versionDependantCall(new VersionedCallable<>(() -> SWItem_8.getMaterial(material), 8),
|
||||
return VersionedCallable.call(new VersionedCallable<>(() -> SWItem_8.getMaterial(material), 8),
|
||||
new VersionedCallable<>(() -> SWItem_14.getMaterial(material), 14));
|
||||
}catch(IllegalArgumentException e){
|
||||
return Material.STONE;
|
||||
@ -61,7 +60,7 @@ public class SWItem {
|
||||
}
|
||||
|
||||
public static Material getDye(int colorCode){
|
||||
return VersionedCallable.versionDependantCall(new VersionedCallable<>(SWItem_8::getDye, 8),
|
||||
return VersionedCallable.call(new VersionedCallable<>(SWItem_8::getDye, 8),
|
||||
new VersionedCallable<>(() -> SWItem_14.getDye(colorCode), 14));
|
||||
}
|
||||
|
||||
|
@ -19,7 +19,6 @@
|
||||
|
||||
package de.steamwar.message;
|
||||
|
||||
import de.steamwar.core.Core;
|
||||
import de.steamwar.core.VersionedCallable;
|
||||
import net.md_5.bungee.api.ChatMessageType;
|
||||
import net.md_5.bungee.api.chat.ClickEvent;
|
||||
@ -74,7 +73,7 @@ public class Message {
|
||||
}
|
||||
|
||||
private Locale getLocale(Player player){
|
||||
return VersionedCallable.versionDependantCall(new VersionedCallable<>(() -> Message_8.getLocale(player), 8),
|
||||
return VersionedCallable.call(new VersionedCallable<>(() -> Message_8.getLocale(player), 8),
|
||||
new VersionedCallable<>(() -> Message_12.getLocale(player), 12));
|
||||
}
|
||||
|
||||
|
@ -95,7 +95,7 @@ public class SWScoreboard {
|
||||
PacketContainer packet = manager.createPacket(PacketType.Play.Server.SCOREBOARD_OBJECTIVE);
|
||||
packet.getStrings().write(0, SIDEBAR + toggle);
|
||||
packet.getIntegers().write(0, 0); //0 to create
|
||||
VersionedRunnable.versionDependantCall(new VersionedRunnable(() -> packet.getStrings().write(1, name), 8),
|
||||
VersionedRunnable.call(new VersionedRunnable(() -> packet.getStrings().write(1, name), 8),
|
||||
new VersionedRunnable(() -> packet.getChatComponents().write(0, WrappedChatComponent.fromText(name)), 14));
|
||||
packet.getEnumModifier(RenderType.class, 2).write(0, RenderType.INTEGER);
|
||||
return packet;
|
||||
|
Das finde ich nicht so gut, dass du hier immer 2 (bzw. 4) Wegwerfobjekte erstellst. Der GC freut sich...