Initial TNT-Tracer
Dieser Commit ist enthalten in:
Ursprung
80ac2de1c9
Commit
dc79b80cc0
37
BauSystem_Main/src/de/steamwar/bausystem/tracernew/DataHolder.java
Normale Datei
37
BauSystem_Main/src/de/steamwar/bausystem/tracernew/DataHolder.java
Normale Datei
@ -0,0 +1,37 @@
|
|||||||
|
package de.steamwar.bausystem.tracernew;
|
||||||
|
|
||||||
|
import de.steamwar.bausystem.tracernew.data.RecordStatus;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.World;
|
||||||
|
|
||||||
|
public class DataHolder {
|
||||||
|
|
||||||
|
public static final World world = Bukkit.getWorlds().get(0);
|
||||||
|
|
||||||
|
public static RecordStatus status = RecordStatus.IDLE;
|
||||||
|
|
||||||
|
public static boolean isRecording() {
|
||||||
|
return status == RecordStatus.RECORD || status == RecordStatus.RECORD_AUTO;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isRecordingAuto() {
|
||||||
|
return status == RecordStatus.RECORD_AUTO;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isRecordingNotAuto() {
|
||||||
|
return status == RecordStatus.RECORD;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isIdle() {
|
||||||
|
return status == RecordStatus.IDLE || status == RecordStatus.IDLE_AUTO;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isIdleAuto() {
|
||||||
|
return status == RecordStatus.IDLE_AUTO;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isIdleNotAuto() {
|
||||||
|
return status == RecordStatus.IDLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,4 @@
|
|||||||
|
package de.steamwar.bausystem.tracernew;
|
||||||
|
|
||||||
|
public class TraceHolder {
|
||||||
|
}
|
@ -0,0 +1,26 @@
|
|||||||
|
package de.steamwar.bausystem.tracernew.data;
|
||||||
|
|
||||||
|
public enum RecordStatus {
|
||||||
|
|
||||||
|
RECORD("§aan", true),
|
||||||
|
RECORD_AUTO("§aan", true),
|
||||||
|
IDLE("§caus", false),
|
||||||
|
IDLE_AUTO("§eauto", false);
|
||||||
|
|
||||||
|
String name;
|
||||||
|
boolean tracing;
|
||||||
|
|
||||||
|
RecordStatus(String value, boolean tracing) {
|
||||||
|
this.name = value;
|
||||||
|
this.tracing = tracing;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isTracing() {
|
||||||
|
return tracing;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,4 @@
|
|||||||
|
package de.steamwar.bausystem.tracernew.data;
|
||||||
|
|
||||||
|
public class TNTTrace {
|
||||||
|
}
|
@ -0,0 +1,4 @@
|
|||||||
|
package de.steamwar.bausystem.tracernew.recorder;
|
||||||
|
|
||||||
|
public class RecordManager {
|
||||||
|
}
|
@ -0,0 +1,53 @@
|
|||||||
|
package de.steamwar.bausystem.tracernew.recorder;
|
||||||
|
|
||||||
|
import de.steamwar.bausystem.BauSystem;
|
||||||
|
import de.steamwar.bausystem.tracer.TraceListener;
|
||||||
|
import de.steamwar.bausystem.tracernew.DataHolder;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.entity.TNTPrimed;
|
||||||
|
import org.bukkit.scheduler.BukkitTask;
|
||||||
|
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
import static de.steamwar.bausystem.tracer.recorder.RecordManager.stopAuto;
|
||||||
|
|
||||||
|
public class TNTRecorder {
|
||||||
|
|
||||||
|
private static BukkitTask task = null;
|
||||||
|
public static long recordStart = System.currentTimeMillis();
|
||||||
|
public static long lastExplosion = System.currentTimeMillis();
|
||||||
|
|
||||||
|
static void update() {
|
||||||
|
if (task == null) return;
|
||||||
|
if (!DataHolder.isRecordingAuto()) return;
|
||||||
|
lastExplosion = System.currentTimeMillis();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void startRecording() {
|
||||||
|
if (task != null) return;
|
||||||
|
recordStart = System.currentTimeMillis();
|
||||||
|
lastExplosion = System.currentTimeMillis();
|
||||||
|
task = Bukkit.getScheduler().runTaskTimer(BauSystem.getPlugin(), TNTRecorder::run, 1, 1);
|
||||||
|
run();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void stopRecording() {
|
||||||
|
if (task == null) return;
|
||||||
|
task.cancel();
|
||||||
|
task = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void run() {
|
||||||
|
DataHolder.world.getEntitiesByClass(TNTPrimed.class).stream()
|
||||||
|
Stream<TNTPrimed> tntPrimedStream = DataHolder.world.getEntities()
|
||||||
|
.stream()
|
||||||
|
.filter(e -> e instanceof TNTPrimed)
|
||||||
|
.map(e -> (TNTPrimed)e);
|
||||||
|
TraceListener.onTick(tntPrimedStream);
|
||||||
|
|
||||||
|
if (DataHolder.isRecordingAuto() && System.currentTimeMillis() - lastExplosion > 4500) {
|
||||||
|
stopAuto();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
In neuem Issue referenzieren
Einen Benutzer sperren