Skip to content

Commit 7900a91

Browse files
committed
Simplify stat collection by using more vanilla systems
Instead of injecting in various places to collect statistics the mod now basically maps vanilla statistics to modded ones This leaves one hook into the vanilla `incrementStat` method and two for counting entities players kill or are killed by.
1 parent be4c7a2 commit 7900a91

File tree

150 files changed

+1109
-3448
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

150 files changed

+1109
-3448
lines changed

src/main/resources/assets/server_stats/data/stat_id_prefixes.json

Lines changed: 0 additions & 6 deletions
This file was deleted.

src/main/resources/assets/server_stats/data/stat_ids.json

Lines changed: 0 additions & 25 deletions
This file was deleted.
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package net.lostluma.server_stats;
2+
3+
public class Constants {
4+
public static final String MOD_ID = "server_stats";
5+
public static final String STATS_PACKET_CHANNEL = MOD_ID + "|s";
6+
}

versions/1.0.1-server/src/main/java/net/lostluma/server_stats/mixin/server/PlayerEntityMixin.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,28 @@
11
package net.lostluma.server_stats.mixin.server;
22

3+
import net.lostluma.server_stats.stats.Stats;
34
import net.lostluma.server_stats.types.StatsPlayer;
5+
import net.minecraft.entity.living.LivingEntity;
46
import org.jetbrains.annotations.Nullable;
57
import org.spongepowered.asm.mixin.Mixin;
68
import org.spongepowered.asm.mixin.Unique;
79

810
import net.lostluma.server_stats.stats.ServerPlayerStats;
911
import net.lostluma.server_stats.stats.Stat;
1012
import net.minecraft.entity.living.player.PlayerEntity;
13+
import org.spongepowered.asm.mixin.injection.At;
14+
import org.spongepowered.asm.mixin.injection.Inject;
15+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
1116

1217
@Mixin(PlayerEntity.class)
1318
public class PlayerEntityMixin implements StatsPlayer {
1419
@Unique
1520
private ServerPlayerStats server_stats$serverPlayerStats = null;
1621

22+
private PlayerEntity getPlayer() {
23+
return (PlayerEntity) (Object) this;
24+
}
25+
1726
@Override
1827
public void server_stats$incrementStat(Stat stat, int amount) {
1928
var stats = this.server_stats$getStats();
@@ -43,4 +52,9 @@ public class PlayerEntityMixin implements StatsPlayer {
4352

4453
return this.server_stats$serverPlayerStats;
4554
}
55+
56+
@Inject(method = "onKill", at = @At("HEAD"))
57+
private void onKill(LivingEntity entity, CallbackInfo callbackInfo) {
58+
this.getPlayer().server_stats$incrementStat(Stats.getEntityKillStat(entity), 1);
59+
}
4660
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package net.lostluma.server_stats.mixin.server;
2+
3+
import net.minecraft.entity.living.player.PlayerEntity;
4+
import org.spongepowered.asm.mixin.Mixin;
5+
import org.spongepowered.asm.mixin.injection.At;
6+
import org.spongepowered.asm.mixin.injection.Inject;
7+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
8+
9+
import net.lostluma.server_stats.stats.Stats;
10+
import net.minecraft.entity.damage.DamageSource;
11+
import net.minecraft.server.entity.living.player.ServerPlayerEntity;
12+
13+
@Mixin({PlayerEntity.class, ServerPlayerEntity.class })
14+
public class ServerPlayerEntityMixin {
15+
private PlayerEntity getPlayer() {
16+
return (PlayerEntity) (Object) this;
17+
}
18+
19+
@Inject(method = "incrementStat(Lnet/minecraft/stat/Stat;I)V", at = @At("HEAD"))
20+
private void incrementStat(net.minecraft.stat.Stat vanillaStat, int amount, CallbackInfo callbackInfo) {
21+
if (vanillaStat == null) {
22+
return;
23+
}
24+
25+
var stat = Stats.byVanillaId(vanillaStat.id);
26+
27+
if (stat != null) {
28+
this.getPlayer().server_stats$incrementStat(stat, amount);
29+
}
30+
}
31+
32+
@Inject(method = "onKilled", at = @At("HEAD"))
33+
private void onKilled(DamageSource source, CallbackInfo callbackInfo) {
34+
if (source.getAttacker() != null) {
35+
var attacker = source.getAttacker();
36+
this.getPlayer().server_stats$incrementStat(Stats.getKilledByEntityStat(attacker), 1);
37+
}
38+
}
39+
}

versions/1.0.1-server/src/main/java/net/lostluma/server_stats/mixin/server/stats/FishingBobberEntityMixin.java

Lines changed: 0 additions & 22 deletions
This file was deleted.

versions/1.0.1-server/src/main/java/net/lostluma/server_stats/mixin/server/stats/ItemStackMixin.java

Lines changed: 0 additions & 52 deletions
This file was deleted.

versions/1.0.1-server/src/main/java/net/lostluma/server_stats/mixin/server/stats/PlayerEntityMixin.java

Lines changed: 0 additions & 125 deletions
This file was deleted.

versions/1.0.1-server/src/main/java/net/lostluma/server_stats/mixin/server/stats/PlayerManagerMixin.java

Lines changed: 0 additions & 18 deletions
This file was deleted.

versions/1.0.1-server/src/main/java/net/lostluma/server_stats/mixin/server/stats/ServerPlayerEntityMixin.java

Lines changed: 0 additions & 25 deletions
This file was deleted.

versions/1.0.1-server/src/main/java/net/lostluma/server_stats/mixin/server/stats/block/BlockMixin.java

Lines changed: 0 additions & 20 deletions
This file was deleted.

0 commit comments

Comments
 (0)