Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 14 additions & 4 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar

plugins {
id("java")
id("com.github.johnrengelman.shadow") version "7.1.0"
id("com.github.johnrengelman.shadow") version "8.1.1"
}

tasks {
Expand All @@ -20,12 +20,22 @@ repositories {
}

dependencies {
implementation("com.github.Minestom:Minestom:cb3892255e")
implementation("de.articdive:jnoise-pipeline:4.0.0")
// Minestom
implementation("net.minestom:minestom-snapshots:7daf8d69b7")

// Randomness
implementation("de.articdive:jnoise-pipeline:4.1.0")

// Prometheus - logging
implementation("io.prometheus:simpleclient:0.16.0")
implementation("io.prometheus:simpleclient_hotspot:0.16.0")
implementation("io.prometheus:simpleclient_httpserver:0.16.0")
implementation("net.kyori:adventure-text-minimessage:4.12.0")

// Adventure
implementation("net.kyori:adventure-text-minimessage:4.16.0")

// Logger
implementation("ch.qos.logback:logback-classic:1.5.2")
}

tasks.withType<JavaCompile> {
Expand Down
Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
4 changes: 3 additions & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
41 changes: 28 additions & 13 deletions gradlew
100644 → 100755

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

35 changes: 19 additions & 16 deletions gradlew.bat

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions src/main/java/net/minestom/arena/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@
import net.minestom.server.entity.GameMode;
import net.minestom.server.entity.Player;
import net.minestom.server.event.GlobalEventHandler;
import net.minestom.server.event.player.AsyncPlayerConfigurationEvent;
import net.minestom.server.event.player.PlayerChatEvent;
import net.minestom.server.event.player.PlayerDisconnectEvent;
import net.minestom.server.event.player.PlayerLoginEvent;
import net.minestom.server.event.player.PlayerSpawnEvent;
import net.minestom.server.event.server.ServerTickMonitorEvent;
import net.minestom.server.extras.MojangAuth;
Expand Down Expand Up @@ -69,7 +69,7 @@ public static void main(String[] args) {
ServerList.hook(handler);

// Login
handler.addListener(PlayerLoginEvent.class, event -> {
handler.addListener(AsyncPlayerConfigurationEvent.class, event -> {
final Player player = event.getPlayer();
event.setSpawningInstance(Lobby.INSTANCE);
player.setRespawnPoint(new Pos(0.5, 16, 0.5));
Expand Down Expand Up @@ -152,6 +152,6 @@ public static void main(String[] args) {
}

minecraftServer.start(CONFIG.server().address());
System.out.println("Server startup done! Using configuration " + CONFIG);
LOGGER.info("Server startup done! Using configuration " + CONFIG);
}
}
4 changes: 2 additions & 2 deletions src/main/java/net/minestom/arena/Metrics.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
import net.minestom.server.entity.Player;
import net.minestom.server.event.entity.EntitySpawnEvent;
import net.minestom.server.event.instance.RemoveEntityFromInstanceEvent;
import net.minestom.server.event.player.AsyncPlayerConfigurationEvent;
import net.minestom.server.event.player.PlayerDisconnectEvent;
import net.minestom.server.event.player.PlayerLoginEvent;
import net.minestom.server.event.player.PlayerPacketEvent;
import net.minestom.server.event.player.PlayerPacketOutEvent;

Expand Down Expand Up @@ -62,7 +62,7 @@ public static void init() {
MinecraftServer.getGlobalEventHandler()
.addListener(PlayerPacketEvent.class, e -> Metrics.PACKETS.labels("in").inc())
.addListener(PlayerPacketOutEvent.class, e -> Metrics.PACKETS.labels("out").inc())
.addListener(PlayerLoginEvent.class, e -> Metrics.ONLINE_PLAYERS.inc())
.addListener(AsyncPlayerConfigurationEvent.class, e -> Metrics.ONLINE_PLAYERS.inc())
.addListener(PlayerDisconnectEvent.class, e -> Metrics.ONLINE_PLAYERS.dec())
.addListener(EntitySpawnEvent.class, e -> {
if (!(e.getEntity() instanceof Player)) Metrics.ENTITIES.inc();
Expand Down
34 changes: 14 additions & 20 deletions src/main/java/net/minestom/arena/feature/CombatFeature.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,13 @@

import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import net.minestom.server.coordinate.Pos;
import net.minestom.server.entity.Entity;
import net.minestom.server.entity.EntityProjectile;
import net.minestom.server.entity.LivingEntity;
import net.minestom.server.entity.Player;
import net.minestom.server.entity.*;
import net.minestom.server.entity.damage.DamageType;
import net.minestom.server.entity.hologram.Hologram;
import net.minestom.server.entity.metadata.display.TextDisplayMeta;
import net.minestom.server.event.EventNode;
import net.minestom.server.event.entity.EntityAttackEvent;
import net.minestom.server.event.entity.projectile.ProjectileCollideWithEntityEvent;
import net.minestom.server.event.trait.InstanceEvent;
import net.minestom.server.instance.Instance;
import net.minestom.server.tag.Tag;
import net.minestom.server.utils.MathUtils;
import net.minestom.server.utils.time.TimeUnit;
Expand Down Expand Up @@ -49,7 +44,7 @@ public void hook(@NotNull EventNode<InstanceEvent> node) {

float damage = (float) damageFunction.applyAsDouble(projectile, target);

target.damage(DamageType.fromProjectile(projectile.getShooter(), projectile), damage);
target.damage(DamageType.MOB_PROJECTILE, damage);
target.setTag(INVULNERABLE_UNTIL_TAG, now + invulnerabilityFunction.applyAsLong(target));

takeKnockbackFromArrow(target, projectile);
Expand All @@ -72,7 +67,7 @@ public void hook(@NotNull EventNode<InstanceEvent> node) {

float damage = (float) damageFunction.applyAsDouble(event.getEntity(), target);

target.damage(DamageType.fromEntity(event.getEntity()), damage);
target.damage(DamageType.MOB_ATTACK, damage);
target.setTag(INVULNERABLE_UNTIL_TAG, now + invulnerabilityFunction.applyAsLong(target));

takeKnockback(target, event.getEntity());
Expand All @@ -96,27 +91,26 @@ private static void takeKnockbackFromArrow(Entity target, EntityProjectile sourc
private static void spawnHologram(Entity target, float damage) {
damage = MathUtils.round(damage, 2);

new DamageHologram(
target.getInstance(),
target.getPosition().add(0, target.getEyeHeight(), 0),
Component.text(damage, NamedTextColor.RED)
);
var hologram = new DamageHologram(Component.text(damage, NamedTextColor.RED));
hologram.setInstance(target.getInstance(), target.getPosition().add(0, target.getEyeHeight(), 0));
}

private static final class DamageHologram extends Hologram {
private DamageHologram(Instance instance, Pos spawnPosition, Component text) {
super(instance, spawnPosition, text, true, true);
getEntity().getEntityMeta().setHasNoGravity(false);
private static final class DamageHologram extends EntityCreature {
private DamageHologram(Component text) {
super(EntityType.TEXT_DISPLAY);

TextDisplayMeta hologramMeta = (TextDisplayMeta) this.getEntityMeta();
hologramMeta.setText(text);

Random random = ThreadLocalRandom.current();
getEntity().setVelocity(getPosition()
this.setVelocity(getPosition()
.direction()
.withX(random.nextDouble(2))
.withY(3)
.withZ(random.nextDouble(2))
.normalize().mul(3));

getEntity().scheduleRemove(Duration.of(15, TimeUnit.SERVER_TICK));
this.scheduleRemove(Duration.of(15, TimeUnit.SERVER_TICK));
}
}
}
9 changes: 4 additions & 5 deletions src/main/java/net/minestom/arena/game/mob/EvokerMob.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
import net.minestom.server.entity.ai.target.ClosestEntityTarget;
import net.minestom.server.entity.metadata.monster.raider.EvokerMeta;
import net.minestom.server.entity.metadata.monster.raider.SpellcasterIllagerMeta;
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.TaskSchedule;
import net.minestom.server.utils.time.Cooldown;
import net.minestom.server.utils.time.TimeUnit;
Expand Down Expand Up @@ -49,10 +49,9 @@ public EvokerMob(MobGenerationContext context) {
random.nextFloat(-2, 2)
);
silverfish.setInstance(instance, pos);
instance.sendGroupedPacket(ParticleCreator.createParticlePacket(
Particle.POOF, true, pos.x(), pos.y(), pos.z(),
0.2f, 0.2f, 0.2f, 0.1f, 10, null
));

instance.sendGroupedPacket(new ParticlePacket(Particle.POOF, true, pos.x(), pos.y(), pos.z(),
0.2f, 0.2f, 0.2f, 0.1f, 10));
}

((EvokerMeta) getEntityMeta()).setSpell(SpellcasterIllagerMeta.Spell.NONE);
Expand Down
Loading