Jump to content

Toasterkid

Members
  • Posts

    26
  • Joined

  • Last visited

Converted

  • Gender
    Undisclosed
  • Personal Text
    I am new!

Recent Profile Visitors

53237 profile views

Toasterkid's Achievements

Tree Puncher

Tree Puncher (2/8)

0

Reputation

  1. Also doubting if my usage of awardStat is correct. It just looks like this right now: player.awardStat(SampleModRegistry.FIREWORK_BOOSTS_USED.getId()); but there are places vanilla Minecraft uses the function like this: .awardStat(Stats.CUSTOM.get(Stats.DAMAGE_BLOCKED_BY_SHIELD)
  2. What's the issue your running into? The link for the image you posted is also broken.
  3. What does NetworkHooks.openScreen(player, blockEntity, pPos) do?
  4. At an attempt at answering my first question I thought I might be able to change the code to this public class SampleModStatisticsRegistry { public static final DeferredRegister<StatType<?>> STATISTICS = DeferredRegister.create(ForgeRegistries.STAT_TYPES, SampleMod.MODID); public static final RegistryObject<StatType<?>> FIREWORK_BOOSTS_USED = STATISTICS.register("firework_boosts_used", () -> new StatType<>(ForgeRegistries.STAT_TYPES, Component.literal("firework_boosts"))); } or to this public class SampleModStatisticsRegistry { public static final DeferredRegister<StatType<?>> STATISTICS = DeferredRegister.create(ForgeRegistries.STAT_TYPES, SampleMod.MODID); public static final RegistryObject<StatType<?>> FIREWORK_BOOSTS_USED = STATISTICS.register("firework_boosts_used", () -> new StatType<>(BuiltInRegistries.STAT_TYPE, Component.literal("firework_boosts"))); } but for the first code snippet the StatType constructor requires a Registry not an IForgeRegistry and for the second code snippet we run into the same NPE issue from above.
  5. I am attempting to create a mod that adds custom statistics to Minecraft. I've had some help from LexManos on the Discord server, but posting a lot of what I posted in the #mod-dev-support-1.20 channel here to have a more permanent spot for discussion. --- Minecraft creates their stats like this: and some of the registries in the code above are located in BuiltInRegistries.java like this: and the ForgeRegistries#STAT_TYPES looks like this: So, attempting to follow that and the forge documentation on registries I arrived at this: Clearly, registering a stat twice in a row is the wrong way to do it, but the makeRegistryStatType function was used as it does give the correct return type for the code I had come up with so far. --- At this point the game crashes upon trying to use Player#awardStat, because of a NPE that occurs in Stat#locationToKey. Which happens in the 2nd Stat#locationToKey in the Stat#buildName function. The .getRegistry returns the this.registry class variable with a value of {MappedRegistry@#####} "Registry[ResourceKey[minecraft:root / minecraft:custom_stat] (Stable)]" The value passed into .getKey is "samplemod:fireworks_boosts_used" but the reference found is null. So Lex's conclusion was that "[I'm] passing in null because the registry doesnt have an entry for your custom stat instance. So.. register your custom stat instance in that registry." --- So I suppose at this point my questions are 1. How can I create a supplier that returns a Supplier<? extends StatType<?>> to replace the () -> makeRegistryStatType("firework_boosts_used", BuiltInRegistries.CUSTOM_STAT) line of code. 2. Is my registry entry public static final RegistryObject<StatType<?>> FIREWORK_BOOSTS_USED the correct type? 3. Do I need to do anything additional, like create my own StatType<> or my own Stat<> ?
  6. Pretty sure you get that error because ShapelessRecipe is only for recipes that are crafted using a grid, and don't need to be arranged in a certain way. You have to use AbstractCookingRecipe for any recipe that uses the [smeltable item - fuel item - result item] combination. But I don't think you really need to be messing with code here for recipes. You should just be able to copy what the minecraft\recipes\iron_ingot_from_smelting_raw_iron.json does and replace the ingredient item and your result item: { "type": "minecraft:smelting", "category": "misc", "cookingtime": 200, "experience": 0.7, "group": "iron_ingot", "ingredient": { "item": "minecraft:raw_iron" }, "result": "minecraft:iron_ingot" } or just add the block to the logs_that_burn_tag since the Minecraft recipe for charcoal uses that: { "type": "minecraft:smelting", "category": "misc", "cookingtime": 200, "experience": 0.15, "ingredient": { "tag": "minecraft:logs_that_burn" }, "result": "minecraft:charcoal" }
  7. If you don't want an item to have a recipe then simply don't create the .json file for it in the `your_mod/recipes/` directory.
  8. This feels like a really basic question, but my mind is just drawing a blank right now. Trying to get the ResourceLocation of an Item to use with ImageWidget#sprite, so if there is a better way of doing this, do let me know.
  9. In net.minecraft.world.level.block.SimpleWaterloggedBlock, the functions #canPlaceLiquid and #placeLiquid verify that the fluid water-logging the block is only water.
  10. Your files are named like this? armormaterial_layer_1.png armormaterial_layer_1_overlay.png armormaterial_layer_2.png armormaterial_layer_2_overlay.png
  11. Have you tried using net.minecraft.world.level.BlockAndTintGetter#canSeeSky ?
  12. Have you taken a look at what net.minecraft.world.entity.vehicle.Boat#floatBoat does?
  13. Have you checked if you need to override Block#canSustainPlant ? It has this line of code in it: if (net.minecraftforge.common.PlantType.CROP.equals(type)) { return state.is(Blocks.FARMLAND); } which would be relevant since StemBlock.java has this in it: @Override public net.minecraftforge.common.PlantType getPlantType(BlockGetter world, BlockPos pos) { return net.minecraftforge.common.PlantType.CROP; }
  14. If you look at the Minecraft wiki, you can see that there already exists one block that unlocks without needing any other blocks, which is the crafting table. https://minecraft.fandom.com/wiki/Recipe_book#Unlocking So if you find the file: \data\minecraft\advancements\recipes\decorations\crafting_table.json You can see that it uses a "unlock_right_away" criteria to do the job. { "parent": "minecraft:recipes/root", "criteria": { "has_the_recipe": { "conditions": { "recipe": "minecraft:crafting_table" }, "trigger": "minecraft:recipe_unlocked" }, "unlock_right_away": { "trigger": "minecraft:tick" } }, "requirements": [ [ "has_the_recipe", "unlock_right_away" ] ], "rewards": { "recipes": [ "minecraft:crafting_table" ] }, "sends_telemetry_event": false }
×
×
  • Create New...

Important Information

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