Disconnect client with TransitionService

This commit is contained in:
P0nk
2023-08-10 21:58:26 +02:00
parent d5682a5f65
commit cb31121fe7
16 changed files with 83 additions and 74 deletions

View File

@@ -24,7 +24,6 @@ package net.server.channel;
import client.Character;
import config.YamlConfig;
import constants.id.MapId;
import database.character.CharacterSaver;
import database.drop.DropProvider;
import net.ChannelDependencies;
import net.netty.ChannelServer;
@@ -45,6 +44,7 @@ import server.events.gm.Event;
import server.expeditions.Expedition;
import server.expeditions.ExpeditionType;
import server.maps.*;
import service.TransitionService;
import tools.PacketCreator;
import tools.Pair;
@@ -126,7 +126,7 @@ public final class Channel {
this.merchWlock = rwLock.writeLock();
try {
this.channelServer = initServer(port, world, channel, channelDependencies.characterSaver());
this.channelServer = initServer(port, world, channel, channelDependencies.transitionService());
expedType.addAll(Arrays.asList(ExpeditionType.values()));
if (Server.getInstance().isOnline()) { // postpone event loading to improve boot time... thanks Riizade, daronhudson for noticing slow startup times
@@ -154,8 +154,8 @@ public final class Channel {
}
}
private ChannelServer initServer(int port, int world, int channel, CharacterSaver characterSaver) {
ChannelServer channelServer = new ChannelServer(port, world, channel, characterSaver);
private ChannelServer initServer(int port, int world, int channel, TransitionService transitionService) {
ChannelServer channelServer = new ChannelServer(port, world, channel, transitionService);
channelServer.start();
return channelServer;
}

View File

@@ -31,19 +31,27 @@ import net.packet.InPacket;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import server.ItemInformationProvider;
import server.TimerManager;
import server.life.LifeFactory;
import server.life.Monster;
import server.maps.MapObject;
import server.maps.MapObjectType;
import server.quest.Quest;
import service.TransitionService;
import tools.PacketCreator;
import tools.Randomizer;
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;
public final class AdminCommandHandler extends AbstractPacketHandler {
private static final Logger log = LoggerFactory.getLogger(AdminCommandHandler.class);
private final TransitionService transitionService;
public AdminCommandHandler(TransitionService transitionService) {
this.transitionService = transitionService;
}
@Override
public void handlePacket(InPacket p, Client c) {
@@ -95,7 +103,7 @@ public final class AdminCommandHandler extends AbstractPacketHandler {
target.ban(description + " " + reason);
} else {
target.block(type, duration, description);
target.sendPolice(duration, reason, 6000);
sendPolice(target.getClient(), reason);
}
c.sendPacket(PacketCreator.getGMEffect(4, (byte) 0));
} else if (Character.ban(victim, reason, false)) {
@@ -183,4 +191,11 @@ public final class AdminCommandHandler extends AbstractPacketHandler {
break;
}
}
private void sendPolice(Client c, String reason) {
c.sendPacket(PacketCreator.sendPolice(String.format("You have been blocked by the#b %s Police for %s.#k", "Cosmic", reason)));
c.getPlayer().setBanned();
TimerManager.getInstance().schedule(() -> transitionService.disconnect(c, false, false),
TimeUnit.SECONDS.toMillis(6));
}
}