package de.steamwar.bausystem.tracer; import de.steamwar.bausystem.BauSystem; import de.steamwar.bausystem.tracer.manager.ShowManager; import de.steamwar.bausystem.tracer.trace.TNTTrace; import de.steamwar.core.Core; import org.bukkit.entity.Player; import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class TNTTracer { private static TracerUpdater tracerUpdater = new TracerUpdater() { @Override public Set updateLocations(Player player) { Iterator traces = ShowManager.get(player).getTraces().descendingIterator(); Set locSet = new HashSet<>(); while (traces.hasNext()) { locSet.addAll(traces.next().locs()); } double radius = ShowManager.get(player).getShowRadius(); locSet.removeIf(loc -> loc.remove(player, radius)); return locSet; } @Override public Set updatePoints(Player player) { Iterator traces = ShowManager.get(player).getTraces().descendingIterator(); Set locSet = new HashSet<>(); while (traces.hasNext()) { locSet.addAll(traces.next().locsUpdate(ShowManager.get(player).getDisplayMode())); } double radius = ShowManager.get(player).getShowRadius(); locSet.removeIf(loc -> loc.remove(player, radius)); return locSet; } @Override public boolean needsUpdate(Player player) { return ShowManager.get(player).isDirty(); } @Override public DisplayMode getDisplayType(Player player) { switch (ShowManager.get(player).getDisplayType()) { case Block: return DisplayMode.Block; case Particle: return DisplayMode.Particle; default: break; } return DisplayMode.Particle; } @Override public String actionBar(Player player) { return TraceActionbar.traceMemory() + " " + TraceActionbar.traceSize() + " " + TraceActionbar.showRadius(player); } }; public static void init15() { TNTTracer_15.init(BauSystem.getPlugin(), tracerUpdater); } public static void init12() { TNTTracer_12.init(BauSystem.getPlugin(), tracerUpdater); } public static void worldInit() { switch (Core.getVersion()) { case 15: TNTTracer_15.worldInit(); break; default: TNTTracer_12.worldInit(); break; } } }