Skip to content

Commit 7eefcf4

Browse files
authored
Merge pull request #123 from MIA-Development-Team/feat/abyss-spawenr-cooldown-jade-compat
feat: jade compat
2 parents 9c9e110 + bd70c3e commit 7eefcf4

7 files changed

Lines changed: 98 additions & 7 deletions

File tree

src/generated/resources/assets/mia/lang/en_us.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"attribute.name.generic.critical_hit": "Critical Hit Chance",
3-
"attribute.name.generic.critical_hit_damage": "Critical Hit Damage",
3+
"attribute.name.generic.critical_hit_damage": "Critical Hit Damage",
44
"biome.mia.great_fault/great_fault": "Great Fault",
55
"biome.mia.great_fault/the_great_fault": "The Great Fault",
66
"biome.mia.the_abyss/abyss_dripstone_caves": "Abyss Dripstone Caves",
@@ -282,6 +282,7 @@
282282
"tag.item.mia.fossilized_logs": "Fossilized Logs",
283283
"tag.item.mia.skyfog_logs": "Skyfog Logs",
284284
"tag.item.mia.stripped_fossilized_logs": "Stripped Fossilized Logs",
285+
"tooltip.mia.abyss_spawner.cooldown": "Cooldown: %s",
285286
"tooltip.mia.artifact.grade.a": "A",
286287
"tooltip.mia.artifact.grade.b": "B",
287288
"tooltip.mia.artifact.grade.c": "C",
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
{
22
"values": [
3-
"minecraft:lapis_lazuli",
4-
"mia:prasiolite_shard",
5-
"minecraft:copper_ingot",
63
"minecraft:emerald",
7-
"minecraft:iron_ingot",
8-
"minecraft:diamond",
4+
"minecraft:copper_ingot",
95
"minecraft:gold_ingot",
10-
"minecraft:netherite_ingot"
6+
"mia:prasiolite_shard",
7+
"minecraft:lapis_lazuli",
8+
"minecraft:netherite_ingot",
9+
"minecraft:diamond",
10+
"minecraft:iron_ingot"
1111
]
1212
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package com.altnoir.mia.compat.jade;
2+
3+
import com.altnoir.mia.common.block.entity.AbyssSpawnerBlockEntity;
4+
import com.altnoir.mia.util.MiaUtil;
5+
import net.minecraft.nbt.CompoundTag;
6+
import net.minecraft.network.chat.Component;
7+
import net.minecraft.resources.ResourceLocation;
8+
import snownee.jade.api.BlockAccessor;
9+
import snownee.jade.api.IBlockComponentProvider;
10+
import snownee.jade.api.IServerDataProvider;
11+
import snownee.jade.api.ITooltip;
12+
import snownee.jade.api.config.IPluginConfig;
13+
14+
public enum AbyssSpawnerComponentProvider implements
15+
IBlockComponentProvider, IServerDataProvider<BlockAccessor> {
16+
INSTANCE;
17+
18+
private static final String tag = "spawner_cooldown";
19+
20+
@Override
21+
public ResourceLocation getUid() {
22+
return MiaJadePlugin.SPAWNER_COOLDOWN;
23+
}
24+
25+
@Override
26+
public void appendTooltip(ITooltip tooltip, BlockAccessor blockAccessor, IPluginConfig iPluginConfig) {
27+
if (!blockAccessor.getServerData().contains(tag))
28+
return;
29+
30+
var cooldown = blockAccessor.getServerData().getInt(tag);
31+
32+
if (cooldown <= 0)
33+
return;
34+
35+
tooltip.add(
36+
Component.translatable(
37+
"tooltip.mia.abyss_spawner.cooldown",
38+
MiaUtil.formatTickToTime(cooldown)
39+
)
40+
);
41+
}
42+
43+
@Override
44+
public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccessor) {
45+
var spawner = (AbyssSpawnerBlockEntity)blockAccessor.getBlockEntity();
46+
compoundTag.putInt(tag, spawner.getAbyssSpawner().getRemainingCooldown());
47+
}
48+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.altnoir.mia.compat.jade;
2+
3+
import com.altnoir.mia.common.block.AbyssSpawnerBlock;
4+
import com.altnoir.mia.common.block.entity.AbyssSpawnerBlockEntity;
5+
import net.minecraft.resources.ResourceLocation;
6+
import snownee.jade.api.IWailaClientRegistration;
7+
import snownee.jade.api.IWailaCommonRegistration;
8+
import snownee.jade.api.IWailaPlugin;
9+
import snownee.jade.api.WailaPlugin;
10+
11+
@WailaPlugin
12+
public class MiaJadePlugin implements IWailaPlugin {
13+
public static final ResourceLocation SPAWNER_COOLDOWN = ResourceLocation.parse("mia:spawner_cooldown");
14+
15+
@Override
16+
public void register(IWailaCommonRegistration registration) {
17+
registration.registerBlockDataProvider(AbyssSpawnerComponentProvider.INSTANCE, AbyssSpawnerBlockEntity.class);
18+
}
19+
20+
@Override
21+
public void registerClient(IWailaClientRegistration registration) {
22+
registration.registerBlockComponent(AbyssSpawnerComponentProvider.INSTANCE, AbyssSpawnerBlock.class);
23+
}
24+
}

src/main/java/com/altnoir/mia/core/spawner/AbyssTrialSpawner.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,15 @@ public class AbyssTrialSpawner {
5858
private Entity displayEntity;
5959
private double spin;
6060
private double oSpin;
61+
private int remainingCooldown;
6162

6263
public AbyssTrialSpawner(StateAccessor stateAccessor) {
6364
this.stateAccessor = stateAccessor;
6465
}
66+
67+
public int getRemainingCooldown() {
68+
return remainingCooldown;
69+
}
6570

6671
public void tickServer(ServerLevel level, BlockPos pos, boolean ominous) {
6772
var currentState = this.stateAccessor.getState();
@@ -79,6 +84,8 @@ public void tickServer(ServerLevel level, BlockPos pos, boolean ominous) {
7984
case EJECTING_REWARD -> tickEjectingReward(level, pos, ominous);
8085
case COOLDOWN -> tickCooldown(level, pos);
8186
}
87+
88+
this.remainingCooldown = this.cooldownEndsAt - level.getServer().getTickCount();
8289
}
8390

8491
private void tickInactive(ServerLevel level, BlockPos pos) {

src/main/java/com/altnoir/mia/util/MiaUtil.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.joml.Matrix4f;
3737

3838
import java.io.InputStream;
39+
import java.time.Duration;
3940
import java.util.Collection;
4041
import java.util.List;
4142
import java.util.Objects;
@@ -247,4 +248,12 @@ public static boolean isCreativeOrSpectator(Player player) {
247248

248249
return trimmedPath.split("/");
249250
}
251+
252+
public static String formatTickToTime(long ticks) {
253+
var duration = Duration.ofMillis(ticks * 50L);
254+
var minutes = duration.toMinutes();
255+
var seconds = duration.getSeconds() % 60;
256+
257+
return String.format("%02d:%02d", minutes, seconds);
258+
}
250259
}

src/main/resources/assets/mia/lang/default/tooltip.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
"tooltip.mia.whistle.level": "Whistle Level: %s",
88
"tooltip.mia.whistle.capacity": "Capacity: %s",
99

10+
"tooltip.mia.abyss_spawner.cooldown": "Cooldown: %s",
11+
1012
"tooltip.mia.skill.cooldown_value": "Cooldown: %s",
1113
"tooltip.mia.artifact.weight": "Weight: %s",
1214
"tooltip.mia.artifact.grade.s": "S",

0 commit comments

Comments
 (0)