From 1919d23c69ba018b287481e2d50058367642b756 Mon Sep 17 00:00:00 2001 From: gottsch <17928819+gottsch@users.noreply.github.com> Date: Tue, 17 Dec 2024 09:32:37 -0500 Subject: [PATCH] conversion --- .../core/mixin/EverFurnaceBlockEntity.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/main/java/mod/gottsch/fabric/everfurnace/core/mixin/EverFurnaceBlockEntity.java b/src/main/java/mod/gottsch/fabric/everfurnace/core/mixin/EverFurnaceBlockEntity.java index db97162..f111e8c 100644 --- a/src/main/java/mod/gottsch/fabric/everfurnace/core/mixin/EverFurnaceBlockEntity.java +++ b/src/main/java/mod/gottsch/fabric/everfurnace/core/mixin/EverFurnaceBlockEntity.java @@ -54,9 +54,17 @@ public abstract class EverFurnaceBlockEntity extends LockableContainerBlockEntit private static final int OUTPUT_SLOT = 2; @Unique private static final String LAST_GAME_TIME_TAG = "everfurnace_lastGameTime"; + @Unique + private static final String REMAINING_TIME_TAG = "everfurnace_remainingTime"; + @Unique + private static final String COOLDOWN_TIME_TAG = "everfurnace_cooldownTime"; @Unique private long everfurnace$lastGameTime; + @Unique + private int everfurnace$remainingTime; + @Unique + private int everfurnace$Cooldown; protected EverFurnaceBlockEntity(BlockEntityType blockEntityType, BlockPos blockPos, BlockState blockState) { super(blockEntityType, blockPos, blockState); @@ -90,6 +98,7 @@ private static void onTick(ServerWorld world, BlockPos pos, BlockState state, Ab long localLastGameTime = blockEntityMixin.getEverfurnace$lastGameTime(); blockEntityMixin.setEverfurnace$lastGameTime(blockEntity.getWorld().getTime()); + // if not burning - no fuel left - then exit if (!everFurnaceBlockEntity.callIsBurning()){ return; } @@ -97,6 +106,12 @@ private static void onTick(ServerWorld world, BlockPos pos, BlockState state, Ab // calculate the difference between game time and the lastGameTime long deltaTime = blockEntity.getWorld().getTime() - localLastGameTime; + int remainingTime = blockEntityMixin.getEverfurnace$remainingTime(); + int cooldownTime = blockEntityMixin.getEverfurnace$Cooldown(); + + // TODO if delta < 20 && remaining == 0 then return + // TODO use HopperBlockEntity.TRANSFER_COOLDOWN for the max cooldown + // exit if not enough time has passed if (deltaTime < 20) { return; @@ -252,4 +267,20 @@ private static void onTick(ServerWorld world, BlockPos pos, BlockState state, Ab public void setEverfurnace$lastGameTime(long gameTime) { this.everfurnace$lastGameTime = gameTime; } + @Unique + public int getEverfurnace$remainingTime() { + return everfurnace$remainingTime; + } + @Unique + public void setEverfurnace$remainingTime(int everfurnace$remainingTime) { + this.everfurnace$remainingTime = everfurnace$remainingTime; + } + @Unique + public int getEverfurnace$Cooldown() { + return everfurnace$Cooldown; + } + @Unique + public void setEverfurnace$Cooldown(int everfurnace$Cooldown) { + this.everfurnace$Cooldown = everfurnace$Cooldown; + } }