Fixed Death Processing and other sponge bugs

This commit is contained in:
Rsl1122 2018-04-11 19:14:02 +03:00
parent e6eac6fa5d
commit f4c3f804cd
5 changed files with 31 additions and 16 deletions

View File

@ -39,7 +39,7 @@ public class SpongeSystem extends PlanSystem implements ServerSystem {
configSystem = new BukkitConfigSystem(); configSystem = new BukkitConfigSystem();
databaseSystem = new BukkitDBSystem(); databaseSystem = new BukkitDBSystem();
listenerSystem = new SpongeListenerSystem(plugin); listenerSystem = new SpongeListenerSystem(plugin);
taskSystem = new SpongeTaskSystem(); taskSystem = new SpongeTaskSystem(plugin);
infoSystem = new BukkitInfoSystem(); infoSystem = new BukkitInfoSystem();
serverInfo = new SpongeServerInfo(); serverInfo = new SpongeServerInfo();

View File

@ -74,7 +74,14 @@ public class SpongeDeathListener {
ItemStack inHand = inMainHand.orElse(killer.getItemInHand(HandTypes.OFF_HAND).orElse(ItemStack.empty())); ItemStack inHand = inMainHand.orElse(killer.getItemInHand(HandTypes.OFF_HAND).orElse(ItemStack.empty()));
ItemType type = inHand.isEmpty() ? ItemTypes.AIR : inHand.getType(); ItemType type = inHand.isEmpty() ? ItemTypes.AIR : inHand.getType();
return new SpongeKillProcessor(killer.getUniqueId(), time, dead, normalizeItemName(type)); return new SpongeKillProcessor(killer.getUniqueId(), time, getUUID(dead), normalizeItemName(type));
}
private UUID getUUID(Living dead) {
if (dead instanceof Player) {
return dead.getUniqueId();
}
return null;
} }
private SpongeKillProcessor handleWolfKill(long time, Living dead, Wolf wolf) { private SpongeKillProcessor handleWolfKill(long time, Living dead, Wolf wolf) {
@ -85,7 +92,7 @@ public class SpongeDeathListener {
} }
return owner.get().map( return owner.get().map(
uuid -> new SpongeKillProcessor(uuid, time, dead, "Wolf") uuid -> new SpongeKillProcessor(uuid, time, getUUID(dead), "Wolf")
).orElse(null); ).orElse(null);
} }
@ -97,7 +104,7 @@ public class SpongeDeathListener {
Player player = (Player) source; Player player = (Player) source;
return new SpongeKillProcessor(player.getUniqueId(), time, dead, "Bow"); return new SpongeKillProcessor(player.getUniqueId(), time, getUUID(dead), "Bow");
} }
/** /**

View File

@ -4,8 +4,6 @@ import com.djrapitops.plan.data.container.PlayerKill;
import com.djrapitops.plan.data.container.Session; import com.djrapitops.plan.data.container.Session;
import com.djrapitops.plan.system.cache.SessionCache; import com.djrapitops.plan.system.cache.SessionCache;
import com.djrapitops.plan.system.processing.CriticalRunnable; import com.djrapitops.plan.system.processing.CriticalRunnable;
import org.bukkit.entity.Player;
import org.spongepowered.api.entity.living.Living;
import java.util.Optional; import java.util.Optional;
import java.util.UUID; import java.util.UUID;
@ -22,7 +20,7 @@ import java.util.UUID;
public class SpongeKillProcessor implements CriticalRunnable { public class SpongeKillProcessor implements CriticalRunnable {
private final UUID uuid; private final UUID uuid;
private final Living dead; private final UUID deadUUID;
private final String weaponName; private final String weaponName;
private final long time; private final long time;
@ -31,29 +29,37 @@ public class SpongeKillProcessor implements CriticalRunnable {
* *
* @param uuid UUID of the killer. * @param uuid UUID of the killer.
* @param time Epoch ms the event occurred. * @param time Epoch ms the event occurred.
* @param dead Dead entity (Mob or Player) * @param deadUUID Dead entity (Mob or Player)
* @param weaponName Weapon used. * @param weaponName Weapon used.
*/ */
public SpongeKillProcessor(UUID uuid, long time, Living dead, String weaponName) { public SpongeKillProcessor(UUID uuid, long time, UUID deadUUID, String weaponName) {
this.uuid = uuid; this.uuid = uuid;
this.time = time; this.time = time;
this.dead = dead; this.deadUUID = deadUUID;
this.weaponName = weaponName; this.weaponName = weaponName;
} }
@Override @Override
public void run() { public void run() {
Optional<Session> cachedSession = SessionCache.getCachedSession(uuid); Optional<Session> cachedSession = SessionCache.getCachedSession(uuid);
System.out.println("*");
if (!cachedSession.isPresent()) { if (!cachedSession.isPresent()) {
System.out.println("No session");
return; return;
} }
System.out.println("**");
Session session = cachedSession.get(); Session session = cachedSession.get();
System.out.println("***");
if (dead instanceof Player) { if (deadUUID != null) {
Player deadPlayer = (Player) dead; System.out.println("Dead player");
session.playerKilled(new PlayerKill(deadPlayer.getUniqueId(), weaponName, time));
session.playerKilled(new PlayerKill(deadUUID, weaponName, time));
} else { } else {
System.out.println("Dead mob");
session.mobKilled(); session.mobKilled();
} }
System.out.println("****");
} }
} }

View File

@ -62,7 +62,7 @@ public class SpongeTPSCountTimer extends TPSCountTimer<PlanSponge> {
double tps = Sponge.getGame().getServer().getTicksPerSecond(); double tps = Sponge.getGame().getServer().getTicksPerSecond();
int playersOnline = ServerInfo.getServerProperties().getOnlinePlayers(); int playersOnline = ServerInfo.getServerProperties().getOnlinePlayers();
latestPlayersOnline = playersOnline; latestPlayersOnline = playersOnline;
int loadedChunks = getLoadedChunks(); int loadedChunks = -1;
int entityCount = getEntityCount(); int entityCount = getEntityCount();
return TPSBuilder.get() return TPSBuilder.get()
@ -82,6 +82,8 @@ public class SpongeTPSCountTimer extends TPSCountTimer<PlanSponge> {
* @return amount of loaded chunks * @return amount of loaded chunks
*/ */
private int getLoadedChunks() { private int getLoadedChunks() {
// DISABLED
int loaded = 0; int loaded = 0;
for (World world : Sponge.getGame().getServer().getWorlds()) { for (World world : Sponge.getGame().getServer().getWorlds()) {
Iterator<Chunk> iterator = world.getLoadedChunks().iterator(); Iterator<Chunk> iterator = world.getLoadedChunks().iterator();

View File

@ -16,7 +16,7 @@ import com.djrapitops.plan.system.processing.Processing;
import com.djrapitops.plan.system.settings.Settings; import com.djrapitops.plan.system.settings.Settings;
import com.djrapitops.plan.system.settings.locale.Locale; import com.djrapitops.plan.system.settings.locale.Locale;
import com.djrapitops.plan.system.settings.locale.Msg; import com.djrapitops.plan.system.settings.locale.Msg;
import com.djrapitops.plan.system.tasks.BukkitTaskSystem; import com.djrapitops.plan.system.tasks.ServerTaskSystem;
import com.djrapitops.plan.system.tasks.TaskSystem; import com.djrapitops.plan.system.tasks.TaskSystem;
import com.djrapitops.plan.utilities.MiscUtils; import com.djrapitops.plan.utilities.MiscUtils;
import com.djrapitops.plugin.StaticHolder; import com.djrapitops.plugin.StaticHolder;
@ -79,7 +79,7 @@ public class Analysis implements Callable<AnalysisData> {
} }
private AnalysisData runAnalysis() throws Exception { private AnalysisData runAnalysis() throws Exception {
((BukkitTaskSystem) TaskSystem.getInstance()).cancelBootAnalysis(); ((ServerTaskSystem) TaskSystem.getInstance()).cancelBootAnalysis();
Benchmark.start("Analysis: Total"); Benchmark.start("Analysis: Total");
log(Locale.get(Msg.ANALYSIS_START).toString()); log(Locale.get(Msg.ANALYSIS_START).toString());