added missing gradle files

This commit is contained in:
Elias Müller 2023-11-11 23:22:52 +01:00
parent 541eb1e733
commit 2306308071
8 changed files with 112 additions and 22 deletions

3
.gitignore vendored
View File

@ -1,6 +1,3 @@
# ---> Java
*.gradle
# Compiled class file
*.class

81
build.gradle Normal file
View File

@ -0,0 +1,81 @@
//for jar packaging see https://github.com/Protonull/BasicMinestomServer/blob/master/build.gradle.kts
plugins {
id 'java'
id "com.github.johnrengelman.shadow" version "7.1.0"
}
group 'eu.mhsl.minenet'
version '1.0-SNAPSHOT'
repositories {
//maven 'https://repo.unnamed.team/repository/unnamed-public/'
mavenCentral()
google()
maven {
url 'https://jitpack.io'
}
maven {
url "https://repo.unnamed.team/repository/unnamed-public/"
}
maven {
url 'https://oss.sonatype.org/content/repositories/snapshots'
}
}
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.0'
//https://jitpack.io/#Minestom/Minestom
//implementation 'com.github.Minestom:Minestom:aa621021e2'
//implementation 'com.github.Minestom.Minestom:Minestom:4f7ff5b474'
// implementation 'com.github.Minestom.Minestom:Minestom:2cdb3911b0'
// implementation 'com.github.Minestom:MinestomDataGenerator:ddde11056e'
implementation 'com.github.waxeria:Minestom:e0427a36f3'
//Tools
//implementation 'com.github.Articdive.JNoise:jnoise-core:4.0.0'
implementation 'de.articdive:jnoise:3.0.2'
// implementation 'com.fasterxml.jackson.core:jackson-databind:2.13.4.2'
// implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.13.4'
implementation 'org.yaml:snakeyaml:2.0'
implementation 'net.md-5:bungeecord-config:1.19-R0.1-SNAPSHOT'
implementation 'org.apache.commons:commons-text:1.10.0'
implementation 'org.spongepowered:configurate-yaml:4.1.2'
//PvP
implementation 'com.github.TogAr2:MinestomPvP:35e5661'
//implementation 'com.github.TogAr2:MinestomPvP:135ec9e2b7'
// Hephaestus engine
implementation("team.unnamed:hephaestus-api:0.2.1-SNAPSHOT")
implementation("team.unnamed:hephaestus-reader-blockbench:0.2.1-SNAPSHOT")
implementation("team.unnamed:hephaestus-runtime-minestom:0.2.1-SNAPSHOT")
}
tasks {
jar {
manifest {
attributes 'Main-Class': 'eu.mhsl.minenet.minigames.Main'
attributes 'Multi-Release': true
}
duplicatesStrategy = 'exclude'
from configurations.compileClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
build {
dependsOn(shadowJar)
}
shadowJar {
mergeServiceFiles()
archiveClassifier.set("")
}
}

2
settings.gradle Normal file
View File

@ -0,0 +1,2 @@
rootProject.name = 'Minigames'

View File

@ -1,4 +0,0 @@
package eu.mhsl.minenet.minigames;
public class Api {
}

View File

@ -0,0 +1,6 @@
package eu.mhsl.minenet.minigames.api;
import static spark.Spark.*;
public class HttpServer {
}

View File

@ -18,7 +18,7 @@ public class RoomCommand extends PrivilegedCommand {
Room.getAllRooms().forEach((roomInstance) -> out
.newLine()
.appendStatic("Owner: ").appendStatic(roomInstance.getOwner().getUsername()).newLine()
.appendStatic("Owner: ").appendStatic(roomInstance.getOwner() != null ? roomInstance.getOwner().getUsername() : "none").newLine()
.appendStatic("Players: ").appendStatic(String.valueOf(roomInstance.getAllMembers().size())).newLine()
.list(roomInstance.getAllMembers().stream().map(Player::getUsername).collect(Collectors.toList())).newLine());

View File

@ -25,7 +25,8 @@ import java.util.logging.Logger;
import java.util.stream.Collectors;
public class Room extends MineNetInstance implements Spawnable {
private static final Map<Player, Room> rooms = new WeakHashMap<>();
private static final Set<Room> rooms = new HashSet<>();
private static final Map<Player, Room> players = new WeakHashMap<>();
private static final Logger logger = Logger.getLogger("room");
public static Room createRoom(Player owner) {
@ -34,15 +35,22 @@ public class Room extends MineNetInstance implements Spawnable {
return getRoom(owner).orElseThrow();
}
public static Room createOwnerlessRoom() {
Room room = new Room();
rooms.add(room);
return room;
}
public static void deleteRoom(Room room) {
logger.info("Deleting room " + room.uniqueId);
rooms.values().removeAll(Collections.singleton(room)); // remove(room) would only remove the first one
rooms.remove(room);
players.values().removeAll(Collections.singleton(room));
room.getAllMembers().forEach(player -> MoveInstance.move(player, Hub.INSTANCE));
MoveInstance.forceCloseInstance(room);
}
public static Optional<Room> getRoom(Player p) {
return Optional.ofNullable(rooms.get(p));
return Optional.ofNullable(players.get(p));
}
public static void setOwnRoom(Player p) {
@ -50,42 +58,45 @@ public class Room extends MineNetInstance implements Spawnable {
}
public static void setRoom(Player p, Room room) {
logger.info("Set room for player " + p.getUsername() + " to room by " + room.owner.getUsername());
p.clearEffects();
p.clearTitle();
p.getInventory().clear();
p.setGameMode(GameMode.ADVENTURE);
rooms.put(p, room);
rooms.add(room);
players.put(p, room);
MoveInstance.move(p, room);
}
public static void unsetRoom(Player p) {
logger.info("Unset room for " + p.getUsername());
rooms.remove(p);
players.remove(p);
}
public static Set<Room> getAllRooms() {
return new HashSet<>(rooms.values());
return rooms;
}
private Player owner;
public final UUID uuid = UUID.randomUUID();
private GameSelector gameSelector;
private Room(Player owner) {
super(Dimension.THE_END.DIMENSION);
construct();
setOwner(owner);
this.gameSelector = new GameSelector();
this.gameSelector.setInstance(this, new Pos(0.5, 50, 19.5));
}
protected Room() {
super(Dimension.THE_END.DIMENSION);
construct();
}
private void construct() {
MinecraftServer.getInstanceManager().registerInstance(this);
setChunkLoader(new AnvilLoader(Resource.LOBBY_MAP.getPath()));
this.gameSelector = new GameSelector();
this.gameSelector.setInstance(this, new Pos(0.5, 50, 19.5));
eventNode().addListener(PlayerBlockBreakEvent.class, CommonEventHandles::cancel);
eventNode().addListener(PlayerDisconnectEvent.class, playerDisconnectEvent -> unsetRoom(playerDisconnectEvent.getPlayer()));
}
@ -128,7 +139,7 @@ public class Room extends MineNetInstance implements Spawnable {
}
public Set<Player> getAllMembers() {
return rooms.keySet().stream()
return players.keySet().stream()
.filter(player -> getRoom(player).orElse(null) == this)
.collect(Collectors.toSet());
}

View File

@ -37,10 +37,7 @@ public class GameSelector extends InteractableEntity {
if(playerEntityInteractEvent.getPlayer() != room.getOwner()) {
abstractVillagerMeta.setHeadShakeTimer(20);
new ChatMessage(Icon.ERROR).appendStatic("Only the room leader can start games!").newLine()
.appendStatic("current leader: ").appendStatic(room.getOwner().getUsername())
.send(playerEntityInteractEvent.getPlayer());
new ChatMessage(Icon.ERROR).appendStatic("Only the room leader can start games!").send(playerEntityInteractEvent.getPlayer());
return;
}