SteamWar/BauSystem
Archiviert
13
0

Tracer-entity #147

Manuell gemergt
YoyoNow hat 47 Commits von Tracer-entity nach master 2020-12-27 22:16:04 +01:00 zusammengeführt
8 geänderte Dateien mit 51 neuen und 45 gelöschten Zeilen
Nur Änderungen aus Commit de9c79240a werden angezeigt - Alle Commits anzeigen

Datei anzeigen

@ -8,11 +8,8 @@ import org.bukkit.entity.Player;
public class TNTEntity_12 extends EntityFallingBlock implements AbstractTNTEntity {
private TNTPosition position;
public TNTEntity_12(World world, TNTPosition position, Player player) {
super(((CraftWorld) world).getHandle(), position.getLocation().getX(), position.getLocation().getY(), position.getLocation().getZ(), Blocks.TNT.getBlockData());
this.position = position;
this.setNoGravity(true);
this.ticksLived = -12000;
@ -35,6 +32,9 @@ public class TNTEntity_12 extends EntityFallingBlock implements AbstractTNTEntit
ReflectionUtils.setValue("h", packetPlayOutSpawnEntity, 0);
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packetPlayOutSpawnEntity);
PacketPlayOutEntityTeleport packetPlayOutEntityTeleport = new PacketPlayOutEntityTeleport(this);
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packetPlayOutEntityTeleport);
PacketPlayOutEntityMetadata packetPlayOutEntityMetadata = new PacketPlayOutEntityMetadata(getId(), datawatcher, true);
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packetPlayOutEntityMetadata);

Datei anzeigen

@ -8,11 +8,8 @@ import org.bukkit.entity.Player;
public class TNTEntity_15 extends EntityFallingBlock implements AbstractTNTEntity {
private TNTPosition position;
public TNTEntity_15(World world, TNTPosition position, Player player) {
super(((CraftWorld) world).getHandle(), position.getLocation().getX(), position.getLocation().getY(), position.getLocation().getZ(), Blocks.TNT.getBlockData());
this.position = position;
this.setNoGravity(true);
this.ticksLived = -12000;
@ -29,12 +26,17 @@ public class TNTEntity_15 extends EntityFallingBlock implements AbstractTNTEntit
@Override
public AbstractTNTEntity display(Player player) {
System.out.println("SHOW: " + player + " " + locX() + " " + locY() + " " + locZ());
PacketPlayOutSpawnEntity packetPlayOutSpawnEntity = new PacketPlayOutSpawnEntity(this);
ReflectionUtils.setValue("f", packetPlayOutSpawnEntity, 0);
ReflectionUtils.setValue("g", packetPlayOutSpawnEntity, 0);
ReflectionUtils.setValue("h", packetPlayOutSpawnEntity, 0);
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packetPlayOutSpawnEntity);
PacketPlayOutEntityTeleport packetPlayOutEntityTeleport = new PacketPlayOutEntityTeleport(this);
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packetPlayOutEntityTeleport);
PacketPlayOutEntityMetadata packetPlayOutEntityMetadata = new PacketPlayOutEntityMetadata(getId(), datawatcher, true);
((CraftPlayer) player).getHandle().playerConnection.sendPacket(packetPlayOutEntityMetadata);

Datei anzeigen

@ -23,6 +23,7 @@ import de.steamwar.bausystem.BauSystem;
import de.steamwar.bausystem.Permission;
import de.steamwar.bausystem.tracer.record.RecordStateMachine;
import de.steamwar.bausystem.tracer.show.StoredRecords;
import de.steamwar.bausystem.tracer.show.TraceShowManager;
import de.steamwar.bausystem.world.Welt;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
@ -83,8 +84,10 @@ public class CommandTrace implements CommandExecutor {
player.sendMessage(BauSystem.PREFIX + "§cAlle TNT-Positionen gelöscht");
break;
Veraltet
Review

Idee: Zugehörige Message als Parameter eines RecordStatus. Dann musst du hier nicht switch-casen.

Idee: Zugehörige Message als Parameter eines RecordStatus. Dann musst du hier nicht switch-casen.
case "show":
TraceShowManager.show(player);
break;
case "hide":
TraceShowManager.hide(player);
break;
case "toggleshow":
case "interpolate":

Datei anzeigen

@ -20,7 +20,8 @@
package de.steamwar.bausystem.tracer.record;
public class RecordStateMachine {
private RecordStateMachine(){}
private RecordStateMachine() {
}
private static final TraceAutoHandler autoHandler = new TraceAutoHandler();
@ -28,15 +29,15 @@ public class RecordStateMachine {
private static Recorder recorder = null;
public static void commandStart() {
recordStatus = RecordStatus.RECORD;
autoHandler.disable();
recordStart();
recordStatus = RecordStatus.RECORD;
}
public static void commandStop() {
recordStatus = RecordStatus.IDLE;
autoHandler.disable();
recordStop();
recordStatus = RecordStatus.IDLE;
}
public static void commandAuto() {
@ -52,27 +53,23 @@ public class RecordStateMachine {
}
}
static void autoRecord(){
recordStatus = RecordStatus.RECORD_AUTO;
static void autoRecord() {
recordStart();
recordStatus = RecordStatus.RECORD_AUTO;
}
static void autoIdle(){
recordStatus = RecordStatus.IDLE_AUTO;
static void autoIdle() {
recordStop();
recordStatus = RecordStatus.IDLE_AUTO;
}
private static void recordStart() {
if(recordStatus.isTracing())
return;
if (recordStatus.isTracing()) return;
recorder = new Recorder();
}
private static void recordStop() {
if(!recordStatus.isTracing())
return;
if (!recordStatus.isTracing()) return;
recorder.stopRecording();
}
@ -80,11 +77,13 @@ public class RecordStateMachine {
return recordStatus;
}
public static int size(){
public static int size() {
if (recorder == null) return 0;
return recorder.size();
}
public static long getStartTime(){
public static long getStartTime() {
if (recorder == null) return 0;
return recorder.getStartTime();
}
}

Datei anzeigen

@ -41,13 +41,13 @@ public class Recorder implements Listener {
private final BukkitTask task;
private final Record record;
Recorder(){
Recorder() {
Bukkit.getPluginManager().registerEvents(this, BauSystem.getPlugin());
task = Bukkit.getScheduler().runTaskTimer(BauSystem.getPlugin(), this::run, 1, 1);
record = new Record();
}
void stopRecording(){
void stopRecording() {
Veraltet
Review

Würde ich unabhängig vom derzeitgen RecordStatus machen. Wenn du einen Recorder erzeugst, möchtest du ja aufnehmen.

Würde ich unabhängig vom derzeitgen RecordStatus machen. Wenn du einen Recorder erzeugst, möchtest du ja aufnehmen.
HandlerList.unregisterAll(this);
task.cancel();
}
@ -76,7 +76,7 @@ public class Recorder implements Listener {
private Record.TNTRecord get(TNTPrimed tntPrimed) {
Record.TNTRecord tntRecord = recordMap.get(tntPrimed);
if(tntRecord != null)
if (tntRecord != null)
return tntRecord;
tntRecord = this.record.spawn();

Datei anzeigen

@ -30,26 +30,26 @@ public class Record {
private final long startTime;
private final List<TNTRecord> tnt = new ArrayList<>();
public int size(){
public int size() {
return tnt.size();
}
public long getStartTime(){
public long getStartTime() {
return startTime;
}
public void showAll(ShowMode mode) {
for(TNTRecord record : tnt)
for (TNTRecord record : tnt)
record.showAll(mode);
}
/* The following methods should only be called by a recorder */
public Record(){
public Record() {
startTime = System.currentTimeMillis();
StoredRecords.add(this);
}
public TNTRecord spawn(){
public TNTRecord spawn() {
TNTRecord record = new TNTRecord();
tnt.add(record);
return record;
@ -59,8 +59,8 @@ public class Record {
private final List<TNTPosition> positions = new ArrayList<>(41);
private boolean exploded = false;
public void showAll(ShowMode mode){
for(TNTPosition position : positions)
public void showAll(ShowMode mode) {
for (TNTPosition position : positions)
mode.show(position);
}

Datei anzeigen

@ -23,18 +23,20 @@ import java.util.ArrayList;
import java.util.List;
public class StoredRecords {
private static final List<Record> records = new ArrayList<>();
public static void add(Record record){
public static void add(Record record) {
records.add(record);
}
public static void showAll(ShowMode mode){
for(Record record : records) record.showAll(mode);
public static void showAll(ShowMode mode) {
for (Record record : records) record.showAll(mode);
}
public static void clear(){
public static void clear() {
records.clear();
TraceShowManager.clear();
}
}

Datei anzeigen

@ -13,42 +13,42 @@ import java.util.HashMap;
import java.util.Map;
public class TraceShowManager implements Listener {
private TraceShowManager(){}
private TraceShowManager() {}
private static final Map<Player, ShowMode> showModes = new HashMap<>();
public static void show(Player player){
public static void show(Player player) {
hide(player);
ShowMode showMode = new BasicShowMode(player);
StoredRecords.showAll(showMode);
}
public static void hide(Player player){
public static void hide(Player player) {
ShowMode showMode = showModes.remove(player);
if(showMode == null)
if (showMode == null)
return;
showMode.hide();
}
/* Only to be called by record */
static void show(TNTPosition tnt){
for(ShowMode mode : showModes.values())
static void show(TNTPosition tnt) {
for (ShowMode mode : showModes.values())
mode.show(tnt);
}
/* Only to be called by StoredRecords */
static void clear(){
for(ShowMode mode : showModes.values())
static void clear() {
for (ShowMode mode : showModes.values())
mode.hide();
}
/* Internal if player leaves*/
static{
static {
Bukkit.getPluginManager().registerEvents(new TraceShowManager(), BauSystem.getPlugin());
}
@EventHandler
public void onLeave(PlayerQuitEvent event){
public void onLeave(PlayerQuitEvent event) {
showModes.remove(event.getPlayer());
}
}