Jump to content

1.12 How did you create you recipes


TheRPGAdventurer

Recommended Posts

Ok so I heard that in 1.12 you are now going to use json files for recipes, I got pretty confused understanding them,  All that I understood is make a folder in assets,MODID,recipes and put json files there. Well my greatest question is where are you going to set the resourcelocation for your recipes in java, is it in main class, proxies, or make a new class that extends a recipe class and all. 

Edited by TheRPGAdventurer
changed 1.11.2 to 1.12
Link to comment
Share on other sites

Forge automatically loads every recipe file in the assets/<modid>/recipes directory, you don't need to manually register them.

  • Like 1

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Link to comment
Share on other sites

Just now, Choonster said:

Forge automatically loads every recipe file in the assets/<modid>/recipes directory, you don't need to manually register them.

What do you think is wrong in here?

{
  "type": "minecraft:crafting_shaped",
  "pattern": [
    " J  ",
    " J  ",
    " S  "
  ],
  "key": {
    "S":{
      "item": "minecraft:stick"
	},
    "J":{
      "item": "rotd:jade_dragonscales"
	}
  },
  "result": {
    "item": "rotd:jade_dragon_sword"
  }
}

 

Link to comment
Share on other sites

25 minutes ago, TheRPGAdventurer said:

Does it mean that I can place it in each row of the crafting table?

Yep, see the diamond sword recipe from vanilla:

{
  "type": "crafting_shaped",
  "pattern": [
    "X",
    "X",
    "#"
  ],
  "key": {
    "#": {
      "item": "minecraft:stick"
    },
    "X": {
      "item": "minecraft:diamond"
    }
  },
  "result": {
    "item": "minecraft:diamond_sword"
  }
}

 

  • Like 2

Developer of Randores (adds 256^3 ores to the game) and Arcane Bags (adds ridiculous storage with ridiculous crafting recipes).

I know Java pretty well... So yeah...

Quote

This is where I'd put an inspirational and/or clever quote, but I can't think of one right now...

This is the output of the totally, 100% working compiler for my programming language, Planet9:

Beginning Compilation...
Failed compilation!
planet9.compiler.error.CompilationException: Compiler not yet implemented
	at planet9.compiler.Compiler.compile(Compiler.java:39)
	at planet9.compiler.app.CompilerApp.main(CompilerApp.java:147)

 

Link to comment
Share on other sites

On 8/14/2017 at 10:13 PM, Socratic_Phoenix said:

Yep, see the diamond sword recipe from vanilla:


{
  "type": "crafting_shaped",
  "pattern": [
    "X",
    "X",
    "#"
  ],
  "key": {
    "#": {
      "item": "minecraft:stick"
    },
    "X": {
      "item": "minecraft:diamond"
    }
  },
  "result": {
    "item": "minecraft:diamond_sword"
  }
}

 

Sorry for necroing this post because my PC was infected by a virus and making it impossible to use internet but, I got questions.

First of all, where did you find the vanilla recipes? and second can I use another recipe for my sword, like this json can handle 3 sword recipes? Lastly, what happens if I named my recipe's json same to the reistryName of the item, will it have a conflict?

Link to comment
Share on other sites

20 minutes ago, TheRPGAdventurer said:

First of all, where did you find the vanilla recipes?

assets/minecraft/recipes in the forgeSrc-<forgeVersion>.jar referenced library.

 

20 minutes ago, TheRPGAdventurer said:

second can I use another recipe for my sword, like this json can handle 3 sword recipes?

I don't fully understand what you're asking here.

 

One JSON file is one recipe. You can have any number of recipes that output the same item.

 

20 minutes ago, TheRPGAdventurer said:

Lastly, what happens if I named my recipe's json same to the reistryName of the item, will it have a conflict?

No, recipes and items are in completely separate registries; you can name your recipe whatever you want.

 

Minecraft uses the registry name of the output item for most of its recipes, it only uses a longer name when there are multiple recipes for the same item.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Link to comment
Share on other sites

5 hours ago, Choonster said:

assets/minecraft/recipes in the forgeSrc-<forgeVersion>.jar referenced library.

 

I don't fully understand what you're asking here.

 

One JSON file is one recipe. You can have any number of recipes that output the same item.

 

No, recipes and items are in completely separate registries; you can name your recipe whatever you want.

 

Minecraft uses the registry name of the output item for most of its recipes, it only uses a longer name when there are multiple recipes for the same item.

Also do you know where EntityLivingBase#moveEntityWithHeading is located in 1.12? does it's name change, does it's location changed, or was completely removed?

Link to comment
Share on other sites

3 minutes ago, TheRPGAdventurer said:

Also do you know where EntityLivingBase#moveEntityWithHeading is located in 1.12? does it's name change, does it's location changed, or was completely removed?

 

I answered this in your other thread 45 minutes ago.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

Link to comment
Share on other sites

25 minutes ago, TheRPGAdventurer said:

Also, how did you make links like "here" "other thread" but still redirecting you to other sites without getting the name.

 

Highlight the text and click the Link button in the editor.

Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.

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.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
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.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • They were already updated, and just to double check I even did a cleanup and fresh update from that same page. I'm quite sure drivers are not the problem here. 
    • i tried downloading the drivers but it says no AMD graphics hardware has been detected    
    • Update your AMD/ATI drivers - get the drivers from their website - do not update via system  
    • As the title says i keep on crashing on forge 1.20.1 even without any mods downloaded, i have the latest drivers (nvidia) and vanilla minecraft works perfectly fine for me logs: https://pastebin.com/5UR01yG9
    • Hello everyone, I'm making this post to seek help for my modded block, It's a special block called FrozenBlock supposed to take the place of an old block, then after a set amount of ticks, it's supposed to revert its Block State, Entity, data... to the old block like this :  The problem I have is that the system breaks when handling multi blocks (I tried some fix but none of them worked) :  The bug I have identified is that the function "setOldBlockFields" in the item's "setFrozenBlock" function gets called once for the 1st block of multiblock getting frozen (as it should), but gets called a second time BEFORE creating the first FrozenBlock with the data of the 1st block, hence giving the same data to the two FrozenBlock :   Old Block Fields set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=head] BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@73681674 BlockEntityData : id:"minecraft:bed",x:3,y:-60,z:-6} Old Block Fields set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} Frozen Block Entity set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockPos{x=3, y=-60, z=-6} BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} Frozen Block Entity set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockPos{x=2, y=-60, z=-6} BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} here is the code inside my custom "freeze" item :    @Override     public @NotNull InteractionResult useOn(@NotNull UseOnContext pContext) {         if (!pContext.getLevel().isClientSide() && pContext.getHand() == InteractionHand.MAIN_HAND) {             BlockPos blockPos = pContext.getClickedPos();             BlockPos secondBlockPos = getMultiblockPos(blockPos, pContext.getLevel().getBlockState(blockPos));             if (secondBlockPos != null) {                 createFrozenBlock(pContext, secondBlockPos);             }             createFrozenBlock(pContext, blockPos);             return InteractionResult.SUCCESS;         }         return super.useOn(pContext);     }     public static void createFrozenBlock(UseOnContext pContext, BlockPos blockPos) {         BlockState oldState = pContext.getLevel().getBlockState(blockPos);         BlockEntity oldBlockEntity = oldState.hasBlockEntity() ? pContext.getLevel().getBlockEntity(blockPos) : null;         CompoundTag oldBlockEntityData = oldState.hasBlockEntity() ? oldBlockEntity.serializeNBT() : null;         if (oldBlockEntity != null) {             pContext.getLevel().removeBlockEntity(blockPos);         }         BlockState FrozenBlock = setFrozenBlock(oldState, oldBlockEntity, oldBlockEntityData);         pContext.getLevel().setBlockAndUpdate(blockPos, FrozenBlock);     }     public static BlockState setFrozenBlock(BlockState blockState, @Nullable BlockEntity blockEntity, @Nullable CompoundTag blockEntityData) {         BlockState FrozenBlock = BlockRegister.FROZEN_BLOCK.get().defaultBlockState();         ((FrozenBlock) FrozenBlock.getBlock()).setOldBlockFields(blockState, blockEntity, blockEntityData);         return FrozenBlock;     }  
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.