Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

[1.6.4] Furnace Minecart Inventory Mod


Bedrock_Miner
 Share

Recommended Posts

Who has never been annoyed by the enormous consumption of resources of Power Rails or by the impractical usage of Minecarts with furnace when you want to build automatical Minecart Systems? That is over now!

 

miA9Y96.jpg

 

With the Furnace Minecart Inventory Mod you can create the most simple automatical Minecart Systems in Minecraft!

 

IrORha7.jpg

 

The Furnace Minecart with Inventory can be crafted from a normal Minecart with Furnace and Blaze Powder.

 

i2q9iyU.jpg

 

The minecart can be powered with Coal, Coal Blocks, Blaze Powder and Lava Bukkets.

As the Fuel is filled in, the minecart starts to smoke. If it now is accelerated in one direction, it starts driving in this direction.

The Minecart gets accelerated or slowed down by Powered Rails and can be stopped with Activator Rails.

If a Minecart with Furnace stands on an activated Activator Rail, it stops, can't be pushed anymore and doesn't take any fuel, until the Rail is deactivated. Then the Minecarts starts driving in the initial Direction again.

 

If the fuel is empty, the Minecart stops and has to be filled again.

 

Screenshots:

 

A minecart with furnace:

gDp0uny.jpg

The Crafting Recipe:

Ig6xrB6.jpg

The Inventory of the Minecart:

Aqz5aB5.jpg

The Mod-Logo:

miA9Y96.jpg

 

 

 

Technical Data:

  • The Mod supports German and English Language.
  • The ID of the Items is changable in a Configuration File
  • Working Time: about 6 h

Download and Installation:

 

You must have Minecraft Forge installed!

 

Mod Download:

 

Version 1.0.2 for Minecraft 1.6.4

 

Click here for 1.7.2 and later versions!!!

Warning! Because of the new MC-Version they will work quite different!

 

Please tell me all the Bugs you encounter!

 

Credits:

This Mod was created by _Bedrock_Miner_.

Special thanks to Erdenwurm and mosado.

Link to comment
Share on other sites

I wonder what you'd call this in pirate speak...

"Movin' Oven O' Smelting"?

Hm... Maybe Rollin' Ov'n wit' much space in it?

"Rollin' Stone O' Burning wif air"

'much space in it' seems to long.

 

PS-  forgot to say cool mod idea

Communication is a vital tool, in the game industry you won't go anywhere without it. People are either going to learn to talk, or move on.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • Hello all. I am trying to implement oil into my mod (I know I know, unoriginal). But I just can't seem to get it to work. (System/Minecraft information: Java 17, forge: 1.17.1-37.0.95, mappings: official) I am using DeferredRegisters. In the current configuration, the bucket doesn't do anything most of the time, the block doesn't appear and doesn't flow. I am extending "ForgeFlowingFluid". It seems in LiquidBlock there are two constructors, one deprecated taking in a Fluid, the other takes in a supplier/RegistryObject<Fluid>. Because I am using DeferredRegisters, I have to use the second one, because blocks are registered before fluids. But it seems that in the code, most of it relies on the LiquidBlock.fluid field, which never gets set in the second constructor. I tried hacking in a solution with a "Fixed" version of LiquidBlock: public class FixedLiquidBlock extends LiquidBlock { private static final List<FixedLiquidBlock> liquidBlocksNeedingFixing = new ArrayList<>(); // Check if the supplier is a registry object. If it is, and the value is not null, set the value of the fluid field, else mark it so that it gets set later. public FixedLiquidBlock(Supplier<? extends FlowingFluid> supplier, Properties properties) { super(supplier, properties); try { if (supplier instanceof RegistryObject registryObject && registryObject.get() != null) { try { Class<?> class_ = LiquidBlock.class; Field fluidField = ObfuscationReflectionHelper.findField(class_, "fluid"); fluidField.setAccessible(true); fluidField.set(this, supplier.get()); } catch (Exception e) { throw new RuntimeException(e); } } } catch (NullPointerException ignored) {} liquidBlocksNeedingFixing.add(this); } @Mod.EventBusSubscriber(bus=Mod.EventBusSubscriber.Bus.MOD) private static class FixedLiquidBlockEvents { @SubscribeEvent(priority = EventPriority.LOWEST) // Force the event to be called last // After registration of fluids is finished, set the fluids field. public static void onFluidsRegister(RegistryEvent<Fluid> fluidRegistryEvent) { for (FixedLiquidBlock fixedLiquidBlock : liquidBlocksNeedingFixing) { try { Class<?> class_ = LiquidBlock.class; Field fluidField = ObfuscationReflectionHelper.findField(class_, "fluid"); fluidField.setAccessible(true); fluidField.set(fixedLiquidBlock, fixedLiquidBlock.getFluid()); } catch (Exception e) { throw new RuntimeException(e); } } } } } But clearly what I'm doing is stupid because it still doesn't work. I even tried without my hacky solution, and it still didn't work! Am I doing something wrong? Should I be extending something else? What else should I do?   Code for fluid, OilFluid.java:   public abstract class OilFluid extends ForgeFlowingFluid { protected OilFluid() { super(new ForgeFlowingFluid.Properties( Source::new, Flowing::new, FluidAttributes.builder( new ResourceLocation(MiniTech.MODID, "block/oil_still"), new ResourceLocation(MiniTech.MODID, "block/oil_flow") ).overlay(new ResourceLocation(MiniTech.MODID, "block/oil_overlay")) .translationKey("block." + MiniTech.MODID + ".oil") .color(0xffffff))); } public static class Flowing extends OilFluid { public Flowing() { registerDefaultState(getStateDefinition().any().setValue(LEVEL, 7)); } @Override protected void createFluidStateDefinition(StateDefinition.Builder<Fluid, FluidState> p_76476_) { super.createFluidStateDefinition(p_76476_); p_76476_.add(LEVEL); } @Override public int getAmount(FluidState p_76480_) { return p_76480_.getValue(LEVEL); } @Override public boolean isSource(FluidState p_76478_) { return false; } } public static class Source extends OilFluid { @Override public int getAmount(FluidState p_76485_) { return 8; } @Override public boolean isSource(FluidState p_76483_) { return true; } } } Code for ModBlocks.java:   public class ModBlocks { private static final DeferredRegister<Block> BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, MiniTech.MODID); public static final RegistryObject<RefineryFurnaceBlock> REFINERY_FURNACE = BLOCKS.register("refinery_furnace", () -> new RefineryFurnaceBlock(BlockBehaviour.Properties.of(Material.STONE).requiresCorrectToolForDrops().strength(3.5F).lightLevel(litBlockEmission(13)))); // Fluids public static final RegistryObject<LiquidBlock> OIL = BLOCKS.register("oil", () -> new FixedLiquidBlock(ModFluids.OIL, BlockBehaviour.Properties.of(Material.WATER).noCollission().strength(100.0F).noDrops())); public static void register(IEventBus eventBus) { BLOCKS.register(eventBus); } private static ToIntFunction<BlockState> litBlockEmission(int lightLevel) { return (blockState) -> { return blockState.getValue(BlockStateProperties.LIT) ? lightLevel : 0; }; } }  
    • No, no and no. The server knows the sending player, so the UUID is unnecessary. If you really needed to send a player (or any entity) across, you'd send the entity ID, not the UUID. The button name is irrelevant, if anything you'd send an Enum that specifies the button (if multiple buttons needs to be sent). The block position is also known on the server, sending it again only allows for cheats (if you don't validate it on the server, at which point you might as well just not send it at all).
    • take a look at this thread: and then do not place Blocks in the Chunk (= Empty/Void Chunk)   via NBT Files (Note: one nbt file can store a Area of 45*48*48 Blocks, if the Structure is larger you need to divide into several NBT Files), you can take a look at the vanilla Structures like the Nether Bastions if the Structure is fixed you can place the Structure in the ChunkGenerator (but then you need a bit more logic, since with Strucure Generation distance) when you register the Structure you need set the min and max distance between two Structures, you can Simply set the min and max to a large value   not sure if this possible but you can try to remove the Chunks in which the structure was generated, since as you said it is a void dimension, then you could simply generate a new chunk at this point
    • you could re-invent the wheel and do exactly what you said.... or you could use world saved data (link). using it makes a dat file in saves/YourWorldName/data directory.
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.