updated minestom version, breaking some behaviour

This commit is contained in:
Elias Müller 2024-10-06 17:53:41 +02:00
parent 5c4ddf892c
commit a321d243ba
40 changed files with 136 additions and 140 deletions

View File

@ -28,9 +28,16 @@ repositories {
} }
} }
allprojects {
repositories {
maven { url "https://jitpack.io" }
}
}
java { java {
toolchain { toolchain {
languageVersion = JavaLanguageVersion.of(17) languageVersion = JavaLanguageVersion.of(21)
} }
} }
@ -39,13 +46,7 @@ dependencies {
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.0' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.0'
//https://jitpack.io/#Minestom/Minestom //https://jitpack.io/#Minestom/Minestom
// implementation 'com.github.Minestom:Minestom:c496ee357' implementation 'net.minestom:minestom-snapshots:59406d5b54'
// implementation 'com.github.waxeria:Minestom:e0427a36f3'
// implementation 'dev.hollowcube:minestom-ce:5bcc72b911'
implementation 'dev.hollowcube:minestom-ce:8715f4305d'
implementation 'dev.hollowcube:minestom-ce-extensions:1.2.0'
//Tools //Tools
implementation 'de.articdive:jnoise:3.0.2' implementation 'de.articdive:jnoise:3.0.2'
@ -54,13 +55,11 @@ dependencies {
implementation 'org.spongepowered:configurate-yaml:4.1.2' implementation 'org.spongepowered:configurate-yaml:4.1.2'
implementation 'com.sparkjava:spark-core:2.9.4' implementation 'com.sparkjava:spark-core:2.9.4'
implementation 'com.google.code.gson:gson:2.10.1' implementation 'com.google.code.gson:gson:2.10.1'
implementation 'com.google.guava:guava:31.0.1-jre' implementation 'com.google.guava:guava:32.0.0-android'
//PvP //PvP
implementation 'com.github.TogAr2:MinestomPvP:35e5661' implementation 'com.github.TogAr2:MinestomPvP:0a5f94bcd7'
//implementation 'com.github.TogAr2:MinestomPvP:135ec9e2b7'
// Hephaestus engine // Hephaestus engine
implementation("team.unnamed:hephaestus-api:0.2.1-SNAPSHOT") implementation("team.unnamed:hephaestus-api:0.2.1-SNAPSHOT")

View File

@ -6,7 +6,7 @@ import eu.mhsl.minenet.minigames.handler.Listeners;
import eu.mhsl.minenet.minigames.lang.Languages; import eu.mhsl.minenet.minigames.lang.Languages;
import eu.mhsl.minenet.minigames.server.tasks.TablistUpdateTask; import eu.mhsl.minenet.minigames.server.tasks.TablistUpdateTask;
import eu.mhsl.minenet.minigames.server.provider.ByPlayerNameUuidProvider; import eu.mhsl.minenet.minigames.server.provider.ByPlayerNameUuidProvider;
import io.github.bloepiloepi.pvp.PvpExtension; import io.github.togar2.pvp.MinestomPvP;
import net.minestom.server.MinecraftServer; import net.minestom.server.MinecraftServer;
import net.minestom.server.extras.bungee.BungeeCordProxy; import net.minestom.server.extras.bungee.BungeeCordProxy;
import net.minestom.server.extras.lan.OpenToLAN; import net.minestom.server.extras.lan.OpenToLAN;
@ -42,7 +42,7 @@ public class Main {
logger.info("Initialize Minecraft server..."); logger.info("Initialize Minecraft server...");
MinecraftServer server = MinecraftServer.init(); MinecraftServer server = MinecraftServer.init();
PvpExtension.init(); MinestomPvP.init();
MinecraftServer.setBrandName("mhsl.eu - minenet - credits to minestom"); MinecraftServer.setBrandName("mhsl.eu - minenet - credits to minestom");
MinecraftServer.setCompressionThreshold(serverConfig.node("compression-threshold").getInt(0)); MinecraftServer.setCompressionThreshold(serverConfig.node("compression-threshold").getInt(0));

View File

@ -6,8 +6,6 @@ import eu.mhsl.minenet.minigames.message.Icon;
import eu.mhsl.minenet.minigames.message.type.ChatMessage; import eu.mhsl.minenet.minigames.message.type.ChatMessage;
import net.minestom.server.command.builder.arguments.ArgumentType; import net.minestom.server.command.builder.arguments.ArgumentType;
import net.minestom.server.entity.Player; import net.minestom.server.entity.Player;
import net.minestom.server.entity.fakeplayer.FakePlayer;
import net.minestom.server.entity.fakeplayer.FakePlayerOption;
import java.util.UUID; import java.util.UUID;
@ -18,12 +16,12 @@ public class FakeplayerCommand extends PrivilegedCommand {
addSyntax((sender, context) -> { addSyntax((sender, context) -> {
if(sender instanceof Player p) { if(sender instanceof Player p) {
if(p.getInstance() instanceof Room room) { if(p.getInstance() instanceof Room room) {
FakePlayer.initPlayer( // FakePlayer.initPlayer( // TODO FakePlayer does no longer exists
UUID.randomUUID(), // UUID.randomUUID(),
context.getRaw("name"), // context.getRaw("name"),
new FakePlayerOption().setInTabList(true).setRegistered(true), // new FakePlayerOption().setInTabList(true).setRegistered(true),
fakePlayer -> Room.setRoom(fakePlayer, room) // fakePlayer -> Room.setRoom(fakePlayer, room)
); // );
} else { } else {
new ChatMessage(Icon.ERROR).appendStatic("Du musst dich in einer Raumlobby befinden!").send(sender); new ChatMessage(Icon.ERROR).appendStatic("Du musst dich in einer Raumlobby befinden!").send(sender);
} }

View File

@ -26,7 +26,7 @@ public class KickCommand extends PrivilegedCommand {
} }
private void kick(String playername, String reason) { private void kick(String playername, String reason) {
Player playerToKick = MinecraftServer.getConnectionManager().findPlayer(playername); Player playerToKick = MinecraftServer.getConnectionManager().findOnlinePlayer(playername);
Objects.requireNonNull(playerToKick).kick(reason); Objects.requireNonNull(playerToKick).kick(reason);
} }
} }

View File

@ -13,7 +13,7 @@ public class OpCommand extends PrivilegedCommand {
super("op"); super("op");
addSyntax((sender, context) -> { addSyntax((sender, context) -> {
Player target = MinecraftServer.getConnectionManager().getPlayer(context.getRaw("target")); Player target = MinecraftServer.getConnectionManager().getOnlinePlayerByUsername(context.getRaw("target"));
if(target != null) { if(target != null) {
target.addPermission(new Permission("admin")); target.addPermission(new Permission("admin"));
target.refreshCommands(); target.refreshCommands();

View File

@ -27,7 +27,7 @@ public class SetRoomOwnerCommand extends PrivilegedCommand {
addSyntax((sender, context) -> { addSyntax((sender, context) -> {
System.out.println("Test"); System.out.println("Test");
if(sender instanceof Player p) { if(sender instanceof Player p) {
Player newOwner = MinecraftServer.getConnectionManager().getPlayer(context.getRaw("player")); Player newOwner = MinecraftServer.getConnectionManager().getOnlinePlayerByUsername(context.getRaw("player"));
Room.getRoom(p).orElseThrow().setOwner(Objects.requireNonNull(newOwner)); Room.getRoom(p).orElseThrow().setOwner(Objects.requireNonNull(newOwner));
new ChatMessage(Icon.SUCCESS).appendStatic("The new owner has been set!").send(sender); new ChatMessage(Icon.SUCCESS).appendStatic("The new owner has been set!").send(sender);
} }

View File

@ -20,7 +20,7 @@ public class AddEntityToInstanceEventListener implements EventListener<AddEntity
@Override @Override
public @NotNull Result run(@NotNull AddEntityToInstanceEvent event) { public @NotNull Result run(@NotNull AddEntityToInstanceEvent event) {
if(event.getEntity() instanceof Player p) { if(event.getEntity() instanceof Player p) {
MinecraftServer.getSchedulerManager().scheduleNextTick(p::refreshCommands, ExecutionType.ASYNC); MinecraftServer.getSchedulerManager().scheduleNextTick(p::refreshCommands, ExecutionType.TICK_END);
if(event.getInstance() instanceof Spawnable instance) { if(event.getInstance() instanceof Spawnable instance) {
p.setRespawnPoint(instance.getSpawn()); p.setRespawnPoint(instance.getSpawn());

View File

@ -8,9 +8,9 @@ import eu.mhsl.minenet.minigames.skin.SkinCache;
import eu.mhsl.minenet.minigames.util.MoveInstance; import eu.mhsl.minenet.minigames.util.MoveInstance;
import net.minestom.server.MinecraftServer; import net.minestom.server.MinecraftServer;
import net.minestom.server.entity.Player; import net.minestom.server.entity.Player;
import net.minestom.server.event.EventListener;
import net.minestom.server.event.player.PlayerLoginEvent;
import eu.mhsl.minenet.minigames.instance.hub.Hub; import eu.mhsl.minenet.minigames.instance.hub.Hub;
import net.minestom.server.event.EventListener;
import net.minestom.server.event.player.AsyncPlayerConfigurationEvent;
import net.minestom.server.permission.Permission; import net.minestom.server.permission.Permission;
import net.minestom.server.timer.TaskSchedule; import net.minestom.server.timer.TaskSchedule;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -20,14 +20,14 @@ import java.util.Objects;
import java.util.UUID; import java.util.UUID;
import java.util.logging.Logger; import java.util.logging.Logger;
public class PlayerLoginHandler implements EventListener<PlayerLoginEvent> { public class PlayerLoginHandler implements EventListener<AsyncPlayerConfigurationEvent> {
@Override @Override
public @NotNull Class<PlayerLoginEvent> eventType() { public @NotNull Class<AsyncPlayerConfigurationEvent> eventType() {
return PlayerLoginEvent.class; return AsyncPlayerConfigurationEvent.class;
} }
@Override @Override
public @NotNull Result run(@NotNull PlayerLoginEvent event) { public @NotNull Result run(@NotNull AsyncPlayerConfigurationEvent event) {
Player p = event.getPlayer(); Player p = event.getPlayer();
Transfer transferInstance = new Transfer(); Transfer transferInstance = new Transfer();

View File

@ -1,6 +1,7 @@
package eu.mhsl.minenet.minigames.instance; package eu.mhsl.minenet.minigames.instance;
import net.minestom.server.MinecraftServer; import net.minestom.server.MinecraftServer;
import net.minestom.server.registry.DynamicRegistry;
import net.minestom.server.utils.NamespaceID; import net.minestom.server.utils.NamespaceID;
import net.minestom.server.world.DimensionType; import net.minestom.server.world.DimensionType;
@ -9,33 +10,39 @@ import net.minestom.server.world.DimensionType;
*/ */
public enum Dimension { public enum Dimension {
OVERWORLD( OVERWORLD(
NamespaceID.from("minenet:fullbright_overworld"),
DimensionType DimensionType
.builder(NamespaceID.from("minenet:fullbright_overworld")) .builder()
.ambientLight(2.0f) .ambientLight(2.0f)
.build() .build()
), ),
NETHER( NETHER(
NamespaceID.from("minenet:fullbright_nether"),
DimensionType DimensionType
.builder(NamespaceID.from("minenet:fullbright_nether")) .builder()
.ambientLight(2.0f) .ambientLight(2.0f)
.effects("minecraft:the_nether") .effects("minecraft:the_nether")
.build() .build()
), ),
THE_END( THE_END(
NamespaceID.from("minenet:fullbright_end"),
DimensionType DimensionType
.builder(NamespaceID.from("minenet:fullbright_end")) .builder()
.ambientLight(2.0f) .ambientLight(2.0f)
.effects("minecraft:the_end") .effects("minecraft:the_end")
.build() .build()
); );
public final DimensionType DIMENSION; public final DimensionType DIMENSION;
Dimension(DimensionType dimType) { public final NamespaceID namespaceID;
public final DynamicRegistry.Key<DimensionType> key;
Dimension(NamespaceID namespaceID, DimensionType dimType) {
this.DIMENSION = dimType; this.DIMENSION = dimType;
this.namespaceID = namespaceID;
MinecraftServer.getDimensionTypeManager().addDimension(this.DIMENSION); this.key = MinecraftServer.getDimensionTypeRegistry().register(namespaceID, DIMENSION);
} }
} }

View File

@ -7,13 +7,15 @@ import net.minestom.server.event.instance.AddEntityToInstanceEvent;
import net.minestom.server.event.instance.RemoveEntityFromInstanceEvent; import net.minestom.server.event.instance.RemoveEntityFromInstanceEvent;
import net.minestom.server.instance.Instance; import net.minestom.server.instance.Instance;
import net.minestom.server.instance.InstanceContainer; import net.minestom.server.instance.InstanceContainer;
import net.minestom.server.instance.InstanceManager;
import net.minestom.server.registry.DynamicRegistry;
import net.minestom.server.timer.TaskSchedule; import net.minestom.server.timer.TaskSchedule;
import net.minestom.server.world.DimensionType; import net.minestom.server.world.DimensionType;
import java.util.UUID; import java.util.UUID;
public class MineNetInstance extends InstanceContainer { public class MineNetInstance extends InstanceContainer {
public MineNetInstance(DimensionType type) { public MineNetInstance(DynamicRegistry.Key<DimensionType> type) {
super(UUID.randomUUID(), type); super(UUID.randomUUID(), type);
MinecraftServer.getInstanceManager().registerInstance(this); MinecraftServer.getInstanceManager().registerInstance(this);

View File

@ -16,6 +16,7 @@ import net.minestom.server.event.item.ItemDropEvent;
import net.minestom.server.event.player.PlayerBlockBreakEvent; import net.minestom.server.event.player.PlayerBlockBreakEvent;
import net.minestom.server.event.player.PlayerBlockPlaceEvent; import net.minestom.server.event.player.PlayerBlockPlaceEvent;
import net.minestom.server.event.player.PlayerMoveEvent; import net.minestom.server.event.player.PlayerMoveEvent;
import net.minestom.server.registry.DynamicRegistry;
import net.minestom.server.timer.ExecutionType; import net.minestom.server.timer.ExecutionType;
import net.minestom.server.timer.TaskSchedule; import net.minestom.server.timer.TaskSchedule;
import net.minestom.server.world.DimensionType; import net.minestom.server.world.DimensionType;
@ -36,7 +37,7 @@ public abstract class Game extends MineNetInstance implements Spawnable {
protected final Logger logger; protected final Logger logger;
public Game(DimensionType dimensionType) { public Game(DynamicRegistry.Key<DimensionType> dimensionType) {
super(dimensionType); super(dimensionType);
MinecraftServer.getInstanceManager().registerInstance(this); MinecraftServer.getInstanceManager().registerInstance(this);
@ -78,7 +79,7 @@ public abstract class Game extends MineNetInstance implements Spawnable {
this.onLoad(callback); this.onLoad(callback);
// callback.whenComplete((unused, throwable) -> this.start()); // callback.whenComplete((unused, throwable) -> this.start());
return TaskSchedule.stop(); return TaskSchedule.stop();
}, ExecutionType.ASYNC); }, ExecutionType.TICK_END);
} }

View File

@ -9,6 +9,7 @@ import eu.mhsl.minenet.minigames.score.Score;
import net.kyori.adventure.audience.Audience; import net.kyori.adventure.audience.Audience;
import net.kyori.adventure.text.Component; import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.format.NamedTextColor;
import net.minestom.server.registry.DynamicRegistry;
import net.minestom.server.timer.ExecutionType; import net.minestom.server.timer.ExecutionType;
import net.minestom.server.timer.TaskSchedule; import net.minestom.server.timer.TaskSchedule;
import net.minestom.server.world.DimensionType; import net.minestom.server.world.DimensionType;
@ -22,7 +23,7 @@ public class StatelessGame extends Game {
private int timeLimit = 0; private int timeLimit = 0;
private int timePlayed = 0; private int timePlayed = 0;
public StatelessGame(DimensionType dimensionType, String gameName, Score score) { public StatelessGame(DynamicRegistry.Key<DimensionType> dimensionType, String gameName, Score score) {
super(dimensionType); super(dimensionType);
this.score = score; this.score = score;
this.name = gameName; this.name = gameName;
@ -55,7 +56,7 @@ public class StatelessGame extends Game {
timePlayed++; timePlayed++;
return TaskSchedule.seconds(1); return TaskSchedule.seconds(1);
}, ExecutionType.SYNC); }, ExecutionType.TICK_START);
} }
} }

View File

@ -47,7 +47,7 @@ public class GameConfigurationInventory extends InteractableInventory {
setClickableItem( setClickableItem(
ItemStack.builder(Material.RED_WOOL) ItemStack.builder(Material.RED_WOOL)
.displayName( .customName(
TranslatedComponent.byId("common#back") TranslatedComponent.byId("common#back")
.setColor(NamedTextColor.RED) .setColor(NamedTextColor.RED)
.getAssembled(p) .getAssembled(p)
@ -62,7 +62,7 @@ public class GameConfigurationInventory extends InteractableInventory {
setDummyItem( setDummyItem(
ItemStack.builder(Material.NAME_TAG) ItemStack.builder(Material.NAME_TAG)
.displayName( .customName(
factory.name().setColor(NamedTextColor.GOLD).getAssembled(p) factory.name().setColor(NamedTextColor.GOLD).getAssembled(p)
) )
.build(), .build(),
@ -80,7 +80,7 @@ public class GameConfigurationInventory extends InteractableInventory {
if(config == null) { if(config == null) {
setDummyItem( setDummyItem(
ItemStack.builder(Material.BARRIER) ItemStack.builder(Material.BARRIER)
.displayName( .customName(
TranslatedComponent.byId("room#noOption").setColor(NamedTextColor.RED).getAssembled(p) TranslatedComponent.byId("room#noOption").setColor(NamedTextColor.RED).getAssembled(p)
) )
.lore( .lore(
@ -130,7 +130,7 @@ public class GameConfigurationInventory extends InteractableInventory {
setClickableItem( setClickableItem(
ItemStack.builder(restrictionHandler.getWarnings(restrictionData).size() > 0 ? Material.YELLOW_WOOL : Material.GREEN_WOOL) ItemStack.builder(restrictionHandler.getWarnings(restrictionData).size() > 0 ? Material.YELLOW_WOOL : Material.GREEN_WOOL)
.displayName(TranslatedComponent.byId("restriction#success").setColor(NamedTextColor.GREEN).getAssembled(p)) .customName(TranslatedComponent.byId("restriction#success").setColor(NamedTextColor.GREEN).getAssembled(p))
.lore(restrictionHandler.getWarnings(restrictionData).stream().map(translatedComponent -> translatedComponent.getAssembled(p)).collect(Collectors.toList())) .lore(restrictionHandler.getWarnings(restrictionData).stream().map(translatedComponent -> translatedComponent.getAssembled(p)).collect(Collectors.toList()))
.build(), .build(),
8, 8,
@ -142,7 +142,7 @@ public class GameConfigurationInventory extends InteractableInventory {
setClickableItem( setClickableItem(
ItemStack.builder(Material.RED_WOOL) ItemStack.builder(Material.RED_WOOL)
.displayName(TranslatedComponent.byId("restriction#fail").setColor(NamedTextColor.RED).getAssembled(p)) .customName(TranslatedComponent.byId("restriction#fail").setColor(NamedTextColor.RED).getAssembled(p))
.lore( .lore(
restrictionHandler.getRestrictions() restrictionHandler.getRestrictions()
.stream() .stream()

View File

@ -46,7 +46,7 @@ public abstract class Option<T> {
public ItemStack getCurrent(Player p) { public ItemStack getCurrent(Player p) {
int amount = Integer.parseInt(options.get(pointer).toString()); int amount = Integer.parseInt(options.get(pointer).toString());
return ItemStack.builder(item) return ItemStack.builder(item)
.displayName(name.getAssembled(p)) .customName(name.getAssembled(p))
.lore(TranslatedComponent.byId("optionCommon#value").setColor(NamedTextColor.GOLD).getAssembled(p) .lore(TranslatedComponent.byId("optionCommon#value").setColor(NamedTextColor.GOLD).getAssembled(p)
.append(Component.text(": ")).append(Component.text(amount))) .append(Component.text(": ")).append(Component.text(amount)))
.build(); .build();

View File

@ -17,8 +17,8 @@ import net.minestom.server.event.player.PlayerMoveEvent;
import net.minestom.server.event.player.PlayerTickEvent; import net.minestom.server.event.player.PlayerTickEvent;
import net.minestom.server.instance.batch.AbsoluteBlockBatch; import net.minestom.server.instance.batch.AbsoluteBlockBatch;
import net.minestom.server.instance.block.Block; import net.minestom.server.instance.block.Block;
import net.minestom.server.network.packet.server.play.ParticlePacket;
import net.minestom.server.particle.Particle; import net.minestom.server.particle.Particle;
import net.minestom.server.particle.ParticleCreator;
import net.minestom.server.timer.ExecutionType; import net.minestom.server.timer.ExecutionType;
import net.minestom.server.timer.TaskSchedule; import net.minestom.server.timer.TaskSchedule;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -38,7 +38,7 @@ public class AcidRain extends StatelessGame {
.setFrequency(0.09) .setFrequency(0.09)
.build(); .build();
public AcidRain() { public AcidRain() {
super(Dimension.OVERWORLD.DIMENSION, "acidRain", new LastWinsScore()); super(Dimension.OVERWORLD.key, "acidRain", new LastWinsScore());
setGenerator( setGenerator(
new CircularPlateTerrainGenerator(radius) new CircularPlateTerrainGenerator(radius)
.setPlateHeight(50) .setPlateHeight(50)
@ -62,13 +62,13 @@ public class AcidRain extends StatelessGame {
MinecraftServer.getSchedulerManager().submitTask(() -> { MinecraftServer.getSchedulerManager().submitTask(() -> {
getPlayers().forEach(player -> { getPlayers().forEach(player -> {
player.sendPacket(ParticleCreator.createParticlePacket(Particle.SNEEZE, 0, 60, 0, radius, radius, radius, 500)); player.sendPacket(new ParticlePacket(Particle.SNEEZE, 0, 60, 0, radius, radius, radius, 1f, 500));
player.sendPacket(ParticleCreator.createParticlePacket(Particle.ITEM_SLIME, 0, 60, 0, radius, radius, radius, 500)); player.sendPacket(new ParticlePacket(Particle.ITEM_SLIME, 0, 60, 0, radius, radius, radius, 1f, 500));
}); });
if(!isRunning) return TaskSchedule.stop(); if(!isRunning) return TaskSchedule.stop();
return TaskSchedule.millis(100); return TaskSchedule.millis(100);
}, ExecutionType.ASYNC); }, ExecutionType.TICK_END);
MinecraftServer.getSchedulerManager().submitTask(() -> { MinecraftServer.getSchedulerManager().submitTask(() -> {
generationOffset++; generationOffset++;
@ -76,7 +76,7 @@ public class AcidRain extends StatelessGame {
if(!isRunning) return TaskSchedule.stop(); if(!isRunning) return TaskSchedule.stop();
return TaskSchedule.millis((long) NumberUtil.map(50 - difficulty, 0, 50, 100, 1000)); return TaskSchedule.millis((long) NumberUtil.map(50 - difficulty, 0, 50, 100, 1000));
}, ExecutionType.ASYNC); }, ExecutionType.TICK_END);
MinecraftServer.getSchedulerManager().submitTask(() -> { MinecraftServer.getSchedulerManager().submitTask(() -> {
difficulty++; difficulty++;

View File

@ -8,7 +8,7 @@ import org.jetbrains.annotations.NotNull;
public class Backrooms extends StatelessGame { public class Backrooms extends StatelessGame {
public Backrooms() { public Backrooms() {
super(Dimension.NETHER.DIMENSION, "Backrooms", new NoScore()); super(Dimension.NETHER.key, "Backrooms", new NoScore());
BackroomsGenerator generator = new BackroomsGenerator(); BackroomsGenerator generator = new BackroomsGenerator();
setGenerator(unit -> generator.generateRoom(unit, 50)); setGenerator(unit -> generator.generateRoom(unit, 50));
} }

View File

@ -21,7 +21,7 @@ import net.minestom.server.event.item.PickupItemEvent;
import net.minestom.server.event.player.PlayerBlockBreakEvent; import net.minestom.server.event.player.PlayerBlockBreakEvent;
import net.minestom.server.event.player.PlayerBlockPlaceEvent; import net.minestom.server.event.player.PlayerBlockPlaceEvent;
import net.minestom.server.event.player.PlayerMoveEvent; import net.minestom.server.event.player.PlayerMoveEvent;
import net.minestom.server.instance.AnvilLoader; import net.minestom.server.instance.anvil.AnvilLoader;
import net.minestom.server.item.ItemStack; import net.minestom.server.item.ItemStack;
import net.minestom.server.item.Material; import net.minestom.server.item.Material;
import net.minestom.server.timer.ExecutionType; import net.minestom.server.timer.ExecutionType;
@ -38,7 +38,7 @@ public class Bedwars extends StatelessGame {
public Bedwars() throws IOException { public Bedwars() throws IOException {
super(Dimension.OVERWORLD.DIMENSION, "Bedwars", new LastWinsScore()); super(Dimension.OVERWORLD.key, "Bedwars", new LastWinsScore());
setChunkLoader(new AnvilLoader(Resource.GAME_MAP.getPath().resolve("bedwars/test"))); setChunkLoader(new AnvilLoader(Resource.GAME_MAP.getPath().resolve("bedwars/test")));
Configuration config = ConfigurationProvider.getProvider(YamlConfiguration.class).load(Resource.GAME_MAP.getPath().resolve("bedwars/test/config.yml").toFile()); Configuration config = ConfigurationProvider.getProvider(YamlConfiguration.class).load(Resource.GAME_MAP.getPath().resolve("bedwars/test/config.yml").toFile());
@ -78,7 +78,7 @@ public class Bedwars extends StatelessGame {
}); });
return TaskSchedule.stop(); return TaskSchedule.stop();
}, ExecutionType.SYNC); }, ExecutionType.TICK_END);
} }

View File

@ -6,24 +6,24 @@ import eu.mhsl.minenet.minigames.message.component.TranslatedComponent;
import eu.mhsl.minenet.minigames.score.LastWinsScore; import eu.mhsl.minenet.minigames.score.LastWinsScore;
import eu.mhsl.minenet.minigames.util.BatchUtil; import eu.mhsl.minenet.minigames.util.BatchUtil;
import eu.mhsl.minenet.minigames.util.GeneratorUtils; import eu.mhsl.minenet.minigames.util.GeneratorUtils;
import io.github.bloepiloepi.pvp.events.ProjectileHitEvent; import io.github.togar2.pvp.entity.projectile.CustomEntityProjectile;
import io.github.bloepiloepi.pvp.projectile.CustomEntityProjectile;
import net.minestom.server.coordinate.Point; import net.minestom.server.coordinate.Point;
import net.minestom.server.coordinate.Pos; import net.minestom.server.coordinate.Pos;
import net.minestom.server.coordinate.Vec; import net.minestom.server.coordinate.Vec;
import net.minestom.server.entity.*; import net.minestom.server.entity.*;
import net.minestom.server.entity.metadata.arrow.ArrowMeta;
import net.minestom.server.entity.metadata.other.PrimedTntMeta; import net.minestom.server.entity.metadata.other.PrimedTntMeta;
import net.minestom.server.entity.metadata.projectile.ArrowMeta;
import net.minestom.server.event.EventListener; import net.minestom.server.event.EventListener;
import net.minestom.server.event.entity.projectile.ProjectileCollideWithBlockEvent;
import net.minestom.server.event.entity.projectile.ProjectileCollideWithEntityEvent;
import net.minestom.server.event.item.ItemUpdateStateEvent; import net.minestom.server.event.item.ItemUpdateStateEvent;
import net.minestom.server.event.player.PlayerItemAnimationEvent; import net.minestom.server.event.player.PlayerItemAnimationEvent;
import net.minestom.server.event.player.PlayerMoveEvent; import net.minestom.server.event.player.PlayerMoveEvent;
import net.minestom.server.instance.batch.AbsoluteBlockBatch; import net.minestom.server.instance.batch.AbsoluteBlockBatch;
import net.minestom.server.instance.block.Block; import net.minestom.server.instance.block.Block;
import net.minestom.server.item.Enchantment;
import net.minestom.server.item.ItemHideFlag;
import net.minestom.server.item.ItemStack; import net.minestom.server.item.ItemStack;
import net.minestom.server.item.Material; import net.minestom.server.item.Material;
import net.minestom.server.item.enchant.Enchantment;
import net.minestom.server.tag.Tag; import net.minestom.server.tag.Tag;
import net.minestom.server.utils.MathUtils; import net.minestom.server.utils.MathUtils;
import net.minestom.server.utils.time.TimeUnit; import net.minestom.server.utils.time.TimeUnit;
@ -39,7 +39,7 @@ public class BowSpleef extends StatelessGame {
private final int radius = 30; private final int radius = 30;
private final int totalElevation = 50; private final int totalElevation = 50;
public BowSpleef() { public BowSpleef() {
super(Dimension.OVERWORLD.DIMENSION, "bowSpleef", new LastWinsScore()); super(Dimension.OVERWORLD.key, "bowSpleef", new LastWinsScore());
eventNode().addListener( eventNode().addListener(
EventListener EventListener
@ -58,17 +58,17 @@ public class BowSpleef extends StatelessGame {
final double power = MathUtils.clamp((chargedFor * chargedFor + 2 * chargedFor) / 2D, 0, 1); final double power = MathUtils.clamp((chargedFor * chargedFor + 2 * chargedFor) / 2D, 0, 1);
if (power > 0.2) { if (power > 0.2) {
final CustomEntityProjectile projectile = new CustomEntityProjectile(player, EntityType.ARROW, true); final CustomEntityProjectile projectile = new CustomEntityProjectile(player, EntityType.ARROW);
final ArrowMeta meta = (ArrowMeta) projectile.getEntityMeta(); final ArrowMeta meta = (ArrowMeta) projectile.getEntityMeta();
meta.setCritical(power >= 0.9); meta.setCritical(power >= 0.9);
projectile.scheduleRemove(Duration.of(100, TimeUnit.SERVER_TICK)); projectile.scheduleRemove(Duration.of(100, TimeUnit.SERVER_TICK));
projectile.setOnFire(true); meta.setOnFire(true);
final Pos position = player.getPosition().add(0, player.getEyeHeight(), 0); final Pos position = player.getPosition().add(0, player.getEyeHeight(), 0);
projectile.setInstance(Objects.requireNonNull(player.getInstance()), position); projectile.setInstance(Objects.requireNonNull(player.getInstance()), position);
final Vec direction = projectile.getPosition().direction(); final Vec direction = projectile.getPosition().direction();
projectile.shoot(position.add(direction).sub(0, 0.2, 0), power * 3, 1.0); projectile.shootFrom(position.add(direction).sub(0, 0.2, 0), power * 3, 1.0);
projectile.setTag(ARROW_FIRST_HIT, true); projectile.setTag(ARROW_FIRST_HIT, true);
} }
}) })
@ -78,9 +78,9 @@ public class BowSpleef extends StatelessGame {
eventNode().addListener( eventNode().addListener(
EventListener EventListener
.builder(ProjectileHitEvent.ProjectileBlockHitEvent.class) .builder(ProjectileCollideWithBlockEvent.class)
.handler(projectileBlockHitEvent -> { .handler(projectileBlockHitEvent -> {
CustomEntityProjectile projectile = projectileBlockHitEvent.getEntity(); Entity projectile = projectileBlockHitEvent.getEntity();
if(!projectile.getTag(ARROW_FIRST_HIT)) { if(!projectile.getTag(ARROW_FIRST_HIT)) {
projectile.remove(); projectile.remove();
return; return;
@ -108,7 +108,7 @@ public class BowSpleef extends StatelessGame {
eventNode().addListener( eventNode().addListener(
EventListener EventListener
.builder(ProjectileHitEvent.ProjectileEntityHitEvent.class) .builder(ProjectileCollideWithEntityEvent.class)
.handler(projectileEntityHitEvent -> projectileEntityHitEvent.setCancelled(true)) .handler(projectileEntityHitEvent -> projectileEntityHitEvent.setCancelled(true))
.build() .build()
); );
@ -135,9 +135,8 @@ public class BowSpleef extends StatelessGame {
0, 0,
ItemStack ItemStack
.builder(Material.BOW) .builder(Material.BOW)
.displayName(TranslatedComponent.byId("bow").getAssembled(player)) .customName(TranslatedComponent.byId("bow").getAssembled(player))
.meta(builder -> builder.enchantment(Enchantment.FLAME, (short) 1).build()) .glowing(true)
.meta(builder -> builder.hideFlag(ItemHideFlag.HIDE_ENCHANTS))
.build() .build()
); );
}); });

View File

@ -6,9 +6,9 @@ import eu.mhsl.minenet.minigames.util.BatchUtil;
import eu.mhsl.minenet.minigames.instance.Dimension; import eu.mhsl.minenet.minigames.instance.Dimension;
import eu.mhsl.minenet.minigames.world.BlockPallet; import eu.mhsl.minenet.minigames.world.BlockPallet;
import eu.mhsl.minenet.minigames.world.generator.terrain.CircularPlateTerrainGenerator; import eu.mhsl.minenet.minigames.world.generator.terrain.CircularPlateTerrainGenerator;
import io.github.bloepiloepi.pvp.config.AttackConfig; import io.github.togar2.pvp.config.AttackConfig;
import io.github.bloepiloepi.pvp.config.DamageConfig; import io.github.togar2.pvp.config.DamageConfig;
import io.github.bloepiloepi.pvp.config.PvPConfig; import io.github.togar2.pvp.config.PvPConfig;
import net.minestom.server.coordinate.Pos; import net.minestom.server.coordinate.Pos;
import net.minestom.server.event.player.PlayerMoveEvent; import net.minestom.server.event.player.PlayerMoveEvent;
import net.minestom.server.instance.batch.AbsoluteBlockBatch; import net.minestom.server.instance.batch.AbsoluteBlockBatch;
@ -23,18 +23,18 @@ class Deathcube extends StatelessGame {
final int percentage; final int percentage;
public Deathcube(int radius, int height, int percentage, int pvpEnabled) { public Deathcube(int radius, int height, int percentage, int pvpEnabled) {
super(Dimension.THE_END.DIMENSION, "Deathcube", new FirstWinsScore()); super(Dimension.THE_END.key, "Deathcube", new FirstWinsScore());
this.radius = radius; this.radius = radius;
this.height = height + 49; this.height = height + 49;
this.percentage = percentage; this.percentage = percentage;
this.setGenerator(new CircularPlateTerrainGenerator(radius+10).setPlateHeight(50)); this.setGenerator(new CircularPlateTerrainGenerator(radius+10).setPlateHeight(50));
if(pvpEnabled == 1) eventNode().addChild( // if(pvpEnabled == 1) eventNode().addChild( // TODO update
PvPConfig.emptyBuilder() // PvPConfig.emptyBuilder()
.damage(DamageConfig.legacyBuilder().fallDamage(false)) // .damage(DamageConfig.LEGACY.fallDamage(false))
.attack(AttackConfig.legacyBuilder().attackCooldown(true)) // .attack(AttackConfig.DEFAULT.attackCooldown(true))
.build().createNode() // .build().createNode()
); // );
System.out.println(radius); System.out.println(radius);
} }

View File

@ -26,7 +26,6 @@ import net.minestom.server.item.ItemStack;
import net.minestom.server.item.Material; import net.minestom.server.item.Material;
import net.minestom.server.network.packet.server.play.ParticlePacket; import net.minestom.server.network.packet.server.play.ParticlePacket;
import net.minestom.server.particle.Particle; import net.minestom.server.particle.Particle;
import net.minestom.server.particle.ParticleCreator;
import net.minestom.server.sound.SoundEvent; import net.minestom.server.sound.SoundEvent;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -57,7 +56,7 @@ public class ElytraRace extends StatelessGame {
private final Map<Player, CheckPointData> playerCheckpoints = new HashMap<>(); private final Map<Player, CheckPointData> playerCheckpoints = new HashMap<>();
public ElytraRace(int ringCount) { public ElytraRace(int ringCount) {
super(Dimension.OVERWORLD.DIMENSION, "ElytraRace", new FirstWinsScore()); super(Dimension.OVERWORLD.key, "ElytraRace", new FirstWinsScore());
this.ringCount = ringCount; this.ringCount = ringCount;
@ -120,7 +119,7 @@ public class ElytraRace extends StatelessGame {
getPlayers().forEach(player -> { getPlayers().forEach(player -> {
player.getInventory().setChestplate(ItemStack.of(Material.ELYTRA)); player.getInventory().setChestplate(ItemStack.of(Material.ELYTRA));
for(int i = 0; i < 3; i++) { for(int i = 0; i < 3; i++) {
player.getInventory().setItemStack(i, ItemStack.builder(boostMaterial).displayName(TranslatedComponent.byId("boost").getAssembled(player)).build()); player.getInventory().setItemStack(i, ItemStack.builder(boostMaterial).customName(TranslatedComponent.byId("boost").getAssembled(player)).build());
} }
addResetItemToPlayer(player); addResetItemToPlayer(player);
}); });
@ -144,7 +143,7 @@ public class ElytraRace extends StatelessGame {
if(newPos.y() > gameHeight - 5) { if(newPos.y() > gameHeight - 5) {
Point particlePoint = newPos.withY(gameHeight); Point particlePoint = newPos.withY(gameHeight);
ParticlePacket particle = ParticleCreator.createParticlePacket( ParticlePacket particle = new ParticlePacket(
Particle.WAX_ON, Particle.WAX_ON,
particlePoint.blockX(), particlePoint.blockX(),
particlePoint.blockY(), particlePoint.blockY(),
@ -152,6 +151,7 @@ public class ElytraRace extends StatelessGame {
20, 20,
0, 0,
30, 30,
1f,
Math.toIntExact((long) NumberUtil.map(newPos.y(), gameHeight - 5, gameHeight, 50, 500)) Math.toIntExact((long) NumberUtil.map(newPos.y(), gameHeight - 5, gameHeight, 50, 500))
); );
player.sendPacket(particle); player.sendPacket(particle);
@ -173,7 +173,7 @@ public class ElytraRace extends StatelessGame {
} }
private void addResetItemToPlayer(Player p) { private void addResetItemToPlayer(Player p) {
p.getInventory().setItemStack(8, ItemStack.builder(resetMaterial).displayName(TranslatedComponent.byId("reset").getAssembled(p)).build()); p.getInventory().setItemStack(8, ItemStack.builder(resetMaterial).customName(TranslatedComponent.byId("reset").getAssembled(p)).build());
} }
private Point getRingPositionAtZ(int z) { private Point getRingPositionAtZ(int z) {
@ -189,7 +189,7 @@ public class ElytraRace extends StatelessGame {
Point ringPos = getRingPositionAtZ(zPos); Point ringPos = getRingPositionAtZ(zPos);
GeneratorUtils.iterateArea( GeneratorUtils.iterateArea(
ringPos.sub(100, 0, 0).withY(getDimensionType().getMinY()), ringPos.sub(100, 0, 0).withY(0), // TODO 0 was before update getDimensionType().getMinY, might not work correctly
ringPos.add(100, 0, 0).withY(gameHeight), ringPos.add(100, 0, 0).withY(gameHeight),
point -> batch.setBlock(point, Block.BARRIER) point -> batch.setBlock(point, Block.BARRIER)
); );

View File

@ -33,7 +33,7 @@ class Minerun extends StatelessGame {
private final int afterFinishLine = 10; private final int afterFinishLine = 10;
public Minerun(int width, int length, int minePercentage) { public Minerun(int width, int length, int minePercentage) {
super(Dimension.THE_END.DIMENSION, "Minerun", new FirstWinsScore()); super(Dimension.THE_END.key, "Minerun", new FirstWinsScore());
setGenerator(new SquarePlateTerrainGenerator(width, length + preRun + afterFinishLine).setPlateHeight(50).setGenerateBorders(true)); setGenerator(new SquarePlateTerrainGenerator(width, length + preRun + afterFinishLine).setPlateHeight(50).setGenerateBorders(true));
this.width = width; this.width = width;

View File

@ -26,7 +26,7 @@ public class Spleef extends StatelessGame {
final int totalElevation = 50; final int totalElevation = 50;
public Spleef(int radius, int stackCount) { public Spleef(int radius, int stackCount) {
super(Dimension.OVERWORLD.DIMENSION, "Spleef", new LastWinsScore()); super(Dimension.OVERWORLD.key, "Spleef", new LastWinsScore());
getScore().setIgnoreLastPlayers(1); getScore().setIgnoreLastPlayers(1);
this.radius = radius; this.radius = radius;
@ -61,13 +61,7 @@ public class Spleef extends StatelessGame {
player.getInventory().addItemStack( player.getInventory().addItemStack(
ItemStack ItemStack
.builder(Material.DIAMOND_SHOVEL) .builder(Material.DIAMOND_SHOVEL)
.displayName(TranslatedComponent.byId("game_Spleef#shovelName").getAssembled(player)) .customName(TranslatedComponent.byId("game_Spleef#shovelName").getAssembled(player))
.meta(
builder -> builder
.enchantment(Enchantment.EFFICIENCY, (short) 99)
.hideFlag(ItemHideFlag.HIDE_ENCHANTS)
.build()
)
.build() .build()
); );
player.setHeldItemSlot((byte) 0); player.setHeldItemSlot((byte) 0);

View File

@ -5,8 +5,8 @@ import eu.mhsl.minenet.minigames.instance.game.stateless.StatelessGame;
import eu.mhsl.minenet.minigames.score.LastWinsScore; import eu.mhsl.minenet.minigames.score.LastWinsScore;
import eu.mhsl.minenet.minigames.util.BatchUtil; import eu.mhsl.minenet.minigames.util.BatchUtil;
import eu.mhsl.minenet.minigames.world.generator.terrain.CircularPlateTerrainGenerator; import eu.mhsl.minenet.minigames.world.generator.terrain.CircularPlateTerrainGenerator;
import io.github.bloepiloepi.pvp.config.*; import io.github.togar2.pvp.config.PvPConfig;
import io.github.bloepiloepi.pvp.events.FinalAttackEvent; import io.github.togar2.pvp.events.FinalAttackEvent;
import net.minestom.server.coordinate.Pos; import net.minestom.server.coordinate.Pos;
import net.minestom.server.entity.Player; import net.minestom.server.entity.Player;
import net.minestom.server.event.player.PlayerMoveEvent; import net.minestom.server.event.player.PlayerMoveEvent;
@ -18,14 +18,14 @@ import java.util.concurrent.CompletableFuture;
public class Stickfight extends StatelessGame { public class Stickfight extends StatelessGame {
public Stickfight() { public Stickfight() {
super(Dimension.OVERWORLD.DIMENSION, "Stickfight", new LastWinsScore()); super(Dimension.OVERWORLD.key, "Stickfight", new LastWinsScore());
eventNode().addChild( // eventNode().addChild( // TODO update
PvPConfig.emptyBuilder() // PvPConfig.emptyBuilder()
.damage(DamageConfig.legacyBuilder().fallDamage(false)) // .damage(DamageConfig.legacyBuilder().fallDamage(false))
.attack(AttackConfig.legacyBuilder().attackCooldown(true)) // .attack(AttackConfig.legacyBuilder().attackCooldown(true))
.build().createNode() // .build().createNode()
); // );
eventNode().addListener(FinalAttackEvent.class, finalAttackEvent -> { eventNode().addListener(FinalAttackEvent.class, finalAttackEvent -> {
finalAttackEvent.setBaseDamage(0); finalAttackEvent.setBaseDamage(0);

View File

@ -27,7 +27,7 @@ public class TntRun extends StatelessGame {
final int radius; final int radius;
final int stackCount; final int stackCount;
public TntRun(int radius, int stackCount) { public TntRun(int radius, int stackCount) {
super(Dimension.OVERWORLD.DIMENSION, "tntRun", new LastWinsScore()); super(Dimension.OVERWORLD.key, "tntRun", new LastWinsScore());
this.radius = radius; this.radius = radius;
this.stackCount = stackCount; this.stackCount = stackCount;
setGenerator(new CircularPlateTerrainGenerator(radius)); setGenerator(new CircularPlateTerrainGenerator(radius));
@ -74,7 +74,7 @@ public class TntRun extends StatelessGame {
} }
} }
} }
}, TaskSchedule.millis(500), TaskSchedule.stop(), ExecutionType.ASYNC); }, TaskSchedule.millis(500), TaskSchedule.stop(), ExecutionType.TICK_END);
} }
} }

View File

@ -10,7 +10,7 @@ import net.minestom.server.item.Material;
public class Towerdefense extends StatelessGame { public class Towerdefense extends StatelessGame {
public Towerdefense() { public Towerdefense() {
super(Dimension.NETHER.DIMENSION, "Towerdefense", new NoScore()); super(Dimension.NETHER.key, "Towerdefense", new NoScore());
setGenerator(new MazeGenerator()); setGenerator(new MazeGenerator());
} }

View File

@ -37,7 +37,7 @@ class TrafficLightRace extends StatelessGame {
private final List<Pos> trafficLights = new ArrayList<>(); private final List<Pos> trafficLights = new ArrayList<>();
public TrafficLightRace(int width, int length) { public TrafficLightRace(int width, int length) {
super(Dimension.THE_END.DIMENSION, "Ampelrennen", new FirstWinsScore()); super(Dimension.THE_END.key, "Ampelrennen", new FirstWinsScore());
this.width = width; this.width = width;
this.length = length; this.length = length;
@ -150,7 +150,7 @@ class TrafficLightRace extends StatelessGame {
BatchUtil.loadAndApplyBatch(changeLightsBatch, this, () -> {}); BatchUtil.loadAndApplyBatch(changeLightsBatch, this, () -> {});
return phase.taskScheduleRandomDuration(); return phase.taskScheduleRandomDuration();
}, ExecutionType.SYNC); }, ExecutionType.TICK_END);
} }
@Override @Override

View File

@ -9,7 +9,7 @@ import eu.mhsl.minenet.minigames.instance.Dimension;
import net.minestom.server.MinecraftServer; import net.minestom.server.MinecraftServer;
import net.minestom.server.coordinate.Pos; import net.minestom.server.coordinate.Pos;
import net.minestom.server.event.player.*; import net.minestom.server.event.player.*;
import net.minestom.server.instance.AnvilLoader; import net.minestom.server.instance.anvil.AnvilLoader;
import java.nio.file.Path; import java.nio.file.Path;
@ -30,7 +30,7 @@ public class Hub extends MineNetInstance implements Spawnable {
} }
private Hub() { private Hub() {
super(Dimension.THE_END.DIMENSION); super(Dimension.THE_END.key);
setChunkLoader(new AnvilLoader(Path.of("maps/hub"))); setChunkLoader(new AnvilLoader(Path.of("maps/hub")));
setTime(18000); setTime(18000);

View File

@ -5,7 +5,6 @@ import eu.mhsl.minenet.minigames.message.component.TranslatedComponent;
import eu.mhsl.minenet.minigames.shared.inventory.InteractableInventory; import eu.mhsl.minenet.minigames.shared.inventory.InteractableInventory;
import net.minestom.server.entity.Player; import net.minestom.server.entity.Player;
import net.minestom.server.inventory.InventoryType; import net.minestom.server.inventory.InventoryType;
import net.minestom.server.item.ItemHideFlag;
import net.minestom.server.item.ItemStack; import net.minestom.server.item.ItemStack;
import net.minestom.server.item.Material; import net.minestom.server.item.Material;
@ -16,9 +15,8 @@ public class HubInventory extends InteractableInventory {
setClickableItem( setClickableItem(
ItemStack ItemStack
.builder(Material.WRITABLE_BOOK) .builder(Material.WRITABLE_BOOK)
.displayName(TranslatedComponent.assemble("hub#create", p)) .customName(TranslatedComponent.assemble("hub#create", p))
.lore(TranslatedComponent.assemble("hub#create_description", p)) .lore(TranslatedComponent.assemble("hub#create_description", p))
.meta(metaBuilder -> metaBuilder.hideFlag(ItemHideFlag.HIDE_ATTRIBUTES))
.build(), .build(),
12, 12,
itemClick -> Room.createRoom(itemClick.getPlayer()), itemClick -> Room.createRoom(itemClick.getPlayer()),
@ -28,7 +26,7 @@ public class HubInventory extends InteractableInventory {
setClickableItem( setClickableItem(
ItemStack ItemStack
.builder(Material.KNOWLEDGE_BOOK) .builder(Material.KNOWLEDGE_BOOK)
.displayName(TranslatedComponent.assemble("hub#join", p)) .customName(TranslatedComponent.assemble("hub#join", p))
.lore(TranslatedComponent.assemble("hub#join_description", p)) .lore(TranslatedComponent.assemble("hub#join_description", p))
.build(), .build(),
14, 14,

View File

@ -29,7 +29,7 @@ public class JoinInventory extends InteractableInventory {
setClickableItem( setClickableItem(
ItemStack.builder(Material.GREEN_STAINED_GLASS_PANE) ItemStack.builder(Material.GREEN_STAINED_GLASS_PANE)
.displayName(Component.text(prefix)) .customName(Component.text(prefix))
.build(), .build(),
0, 0,
itemClick -> {} itemClick -> {}
@ -51,7 +51,7 @@ public class JoinInventory extends InteractableInventory {
typedText = formatInput(typedText); typedText = formatInput(typedText);
Optional<Room> target = Room.getRoom(MinecraftServer.getConnectionManager().findPlayer(typedText)); Optional<Room> target = Room.getRoom(MinecraftServer.getConnectionManager().findOnlinePlayer(typedText));
if(target.isPresent()) if(target.isPresent())
Room.setRoom(player, target.get()); Room.setRoom(player, target.get());
else else

View File

@ -17,7 +17,7 @@ import net.minestom.server.entity.GameMode;
import net.minestom.server.entity.Player; import net.minestom.server.entity.Player;
import net.minestom.server.event.player.PlayerBlockBreakEvent; import net.minestom.server.event.player.PlayerBlockBreakEvent;
import net.minestom.server.event.player.PlayerDisconnectEvent; import net.minestom.server.event.player.PlayerDisconnectEvent;
import net.minestom.server.instance.AnvilLoader; import net.minestom.server.instance.anvil.AnvilLoader;
import java.util.*; import java.util.*;
import java.util.logging.Logger; import java.util.logging.Logger;
@ -85,14 +85,14 @@ public class Room extends MineNetInstance implements Spawnable {
private GameSelector gameSelector; private GameSelector gameSelector;
private final Tournament tournament = new Tournament(); private final Tournament tournament = new Tournament();
private Room(Player owner) { private Room(Player owner) {
super(Dimension.THE_END.DIMENSION); super(Dimension.THE_END.key);
this.apiDriven = false; this.apiDriven = false;
construct(); construct();
setOwner(owner); setOwner(owner);
} }
protected Room() { protected Room() {
super(Dimension.THE_END.DIMENSION); super(Dimension.THE_END.key);
this.apiDriven = true; this.apiDriven = true;
construct(); construct();
} }

View File

@ -10,7 +10,6 @@ import eu.mhsl.minenet.minigames.shared.inventory.InteractableInventory;
import eu.mhsl.minenet.minigames.util.InventoryItemAlignment; import eu.mhsl.minenet.minigames.util.InventoryItemAlignment;
import net.minestom.server.entity.Player; import net.minestom.server.entity.Player;
import net.minestom.server.inventory.InventoryType; import net.minestom.server.inventory.InventoryType;
import net.minestom.server.item.ItemHideFlag;
import net.minestom.server.item.ItemStack; import net.minestom.server.item.ItemStack;
import net.minestom.server.item.Material; import net.minestom.server.item.Material;
@ -29,7 +28,7 @@ public class MinigameSelectInventory extends InteractableInventory {
for (GameType type : GameType.values()) { for (GameType type : GameType.values()) {
setClickableItem( setClickableItem(
ItemStack.builder(type.getIcon()) ItemStack.builder(type.getIcon())
.displayName(type.getTitle().getAssembled(p)) .customName(type.getTitle().getAssembled(p))
.lore(type.getDescription().addWrap().getWrappedAssembled(p)) .lore(type.getDescription().addWrap().getWrappedAssembled(p))
.build(), .build(),
itemAlignment.next().get(), itemAlignment.next().get(),
@ -58,9 +57,8 @@ public class MinigameSelectInventory extends InteractableInventory {
setClickableItem( setClickableItem(
ItemStack.builder(gameFactory.symbol()) ItemStack.builder(gameFactory.symbol())
.displayName(gameFactory.name().getAssembled(p)) .customName(gameFactory.name().getAssembled(p))
.lore(gameFactory.description().addWrap().getWrappedAssembled(p)) .lore(gameFactory.description().addWrap().getWrappedAssembled(p))
.meta(metaBuilder -> metaBuilder.hideFlag(ItemHideFlag.HIDE_ATTRIBUTES))
.build(), .build(),
offset + itemAlignment.next().get(), offset + itemAlignment.next().get(),
itemClick -> itemClick.getPlayer().openInventory(new GameConfigurationInventory(room, itemClick.getPlayer(), gameFactory)) itemClick -> itemClick.getPlayer().openInventory(new GameConfigurationInventory(room, itemClick.getPlayer(), gameFactory))

View File

@ -10,7 +10,7 @@ import net.minestom.server.instance.block.Block;
public class Transfer extends MineNetInstance implements Spawnable { public class Transfer extends MineNetInstance implements Spawnable {
public Transfer() { public Transfer() {
super(Dimension.THE_END.DIMENSION); super(Dimension.THE_END.key);
eventNode().addListener(PlayerMoveEvent.class, CommonEventHandles::cancel); eventNode().addListener(PlayerMoveEvent.class, CommonEventHandles::cancel);
setBlock(0, 0, 0, Block.BARRIER); setBlock(0, 0, 0, Block.BARRIER);
} }

View File

@ -10,7 +10,7 @@ import net.minestom.server.MinecraftServer;
import net.minestom.server.coordinate.Pos; import net.minestom.server.coordinate.Pos;
import net.minestom.server.entity.*; import net.minestom.server.entity.*;
import net.minestom.server.event.player.PlayerMoveEvent; import net.minestom.server.event.player.PlayerMoveEvent;
import net.minestom.server.instance.AnvilLoader; import net.minestom.server.instance.anvil.AnvilLoader;
import java.util.List; import java.util.List;
@ -25,7 +25,7 @@ public class TournamentDisplay extends MineNetInstance implements Spawnable {
}; };
public TournamentDisplay(Tournament tournament) { public TournamentDisplay(Tournament tournament) {
super(Dimension.OVERWORLD.DIMENSION); super(Dimension.OVERWORLD.key);
setChunkLoader(new AnvilLoader(Resource.RESULT_DISPLAY.getPath())); setChunkLoader(new AnvilLoader(Resource.RESULT_DISPLAY.getPath()));
this.places = tournament.getPlaces(); this.places = tournament.getPlaces();
this.tournament = tournament; this.tournament = tournament;

View File

@ -14,7 +14,7 @@ public class ByPlayerNameUuidProvider implements UuidProvider {
public UUID provide(PlayerConnection playerConnection, String username) { public UUID provide(PlayerConnection playerConnection, String username) {
try { try {
if(MinecraftServer.getConnectionManager().getPlayer(username) != null) throw new IllegalStateException(); if(MinecraftServer.getConnectionManager().findOnlinePlayer(username) != null) throw new IllegalStateException();
String client = MojangUtils.fromUsername(username).get("id").getAsString(); String client = MojangUtils.fromUsername(username).get("id").getAsString();
return UuidUtil.unTrimm(client); return UuidUtil.unTrimm(client);

View File

@ -60,7 +60,7 @@ public class InteractableInventory extends Inventory {
protected void setDummyItem(Material material, int slot) { protected void setDummyItem(Material material, int slot) {
this.setDummyItem( this.setDummyItem(
ItemStack.builder(material).displayName(Component.text("")).build(), ItemStack.builder(material).customName(Component.text("")).build(),
slot slot
); );
} }

View File

@ -25,6 +25,6 @@ public class SkinCache {
MinecraftServer.getSchedulerManager().submitTask(() -> { MinecraftServer.getSchedulerManager().submitTask(() -> {
p.setSkin(SkinCache.getSkin(p.getUsername())); p.setSkin(SkinCache.getSkin(p.getUsername()));
return TaskSchedule.stop(); return TaskSchedule.stop();
}, ExecutionType.ASYNC); }, ExecutionType.TICK_END);
} }
} }

View File

@ -5,7 +5,6 @@ import net.minestom.server.entity.GameMode;
import net.minestom.server.entity.Player; import net.minestom.server.entity.Player;
import net.minestom.server.entity.PlayerSkin; import net.minestom.server.entity.PlayerSkin;
import net.minestom.server.network.packet.server.play.PlayerInfoUpdatePacket; import net.minestom.server.network.packet.server.play.PlayerInfoUpdatePacket;
import net.minestom.server.network.packet.server.play.SpawnPlayerPacket;
import java.util.List; import java.util.List;
@ -32,9 +31,9 @@ public class PacketUtil {
) )
) )
); );
p.sendPacket( // p.sendPacket( //TODO spawnPlayerPacket does no longer exists
new SpawnPlayerPacket(player.getEntityId(), player.getUuid(), player.getPosition()) // new SpawnPlayerPacket(player.getEntityId(), player.getUuid(), player.getPosition())
); // );
}); });
} }
} }

View File

@ -3,7 +3,7 @@ package eu.mhsl.minenet.minigames.util;
import com.google.common.io.ByteArrayDataOutput; import com.google.common.io.ByteArrayDataOutput;
import com.google.common.io.ByteStreams; import com.google.common.io.ByteStreams;
import net.minestom.server.entity.Player; import net.minestom.server.entity.Player;
import net.minestom.server.network.packet.server.play.PluginMessagePacket; import net.minestom.server.network.packet.server.common.PluginMessagePacket;
public class PluginMessageUtil { public class PluginMessageUtil {
private static final String bungeeTargetSelector = "bungeecord:main"; private static final String bungeeTargetSelector = "bungeecord:main";

View File

@ -24,6 +24,6 @@ public class WeatherUtils {
} else { } else {
return TaskSchedule.stop(); return TaskSchedule.stop();
} }
}, ExecutionType.ASYNC); }, ExecutionType.TICK_END);
} }
} }

View File

@ -67,7 +67,7 @@ public class SquarePlateTerrainGenerator extends PlateTerrainGenerator {
} }
if(generateBorders) { if(generateBorders) {
Runnable generateBorder = () -> unit.modifier().fill(bottom, bottom.add(1, DimensionType.OVERWORLD.getMaxY(), 1), Block.BARRIER); Runnable generateBorder = () -> unit.modifier().fill(bottom, bottom.add(1, 0, 1), Block.BARRIER); // TODO DimensionType.OVERWORLD.getMaxY() is now hardcoded 0, might break behaviour
if(bottom.z() <= length+1 && bottom.z() >= -1 && bottom.x() >= -1 && bottom.x() <= width+1) { if(bottom.z() <= length+1 && bottom.z() >= -1 && bottom.x() >= -1 && bottom.x() <= width+1) {
if(bottom.x() == -1 || bottom.x() == width+1) { if(bottom.x() == -1 || bottom.x() == width+1) {