Create: Steam 'n' Rails

Create: Steam 'n' Rails

20M Downloads

By default, train engines burn lava much faster when fed with a fuel tank versus a barrel of buckets

James103 opened this issue ยท 1 comments

commented

Describe the Bug

One bucket of lava, as an item, burns for 20,000 ticks, for a net consumption of 0.05 mB/t of lava.
Lava, as a fluid, burns at 50 ticks for 100 mB, for a net consumption of 2 mB/t of lava.
This is a 40x difference in fuel consumption, and means a full tank of lava only runs a train for 3 minutes and 20 seconds (8,000 mB at 2 mB/t) versus a barrel full of buckets of lava, which runs for 7 hours and 30 minutes (27,000 mB at 0.05 mB/t).

In other words, trains burn lava as if it were bamboo.

Reproduction Steps

  1. Create two trains.
  2. On the first train, place a barrel and place a lava bucket inside.
  3. On the second train, place a fuel tank and fill it completely with lava.
  4. Start both trains going in a loop.
  5. The train with the fuel tank of lava runs out of fuel before the train fueled with lava buckets from a barrel.

Repeating the same steps but inserting a piece of (char)coal in the train with the barrel will show that by the time the coal-powered train burns through 1 piece of charcoal, the lava-powered train would have burnt through 3,200 mB of lava.

Expected Result

Both trains should run for approximately the same amount of time when given the same amount of fuel, regardless of if the fuel is in the form of buckets in a barrel or a fluid in a fuel tank.

In the meantime, the following JSON file can be added to a data pack to patch the issue for lava:
data/example/railways_liquid_fuel/efficient_lava.json

{
  "fluids": [
    "minecraft:lava"
  ],
  "fuel_ticks": 2000
}

Screenshots and Videos

No response

Crash Report or Log

No response

Operating System

Windows 10, 64-bit

Mod Version

1.6.1

Create Mod Version

0.5.1f

Minecraft Version

1.20.1

ModLoader and Version

Fabric 0.15.7

Other Mods

	- advancementinfo 1.20-fabric0.83.0-1.4
	- appleskin 2.5.1+mc1.20
	- architectury 9.2.14
	- carpet 1.4.112+v230608
	- cloth-config 11.1.118
	   \-- cloth-basic-math 0.6.1
	- create 0.5.1-f-build.1417+mc1.20.1
	   |-- com_electronwill_night-config_core 3.6.6
	   |-- com_electronwill_night-config_toml 3.6.6
	   |-- com_google_code_findbugs_jsr305 3.0.2
	   |-- flywheel 0.6.10-2
	   |-- forgeconfigapiport 8.0.0
	   |-- milk 1.2.60
	   |    \-- dripstone_fluid_lib 3.0.2
	   |-- porting_lib_accessors 2.3.2+1.20.1
	   |    \-- porting_lib_core 2.3.2+1.20.1
	   |-- porting_lib_base 2.3.2+1.20.1
	   |    |-- com_electronwill_night-config_core 3.6.6
	   |    |-- com_electronwill_night-config_toml 3.6.6
	   |    |-- porting_lib_attributes 2.3.2+1.20.1
	   |    |-- porting_lib_common 2.3.2+1.20.1
	   |    |-- porting_lib_config 2.3.2+1.20.1
	   |    |-- porting_lib_core 2.3.2+1.20.1
	   |    |-- porting_lib_fluids 2.3.2+1.20.1
	   |    |-- porting_lib_lazy_registration 2.3.2+1.20.1
	   |    |-- porting_lib_mixin_extensions 2.3.2+1.20.1
	   |    |-- porting_lib_utility 2.3.2+1.20.1
	   |    \-- reach-entity-attributes 2.4.0
	   |-- porting_lib_brewing 2.3.2+1.20.1
	   |    \-- porting_lib_core 2.3.2+1.20.1
	   |-- porting_lib_client_events 2.3.2+1.20.1
	   |    \-- porting_lib_core 2.3.2+1.20.1
	   |-- porting_lib_entity 2.3.2+1.20.1
	   |    |-- porting_lib_core 2.3.2+1.20.1
	   |    \-- porting_lib_mixin_extensions 2.3.2+1.20.1
	   |-- porting_lib_extensions 2.3.2+1.20.1
	   |    |-- porting_lib_attributes 2.3.2+1.20.1
	   |    |-- porting_lib_common 2.3.2+1.20.1
	   |    |-- porting_lib_core 2.3.2+1.20.1
	   |    \-- reach-entity-attributes 2.4.0
	   |-- porting_lib_models 2.3.2+1.20.1
	   |    |-- porting_lib_core 2.3.2+1.20.1
	   |    |-- porting_lib_fluids 2.3.2+1.20.1
	   |    \-- porting_lib_model_loader 2.3.2+1.20.1
	   |-- porting_lib_networking 2.3.2+1.20.1
	   |    \-- porting_lib_core 2.3.2+1.20.1
	   |-- porting_lib_obj_loader 2.3.2+1.20.1
	   |    |-- porting_lib_core 2.3.2+1.20.1
	   |    \-- porting_lib_model_loader 2.3.2+1.20.1
	   |-- porting_lib_tags 3.0
	   |    \-- porting_lib_core 2.3.2+1.20.1
	   |-- porting_lib_tool_actions 2.3.2+1.20.1
	   |    \-- porting_lib_core 2.3.2+1.20.1
	   |-- porting_lib_transfer 2.3.2+1.20.1
	   |    |-- porting_lib_core 2.3.2+1.20.1
	   |    \-- porting_lib_fluids 2.3.2+1.20.1
	   |-- reach-entity-attributes 2.4.0
	   \-- registrate-fabric 1.3.62-MC1.20.1
	        |-- porting_lib_data 2.1.1090+1.20
	        |    \-- porting_lib_gametest 2.1.1090+1.20
	        \-- porting_lib_model_generators 2.1.1090+1.20
	             |-- porting_lib_gametest 2.1.1090+1.20
	             \-- porting_lib_model_materials 2.1.1090+1.20
	- create_enchantment_industry 1.2.16
	   \-- create_dragon_lib 1.4.2
	- enhancedblockentities 0.9+1.20
	   |-- advanced_runtime_resource_pack 0.6.7
	   \-- spruceui 5.0.0+1.20
	- fabric-api 0.92.0+1.20.1
	   |-- fabric-api-base 0.4.31+1802ada577
	   |-- fabric-api-lookup-api-v1 1.6.36+1802ada577
	   |-- fabric-biome-api-v1 13.0.13+1802ada577
	   |-- fabric-block-api-v1 1.0.11+1802ada577
	   |-- fabric-block-view-api-v2 1.0.1+1802ada577
	   |-- fabric-blockrenderlayer-v1 1.1.41+1802ada577
	   |-- fabric-client-tags-api-v1 1.1.2+1802ada577
	   |-- fabric-command-api-v1 1.2.34+f71b366f77
	   |-- fabric-command-api-v2 2.2.13+1802ada577
	   |-- fabric-commands-v0 0.2.51+df3654b377
	   |-- fabric-containers-v0 0.1.64+df3654b377
	   |-- fabric-content-registries-v0 4.0.11+1802ada577
	   |-- fabric-convention-tags-v1 1.5.5+1802ada577
	   |-- fabric-crash-report-info-v1 0.2.19+1802ada577
	   |-- fabric-data-attachment-api-v1 1.0.0+de0fd6d177
	   |-- fabric-data-generation-api-v1 12.3.4+1802ada577
	   |-- fabric-dimensions-v1 2.1.54+1802ada577
	   |-- fabric-entity-events-v1 1.6.0+1c78457f77
	   |-- fabric-events-interaction-v0 0.6.2+1802ada577
	   |-- fabric-events-lifecycle-v0 0.2.63+df3654b377
	   |-- fabric-game-rule-api-v1 1.0.40+1802ada577
	   |-- fabric-item-api-v1 2.1.28+1802ada577
	   |-- fabric-item-group-api-v1 4.0.12+1802ada577
	   |-- fabric-key-binding-api-v1 1.0.37+1802ada577
	   |-- fabric-keybindings-v0 0.2.35+df3654b377
	   |-- fabric-lifecycle-events-v1 2.2.22+1802ada577
	   |-- fabric-loot-api-v2 1.2.1+1802ada577
	   |-- fabric-loot-tables-v1 1.1.45+9e7660c677
	   |-- fabric-message-api-v1 5.1.9+1802ada577
	   |-- fabric-mining-level-api-v1 2.1.50+1802ada577
	   |-- fabric-model-loading-api-v1 1.0.3+1802ada577
	   |-- fabric-models-v0 0.4.2+9386d8a777
	   |-- fabric-networking-api-v1 1.3.11+1802ada577
	   |-- fabric-networking-v0 0.3.51+df3654b377
	   |-- fabric-object-builder-api-v1 11.1.3+1802ada577
	   |-- fabric-particles-v1 1.1.2+1802ada577
	   |-- fabric-recipe-api-v1 1.0.21+1802ada577
	   |-- fabric-registry-sync-v0 2.3.3+1802ada577
	   |-- fabric-renderer-api-v1 3.2.1+1802ada577
	   |-- fabric-renderer-indigo 1.5.1+1802ada577
	   |-- fabric-renderer-registries-v1 3.2.46+df3654b377
	   |-- fabric-rendering-data-attachment-v1 0.3.37+92a0d36777
	   |-- fabric-rendering-fluids-v1 3.0.28+1802ada577
	   |-- fabric-rendering-v0 1.1.49+df3654b377
	   |-- fabric-rendering-v1 3.0.8+1802ada577
	   |-- fabric-resource-conditions-api-v1 2.3.8+1802ada577
	   |-- fabric-resource-loader-v0 0.11.10+1802ada577
	   |-- fabric-screen-api-v1 2.0.8+1802ada577
	   |-- fabric-screen-handler-api-v1 1.3.30+1802ada577
	   |-- fabric-sound-api-v1 1.0.13+1802ada577
	   |-- fabric-transfer-api-v1 3.3.4+1802ada577
	   \-- fabric-transitive-access-wideners-v1 4.3.1+1802ada577
	- fabricloader 0.15.7
	   \-- mixinextras 0.3.5
	- fastload 3.4.0
	   |-- conditional-mixin 0.3.2
	   |-- fastload-119-0-1-2-compat 3.4.0
	   |-- fastload-1193-compat 3.4.0
	   |-- fastload-1194-compat 3.4.0
	   \-- fastload_fapi_forward 1.0.2
	- ferritecore 6.0.1
	- here-be-no-dragons 1.0.0
	- immediatelyfast 1.2.11+1.20.4
	   \-- net_lenni0451_reflect 1.3.2
	- indium 1.0.30+mc1.20.4
	- itemscroller 0.20.0
	- java 17
	- krypton 0.2.3
	   \-- com_velocitypowered_velocity-native 3.2.0-SNAPSHOT
	- languagereload 1.5.10+1.20.1
	- litematica 0.15.3
	- lithium 0.11.2
	- malilib 0.16.3
	- memoryleakfix 1.1.5
	- minecraft 1.20.1
	- minihud 0.27.0
	- modmenu 7.2.2
	- moreculling 1.20.4-0.22.1
	   \-- mixinsquared 0.1.1
	- nochatreports 1.20.1-v2.2.2
	- noisium 2.0.1+mc1.20.x
	   \-- mixinextras 0.3.5
	- nvidium 0.2.6-beta
	- railways 1.6.0+fabric-mc1.20.1
	   |-- mixinextras 0.3.5
	   \-- mm 2.3
	- roughlyenoughitems 12.0.684
	   \-- error_notifier 1.0.9
	- shulkerboxtooltip 4.0.4+1.20.1
	- sodium 0.5.8+mc1.20.1
	- starlight 1.1.2+fabric.dbc156f
	- toms_storage 1.6.6
	- trinkets 3.7.2
	   |-- cardinal-components-base 5.2.0
	   \-- cardinal-components-entity 5.2.0
	- tweakeroo 0.17.1
	- xaerominimap 24.0.3
	- xaeroworldmap 1.38.1

Additional Context

The code responsible for most of this efficiency loss can be found here:

} else {
int bucketBurnTime = PlatformAbstractionHelper.getBurnTime(fluid.getBucket());
// Divide burnTime by 100 to get burnTime for 1/10th of a bucket and then by divide by 4,
// so it isn't so strong
burnTime = (bucketBurnTime / 100) / 4;
}

The division by 4 appears to be intentional per the comment, but the division by 100 should be a division by 10.

commented

Fix note: powering trains by piping in fuel directly still carries a 4x multiplier to fuel consumption.
Assuming default configs, a fluid tank full of lava will run for (8000 mB / 0.2 mB/t) = 40,000 ticks (2,000 seconds or 33 min 20 sec), while a barrel full of lava will run for (27,000 mB / 0.05 mB/t) = 540,000 ticks (27,000 seconds or 7 hr 30 min).