SteamWar/BauSystem
Archiviert
13
0

Simplify Tracer #91

Manuell gemergt
YoyoNow hat 4 Commits von simplify-tracer nach master 2020-08-30 13:20:40 +02:00 zusammengeführt
14 geänderte Dateien mit 125 neuen und 282 gelöschten Zeilen
Nur Änderungen aus Commit 1f2b6a0290 werden angezeigt - Alle Commits anzeigen

Datei anzeigen

@ -1,95 +1,11 @@
package de.steamwar.bausystem.tracer; package de.steamwar.bausystem.tracer;
import net.md_5.bungee.api.ChatMessageType; import org.bukkit.Material;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.*;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.entity.Player;
import org.bukkit.entity.TNTPrimed;
import org.bukkit.material.Step;
import org.bukkit.plugin.Plugin;
import java.util.*;
import static de.steamwar.bausystem.tracer.TraceUtils.actionBar;
@SuppressWarnings("deprecation")
class TNTTracer_12 { class TNTTracer_12 {
private TNTTracer_12(){} private TNTTracer_12(){}
private static TracerUpdater tracerUpdater; static Material getMaterial(){
private static TraceCache traceCache = new TraceCache(); return Material.STAINED_GLASS;
private static class Synchronizer {}
private static final Synchronizer synchronizer = new Synchronizer();
private static World world;
static void worldInit() {
if (world != null) return;
world = Bukkit.getWorlds().get(0);
} }
static void init(Plugin plugin, TracerUpdater tracerUpdater) {
Bukkit.getScheduler().runTaskTimer(plugin, () -> {
synchronized (synchronizer) {
synchronizer.notifyAll();
}
}, 1, 20);
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
while (true) {
synchronized (synchronizer) {
try {
synchronizer.wait();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
run();
}
});
TNTTracer_12.tracerUpdater = tracerUpdater;
}
private static void run() {
for (Player p : Bukkit.getOnlinePlayers()) {
if (actionBar) {
String actionBar = tracerUpdater.actionBar(p);
p.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(actionBar));
}
boolean dirty = tracerUpdater.needsUpdate(p);
if (tracerUpdater.getDisplayType(p) == TracerUpdater.DisplayMode.Block && !dirty) {
continue;
}
Set<TraceCache.Loc> toHide = traceCache.update(p, tracerUpdater, dirty);
Set<TraceCache.Loc> toShow = traceCache.get(p);
hideBlockTraces(toHide, p);
showTraces(toShow, tracerUpdater.getDisplayType(p), p);
}
}
private static void hideBlockTraces(Set<TraceCache.Loc> locs, Player player) {
if (locs.isEmpty()) return;
for (TraceCache.Loc l : locs) {
TraceUtils.hideBlock(player, l.x, l.y - 0.49F, l.z);
}
}
private static void showTraces(Set<TraceCache.Loc> locs, TracerUpdater.DisplayMode displayMode, Player player) {
if (locs.isEmpty()) return;
for (TraceCache.Loc l : locs) {
if (displayMode == TracerUpdater.DisplayMode.Block) {
TraceUtils.showBlock(player, l.x, l.y - 0.49F, l.z, Material.STAINED_GLASS, (l.updatePoint ? (byte) 5 : (byte) 14));
} else {
TraceUtils.showCorner(player, l.x - 0.49F, l.y, l.z - 0.49F, (l.updatePoint ? Particle.FLAME : Particle.VILLAGER_HAPPY));
}
}
}
} }

Datei anzeigen

@ -1,94 +1,11 @@
package de.steamwar.bausystem.tracer; package de.steamwar.bausystem.tracer;
import net.md_5.bungee.api.ChatMessageType;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.Bukkit;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.Particle;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import java.util.Set;
import static de.steamwar.bausystem.tracer.TraceUtils.actionBar;
@SuppressWarnings("deprecation")
class TNTTracer_15 { class TNTTracer_15 {
private TNTTracer_15(){} private TNTTracer_15(){}
private static TracerUpdater tracerUpdater; static Material getMaterial(boolean updatePoint){
private static TraceCache traceCache = new TraceCache(); return updatePoint ? Material.LIME_STAINED_GLASS : Material.RED_STAINED_GLASS;
private static class Synchronizer {}
private static final Synchronizer synchronizer = new Synchronizer();
private static World world;
static void worldInit() {
if (world != null) return;
world = Bukkit.getWorlds().get(0);
} }
static void init(Plugin plugin, TracerUpdater tracerUpdater) {
Bukkit.getScheduler().runTaskTimer(plugin, () -> {
synchronized (synchronizer) {
synchronizer.notifyAll();
}
}, 1, 20);
Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
while (true) {
synchronized (synchronizer) {
try {
synchronizer.wait();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
run();
}
});
TNTTracer_15.tracerUpdater = tracerUpdater;
}
private static void run() {
for (Player p : Bukkit.getOnlinePlayers()) {
if (actionBar) {
String actionBar = tracerUpdater.actionBar(p);
p.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(actionBar));
}
boolean dirty = tracerUpdater.needsUpdate(p);
if (tracerUpdater.getDisplayType(p) == TracerUpdater.DisplayMode.Block && !dirty) {
continue;
}
Set<TraceCache.Loc> toHide = traceCache.update(p, tracerUpdater, dirty);
Set<TraceCache.Loc> toShow = traceCache.get(p);
hideBlockTraces(toHide, p);
showTraces(toShow, tracerUpdater.getDisplayType(p), p);
}
}
private static void hideBlockTraces(Set<TraceCache.Loc> locs, Player player) {
if (locs.isEmpty()) return;
for (TraceCache.Loc l : locs) {
TraceUtils.hideBlock(player, l.x, l.y - 0.49F, l.z);
}
}
private static void showTraces(Set<TraceCache.Loc> locs, TracerUpdater.DisplayMode displayMode, Player player) {
if (locs.isEmpty()) return;
for (TraceCache.Loc l : locs) {
if (displayMode == TracerUpdater.DisplayMode.Block) {
TraceUtils.showBlock(player, l.x, l.y - 0.49F, l.z, (l.updatePoint ? Material.LIME_STAINED_GLASS : Material.RED_STAINED_GLASS), (l.updatePoint ? (byte) 5 : (byte) 14));
} else {
TraceUtils.showCorner(player, l.x - 0.49F, l.y, l.z - 0.49F, (l.updatePoint ? Particle.FLAME : Particle.VILLAGER_HAPPY));
}
}
}
} }

Datei anzeigen

@ -1,4 +0,0 @@
package de.steamwar.bausystem.tracer;
public class TracerGuiUpdater {
}

Datei anzeigen

@ -1,12 +1,9 @@
package de.steamwar.bausystem; package de.steamwar.bausystem;
import de.steamwar.bausystem.commands.*; import de.steamwar.bausystem.commands.*;
import de.steamwar.bausystem.tracer.MoveEvent; import de.steamwar.bausystem.tracer.TraceListener;
import de.steamwar.bausystem.tracer.TNTListener;
import de.steamwar.bausystem.tracer.TNTTracer; import de.steamwar.bausystem.tracer.TNTTracer;
import de.steamwar.bausystem.tracer.TraceUtils;
import de.steamwar.bausystem.tracer.manager.ShowManager; import de.steamwar.bausystem.tracer.manager.ShowManager;
import de.steamwar.bausystem.tracer.recorder.RecordManager;
import de.steamwar.bausystem.world.AFKStopper; import de.steamwar.bausystem.world.AFKStopper;
import de.steamwar.bausystem.world.ArenaSection; import de.steamwar.bausystem.world.ArenaSection;
import de.steamwar.bausystem.world.BauScoreboard; import de.steamwar.bausystem.world.BauScoreboard;
@ -104,15 +101,10 @@ public class BauSystem extends JavaPlugin implements Listener {
Bukkit.getPluginManager().registerEvents(this, this); Bukkit.getPluginManager().registerEvents(this, this);
Bukkit.getPluginManager().registerEvents(new RegionListener(), this); Bukkit.getPluginManager().registerEvents(new RegionListener(), this);
Bukkit.getPluginManager().registerEvents(new TNTListener(), this);
Bukkit.getPluginManager().registerEvents(new BauScoreboard(), this); Bukkit.getPluginManager().registerEvents(new BauScoreboard(), this);
Bukkit.getPluginManager().registerEvents(new MoveEvent(), this); Bukkit.getPluginManager().registerEvents(new TraceListener(), this);
new AFKStopper(); new AFKStopper();
if (Core.getVersion() == 15) { TNTTracer.init();
TNTTracer.init15();
} else {
TNTTracer.init12();
}
autoShutdown = Bukkit.getScheduler().runTaskLater(this, Bukkit::shutdown, 1200); autoShutdown = Bukkit.getScheduler().runTaskLater(this, Bukkit::shutdown, 1200);
} }
@ -277,17 +269,11 @@ public class BauSystem extends JavaPlugin implements Listener {
attachment.setPermission("worldedit.calc", true); attachment.setPermission("worldedit.calc", true);
attachment.setPermission("worldedit.fill", true);*/ attachment.setPermission("worldedit.fill", true);*/
RecordManager.worldInit();
TNTTracer.worldInit();
TraceUtils.locationInit();
ShowManager.add(p); ShowManager.add(p);
if (Core.getVersion() == 15){ if (Core.getVersion() == 15)
ShowManager.add(p);
Bukkit.getWorlds().get(0).setGameRule(GameRule.REDUCED_DEBUG_INFO, false); Bukkit.getWorlds().get(0).setGameRule(GameRule.REDUCED_DEBUG_INFO, false);
} }
}
@EventHandler @EventHandler
public void onLeave(PlayerQuitEvent e) { public void onLeave(PlayerQuitEvent e) {
@ -301,8 +287,9 @@ public class BauSystem extends JavaPlugin implements Listener {
@EventHandler @EventHandler
public void onInventoryClick(InventoryClickEvent e) { public void onInventoryClick(InventoryClickEvent e) {
ItemStack stack = e.getCursor(); ItemStack stack = e.getCursor();
if (stack == null) return; if (stack == null || !stack.hasItemMeta())
if (!stack.hasItemMeta()) return; return;
assert stack.getItemMeta() != null;
if (stack.getItemMeta().hasEnchants()) { if (stack.getItemMeta().hasEnchants()) {
for (Enchantment en : Enchantment.values()) { for (Enchantment en : Enchantment.values()) {
if (stack.getEnchantmentLevel(en) > en.getMaxLevel()) if (stack.getEnchantmentLevel(en) > en.getMaxLevel())

Datei anzeigen

@ -1,17 +0,0 @@
package de.steamwar.bausystem.tracer;
import de.steamwar.bausystem.tracer.manager.ShowManager;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent;
public class MoveEvent implements Listener {
@EventHandler
public void playerMove(PlayerMoveEvent event) {
Player p = event.getPlayer();
ShowManager.get(p).move(p);
}
}

Datei anzeigen

@ -1,42 +0,0 @@
package de.steamwar.bausystem.tracer;
import de.steamwar.bausystem.tracer.manager.TNTManager;
import de.steamwar.bausystem.tracer.recorder.RecordManager;
import de.steamwar.bausystem.tracer.recorder.TNTRecorder;
import de.steamwar.core.Core;
import org.bukkit.entity.TNTPrimed;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityExplodeEvent;
public class TNTListener implements Listener {
@EventHandler
public void onEntityExplode(EntityExplodeEvent event) {
if (!(event.getEntity() instanceof TNTPrimed)) return;
if (RecordManager.getStatus() == RecordManager.Status.IDLE_AUTO) {
RecordManager.startAuto();
}
if (RecordManager.getStatus() == RecordManager.Status.RECORD_AUTO) {
RecordManager.updateAuto();
}
TNTManager.explode((TNTPrimed) event.getEntity());
}
/*private void onEntityExplode12(EntityExplodeEvent event) {
if(TNTTracer12.getStatus() != TNTTracer12.Status.RECORD) return;
if(!(event.getEntity() instanceof TNTPrimed)) return;
TNTPrimed entity = (TNTPrimed) event.getEntity();
TNTTracer12.remove(entity);
}
private void onEntityExplode15(EntityExplodeEvent event) {
if(!(event.getEntity() instanceof TNTPrimed)) return;
if (TraceRecorder.getStatus() == TraceRecorder.Status.IDLE_AUTO || TraceRecorder.getStatus() == TraceRecorder.Status.RECORD_AUTO) {
TraceRecorder.start();
}
TraceRecorder.explode((TNTPrimed) event.getEntity());
}*/
}

Datei anzeigen

@ -4,15 +4,26 @@ import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.tracer.manager.ShowManager; import de.steamwar.bausystem.tracer.manager.ShowManager;
import de.steamwar.bausystem.tracer.trace.TNTTrace; import de.steamwar.bausystem.tracer.trace.TNTTrace;
import de.steamwar.core.Core; import de.steamwar.core.Core;
import net.md_5.bungee.api.ChatMessageType;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Particle;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import java.util.HashSet; import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
import java.util.Set; import java.util.Set;
public class TNTTracer { import static de.steamwar.bausystem.tracer.TraceUtils.DEBUG;
private static TracerUpdater tracerUpdater = new TracerUpdater() { public class TNTTracer {
private TNTTracer(){}
private static final Object synchronizer = new Object();
private static final TraceCache traceCache = new TraceCache();
private static final TracerUpdater tracerUpdater = new TracerUpdater() {
@Override @Override
public Set<TraceCache.Loc> updateLocations(Player player) { public Set<TraceCache.Loc> updateLocations(Player player) {
Iterator<TNTTrace> traces = ShowManager.get(player).getTraces().descendingIterator(); Iterator<TNTTrace> traces = ShowManager.get(player).getTraces().descendingIterator();
@ -61,23 +72,71 @@ public class TNTTracer {
} }
}; };
public static void init15() { public static void init(){
TNTTracer_15.init(BauSystem.getPlugin(), tracerUpdater); Bukkit.getScheduler().runTaskTimer(BauSystem.getPlugin(), () -> {
synchronized (synchronizer) {
synchronizer.notifyAll();
}
}, 1, 20);
Bukkit.getScheduler().runTaskAsynchronously(BauSystem.getPlugin(), () -> {
while (true) {
synchronized (synchronizer) {
try {
synchronizer.wait();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
run();
}
});
} }
public static void init12() { private static void run(){
TNTTracer_12.init(BauSystem.getPlugin(), tracerUpdater); for (Player p : Bukkit.getOnlinePlayers()) {
if (DEBUG) {
String actionBar = tracerUpdater.actionBar(p);
p.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(actionBar));
} }
public static void worldInit() { boolean dirty = tracerUpdater.needsUpdate(p);
switch (Core.getVersion()) { if (tracerUpdater.getDisplayType(p) == TracerUpdater.DisplayMode.Block && !dirty) {
continue;
}
Set<TraceCache.Loc> toHide = traceCache.update(p, tracerUpdater, dirty);
Set<TraceCache.Loc> toShow = traceCache.get(p);
hideBlockTraces(toHide, p);
showTraces(toShow, tracerUpdater.getDisplayType(p), p);
}
}
private static void hideBlockTraces(Set<TraceCache.Loc> locs, Player player) {
if (locs.isEmpty()) return;
for (TraceCache.Loc l : locs) {
TraceUtils.hideBlock(player, l.x, l.y - 0.49F, l.z);
}
}
private static void showTraces(Set<TraceCache.Loc> locs, TracerUpdater.DisplayMode displayMode, Player player) {
if (locs.isEmpty()) return;
for (TraceCache.Loc l : locs) {
if (displayMode == TracerUpdater.DisplayMode.Block) {
TraceUtils.showBlock(player, l.x, l.y - 0.49F, l.z, getMaterial(l), (l.updatePoint ? (byte) 5 : (byte) 14));
} else {
TraceUtils.showCorner(player, l.x - 0.49F, l.y, l.z - 0.49F, (l.updatePoint ? Particle.FLAME : Particle.VILLAGER_HAPPY));
}
}
}
private static Material getMaterial(TraceCache.Loc l){
switch(Core.getVersion()){
case 15: case 15:
TNTTracer_15.worldInit(); return TNTTracer_15.getMaterial(l.updatePoint);
break;
default: default:
TNTTracer_12.worldInit(); return TNTTracer_12.getMaterial();
break;
} }
} }
} }

Datei anzeigen

@ -9,6 +9,7 @@ import java.util.Iterator;
import java.util.LinkedList; import java.util.LinkedList;
public class TraceActionbar { public class TraceActionbar {
private TraceActionbar(){}
private static double round(double toRound, int digits) { private static double round(double toRound, int digits) {
int x = (int)Math.pow(10, digits); int x = (int)Math.pow(10, digits);

Datei anzeigen

@ -0,0 +1,33 @@
package de.steamwar.bausystem.tracer;
import de.steamwar.bausystem.tracer.manager.ShowManager;
import de.steamwar.bausystem.tracer.manager.TNTManager;
import de.steamwar.bausystem.tracer.recorder.RecordManager;
import org.bukkit.entity.Player;
import org.bukkit.entity.TNTPrimed;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.event.player.PlayerMoveEvent;
public class TraceListener implements Listener {
@EventHandler
public void onEntityExplode(EntityExplodeEvent event) {
if (!(event.getEntity() instanceof TNTPrimed)) return;
if (RecordManager.getStatus() == RecordManager.Status.IDLE_AUTO)
RecordManager.startAuto();
if (RecordManager.getStatus() == RecordManager.Status.RECORD_AUTO)
RecordManager.updateAuto();
TNTManager.explode((TNTPrimed) event.getEntity());
}
@EventHandler
public void playerMove(PlayerMoveEvent event) {
Player p = event.getPlayer();
ShowManager.get(p).move(p);
}
}

Datei anzeigen

@ -7,14 +7,11 @@ import org.bukkit.Particle;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
public class TraceUtils { public class TraceUtils {
private TraceUtils(){}
private static Location location; public static final boolean DEBUG = false;
public static boolean actionBar = false; private static Location location = new Location(Bukkit.getWorlds().get(0), 0, 0, 0);
public static void locationInit() {
location = new Location(Bukkit.getWorlds().get(0), 0, 0, 0);
}
public static void showCorner(Player player, float x, float y, float z, Particle particle) { public static void showCorner(Player player, float x, float y, float z, Particle particle) {
player.spawnParticle(particle, makeLocation(x + 0.00F, y + 0.00F, z + 0.00F), 1, 0F, 0F, 0F, 0.001); player.spawnParticle(particle, makeLocation(x + 0.00F, y + 0.00F, z + 0.00F), 1, 0F, 0F, 0F, 0.001);
@ -40,7 +37,7 @@ public class TraceUtils {
} }
} }
public static Location makeLocation(float x, float y, float z) { private static Location makeLocation(float x, float y, float z) {
location.setX(x); location.setX(x);
location.setY(y); location.setY(y);
location.setZ(z); location.setZ(z);

Datei anzeigen

@ -15,11 +15,7 @@ public class RecordManager {
static Status status = Status.IDLE; static Status status = Status.IDLE;
public static Integer activeFrameID = null; public static Integer activeFrameID = null;
static World world; static final World world = Bukkit.getWorlds().get(0);
public static void worldInit() {
if (world != null) return;
world = Bukkit.getWorlds().get(0);
}
public static void tracer(Player player, String[] args) { public static void tracer(Player player, String[] args) {
switch (args[0].toLowerCase()) { switch (args[0].toLowerCase()) {