Skip to content

Commit ee597f3

Browse files
fuel compatibility
1 parent 46228ef commit ee597f3

File tree

8 files changed

+55
-9
lines changed

8 files changed

+55
-9
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package org.valkyrienskies.eureka.registry;
2+
3+
import net.minecraft.world.item.ItemStack;
4+
5+
public abstract class FuelRegistry {
6+
public static FuelRegistry INSTANCE = null;
7+
8+
public abstract int get(ItemStack stack);
9+
}

common/src/main/kotlin/org/valkyrienskies/eureka/blockentity/EngineBlockEntity.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,7 @@ import net.minecraft.world.entity.player.StackedContents
1414
import net.minecraft.world.inventory.AbstractContainerMenu
1515
import net.minecraft.world.inventory.StackedContentsCompatible
1616
import net.minecraft.world.item.ItemStack
17-
import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity
1817
import net.minecraft.world.level.block.entity.BaseContainerBlockEntity
19-
import net.minecraft.world.level.block.entity.FurnaceBlockEntity
2018
import net.minecraft.world.level.block.state.BlockState
2119
import org.joml.Math.lerp
2220
import org.joml.Math.min
@@ -25,6 +23,7 @@ import org.valkyrienskies.eureka.EurekaBlockEntities
2523
import org.valkyrienskies.eureka.EurekaConfig
2624
import org.valkyrienskies.eureka.EurekaProperties.HEAT
2725
import org.valkyrienskies.eureka.gui.engine.EngineScreenMenu
26+
import org.valkyrienskies.eureka.registry.FuelRegistry
2827
import org.valkyrienskies.eureka.ship.EurekaShipControl
2928
import org.valkyrienskies.eureka.util.KtContainerData
3029
import org.valkyrienskies.mod.common.getShipManagingPos
@@ -125,7 +124,8 @@ class EngineBlockEntity(pos: BlockPos, state: BlockState) :
125124
* @return scaled fuel ticks.
126125
*/
127126
private fun getScaledFuel(): Int =
128-
((FurnaceBlockEntity.getFuel()[fuel.item] ?: 0) * EurekaConfig.SERVER.engineFuelMultiplier).toInt()
127+
(FuelRegistry.INSTANCE.get(fuel) * EurekaConfig.SERVER.engineFuelMultiplier).toInt()
128+
129129

130130
/**
131131
* Absorb one fuel item into the engine.
@@ -223,10 +223,10 @@ class EngineBlockEntity(pos: BlockPos, state: BlockState) :
223223

224224
override fun canTakeItemThroughFace(index: Int, stack: ItemStack, direction: Direction): Boolean =
225225
// Allow extraction from slot 0 (fuel slot) when the hopper is below the block entity
226-
index == 0 && direction == Direction.DOWN && !fuel.isEmpty && !AbstractFurnaceBlockEntity.isFuel(fuel)
226+
index == 0 && direction == Direction.DOWN && !fuel.isEmpty && FuelRegistry.INSTANCE.get(fuel) <= 0
227227

228228
override fun canPlaceItem(index: Int, stack: ItemStack): Boolean =
229-
index == 0 && AbstractFurnaceBlockEntity.isFuel(stack)
229+
index == 0 && FuelRegistry.INSTANCE.get(stack) > 0
230230

231231
override fun fillStackedContents(helper: StackedContents) = helper.accountStack(fuel)
232232
// endregion Container Stuff

common/src/main/kotlin/org/valkyrienskies/eureka/gui/engine/EngineScreenMenu.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ import net.minecraft.world.entity.player.Player
77
import net.minecraft.world.inventory.AbstractContainerMenu
88
import net.minecraft.world.inventory.FurnaceFuelSlot.isBucket
99
import net.minecraft.world.item.ItemStack
10-
import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity
1110
import org.valkyrienskies.eureka.EurekaScreens
1211
import org.valkyrienskies.eureka.blockentity.EngineBlockEntity
12+
import org.valkyrienskies.eureka.registry.FuelRegistry
1313
import org.valkyrienskies.eureka.util.KtContainerData
1414
import org.valkyrienskies.eureka.util.inventorySlots
1515

@@ -39,7 +39,7 @@ class EngineScreenMenu(syncId: Int, playerInv: Inventory, val blockEntity: Engin
3939

4040
override fun quickMoveStack(player: Player, index: Int): ItemStack {
4141
val slot = this.slots[index]
42-
if (slot != null && slot.hasItem() && (AbstractFurnaceBlockEntity.isFuel(slot.item) || isBucket(slot.item))) {
42+
if (slot != null && slot.hasItem() && (isBucket(slot.item) || FuelRegistry.INSTANCE.get(slot.item) > 0 )) {
4343
if (index != 0) {
4444
this.moveItemStackTo(slot.item, 0, 1, false)
4545
slot.setChanged()

common/src/main/kotlin/org/valkyrienskies/eureka/gui/engine/FuelSlot.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ import net.minecraft.world.Container
44
import net.minecraft.world.inventory.Slot
55
import net.minecraft.world.item.ItemStack
66
import net.minecraft.world.item.Items
7-
import net.minecraft.world.level.block.entity.AbstractFurnaceBlockEntity
7+
import org.valkyrienskies.eureka.registry.FuelRegistry
88

99
class FuelSlot(container: Container, slot: Int, x: Int, y: Int) : Slot(container, slot, x, y) {
1010
override fun mayPlace(stack: ItemStack): Boolean {
11-
return AbstractFurnaceBlockEntity.isFuel(stack) || isBucket(stack)
11+
return FuelRegistry.INSTANCE.get(stack) > 0 || isBucket(stack)
1212
}
1313

1414
override fun getMaxStackSize(stack: ItemStack): Int {

fabric/src/main/java/org/valkyrienskies/eureka/fabric/EurekaModFabric.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.valkyrienskies.eureka.block.WoodType;
2323
import org.valkyrienskies.eureka.blockentity.renderer.ShipHelmBlockEntityRenderer;
2424
import org.valkyrienskies.eureka.blockentity.renderer.WheelModels;
25+
import org.valkyrienskies.eureka.fabric.registry.FuelRegistryImpl;
2526
import org.valkyrienskies.mod.compat.clothconfig.VSClothConfig;
2627
import org.valkyrienskies.mod.fabric.common.ValkyrienSkiesModFabric;
2728

@@ -31,6 +32,8 @@ public void onInitialize() {
3132
// force VS2 to load before eureka
3233
new ValkyrienSkiesModFabric().onInitialize();
3334

35+
new FuelRegistryImpl();
36+
3437
EurekaMod.init();
3538

3639
// TODO: make resources packs work
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package org.valkyrienskies.eureka.fabric.registry;
2+
3+
import net.fabricmc.fabric.api.registry.FuelRegistry;
4+
import net.minecraft.world.item.ItemStack;
5+
6+
public class FuelRegistryImpl extends org.valkyrienskies.eureka.registry.FuelRegistry {
7+
public FuelRegistryImpl() {
8+
INSTANCE = this;
9+
}
10+
11+
@Override
12+
public int get(ItemStack stack) {
13+
Integer time = FuelRegistry.INSTANCE.get(stack.getItem());
14+
return time == null ? 0 : time;
15+
}
16+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package org.valkyrienskies.eureka.forge.registry;
2+
3+
import net.minecraft.world.item.ItemStack;
4+
import net.minecraftforge.common.ForgeHooks;
5+
6+
public class FuelRegistryImpl extends org.valkyrienskies.eureka.registry.FuelRegistry {
7+
8+
public FuelRegistryImpl() {
9+
INSTANCE = this;
10+
}
11+
12+
@Override
13+
public int get(ItemStack stack) {
14+
return ForgeHooks.getBurnTime(stack, null);
15+
}
16+
}

forge/src/main/kotlin/org/valkyrienskies/eureka/forge/EurekaModForge.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import org.valkyrienskies.eureka.EurekaMod.initClient
2020
import org.valkyrienskies.eureka.block.WoodType
2121
import org.valkyrienskies.eureka.blockentity.renderer.ShipHelmBlockEntityRenderer
2222
import org.valkyrienskies.eureka.blockentity.renderer.WheelModels.setModelGetter
23+
import org.valkyrienskies.eureka.forge.registry.FuelRegistryImpl
2324
import org.valkyrienskies.mod.compat.clothconfig.VSClothConfig.createConfigScreenFor
2425
import thedarkcolour.kotlinforforge.forge.LOADING_CONTEXT
2526
import thedarkcolour.kotlinforforge.forge.MOD_BUS
@@ -55,6 +56,7 @@ class EurekaModForge {
5556
)
5657
}
5758
}
59+
FuelRegistryImpl()
5860
init()
5961
}
6062

0 commit comments

Comments
 (0)