FallingBlock #144
@ -32,37 +32,20 @@ import java.util.Set;
|
|||||||
|
|
||||||
class TPSLimit_12 {
|
class TPSLimit_12 {
|
||||||
|
|
||||||
private static Set<PacketPlayOutEntityVelocity> velocityPackets = new HashSet<>();
|
private static Set<Packet<?>> packets = new HashSet<>();
|
||||||
|
|
||||||
static void createVelocityPacketCache(World world) {
|
static void createTickCache(World world) {
|
||||||
velocityPackets.clear();
|
packets.clear();
|
||||||
world.getEntitiesByClasses(TNTPrimed.class, FallingBlock.class).forEach(entity -> {
|
world.getEntitiesByClasses(TNTPrimed.class, FallingBlock.class).forEach(entity -> {
|
||||||
velocityPackets.add(new PacketPlayOutEntityVelocity(entity.getEntityId(), 0, 0, 0));
|
packets.add(new PacketPlayOutEntityVelocity(entity.getEntityId(), 0, 0, 0));
|
||||||
});
|
packets.add(new PacketPlayOutEntityTeleport(((CraftEntity) entity).getHandle()));
|
||||||
}
|
|
||||||
|
|
||||||
static void sendVelocityPackets() {
|
|
||||||
sendPacketsToPlayer(velocityPackets);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void sendTntMetaData(World world) {
|
|
||||||
Set<Packet<?>> packets = new HashSet<>();
|
|
||||||
|
|
||||||
world.getEntitiesByClasses(TNTPrimed.class).forEach(entity -> {
|
|
||||||
net.minecraft.server.v1_12_R1.Entity serverEntity = ((CraftEntity) entity).getHandle();
|
net.minecraft.server.v1_12_R1.Entity serverEntity = ((CraftEntity) entity).getHandle();
|
||||||
packets.add(new PacketPlayOutEntityMetadata(serverEntity.getId(), serverEntity.getDataWatcher(), true));
|
packets.add(new PacketPlayOutEntityMetadata(serverEntity.getId(), serverEntity.getDataWatcher(), true));
|
||||||
});
|
});
|
||||||
|
|
||||||
sendPacketsToPlayer(packets);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sendTeleports(World world) {
|
static void sendTickPackets() {
|
||||||
Set<Packet<?>> packets = new HashSet<>();
|
|
||||||
|
|
||||||
world.getEntitiesByClasses(TNTPrimed.class, FallingBlock.class).forEach(entity -> {
|
|
||||||
packets.add(new PacketPlayOutEntityTeleport(((CraftEntity) entity).getHandle()));
|
|
||||||
});
|
|
||||||
|
|
||||||
sendPacketsToPlayer(packets);
|
sendPacketsToPlayer(packets);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,38 +32,21 @@ import java.util.Set;
|
|||||||
|
|
||||||
class TPSLimit_15 {
|
class TPSLimit_15 {
|
||||||
|
|
||||||
private static Set<PacketPlayOutEntityVelocity> velocityPackets = new HashSet<>();
|
private static Set<Packet<?>> packets = new HashSet<>();
|
||||||
private static final Vec3D noMotion = new Vec3D(0, 0, 0);
|
private static final Vec3D noMotion = new Vec3D(0, 0, 0);
|
||||||
|
|
||||||
static void createVelocityPacketCache(World world) {
|
static void createTickCache(World world) {
|
||||||
velocityPackets.clear();
|
packets.clear();
|
||||||
world.getEntitiesByClasses(TNTPrimed.class, FallingBlock.class).forEach(entity -> {
|
world.getEntitiesByClasses(TNTPrimed.class, FallingBlock.class).forEach(entity -> {
|
||||||
velocityPackets.add(new PacketPlayOutEntityVelocity(entity.getEntityId(), noMotion));
|
packets.add(new PacketPlayOutEntityVelocity(entity.getEntityId(), noMotion));
|
||||||
});
|
packets.add(new PacketPlayOutEntityTeleport(((CraftEntity) entity).getHandle()));
|
||||||
}
|
|
||||||
|
|
||||||
static void sendVelocityPackets() {
|
|
||||||
sendPacketsToPlayer(velocityPackets);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void sendTntMetaData(World world) {
|
|
||||||
Set<Packet<?>> packets = new HashSet<>();
|
|
||||||
|
|
||||||
world.getEntitiesByClasses(TNTPrimed.class).forEach(entity -> {
|
|
||||||
net.minecraft.server.v1_15_R1.Entity serverEntity = ((CraftEntity) entity).getHandle();
|
net.minecraft.server.v1_15_R1.Entity serverEntity = ((CraftEntity) entity).getHandle();
|
||||||
packets.add(new PacketPlayOutEntityMetadata(serverEntity.getId(), serverEntity.getDataWatcher(), true));
|
packets.add(new PacketPlayOutEntityMetadata(serverEntity.getId(), serverEntity.getDataWatcher(), true));
|
||||||
});
|
});
|
||||||
|
|
||||||
sendPacketsToPlayer(packets);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sendTeleports(World world) {
|
static void sendTickPackets() {
|
||||||
Set<Packet<?>> packets = new HashSet<>();
|
|
||||||
|
|
||||||
world.getEntitiesByClasses(TNTPrimed.class, FallingBlock.class).forEach(entity -> {
|
|
||||||
packets.add(new PacketPlayOutEntityTeleport(((CraftEntity) entity).getHandle()));
|
|
||||||
});
|
|
||||||
|
|
||||||
sendPacketsToPlayer(packets);
|
sendPacketsToPlayer(packets);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -102,13 +102,10 @@ public class CommandTPSLimiter implements CommandExecutor {
|
|||||||
} else {
|
} else {
|
||||||
if (tpsLimiter != null) return;
|
if (tpsLimiter != null) return;
|
||||||
tpsLimiter = Bukkit.getScheduler().runTaskTimer(BauSystem.getPlugin(), () -> {
|
tpsLimiter = Bukkit.getScheduler().runTaskTimer(BauSystem.getPlugin(), () -> {
|
||||||
versionDependantCall(() -> TPSLimit_12.sendTntMetaData(world), () -> TPSLimit_15.sendTntMetaData(world));
|
versionDependantCall(() -> TPSLimit_12.createTickCache(world), () -> TPSLimit_15.createTickCache(world));
|
||||||
|
|||||||
|
|
||||||
versionDependantCall(() -> TPSLimit_12.createVelocityPacketCache(world), () -> TPSLimit_15.createVelocityPacketCache(world));
|
|
||||||
for (int i = 0; i < (20 / currentTPSLimit); i++) {
|
for (int i = 0; i < (20 / currentTPSLimit); i++) {
|
||||||
sleepUntilNextTick();
|
sleepUntilNextTick();
|
||||||
versionDependantCall(() -> TPSLimit_12.sendTeleports(world), () -> TPSLimit_15.sendTeleports(world));
|
versionDependantCall(TPSLimit_12::sendTickPackets, TPSLimit_15::sendTickPackets);
|
||||||
versionDependantCall(TPSLimit_12::sendVelocityPackets, TPSLimit_15::sendVelocityPackets);
|
|
||||||
}
|
}
|
||||||
}, 0, 1);
|
}, 0, 1);
|
||||||
}
|
}
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren
ist noch nicht master, wird also noch nicht gemergt.
wie meinst du das? Meinst du damit die Sache aus dem SpigotCore?