Skip to content
Merged
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
3 changes: 2 additions & 1 deletion src/generated/resources/assets/mia/lang/en_us.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"attribute.name.generic.critical_hit": "Critical Hit Chance",
"attribute.name.generic.critical_hit_damage": "Critical Hit Damage",
"attribute.name.generic.critical_hit_damage": "Critical Hit Damage",
"biome.mia.great_fault/great_fault": "Great Fault",
"biome.mia.great_fault/the_great_fault": "The Great Fault",
"biome.mia.the_abyss/abyss_dripstone_caves": "Abyss Dripstone Caves",
Expand Down Expand Up @@ -282,6 +282,7 @@
"tag.item.mia.fossilized_logs": "Fossilized Logs",
"tag.item.mia.skyfog_logs": "Skyfog Logs",
"tag.item.mia.stripped_fossilized_logs": "Stripped Fossilized Logs",
"tooltip.mia.abyss_spawner.cooldown": "Cooldown: %s",
"tooltip.mia.artifact.grade.a": "A",
"tooltip.mia.artifact.grade.b": "B",
"tooltip.mia.artifact.grade.c": "C",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
{
"values": [
"minecraft:lapis_lazuli",
"mia:prasiolite_shard",
"minecraft:copper_ingot",
"minecraft:emerald",
"minecraft:iron_ingot",
"minecraft:diamond",
"minecraft:copper_ingot",
"minecraft:gold_ingot",
"minecraft:netherite_ingot"
"mia:prasiolite_shard",
"minecraft:lapis_lazuli",
"minecraft:netherite_ingot",
"minecraft:diamond",
"minecraft:iron_ingot"
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package com.altnoir.mia.compat.jade;

import com.altnoir.mia.common.block.entity.AbyssSpawnerBlockEntity;
import com.altnoir.mia.util.MiaUtil;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import snownee.jade.api.BlockAccessor;
import snownee.jade.api.IBlockComponentProvider;
import snownee.jade.api.IServerDataProvider;
import snownee.jade.api.ITooltip;
import snownee.jade.api.config.IPluginConfig;

public enum AbyssSpawnerComponentProvider implements
IBlockComponentProvider, IServerDataProvider<BlockAccessor> {
INSTANCE;

private static final String tag = "spawner_cooldown";

@Override
public ResourceLocation getUid() {
return MiaJadePlugin.SPAWNER_COOLDOWN;
}

@Override
public void appendTooltip(ITooltip tooltip, BlockAccessor blockAccessor, IPluginConfig iPluginConfig) {
if (!blockAccessor.getServerData().contains(tag))
return;

var cooldown = blockAccessor.getServerData().getInt(tag);

if (cooldown <= 0)
return;

tooltip.add(
Component.translatable(
"tooltip.mia.abyss_spawner.cooldown",
MiaUtil.formatTickToTime(cooldown)
)
);
}

@Override
public void appendServerData(CompoundTag compoundTag, BlockAccessor blockAccessor) {
var spawner = (AbyssSpawnerBlockEntity)blockAccessor.getBlockEntity();
compoundTag.putInt(tag, spawner.getAbyssSpawner().getRemainingCooldown());
}
}
24 changes: 24 additions & 0 deletions src/main/java/com/altnoir/mia/compat/jade/MiaJadePlugin.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.altnoir.mia.compat.jade;

import com.altnoir.mia.common.block.AbyssSpawnerBlock;
import com.altnoir.mia.common.block.entity.AbyssSpawnerBlockEntity;
import net.minecraft.resources.ResourceLocation;
import snownee.jade.api.IWailaClientRegistration;
import snownee.jade.api.IWailaCommonRegistration;
import snownee.jade.api.IWailaPlugin;
import snownee.jade.api.WailaPlugin;

@WailaPlugin
public class MiaJadePlugin implements IWailaPlugin {
public static final ResourceLocation SPAWNER_COOLDOWN = ResourceLocation.parse("mia:spawner_cooldown");

@Override
public void register(IWailaCommonRegistration registration) {
registration.registerBlockDataProvider(AbyssSpawnerComponentProvider.INSTANCE, AbyssSpawnerBlockEntity.class);
}

@Override
public void registerClient(IWailaClientRegistration registration) {
registration.registerBlockComponent(AbyssSpawnerComponentProvider.INSTANCE, AbyssSpawnerBlock.class);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,15 @@ public class AbyssTrialSpawner {
private Entity displayEntity;
private double spin;
private double oSpin;
private int remainingCooldown;

public AbyssTrialSpawner(StateAccessor stateAccessor) {
this.stateAccessor = stateAccessor;
}

public int getRemainingCooldown() {
return remainingCooldown;
}

public void tickServer(ServerLevel level, BlockPos pos, boolean ominous) {
var currentState = this.stateAccessor.getState();
Expand All @@ -79,6 +84,8 @@ public void tickServer(ServerLevel level, BlockPos pos, boolean ominous) {
case EJECTING_REWARD -> tickEjectingReward(level, pos, ominous);
case COOLDOWN -> tickCooldown(level, pos);
}

this.remainingCooldown = this.cooldownEndsAt - level.getServer().getTickCount();
}

private void tickInactive(ServerLevel level, BlockPos pos) {
Expand Down
9 changes: 9 additions & 0 deletions src/main/java/com/altnoir/mia/util/MiaUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
import org.joml.Matrix4f;

import java.io.InputStream;
import java.time.Duration;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
Expand Down Expand Up @@ -247,4 +248,12 @@ public static boolean isCreativeOrSpectator(Player player) {

return trimmedPath.split("/");
}

public static String formatTickToTime(long ticks) {
var duration = Duration.ofMillis(ticks * 50L);
var minutes = duration.toMinutes();
var seconds = duration.getSeconds() % 60;

return String.format("%02d:%02d", minutes, seconds);
}
}
2 changes: 2 additions & 0 deletions src/main/resources/assets/mia/lang/default/tooltip.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
"tooltip.mia.whistle.level": "Whistle Level: %s",
"tooltip.mia.whistle.capacity": "Capacity: %s",

"tooltip.mia.abyss_spawner.cooldown": "Cooldown: %s",

"tooltip.mia.skill.cooldown_value": "Cooldown: %s",
"tooltip.mia.artifact.weight": "Weight: %s",
"tooltip.mia.artifact.grade.s": "S",
Expand Down
Loading