From ee597f34775c2726d7f8d4f91427732a882263c0 Mon Sep 17 00:00:00 2001 From: SimonAlteruna <37588844+millennIumAMbiguity@users.noreply.github.com> Date: Sun, 22 Sep 2024 19:09:27 +0200 Subject: [PATCH] fuel compatibility --- .../eureka/registry/FuelRegistry.java | 9 +++++++++ .../eureka/blockentity/EngineBlockEntity.kt | 10 +++++----- .../eureka/gui/engine/EngineScreenMenu.kt | 4 ++-- .../valkyrienskies/eureka/gui/engine/FuelSlot.kt | 4 ++-- .../eureka/fabric/EurekaModFabric.java | 3 +++ .../eureka/fabric/registry/FuelRegistryImpl.java | 16 ++++++++++++++++ .../eureka/forge/registry/FuelRegistryImpl.java | 16 ++++++++++++++++ .../eureka/forge/EurekaModForge.kt | 2 ++ 8 files changed, 55 insertions(+), 9 deletions(-) create mode 100644 common/src/main/java/org/valkyrienskies/eureka/registry/FuelRegistry.java create mode 100644 fabric/src/main/java/org/valkyrienskies/eureka/fabric/registry/FuelRegistryImpl.java create mode 100644 forge/src/main/java/org/valkyrienskies/eureka/forge/registry/FuelRegistryImpl.java diff --git a/common/src/main/java/org/valkyrienskies/eureka/registry/FuelRegistry.java b/common/src/main/java/org/valkyrienskies/eureka/registry/FuelRegistry.java new file mode 100644 index 00000000..fe908050 --- /dev/null +++ b/common/src/main/java/org/valkyrienskies/eureka/registry/FuelRegistry.java @@ -0,0 +1,9 @@ +package org.valkyrienskies.eureka.registry; + +import net.minecraft.world.item.ItemStack; + +public abstract class FuelRegistry { + public static FuelRegistry INSTANCE = null; + + public abstract int get(ItemStack stack); +} diff --git a/common/src/main/kotlin/org/valkyrienskies/eureka/blockentity/EngineBlockEntity.kt b/common/src/main/kotlin/org/valkyrienskies/eureka/blockentity/EngineBlockEntity.kt index b38bb2d4..f52a6e76 100644 --- a/common/src/main/kotlin/org/valkyrienskies/eureka/blockentity/EngineBlockEntity.kt +++ b/common/src/main/kotlin/org/valkyrienskies/eureka/blockentity/EngineBlockEntity.kt @@ -14,9 +14,7 @@ import net.minecraft.world.entity.player.StackedContents import net.minecraft.world.inventory.AbstractContainerMenu import net.minecraft.world.inventory.StackedContentsCompatible import net.minecraft.world.item.ItemStack -import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity import net.minecraft.world.level.block.entity.BaseContainerBlockEntity -import net.minecraft.world.level.block.entity.FurnaceBlockEntity import net.minecraft.world.level.block.state.BlockState import org.joml.Math.lerp import org.joml.Math.min @@ -25,6 +23,7 @@ import org.valkyrienskies.eureka.EurekaBlockEntities import org.valkyrienskies.eureka.EurekaConfig import org.valkyrienskies.eureka.EurekaProperties.HEAT import org.valkyrienskies.eureka.gui.engine.EngineScreenMenu +import org.valkyrienskies.eureka.registry.FuelRegistry import org.valkyrienskies.eureka.ship.EurekaShipControl import org.valkyrienskies.eureka.util.KtContainerData import org.valkyrienskies.mod.common.getShipManagingPos @@ -125,7 +124,8 @@ class EngineBlockEntity(pos: BlockPos, state: BlockState) : * @return scaled fuel ticks. */ private fun getScaledFuel(): Int = - ((FurnaceBlockEntity.getFuel()[fuel.item] ?: 0) * EurekaConfig.SERVER.engineFuelMultiplier).toInt() + (FuelRegistry.INSTANCE.get(fuel) * EurekaConfig.SERVER.engineFuelMultiplier).toInt() + /** * Absorb one fuel item into the engine. @@ -223,10 +223,10 @@ class EngineBlockEntity(pos: BlockPos, state: BlockState) : override fun canTakeItemThroughFace(index: Int, stack: ItemStack, direction: Direction): Boolean = // Allow extraction from slot 0 (fuel slot) when the hopper is below the block entity - index == 0 && direction == Direction.DOWN && !fuel.isEmpty && !AbstractFurnaceBlockEntity.isFuel(fuel) + index == 0 && direction == Direction.DOWN && !fuel.isEmpty && FuelRegistry.INSTANCE.get(fuel) <= 0 override fun canPlaceItem(index: Int, stack: ItemStack): Boolean = - index == 0 && AbstractFurnaceBlockEntity.isFuel(stack) + index == 0 && FuelRegistry.INSTANCE.get(stack) > 0 override fun fillStackedContents(helper: StackedContents) = helper.accountStack(fuel) // endregion Container Stuff diff --git a/common/src/main/kotlin/org/valkyrienskies/eureka/gui/engine/EngineScreenMenu.kt b/common/src/main/kotlin/org/valkyrienskies/eureka/gui/engine/EngineScreenMenu.kt index 9702838b..b317f008 100644 --- a/common/src/main/kotlin/org/valkyrienskies/eureka/gui/engine/EngineScreenMenu.kt +++ b/common/src/main/kotlin/org/valkyrienskies/eureka/gui/engine/EngineScreenMenu.kt @@ -7,9 +7,9 @@ import net.minecraft.world.entity.player.Player import net.minecraft.world.inventory.AbstractContainerMenu import net.minecraft.world.inventory.FurnaceFuelSlot.isBucket import net.minecraft.world.item.ItemStack -import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity import org.valkyrienskies.eureka.EurekaScreens import org.valkyrienskies.eureka.blockentity.EngineBlockEntity +import org.valkyrienskies.eureka.registry.FuelRegistry import org.valkyrienskies.eureka.util.KtContainerData import org.valkyrienskies.eureka.util.inventorySlots @@ -39,7 +39,7 @@ class EngineScreenMenu(syncId: Int, playerInv: Inventory, val blockEntity: Engin override fun quickMoveStack(player: Player, index: Int): ItemStack { val slot = this.slots[index] - if (slot != null && slot.hasItem() && (AbstractFurnaceBlockEntity.isFuel(slot.item) || isBucket(slot.item))) { + if (slot != null && slot.hasItem() && (isBucket(slot.item) || FuelRegistry.INSTANCE.get(slot.item) > 0 )) { if (index != 0) { this.moveItemStackTo(slot.item, 0, 1, false) slot.setChanged() diff --git a/common/src/main/kotlin/org/valkyrienskies/eureka/gui/engine/FuelSlot.kt b/common/src/main/kotlin/org/valkyrienskies/eureka/gui/engine/FuelSlot.kt index 34876de1..2b2409f0 100644 --- a/common/src/main/kotlin/org/valkyrienskies/eureka/gui/engine/FuelSlot.kt +++ b/common/src/main/kotlin/org/valkyrienskies/eureka/gui/engine/FuelSlot.kt @@ -4,11 +4,11 @@ import net.minecraft.world.Container import net.minecraft.world.inventory.Slot import net.minecraft.world.item.ItemStack import net.minecraft.world.item.Items -import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity +import org.valkyrienskies.eureka.registry.FuelRegistry class FuelSlot(container: Container, slot: Int, x: Int, y: Int) : Slot(container, slot, x, y) { override fun mayPlace(stack: ItemStack): Boolean { - return AbstractFurnaceBlockEntity.isFuel(stack) || isBucket(stack) + return FuelRegistry.INSTANCE.get(stack) > 0 || isBucket(stack) } override fun getMaxStackSize(stack: ItemStack): Int { diff --git a/fabric/src/main/java/org/valkyrienskies/eureka/fabric/EurekaModFabric.java b/fabric/src/main/java/org/valkyrienskies/eureka/fabric/EurekaModFabric.java index f9f5ceb9..10544db3 100644 --- a/fabric/src/main/java/org/valkyrienskies/eureka/fabric/EurekaModFabric.java +++ b/fabric/src/main/java/org/valkyrienskies/eureka/fabric/EurekaModFabric.java @@ -22,6 +22,7 @@ import org.valkyrienskies.eureka.block.WoodType; import org.valkyrienskies.eureka.blockentity.renderer.ShipHelmBlockEntityRenderer; import org.valkyrienskies.eureka.blockentity.renderer.WheelModels; +import org.valkyrienskies.eureka.fabric.registry.FuelRegistryImpl; import org.valkyrienskies.mod.compat.clothconfig.VSClothConfig; import org.valkyrienskies.mod.fabric.common.ValkyrienSkiesModFabric; @@ -31,6 +32,8 @@ public void onInitialize() { // force VS2 to load before eureka new ValkyrienSkiesModFabric().onInitialize(); + new FuelRegistryImpl(); + EurekaMod.init(); // TODO: make resources packs work diff --git a/fabric/src/main/java/org/valkyrienskies/eureka/fabric/registry/FuelRegistryImpl.java b/fabric/src/main/java/org/valkyrienskies/eureka/fabric/registry/FuelRegistryImpl.java new file mode 100644 index 00000000..0402bc1a --- /dev/null +++ b/fabric/src/main/java/org/valkyrienskies/eureka/fabric/registry/FuelRegistryImpl.java @@ -0,0 +1,16 @@ +package org.valkyrienskies.eureka.fabric.registry; + +import net.fabricmc.fabric.api.registry.FuelRegistry; +import net.minecraft.world.item.ItemStack; + +public class FuelRegistryImpl extends org.valkyrienskies.eureka.registry.FuelRegistry { + public FuelRegistryImpl() { + INSTANCE = this; + } + + @Override + public int get(ItemStack stack) { + Integer time = FuelRegistry.INSTANCE.get(stack.getItem()); + return time == null ? 0 : time; + } +} diff --git a/forge/src/main/java/org/valkyrienskies/eureka/forge/registry/FuelRegistryImpl.java b/forge/src/main/java/org/valkyrienskies/eureka/forge/registry/FuelRegistryImpl.java new file mode 100644 index 00000000..06d6fb58 --- /dev/null +++ b/forge/src/main/java/org/valkyrienskies/eureka/forge/registry/FuelRegistryImpl.java @@ -0,0 +1,16 @@ +package org.valkyrienskies.eureka.forge.registry; + +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.common.ForgeHooks; + +public class FuelRegistryImpl extends org.valkyrienskies.eureka.registry.FuelRegistry { + + public FuelRegistryImpl() { + INSTANCE = this; + } + + @Override + public int get(ItemStack stack) { + return ForgeHooks.getBurnTime(stack, null); + } +} diff --git a/forge/src/main/kotlin/org/valkyrienskies/eureka/forge/EurekaModForge.kt b/forge/src/main/kotlin/org/valkyrienskies/eureka/forge/EurekaModForge.kt index dfe94bbe..1a83bba3 100644 --- a/forge/src/main/kotlin/org/valkyrienskies/eureka/forge/EurekaModForge.kt +++ b/forge/src/main/kotlin/org/valkyrienskies/eureka/forge/EurekaModForge.kt @@ -20,6 +20,7 @@ import org.valkyrienskies.eureka.EurekaMod.initClient import org.valkyrienskies.eureka.block.WoodType import org.valkyrienskies.eureka.blockentity.renderer.ShipHelmBlockEntityRenderer import org.valkyrienskies.eureka.blockentity.renderer.WheelModels.setModelGetter +import org.valkyrienskies.eureka.forge.registry.FuelRegistryImpl import org.valkyrienskies.mod.compat.clothconfig.VSClothConfig.createConfigScreenFor import thedarkcolour.kotlinforforge.forge.LOADING_CONTEXT import thedarkcolour.kotlinforforge.forge.MOD_BUS @@ -55,6 +56,7 @@ class EurekaModForge { ) } } + FuelRegistryImpl() init() }