84 Zeilen
2.7 KiB
Java
84 Zeilen
2.7 KiB
Java
|
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<TraceCache.Loc> updateLocations(Player player) {
|
||
|
Iterator<TNTTrace> traces = ShowManager.get(player).getTraces().descendingIterator();
|
||
|
Set<TraceCache.Loc> 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<TraceCache.Loc> updatePoints(Player player) {
|
||
|
Iterator<TNTTrace> traces = ShowManager.get(player).getTraces().descendingIterator();
|
||
|
Set<TraceCache.Loc> 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;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|