Tracer-entity #147
24
BauSystem_12/src/de/steamwar/bausystem/tracer/TNTEntity_12.java
Normale Datei
24
BauSystem_12/src/de/steamwar/bausystem/tracer/TNTEntity_12.java
Normale Datei
@ -0,0 +1,24 @@
|
||||
package de.steamwar.bausystem.tracer;
|
||||
|
||||
import net.minecraft.server.v1_12_R1.*;
|
||||
|
||||
public class TNTEntity_12 extends EntityFallingBlock {
|
||||
|
||||
private TNTPosition position;
|
||||
|
||||
public TNTEntity_12(World world, TNTPosition position) {
|
||||
super(world, position.getLocation().getX(), position.getLocation().getY(), position.getLocation().getZ(), Blocks.TNT.getBlockData());
|
||||
this.position = position;
|
||||
|
||||
this.setNoGravity(true);
|
||||
this.ticksLived = -12000;
|
||||
this.dropItem = false;
|
||||
this.setCustomNameVisible(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void move(EnumMoveType enummovetype, double dx, double dy, double dz) {
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -1,53 +0,0 @@
|
||||
package de.steamwar.bausystem.tracer;
|
||||
|
||||
import net.minecraft.server.v1_12_R1.PacketPlayOutEntityDestroy;
|
||||
import net.minecraft.server.v1_12_R1.PacketPlayOutSpawnEntity;
|
||||
import org.bukkit.craftbukkit.v1_12_R1.entity.CraftPlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class TraceTNT_12 {
|
||||
|
||||
// public PacketPlayOutSpawnEntity(Entity var1, int var2, int var3) {
|
||||
// this.a = var1.getId();
|
||||
// this.b = var1.getUniqueID();
|
||||
// this.c = var1.locX;
|
||||
// this.d = var1.locY;
|
||||
// this.e = var1.locZ;
|
||||
// this.i = MathHelper.d(var1.pitch * 256.0F / 360.0F);
|
||||
// this.j = MathHelper.d(var1.yaw * 256.0F / 360.0F);
|
||||
// this.k = var2;
|
||||
// this.l = var3;
|
||||
// double var4 = 3.9D;
|
||||
// this.f = (int)(MathHelper.a(var1.motX, -3.9D, 3.9D) * 8000.0D);
|
||||
// this.g = (int)(MathHelper.a(var1.motY, -3.9D, 3.9D) * 8000.0D);
|
||||
// this.h = (int)(MathHelper.a(var1.motZ, -3.9D, 3.9D) * 8000.0D);
|
||||
// }
|
||||
|
||||
static void showTNT(int entityID, Player player, float... position) {
|
||||
PacketPlayOutSpawnEntity spawnEntity = new PacketPlayOutSpawnEntity();
|
||||
ReflectionsUtils.setField("a", spawnEntity, entityID);
|
||||
ReflectionsUtils.setField("b", spawnEntity, UUID.randomUUID());
|
||||
ReflectionsUtils.setField("c", spawnEntity, position[0]);
|
||||
ReflectionsUtils.setField("d", spawnEntity, position[1]);
|
||||
ReflectionsUtils.setField("e", spawnEntity, position[2]);
|
||||
ReflectionsUtils.setField("i", spawnEntity, 0);
|
||||
ReflectionsUtils.setField("j", spawnEntity, 0);
|
||||
// EntityType
|
||||
ReflectionsUtils.setField("k", spawnEntity, 0);
|
||||
ReflectionsUtils.setField("l", spawnEntity, 0);
|
||||
ReflectionsUtils.setField("f", spawnEntity, 0);
|
||||
ReflectionsUtils.setField("g", spawnEntity, 0);
|
||||
ReflectionsUtils.setField("h", spawnEntity, 0);
|
||||
|
||||
((CraftPlayer) player).getHandle().playerConnection.sendPacket(spawnEntity);
|
||||
}
|
||||
|
||||
static void hideTNT(int entityID, Player player, float... position) {
|
||||
PacketPlayOutEntityDestroy deleteEntity = new PacketPlayOutEntityDestroy(entityID);
|
||||
|
||||
((CraftPlayer) player).getHandle().playerConnection.sendPacket(deleteEntity);
|
||||
}
|
||||
|
||||
}
|
24
BauSystem_15/src/de/steamwar/bausystem/tracer/TNTEntity_15.java
Normale Datei
24
BauSystem_15/src/de/steamwar/bausystem/tracer/TNTEntity_15.java
Normale Datei
@ -0,0 +1,24 @@
|
||||
package de.steamwar.bausystem.tracer;
|
||||
|
||||
import net.minecraft.server.v1_15_R1.*;
|
||||
|
||||
public class TNTEntity_15 extends EntityFallingBlock {
|
||||
|
||||
private TNTPosition position;
|
||||
|
||||
public TNTEntity_15(World world, TNTPosition position) {
|
||||
super(world, position.getLocation().getX(), position.getLocation().getY(), position.getLocation().getZ(), Blocks.TNT.getBlockData());
|
||||
this.position = position;
|
||||
|
||||
this.setNoGravity(true);
|
||||
this.ticksLived = -12000;
|
||||
this.dropItem = false;
|
||||
this.setCustomNameVisible(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void move(EnumMoveType enummovetype, Vec3D vec3d) {
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -1,37 +0,0 @@
|
||||
package de.steamwar.bausystem.tracer;
|
||||
|
||||
import net.minecraft.server.v1_15_R1.EntityTypes;
|
||||
import net.minecraft.server.v1_15_R1.PacketPlayOutEntityDestroy;
|
||||
import net.minecraft.server.v1_15_R1.PacketPlayOutSpawnEntity;
|
||||
import org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class TraceTNT_15 {
|
||||
|
||||
static void showTNT(int entityID, Player player, float... position) {
|
||||
PacketPlayOutSpawnEntity spawnEntity = new PacketPlayOutSpawnEntity();
|
||||
ReflectionsUtils.setField("a", spawnEntity, entityID);
|
||||
ReflectionsUtils.setField("b", spawnEntity, UUID.randomUUID());
|
||||
ReflectionsUtils.setField("c", spawnEntity, position[0]);
|
||||
ReflectionsUtils.setField("d", spawnEntity, position[1]);
|
||||
ReflectionsUtils.setField("e", spawnEntity, position[2]);
|
||||
ReflectionsUtils.setField("i", spawnEntity, 0);
|
||||
ReflectionsUtils.setField("j", spawnEntity, 0);
|
||||
ReflectionsUtils.setField("k", spawnEntity, EntityTypes.FALLING_BLOCK);
|
||||
ReflectionsUtils.setField("l", spawnEntity, 0);
|
||||
ReflectionsUtils.setField("f", spawnEntity, 0);
|
||||
ReflectionsUtils.setField("g", spawnEntity, 0);
|
||||
ReflectionsUtils.setField("h", spawnEntity, 0);
|
||||
|
||||
((CraftPlayer) player).getHandle().playerConnection.sendPacket(spawnEntity);
|
||||
}
|
||||
|
||||
static void hideTNT(int entityID, Player player, float... position) {
|
||||
PacketPlayOutEntityDestroy deleteEntity = new PacketPlayOutEntityDestroy(entityID);
|
||||
|
||||
((CraftPlayer) player).getHandle().playerConnection.sendPacket(deleteEntity);
|
||||
}
|
||||
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
package de.steamwar.bausystem.tracer;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class ReflectionsUtils {
|
||||
|
||||
private static Map<String, Field> fieldMap = new LinkedHashMap<String, Field>() {
|
||||
@Override
|
||||
protected boolean removeEldestEntry(Map.Entry<String, Field> eldest) {
|
||||
return size() > 100;
|
||||
}
|
||||
};
|
||||
|
||||
@SuppressWarnings({"java:S3011"})
|
||||
static void setField(String fieldName, Object object, Object fieldValue) {
|
||||
String cacheName = object.getClass().getTypeName() + ":" + fieldName;
|
||||
Field field;
|
||||
if (fieldMap.containsKey(cacheName)) {
|
||||
field = fieldMap.get(cacheName);
|
||||
} else {
|
||||
try {
|
||||
field = object.getClass().getDeclaredField(fieldName);
|
||||
} catch (NoSuchFieldException e) {
|
||||
return;
|
||||
}
|
||||
fieldMap.put(cacheName, field);
|
||||
}
|
||||
|
||||
field.setAccessible(true);
|
||||
try {
|
||||
field.set(object, fieldValue);
|
||||
} catch (IllegalAccessException e) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
32
BauSystem_API/src/de/steamwar/bausystem/tracer/TNTPosition.java
Normale Datei
32
BauSystem_API/src/de/steamwar/bausystem/tracer/TNTPosition.java
Normale Datei
@ -0,0 +1,32 @@
|
||||
package de.steamwar.bausystem.tracer;
|
||||
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
public class TNTPosition {
|
||||
|
||||
private Vector location;
|
||||
private Vector vector;
|
||||
|
||||
public TNTPosition(Entity entity) {
|
||||
location = entity.getLocation().toVector();
|
||||
vector = entity.getVelocity();
|
||||
}
|
||||
|
||||
public Vector getLocation() {
|
||||
return location;
|
||||
}
|
||||
|
||||
public Vector getVector() {
|
||||
return vector;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Position{" +
|
||||
"location=" + location +
|
||||
", vector=" + vector +
|
||||
'}';
|
||||
}
|
||||
|
||||
}
|
@ -22,7 +22,6 @@ package de.steamwar.bausystem.commands;
|
||||
import de.steamwar.bausystem.BauSystem;
|
||||
import de.steamwar.bausystem.Permission;
|
||||
import de.steamwar.bausystem.tracer.record.RecordManager;
|
||||
import de.steamwar.bausystem.tracer.TraceManager;
|
||||
import de.steamwar.bausystem.world.Welt;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
@ -78,10 +77,10 @@ public class CommandTrace implements CommandExecutor {
|
||||
RecordManager.commandAuto();
|
||||
break;
|
||||
case "show":
|
||||
TraceManager.commandShow(player);
|
||||
// TraceManager.commandShow(player);
|
||||
break;
|
||||
case "hide":
|
||||
TraceManager.commandHide(player);
|
||||
// TraceManager.commandHide(player);
|
||||
break;
|
||||
case "toggleshow":
|
||||
case "interpolate":
|
||||
|
@ -1,39 +0,0 @@
|
||||
/*
|
||||
This file is a part of the SteamWar software.
|
||||
|
||||
Copyright (C) 2020 SteamWar.de-Serverteam
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package de.steamwar.bausystem.tracer;
|
||||
|
||||
import de.steamwar.bausystem.tracer.record.RecordManager;
|
||||
import org.bukkit.entity.TNTPrimed;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.EntityExplodeEvent;
|
||||
|
||||
public class ExplodeListener implements Listener {
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void onEntityExplode(EntityExplodeEvent event) {
|
||||
if (!(event.getEntity() instanceof TNTPrimed)) return;
|
||||
|
||||
RecordManager.tntExplode();
|
||||
TraceManager.tntExplode((TNTPrimed) event.getEntity());
|
||||
}
|
||||
|
||||
}
|
@ -1,51 +0,0 @@
|
||||
/*
|
||||
This file is a part of the SteamWar software.
|
||||
|
||||
Copyright (C) 2020 SteamWar.de-Serverteam
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package de.steamwar.bausystem.tracer;
|
||||
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
public class Position {
|
||||
|
||||
private Vector location;
|
||||
private Vector vector;
|
||||
|
||||
public Position(Entity entity) {
|
||||
location = entity.getLocation().toVector();
|
||||
vector = entity.getVelocity();
|
||||
}
|
||||
|
||||
public Vector getLocation() {
|
||||
return location;
|
||||
}
|
||||
|
||||
public Vector getVector() {
|
||||
return vector;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Position{" +
|
||||
"location=" + location +
|
||||
", vector=" + vector +
|
||||
'}';
|
||||
}
|
||||
|
||||
}
|
@ -1,67 +0,0 @@
|
||||
/*
|
||||
This file is a part of the SteamWar software.
|
||||
|
||||
Copyright (C) 2020 SteamWar.de-Serverteam
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package de.steamwar.bausystem.tracer;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.TNTPrimed;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
public class TraceManager {
|
||||
|
||||
private static Map<TNTPrimed, TraceTNT> traceTNTMap = new HashMap<>();
|
||||
private static Set<TraceTNT> traceTNTSet = new HashSet<>();
|
||||
|
||||
public static void recordStop() {
|
||||
traceTNTMap.clear();
|
||||
}
|
||||
|
||||
public static void tntExplode(TNTPrimed tntPrimed) {
|
||||
if (!traceTNTMap.containsKey(tntPrimed)) return;
|
||||
traceTNTMap.remove(tntPrimed).explosion(tntPrimed);
|
||||
}
|
||||
|
||||
public static void tntAdd(TNTPrimed tntPrimed) {
|
||||
TraceTNT traceTNT = new TraceTNT(tntPrimed);
|
||||
traceTNTMap.put(tntPrimed, traceTNT);
|
||||
traceTNTSet.add(traceTNT);
|
||||
}
|
||||
|
||||
public static void commandDelete() {
|
||||
traceTNTMap.clear();
|
||||
traceTNTSet.clear();
|
||||
}
|
||||
|
||||
public static int getRecordSize() {
|
||||
return traceTNTMap.size();
|
||||
}
|
||||
|
||||
public static void commandShow(Player player) {
|
||||
traceTNTSet.forEach(traceTNT -> traceTNT.showTrace(player));
|
||||
}
|
||||
|
||||
public static void commandHide(Player player) {
|
||||
traceTNTSet.forEach(traceTNT -> traceTNT.hideTrace(player));
|
||||
}
|
||||
|
||||
}
|
@ -1,116 +0,0 @@
|
||||
/*
|
||||
This file is a part of the SteamWar software.
|
||||
|
||||
Copyright (C) 2020 SteamWar.de-Serverteam
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package de.steamwar.bausystem.tracer;
|
||||
|
||||
import de.steamwar.core.Core;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.TNTPrimed;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class TraceTNT {
|
||||
|
||||
private static int traceID = 0;
|
||||
|
||||
private int id = traceID++;
|
||||
private float[] source = new float[3];
|
||||
private float[] explosion = new float[3];
|
||||
private int index = 0;
|
||||
private float[] position = new float[240];
|
||||
private float[] velocity = new float[240];
|
||||
|
||||
public TraceTNT(TNTPrimed tntPrimed) {
|
||||
source[0] = (float) tntPrimed.getLocation().getX();
|
||||
source[1] = (float) tntPrimed.getLocation().getY();
|
||||
source[2] = (float) tntPrimed.getLocation().getZ();
|
||||
}
|
||||
|
||||
public void explosion(TNTPrimed tntPrimed) {
|
||||
explosion[0] = (float) tntPrimed.getLocation().getX();
|
||||
explosion[1] = (float) tntPrimed.getLocation().getY();
|
||||
explosion[2] = (float) tntPrimed.getLocation().getZ();
|
||||
}
|
||||
|
||||
public void add(TNTPrimed tntPrimed) {
|
||||
if (index > position.length) return;
|
||||
position[index + 0] = (float) tntPrimed.getLocation().getX();
|
||||
position[index + 1] = (float) tntPrimed.getLocation().getY();
|
||||
position[index + 2] = (float) tntPrimed.getLocation().getZ();
|
||||
velocity[index + 0] = (float) tntPrimed.getVelocity().getX();
|
||||
velocity[index + 1] = (float) tntPrimed.getVelocity().getY();
|
||||
velocity[index + 2] = (float) tntPrimed.getVelocity().getZ();
|
||||
index += 3;
|
||||
}
|
||||
|
||||
public long size() {
|
||||
long size = 0;
|
||||
|
||||
// id:
|
||||
size += 32;
|
||||
|
||||
// index:
|
||||
size += 32;
|
||||
|
||||
// source:
|
||||
size += source.length * 32;
|
||||
|
||||
// explosion:
|
||||
size += explosion.length * 32;
|
||||
|
||||
// position:
|
||||
size += position.length * 32;
|
||||
|
||||
// velocity:
|
||||
size += velocity.length * 32;
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
public void showTrace(Player player) {
|
||||
int entityID = Integer.MAX_VALUE - id * 200;
|
||||
|
||||
tnt(entityID, player, source, TraceTNT_15::showTNT, TraceTNT_12::showTNT);
|
||||
}
|
||||
|
||||
public void hideTrace(Player player) {
|
||||
int entityID = Integer.MAX_VALUE - id * 200;
|
||||
|
||||
tnt(entityID, player, source, TraceTNT_15::hideTNT, TraceTNT_12::hideTNT);
|
||||
}
|
||||
|
||||
private void tnt(int entityID, Player player, float[] position, VersionConsumer<Integer, Player, float[]> version15, VersionConsumer<Integer, Player, float[]> versionDefault) {
|
||||
if (position.length != 3) return;
|
||||
switch (Core.getVersion()) {
|
||||
case 15:
|
||||
version15.accept(entityID, player, position);
|
||||
break;
|
||||
default:
|
||||
versionDefault.accept(entityID, player, position);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private interface VersionConsumer<K, V, S> {
|
||||
|
||||
void accept(K k, V v, S s);
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -51,7 +51,6 @@ public class ExplodeListener implements Listener {
|
||||
static void explode(TNTPrimed tntPrimed) {
|
||||
get(tntPrimed).explode(tntPrimed);
|
||||
RecordTrace recordTrace = recordTraceMap.remove(tntPrimed);
|
||||
// System.out.println(recordTrace);
|
||||
DataHolder.finished.add(recordTrace);
|
||||
}
|
||||
|
||||
|
@ -22,7 +22,6 @@ package de.steamwar.bausystem.tracer.record;
|
||||
import de.steamwar.bausystem.BauSystem;
|
||||
import de.steamwar.bausystem.commands.CommandTPSLimiter;
|
||||
import de.steamwar.bausystem.tracer.RecordStatus;
|
||||
import de.steamwar.bausystem.tracer.TraceManager;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.TNTPrimed;
|
||||
@ -86,7 +85,8 @@ public class RecordManager {
|
||||
recorder.cancel();
|
||||
recorder = null;
|
||||
startTime = 0;
|
||||
TraceManager.recordStop();
|
||||
// TODO: fix
|
||||
// TraceManager.recordStop();
|
||||
}
|
||||
|
||||
private static void recordAutoStop() {
|
||||
|
@ -19,7 +19,7 @@
|
||||
|
||||
package de.steamwar.bausystem.tracer.record;
|
||||
|
||||
import de.steamwar.bausystem.tracer.Position;
|
||||
import de.steamwar.bausystem.tracer.TNTPosition;
|
||||
import org.bukkit.entity.TNTPrimed;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@ -27,30 +27,30 @@ import java.util.List;
|
||||
|
||||
public class RecordTrace {
|
||||
|
||||
private Position startPosition;
|
||||
private Position explosionPosition;
|
||||
private List<Position> positionList = new ArrayList<>(160);
|
||||
private TNTPosition startTNTPosition;
|
||||
private TNTPosition explosionTNTPosition;
|
||||
private List<TNTPosition> TNTPositionList = new ArrayList<>(160);
|
||||
|
||||
public RecordTrace(TNTPrimed tntPrimed) {
|
||||
startPosition = new Position(tntPrimed);
|
||||
startTNTPosition = new TNTPosition(tntPrimed);
|
||||
}
|
||||
|
||||
public RecordTrace add(TNTPrimed tntPrimed) {
|
||||
positionList.add(new Position(tntPrimed));
|
||||
TNTPositionList.add(new TNTPosition(tntPrimed));
|
||||
return this;
|
||||
}
|
||||
|
||||
public RecordTrace explode(TNTPrimed tntPrimed) {
|
||||
explosionPosition = new Position(tntPrimed);
|
||||
explosionTNTPosition = new TNTPosition(tntPrimed);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "RecordTrace{" +
|
||||
"startPosition=" + startPosition +
|
||||
", explosionPosition=" + explosionPosition +
|
||||
", positionList=" + positionList +
|
||||
"startPosition=" + startTNTPosition +
|
||||
", explosionPosition=" + explosionTNTPosition +
|
||||
", positionList=" + TNTPositionList +
|
||||
'}';
|
||||
}
|
||||
|
||||
|
@ -1,15 +1,15 @@
|
||||
package de.steamwar.bausystem.tracer.show;
|
||||
|
||||
import de.steamwar.bausystem.tracer.Position;
|
||||
import de.steamwar.bausystem.tracer.TNTPosition;
|
||||
import net.minecraft.server.v1_15_R1.*;
|
||||
|
||||
public class TNTEntity extends EntityFallingBlock {
|
||||
|
||||
private Position position;
|
||||
private TNTPosition TNTPosition;
|
||||
|
||||
public TNTEntity(World world, Position position) {
|
||||
super(world, position.getLocation().getX(), position.getLocation().getY(), position.getLocation().getZ(), Blocks.TNT.getBlockData());
|
||||
this.position = position;
|
||||
public TNTEntity(World world, TNTPosition TNTPosition) {
|
||||
super(world, TNTPosition.getLocation().getX(), TNTPosition.getLocation().getY(), TNTPosition.getLocation().getZ(), Blocks.TNT.getBlockData());
|
||||
this.TNTPosition = TNTPosition;
|
||||
|
||||
this.setNoGravity(true);
|
||||
this.ticksLived = -12000;
|
||||
|
@ -22,11 +22,8 @@ package de.steamwar.bausystem.world;
|
||||
import de.steamwar.bausystem.commands.CommandFreeze;
|
||||
import de.steamwar.bausystem.commands.CommandTNT;
|
||||
import de.steamwar.bausystem.commands.CommandTPSLimiter;
|
||||
import de.steamwar.bausystem.tracer.record.DataHolder;
|
||||
import de.steamwar.bausystem.tracer.record.ExplodeListener;
|
||||
import de.steamwar.bausystem.tracer.record.RecordManager;
|
||||
import de.steamwar.bausystem.tracer.TraceManager;
|
||||
import de.steamwar.bausystem.tracer.record.RecordTrace;
|
||||
import de.steamwar.core.TPSWatcher;
|
||||
import de.steamwar.scoreboard.SWScoreboard;
|
||||
import de.steamwar.scoreboard.ScoreboardCallback;
|
||||
|
In neuem Issue referenzieren
Einen Benutzer sperren