Changed room join method for api driven rooms

This commit is contained in:
Elias Müller 2023-11-19 13:06:34 +01:00
parent 5f6473b0fb
commit 76192b1f97
5 changed files with 42 additions and 22 deletions

View File

@ -33,7 +33,11 @@ dependencies {
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.0'
//https://jitpack.io/#Minestom/Minestom
implementation 'com.github.waxeria:Minestom:e0427a36f3'
// implementation 'com.github.waxeria:Minestom:e0427a36f3'
// implementation 'dev.hollowcube:minestom-ce:5bcc72b911'
implementation 'dev.hollowcube:minestom-ce:e146a9393e'
implementation 'dev.hollowcube:minestom-ce-extensions:1.2.0'
//Tools

View File

@ -40,13 +40,14 @@ public class Main {
ConfigurationNode serverConfig = globalConfig.node("server");
logger.info("Initialize Minecraft server...");
MinecraftServer server = MinecraftServer.init();
PvpExtension.init();
MinecraftServer.setBrandName("mhsl.eu - minenet - credits to minestom");
MinecraftServer.setCompressionThreshold(serverConfig.node("compression-threshold").getInt(0));
System.setProperty("minestom.chunk-view-distance", String.valueOf(serverConfig.node("view-distance").getInt()));
MinecraftServer server = MinecraftServer.init();
PvpExtension.init();
MinecraftServer.getConnectionManager().setUuidProvider(new ByPlayerNameUuidProvider());
Commands.values();

View File

@ -2,7 +2,9 @@ package eu.mhsl.minenet.minigames.handler.global;
import eu.mhsl.minenet.minigames.Main;
import eu.mhsl.minenet.minigames.api.QueuedPlayerRooms;
import eu.mhsl.minenet.minigames.instance.MineNetInstance;
import eu.mhsl.minenet.minigames.instance.room.Room;
import eu.mhsl.minenet.minigames.instance.transfer.Transfer;
import eu.mhsl.minenet.minigames.message.Icon;
import eu.mhsl.minenet.minigames.message.type.ChatMessage;
import eu.mhsl.minenet.minigames.skin.SkinCache;
@ -12,6 +14,7 @@ import net.minestom.server.event.EventListener;
import net.minestom.server.event.player.PlayerLoginEvent;
import eu.mhsl.minenet.minigames.instance.hub.Hub;
import net.minestom.server.permission.Permission;
import net.minestom.server.timer.TaskSchedule;
import org.jetbrains.annotations.NotNull;
import org.spongepowered.configurate.serialize.SerializationException;
@ -32,15 +35,20 @@ public class PlayerLoginHandler implements EventListener<PlayerLoginEvent> {
UUID pushQueue = QueuedPlayerRooms.pullQueue(event.getPlayer().getUuid());
if(pushQueue != null) {
Room target = Room.getRoom(pushQueue).orElseThrow();
p.setRespawnPoint(target.getSpawn());
event.setSpawningInstance(Hub.INSTANCE);
MinecraftServer.getSchedulerManager().scheduleNextTick(() -> Room.setRoom(p, target));
Transfer transferInstance = new Transfer();
p.setRespawnPoint(transferInstance.getSpawn());
event.setSpawningInstance(transferInstance);
MinecraftServer.getSchedulerManager().scheduleTask(
() -> Room.setRoom(p, target),
TaskSchedule.seconds(1),
TaskSchedule.stop()
);
} else {
p.setRespawnPoint(Hub.INSTANCE.getSpawn());
event.setSpawningInstance(Hub.INSTANCE);
}
SkinCache.applySkin(p);
// SkinCache.applySkin(p);
try {
if(Objects.requireNonNull(Main.globalConfig.node("admins").getList(String.class)).stream().anyMatch(s -> s.equalsIgnoreCase(p.getUsername()))) {

View File

@ -0,0 +1,22 @@
package eu.mhsl.minenet.minigames.instance.transfer;
import eu.mhsl.minenet.minigames.instance.Dimension;
import eu.mhsl.minenet.minigames.instance.MineNetInstance;
import eu.mhsl.minenet.minigames.instance.Spawnable;
import eu.mhsl.minenet.minigames.util.CommonEventHandles;
import net.minestom.server.coordinate.Pos;
import net.minestom.server.event.player.PlayerMoveEvent;
import net.minestom.server.instance.block.Block;
public class Transfer extends MineNetInstance implements Spawnable {
public Transfer() {
super(Dimension.THE_END.DIMENSION);
eventNode().addListener(PlayerMoveEvent.class, CommonEventHandles::cancel);
setBlock(0, 0, 0, Block.BARRIER);
}
@Override
public Pos getSpawn() {
return new Pos(0.5, 1, 0.5);
}
}

View File

@ -1,15 +0,0 @@
package eu.mhsl.minenet.minigames.instance.virtualRoom;
import eu.mhsl.minenet.minigames.instance.room.Room;
import net.minestom.server.coordinate.Pos;
public class VirtualRoom extends Room {
public VirtualRoom() {
}
@Override
public Pos getSpawn() {
return null;
}
}