updated minestom version, breaking some behaviour

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

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.PlayerBlockPlaceEvent;
import net.minestom.server.event.player.PlayerMoveEvent;
import net.minestom.server.registry.DynamicRegistry;
import net.minestom.server.timer.ExecutionType;
import net.minestom.server.timer.TaskSchedule;
import net.minestom.server.world.DimensionType;
@@ -36,7 +37,7 @@ public abstract class Game extends MineNetInstance implements Spawnable {
protected final Logger logger;
public Game(DimensionType dimensionType) {
public Game(DynamicRegistry.Key<DimensionType> dimensionType) {
super(dimensionType);
MinecraftServer.getInstanceManager().registerInstance(this);
@@ -78,7 +79,7 @@ public abstract class Game extends MineNetInstance implements Spawnable {
this.onLoad(callback);
// callback.whenComplete((unused, throwable) -> this.start());
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.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import net.minestom.server.registry.DynamicRegistry;
import net.minestom.server.timer.ExecutionType;
import net.minestom.server.timer.TaskSchedule;
import net.minestom.server.world.DimensionType;
@@ -22,7 +23,7 @@ public class StatelessGame extends Game {
private int timeLimit = 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);
this.score = score;
this.name = gameName;
@@ -55,7 +56,7 @@ public class StatelessGame extends Game {
timePlayed++;
return TaskSchedule.seconds(1);
}, ExecutionType.SYNC);
}, ExecutionType.TICK_START);
}
}

View File

@@ -47,7 +47,7 @@ public class GameConfigurationInventory extends InteractableInventory {
setClickableItem(
ItemStack.builder(Material.RED_WOOL)
.displayName(
.customName(
TranslatedComponent.byId("common#back")
.setColor(NamedTextColor.RED)
.getAssembled(p)
@@ -62,7 +62,7 @@ public class GameConfigurationInventory extends InteractableInventory {
setDummyItem(
ItemStack.builder(Material.NAME_TAG)
.displayName(
.customName(
factory.name().setColor(NamedTextColor.GOLD).getAssembled(p)
)
.build(),
@@ -80,7 +80,7 @@ public class GameConfigurationInventory extends InteractableInventory {
if(config == null) {
setDummyItem(
ItemStack.builder(Material.BARRIER)
.displayName(
.customName(
TranslatedComponent.byId("room#noOption").setColor(NamedTextColor.RED).getAssembled(p)
)
.lore(
@@ -130,7 +130,7 @@ public class GameConfigurationInventory extends InteractableInventory {
setClickableItem(
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()))
.build(),
8,
@@ -142,7 +142,7 @@ public class GameConfigurationInventory extends InteractableInventory {
setClickableItem(
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(
restrictionHandler.getRestrictions()
.stream()

View File

@@ -46,7 +46,7 @@ public abstract class Option<T> {
public ItemStack getCurrent(Player p) {
int amount = Integer.parseInt(options.get(pointer).toString());
return ItemStack.builder(item)
.displayName(name.getAssembled(p))
.customName(name.getAssembled(p))
.lore(TranslatedComponent.byId("optionCommon#value").setColor(NamedTextColor.GOLD).getAssembled(p)
.append(Component.text(": ")).append(Component.text(amount)))
.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.instance.batch.AbsoluteBlockBatch;
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.ParticleCreator;
import net.minestom.server.timer.ExecutionType;
import net.minestom.server.timer.TaskSchedule;
import org.jetbrains.annotations.NotNull;
@@ -38,7 +38,7 @@ public class AcidRain extends StatelessGame {
.setFrequency(0.09)
.build();
public AcidRain() {
super(Dimension.OVERWORLD.DIMENSION, "acidRain", new LastWinsScore());
super(Dimension.OVERWORLD.key, "acidRain", new LastWinsScore());
setGenerator(
new CircularPlateTerrainGenerator(radius)
.setPlateHeight(50)
@@ -62,13 +62,13 @@ public class AcidRain extends StatelessGame {
MinecraftServer.getSchedulerManager().submitTask(() -> {
getPlayers().forEach(player -> {
player.sendPacket(ParticleCreator.createParticlePacket(Particle.SNEEZE, 0, 60, 0, radius, radius, radius, 500));
player.sendPacket(ParticleCreator.createParticlePacket(Particle.ITEM_SLIME, 0, 60, 0, radius, radius, radius, 500));
player.sendPacket(new ParticlePacket(Particle.SNEEZE, 0, 60, 0, radius, radius, radius, 1f, 500));
player.sendPacket(new ParticlePacket(Particle.ITEM_SLIME, 0, 60, 0, radius, radius, radius, 1f, 500));
});
if(!isRunning) return TaskSchedule.stop();
return TaskSchedule.millis(100);
}, ExecutionType.ASYNC);
}, ExecutionType.TICK_END);
MinecraftServer.getSchedulerManager().submitTask(() -> {
generationOffset++;
@@ -76,7 +76,7 @@ public class AcidRain extends StatelessGame {
if(!isRunning) return TaskSchedule.stop();
return TaskSchedule.millis((long) NumberUtil.map(50 - difficulty, 0, 50, 100, 1000));
}, ExecutionType.ASYNC);
}, ExecutionType.TICK_END);
MinecraftServer.getSchedulerManager().submitTask(() -> {
difficulty++;

View File

@@ -8,7 +8,7 @@ import org.jetbrains.annotations.NotNull;
public class Backrooms extends StatelessGame {
public Backrooms() {
super(Dimension.NETHER.DIMENSION, "Backrooms", new NoScore());
super(Dimension.NETHER.key, "Backrooms", new NoScore());
BackroomsGenerator generator = new BackroomsGenerator();
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.PlayerBlockPlaceEvent;
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.Material;
import net.minestom.server.timer.ExecutionType;
@@ -38,7 +38,7 @@ public class Bedwars extends StatelessGame {
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")));
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();
}, 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.util.BatchUtil;
import eu.mhsl.minenet.minigames.util.GeneratorUtils;
import io.github.bloepiloepi.pvp.events.ProjectileHitEvent;
import io.github.bloepiloepi.pvp.projectile.CustomEntityProjectile;
import io.github.togar2.pvp.entity.projectile.CustomEntityProjectile;
import net.minestom.server.coordinate.Point;
import net.minestom.server.coordinate.Pos;
import net.minestom.server.coordinate.Vec;
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.projectile.ArrowMeta;
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.player.PlayerItemAnimationEvent;
import net.minestom.server.event.player.PlayerMoveEvent;
import net.minestom.server.instance.batch.AbsoluteBlockBatch;
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.Material;
import net.minestom.server.item.enchant.Enchantment;
import net.minestom.server.tag.Tag;
import net.minestom.server.utils.MathUtils;
import net.minestom.server.utils.time.TimeUnit;
@@ -39,7 +39,7 @@ public class BowSpleef extends StatelessGame {
private final int radius = 30;
private final int totalElevation = 50;
public BowSpleef() {
super(Dimension.OVERWORLD.DIMENSION, "bowSpleef", new LastWinsScore());
super(Dimension.OVERWORLD.key, "bowSpleef", new LastWinsScore());
eventNode().addListener(
EventListener
@@ -58,17 +58,17 @@ public class BowSpleef extends StatelessGame {
final double power = MathUtils.clamp((chargedFor * chargedFor + 2 * chargedFor) / 2D, 0, 1);
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();
meta.setCritical(power >= 0.9);
projectile.scheduleRemove(Duration.of(100, TimeUnit.SERVER_TICK));
projectile.setOnFire(true);
meta.setOnFire(true);
final Pos position = player.getPosition().add(0, player.getEyeHeight(), 0);
projectile.setInstance(Objects.requireNonNull(player.getInstance()), position);
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);
}
})
@@ -78,9 +78,9 @@ public class BowSpleef extends StatelessGame {
eventNode().addListener(
EventListener
.builder(ProjectileHitEvent.ProjectileBlockHitEvent.class)
.builder(ProjectileCollideWithBlockEvent.class)
.handler(projectileBlockHitEvent -> {
CustomEntityProjectile projectile = projectileBlockHitEvent.getEntity();
Entity projectile = projectileBlockHitEvent.getEntity();
if(!projectile.getTag(ARROW_FIRST_HIT)) {
projectile.remove();
return;
@@ -108,7 +108,7 @@ public class BowSpleef extends StatelessGame {
eventNode().addListener(
EventListener
.builder(ProjectileHitEvent.ProjectileEntityHitEvent.class)
.builder(ProjectileCollideWithEntityEvent.class)
.handler(projectileEntityHitEvent -> projectileEntityHitEvent.setCancelled(true))
.build()
);
@@ -135,9 +135,8 @@ public class BowSpleef extends StatelessGame {
0,
ItemStack
.builder(Material.BOW)
.displayName(TranslatedComponent.byId("bow").getAssembled(player))
.meta(builder -> builder.enchantment(Enchantment.FLAME, (short) 1).build())
.meta(builder -> builder.hideFlag(ItemHideFlag.HIDE_ENCHANTS))
.customName(TranslatedComponent.byId("bow").getAssembled(player))
.glowing(true)
.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.world.BlockPallet;
import eu.mhsl.minenet.minigames.world.generator.terrain.CircularPlateTerrainGenerator;
import io.github.bloepiloepi.pvp.config.AttackConfig;
import io.github.bloepiloepi.pvp.config.DamageConfig;
import io.github.bloepiloepi.pvp.config.PvPConfig;
import io.github.togar2.pvp.config.AttackConfig;
import io.github.togar2.pvp.config.DamageConfig;
import io.github.togar2.pvp.config.PvPConfig;
import net.minestom.server.coordinate.Pos;
import net.minestom.server.event.player.PlayerMoveEvent;
import net.minestom.server.instance.batch.AbsoluteBlockBatch;
@@ -23,18 +23,18 @@ class Deathcube extends StatelessGame {
final int percentage;
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.height = height + 49;
this.percentage = percentage;
this.setGenerator(new CircularPlateTerrainGenerator(radius+10).setPlateHeight(50));
if(pvpEnabled == 1) eventNode().addChild(
PvPConfig.emptyBuilder()
.damage(DamageConfig.legacyBuilder().fallDamage(false))
.attack(AttackConfig.legacyBuilder().attackCooldown(true))
.build().createNode()
);
// if(pvpEnabled == 1) eventNode().addChild( // TODO update
// PvPConfig.emptyBuilder()
// .damage(DamageConfig.LEGACY.fallDamage(false))
// .attack(AttackConfig.DEFAULT.attackCooldown(true))
// .build().createNode()
// );
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.network.packet.server.play.ParticlePacket;
import net.minestom.server.particle.Particle;
import net.minestom.server.particle.ParticleCreator;
import net.minestom.server.sound.SoundEvent;
import org.jetbrains.annotations.NotNull;
@@ -57,7 +56,7 @@ public class ElytraRace extends StatelessGame {
private final Map<Player, CheckPointData> playerCheckpoints = new HashMap<>();
public ElytraRace(int ringCount) {
super(Dimension.OVERWORLD.DIMENSION, "ElytraRace", new FirstWinsScore());
super(Dimension.OVERWORLD.key, "ElytraRace", new FirstWinsScore());
this.ringCount = ringCount;
@@ -120,7 +119,7 @@ public class ElytraRace extends StatelessGame {
getPlayers().forEach(player -> {
player.getInventory().setChestplate(ItemStack.of(Material.ELYTRA));
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);
});
@@ -144,7 +143,7 @@ public class ElytraRace extends StatelessGame {
if(newPos.y() > gameHeight - 5) {
Point particlePoint = newPos.withY(gameHeight);
ParticlePacket particle = ParticleCreator.createParticlePacket(
ParticlePacket particle = new ParticlePacket(
Particle.WAX_ON,
particlePoint.blockX(),
particlePoint.blockY(),
@@ -152,6 +151,7 @@ public class ElytraRace extends StatelessGame {
20,
0,
30,
1f,
Math.toIntExact((long) NumberUtil.map(newPos.y(), gameHeight - 5, gameHeight, 50, 500))
);
player.sendPacket(particle);
@@ -173,7 +173,7 @@ public class ElytraRace extends StatelessGame {
}
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) {
@@ -189,7 +189,7 @@ public class ElytraRace extends StatelessGame {
Point ringPos = getRingPositionAtZ(zPos);
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),
point -> batch.setBlock(point, Block.BARRIER)
);

View File

@@ -33,7 +33,7 @@ class Minerun extends StatelessGame {
private final int afterFinishLine = 10;
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));
this.width = width;

View File

@@ -26,7 +26,7 @@ public class Spleef extends StatelessGame {
final int totalElevation = 50;
public Spleef(int radius, int stackCount) {
super(Dimension.OVERWORLD.DIMENSION, "Spleef", new LastWinsScore());
super(Dimension.OVERWORLD.key, "Spleef", new LastWinsScore());
getScore().setIgnoreLastPlayers(1);
this.radius = radius;
@@ -61,13 +61,7 @@ public class Spleef extends StatelessGame {
player.getInventory().addItemStack(
ItemStack
.builder(Material.DIAMOND_SHOVEL)
.displayName(TranslatedComponent.byId("game_Spleef#shovelName").getAssembled(player))
.meta(
builder -> builder
.enchantment(Enchantment.EFFICIENCY, (short) 99)
.hideFlag(ItemHideFlag.HIDE_ENCHANTS)
.build()
)
.customName(TranslatedComponent.byId("game_Spleef#shovelName").getAssembled(player))
.build()
);
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.util.BatchUtil;
import eu.mhsl.minenet.minigames.world.generator.terrain.CircularPlateTerrainGenerator;
import io.github.bloepiloepi.pvp.config.*;
import io.github.bloepiloepi.pvp.events.FinalAttackEvent;
import io.github.togar2.pvp.config.PvPConfig;
import io.github.togar2.pvp.events.FinalAttackEvent;
import net.minestom.server.coordinate.Pos;
import net.minestom.server.entity.Player;
import net.minestom.server.event.player.PlayerMoveEvent;
@@ -18,14 +18,14 @@ import java.util.concurrent.CompletableFuture;
public class Stickfight extends StatelessGame {
public Stickfight() {
super(Dimension.OVERWORLD.DIMENSION, "Stickfight", new LastWinsScore());
super(Dimension.OVERWORLD.key, "Stickfight", new LastWinsScore());
eventNode().addChild(
PvPConfig.emptyBuilder()
.damage(DamageConfig.legacyBuilder().fallDamage(false))
.attack(AttackConfig.legacyBuilder().attackCooldown(true))
.build().createNode()
);
// eventNode().addChild( // TODO update
// PvPConfig.emptyBuilder()
// .damage(DamageConfig.legacyBuilder().fallDamage(false))
// .attack(AttackConfig.legacyBuilder().attackCooldown(true))
// .build().createNode()
// );
eventNode().addListener(FinalAttackEvent.class, finalAttackEvent -> {
finalAttackEvent.setBaseDamage(0);

View File

@@ -27,7 +27,7 @@ public class TntRun extends StatelessGame {
final int radius;
final 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.stackCount = stackCount;
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 Towerdefense() {
super(Dimension.NETHER.DIMENSION, "Towerdefense", new NoScore());
super(Dimension.NETHER.key, "Towerdefense", new NoScore());
setGenerator(new MazeGenerator());
}

View File

@@ -37,7 +37,7 @@ class TrafficLightRace extends StatelessGame {
private final List<Pos> trafficLights = new ArrayList<>();
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.length = length;
@@ -150,7 +150,7 @@ class TrafficLightRace extends StatelessGame {
BatchUtil.loadAndApplyBatch(changeLightsBatch, this, () -> {});
return phase.taskScheduleRandomDuration();
}, ExecutionType.SYNC);
}, ExecutionType.TICK_END);
}
@Override