Jump to content

Recommended Posts

Posted
2 minutes ago, IlTosaerba said:

Of curse! Is what I done, forget to write in the previous comment, updating it

 

Post your recipe file and the FML log (logs/fml-client-latest.log in the game directory) using Gist or Pastebin.

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.

Posted
Quote

[18:05:04] [main/ERROR] [FML/]: Parsing error loading recipe wllcsam:metalloalieno
com.google.gson.JsonSyntaxException: Unknown item 'wllcsam:genevirus'
    at net.minecraftforge.common.crafting.CraftingHelper.getItemStackBasic(CraftingHelper.java:259) ~[CraftingHelper.class:?]
    at net.minecraftforge.common.crafting.CraftingHelper.lambda$init$16(CraftingHelper.java:537) ~[CraftingHelper.class:?]
    at net.minecraftforge.common.crafting.CraftingHelper.getIngredient(CraftingHelper.java:201) ~[CraftingHelper.class:?]
    at net.minecraftforge.common.crafting.CraftingHelper.lambda$init$14(CraftingHelper.java:474) ~[CraftingHelper.class:?]
    at net.minecraftforge.common.crafting.CraftingHelper.getRecipe(CraftingHelper.java:408) ~[CraftingHelper.class:?]
    at net.minecraftforge.common.crafting.CraftingHelper.lambda$loadRecipes$22(CraftingHelper.java:711) ~[CraftingHelper.class:?]
    at net.minecraftforge.common.crafting.CraftingHelper.findFiles(CraftingHelper.java:806) ~[CraftingHelper.class:?]
    at net.minecraftforge.common.crafting.CraftingHelper.findFiles(CraftingHelper.java:736) ~[CraftingHelper.class:?]
    at net.minecraftforge.common.crafting.CraftingHelper.loadRecipes(CraftingHelper.java:668) ~[CraftingHelper.class:?]
    at java.util.ArrayList.forEach(Unknown Source) [?:1.8.0_141]
    at net.minecraftforge.common.crafting.CraftingHelper.loadRecipes(CraftingHelper.java:620) [CraftingHelper.class:?]

 

There is no registered Item with the name wllcsam:genevirus.

 

Have you spelled the name correctly? Do you register an Item with this name anywhere?

  • 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.

Posted

I have an item call genevirus (without "wllcsam:") register in ModItem.java 
ModItem.java : https://pastebin.com/gYrSrtNp

Then i create the class ItemGenevirus of curse.

ItemGenevirus.java: https://pastebin.com/G0Y71Bsd

 

And also define it in Reference.java

Reference.java: https://pastebin.com/aMMgWda8

 

Then I have also an itemgenevirus.json in src/main/resources/assets/<modId>/mofels/item

itemgenevirus.json: https://pastebin.com/Hj9zNeRN

Posted
1 minute ago, IlTosaerba said:

And what about smelt recipes? How can I write a costum one?

 

FurnaceRecipes still uses a Map of input ItemStacks to output ItemStacks, you can't create your own smelting recipes with custom logic.

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.

Posted

'cause I see a yt tutorial for the 1.11.2 version which create a new smelting recipes with  "GameRegistry". He was doing the same with recipes but in 1.12 it doesn't work, so my real question is: Can I create a costum smelting recipe? How (if there's just a post for this please give me the link)?.


And the most important for my mod... can I create a costum block with function like crafting table / fournace / anvill  with costums recipes which work only with that block?

(in poor word, create a costum version of crafting table / fopurnace/ anvill) 

Posted
31 minutes ago, IlTosaerba said:

'cause I see a yt tutorial for the 1.11.2 version which create a new smelting recipes with  "GameRegistry". He was doing the same with recipes but in 1.12 it doesn't work, so my real question is: Can I create a costum smelting recipe? How (if there's just a post for this please give me the link)?.

 

You can still add smelting recipes with GameRegistry#addSmelting, since smelting recipes weren't changed in 1.12. By "custom recipe", I thought you were talking about creating you own recipe class with custom logic, which isn't possible for smelting recipes.

 

 

33 minutes ago, IlTosaerba said:

And the most important for my mod... can I create a costum block with function like crafting table / fournace / anvill  with costums recipes which work only with that block?

(in poor word, create a costum version of crafting table / fopurnace/ anvill) 

 

Yes, you can create your own machines with their own set of recipes.

  • 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.

Posted
6 minutes ago, Choonster said:

 

You can still add smelting recipes with GameRegistry#addSmelting, since smelting recipes weren't changed in 1.12. By "custom recipe", I thought you were talking about creating you own recipe class with custom logic, which isn't possible for smelting recipes.

Good, very good

Quote

Yes, you can create your own machines with their own set of recipes.

AMAZING! Can u please tell me how or give me a link for a tutorial 'cause I didn't find anything on Internet

Posted
16 minutes ago, IlTosaerba said:

AMAZING! Can u please tell me how or give me a link for a tutorial 'cause I didn't find anything on Internet

 

I don't think there's many tutorials on this, since each machine is different.

 

All I can suggest is to look at the examples in Vanilla/Forge and in open source mods.

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.

Posted
29 minutes ago, Choonster said:

 

I don't think there's many tutorials on this, since each machine is different.

 

All I can suggest is to look at the examples in Vanilla/Forge and in open source mods.

Where's exatly the files in Vanilla/Forge? 'cause I found only the Json in blockstates and models 

Posted
Just now, IlTosaerba said:

Where's exatly the files in Vanilla/Forge? 'cause I found only the Json in blockstates and models 

 

The Crafting Table is implemented in the BlockWorkbench,ContainerWorkbench and GuiCrafting classes. Recipes are managed by CraftingManager, mod recipes are loaded by CraftingHelper. Vanilla recipe files are located in the assets/minecraft/recipes directory.

 

The Furnace is implemented in the BlockFurnaceTileEntityFurnaceContainerFurnace and GuiFurnace classes. Recipes are managed by FurnaceRecipes.

 

The Anvil is implemented in the BlockAnvilContainerRepair and GuiRepair classes. There are no anvil recipes, the output is managed by ContainerRepair#updateRepairOutput (which fires AnvilUpdateEvent to allow mods to add custom item combinations).

 

To open a class by name, use Navigate > Class (Ctrl-N) in IDEA or Navigate > Go To > Type... in Eclipse.

  • 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.

Posted
1 hour ago, Choonster said:

To open a class by name, use Navigate > Go To > Type... in Eclipse.

Ok, but where I found the classes?

I mean, normally u can't see them, I have to open it with eclipse, but for do it, I must import like project the package which contain them... how? Where i foud it?

Posted
10 hours ago, IlTosaerba said:

Ok, but where I found the classes?

I mean, normally u can't see them, I have to open it with eclipse, but for do it, I must import like project the package which contain them... how? Where i foud it?

I mean... how to put the Vanilla's files in Eclipse?

Posted
11 hours ago, IlTosaerba said:

Ok, but where I found the classes?

I mean, normally u can't see them, I have to open it with eclipse, but for do it, I must import like project the package which contain them... how? Where i foud it?

 

11 minutes ago, IlTosaerba said:

I mean... how to put the Vanilla's files in Eclipse?

 

Follow the instructions in the Getting Started guide to set up your IDE project correctly. If you follow these instructions, you'll have the forgeSrc-<version>.jar library referenced in your IDE project with the source code attached to it.

  • 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.

Posted

Oh, it is in Reference Libraries! Found it, thank u very much, now I will be crazy to study all this but finally I will have a good mod. 

Last question (I promise XD): If I want that when I put an Item in a Block, that Block open an Iron Door.... how can I do it? Have to set like a redstone impulse or some weird method?

Posted
4 minutes ago, IlTosaerba said:

Last question (I promise XD): If I want that when I put an Item in a Block, that Block open an Iron Door.... how can I do it? Have to set like a redstone impulse or some weird method?

 

If the block is adjacent to the door, make it emit a redstone signal. If it's not, you'll probably need to toggle the door periodically if it's not open.

 

If you want more help with this, create a new thread.

  • 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.

  • 1 year later...
Posted

Hello there, I wouldn't start a new thread since this one hits the topic I need help with :)

 

I have a weird behavior and I am not sure what I am doing wrong. so maybe one of you can help me.

 

I try to make a custom recipe in minecraft.

 

When I use only one Item like here;

 

{
    "type": "crafting_shaped",
    "pattern": [
        "###",
        "###",
        "###"
    ],
    "key": {
        "#": {
            "item": "minecraft:stone"
        }
    },
    
    "result":
    {
        "item": "dstm:pot_block",
        "count": 1
    }
}

 

The recipe works just fine. But when I try to make a variation of it it doesn't work anymore. I checked in in a json validator the second code should be correct.

 :( but it doesn't work anymore. Sooo it's not okay?

 

{
    "type": "crafting_shaped",
    "pattern": [
        "###",
        "/ /",
        "/C/"
    ],
    "key": {
        "#": {
            "item": "minecraft:stone"
        },
        "/": {
            "item": "minecraft:stick"
        },
        "C": {
            "item": "minecraft:coal_block"
        }
    },
    
    "result":
    {
        "item": "dstm:pot_block",
        "count": 1
    }
}

 

So I am happy for any help :) thx you :D

Posted
8 minutes ago, RocaTeithmore said:

Hello there, I wouldn't start a new thread since this one hits the topic I need help with :)

Make a new thread instead of posting on one that is almost 4 months. Plus the topic of this thread changed from recipes to redstone a while ago.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Guest
This topic is now closed to further replies.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Version 1.19 - Forge 41.0.63 I want to create a wolf entity that I can ride, so far it seems to be working, but the problem is that when I get on the wolf, I can’t control it. I then discovered that the issue is that the server doesn’t detect that I’m riding the wolf, so I’m struggling with synchronization. However, it seems to not be working properly. As I understand it, the server receives the packet but doesn’t register it correctly. I’m a bit new to Java, and I’ll try to provide all the relevant code and prints *The comments and prints are translated by chatgpt since they were originally in Spanish* Thank you very much in advance No player is mounted, or the passenger is not a player. No player is mounted, or the passenger is not a player. No player is mounted, or the passenger is not a player. No player is mounted, or the passenger is not a player. No player is mounted, or the passenger is not a player. MountableWolfEntity package com.vals.valscraft.entity; import com.vals.valscraft.network.MountSyncPacket; import com.vals.valscraft.network.NetworkHandler; import net.minecraft.client.Minecraft; import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.ai.attributes.AttributeSupplier; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.animal.Wolf; import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.Entity; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec3; import net.minecraftforge.event.TickEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.network.PacketDistributor; public class MountableWolfEntity extends Wolf { private boolean hasSaddle; private static final EntityDataAccessor<Byte> DATA_ID_FLAGS = SynchedEntityData.defineId(MountableWolfEntity.class, EntityDataSerializers.BYTE); public MountableWolfEntity(EntityType<? extends Wolf> type, Level level) { super(type, level); this.hasSaddle = false; } @Override protected void defineSynchedData() { super.defineSynchedData(); this.entityData.define(DATA_ID_FLAGS, (byte)0); } public static AttributeSupplier.Builder createAttributes() { return Wolf.createAttributes() .add(Attributes.MAX_HEALTH, 20.0) .add(Attributes.MOVEMENT_SPEED, 0.3); } @Override public InteractionResult mobInteract(Player player, InteractionHand hand) { ItemStack itemstack = player.getItemInHand(hand); if (itemstack.getItem() == Items.SADDLE && !this.hasSaddle()) { if (!player.isCreative()) { itemstack.shrink(1); } this.setSaddle(true); return InteractionResult.SUCCESS; } else if (!level.isClientSide && this.hasSaddle()) { player.startRiding(this); MountSyncPacket packet = new MountSyncPacket(true); // 'true' means the player is mounted NetworkHandler.CHANNEL.sendToServer(packet); // Ensure the server handles the packet return InteractionResult.SUCCESS; } return InteractionResult.PASS; } @Override public void travel(Vec3 travelVector) { if (this.isVehicle() && this.getControllingPassenger() instanceof Player) { System.out.println("The wolf has a passenger."); System.out.println("The passenger is a player."); Player player = (Player) this.getControllingPassenger(); // Ensure the player is the controller this.setYRot(player.getYRot()); this.yRotO = this.getYRot(); this.setXRot(player.getXRot() * 0.5F); this.setRot(this.getYRot(), this.getXRot()); this.yBodyRot = this.getYRot(); this.yHeadRot = this.yBodyRot; float forward = player.zza; float strafe = player.xxa; if (forward <= 0.0F) { forward *= 0.25F; } this.flyingSpeed = this.getSpeed() * 0.1F; this.setSpeed((float) this.getAttributeValue(Attributes.MOVEMENT_SPEED) * 1.5F); this.setDeltaMovement(new Vec3(strafe, travelVector.y, forward).scale(this.getSpeed())); this.calculateEntityAnimation(this, false); } else { // The wolf does not have a passenger or the passenger is not a player System.out.println("No player is mounted, or the passenger is not a player."); super.travel(travelVector); } } public boolean hasSaddle() { return this.hasSaddle; } public void setSaddle(boolean hasSaddle) { this.hasSaddle = hasSaddle; } @Override protected void dropEquipment() { super.dropEquipment(); if (this.hasSaddle()) { this.spawnAtLocation(Items.SADDLE); this.setSaddle(false); } } @SubscribeEvent public static void onServerTick(TickEvent.ServerTickEvent event) { if (event.phase == TickEvent.Phase.START) { MinecraftServer server = net.minecraftforge.server.ServerLifecycleHooks.getCurrentServer(); if (server != null) { for (ServerPlayer player : server.getPlayerList().getPlayers()) { if (player.isPassenger() && player.getVehicle() instanceof MountableWolfEntity) { MountableWolfEntity wolf = (MountableWolfEntity) player.getVehicle(); System.out.println("Tick: " + player.getName().getString() + " is correctly mounted on " + wolf); } } } } } private boolean lastMountedState = false; @Override public void tick() { super.tick(); if (!this.level.isClientSide) { // Only on the server boolean isMounted = this.isVehicle() && this.getControllingPassenger() instanceof Player; // Only print if the state changed if (isMounted != lastMountedState) { if (isMounted) { Player player = (Player) this.getControllingPassenger(); // Verify the passenger is a player System.out.println("Server: Player " + player.getName().getString() + " is now mounted."); } else { System.out.println("Server: The wolf no longer has a passenger."); } lastMountedState = isMounted; } } } @Override public void addPassenger(Entity passenger) { super.addPassenger(passenger); if (passenger instanceof Player) { Player player = (Player) passenger; if (!this.level.isClientSide && player instanceof ServerPlayer) { // Send the packet to the server to indicate the player is mounted NetworkHandler.CHANNEL.send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) player), new MountSyncPacket(true)); } } } @Override public void removePassenger(Entity passenger) { super.removePassenger(passenger); if (passenger instanceof Player) { Player player = (Player) passenger; if (!this.level.isClientSide && player instanceof ServerPlayer) { // Send the packet to the server to indicate the player is no longer mounted NetworkHandler.CHANNEL.send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) player), new MountSyncPacket(false)); } } } @Override public boolean isControlledByLocalInstance() { Entity entity = this.getControllingPassenger(); return entity instanceof Player; } @Override public void positionRider(Entity passenger) { if (this.hasPassenger(passenger)) { double xOffset = Math.cos(Math.toRadians(this.getYRot() + 90)) * 0.4; double zOffset = Math.sin(Math.toRadians(this.getYRot() + 90)) * 0.4; passenger.setPos(this.getX() + xOffset, this.getY() + this.getPassengersRidingOffset() + passenger.getMyRidingOffset(), this.getZ() + zOffset); } } } MountSyncPacket package com.vals.valscraft.network; import com.vals.valscraft.entity.MountableWolfEntity; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; import net.minecraftforge.network.NetworkEvent; import java.util.function.Supplier; public class MountSyncPacket { private final boolean isMounted; public MountSyncPacket(boolean isMounted) { this.isMounted = isMounted; } public void encode(FriendlyByteBuf buffer) { buffer.writeBoolean(isMounted); } public static MountSyncPacket decode(FriendlyByteBuf buffer) { return new MountSyncPacket(buffer.readBoolean()); } public void handle(NetworkEvent.Context context) { context.enqueueWork(() -> { ServerPlayer player = context.getSender(); // Get the player from the context if (player != null) { // Verifies if the player has dismounted if (!isMounted) { Entity vehicle = player.getVehicle(); if (vehicle instanceof MountableWolfEntity wolf) { // Logic to remove the player as a passenger wolf.removePassenger(player); System.out.println("Server: Player " + player.getName().getString() + " is no longer mounted."); } } } }); context.setPacketHandled(true); // Marks the packet as handled } } networkHandler package com.vals.valscraft.network; import com.vals.valscraft.valscraft; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.network.NetworkRegistry; import net.minecraftforge.network.simple.SimpleChannel; import net.minecraftforge.network.NetworkEvent; import java.util.function.Supplier; public class NetworkHandler { private static final String PROTOCOL_VERSION = "1"; public static final SimpleChannel CHANNEL = NetworkRegistry.newSimpleChannel( new ResourceLocation(valscraft.MODID, "main"), () -> PROTOCOL_VERSION, PROTOCOL_VERSION::equals, PROTOCOL_VERSION::equals ); public static void init() { int packetId = 0; // Register the mount synchronization packet CHANNEL.registerMessage( packetId++, MountSyncPacket.class, MountSyncPacket::encode, MountSyncPacket::decode, (msg, context) -> msg.handle(context.get()) // Get the context with context.get() ); } }  
    • Do you use features of inventory profiles next (ipnext) or is there a change without it?
    • Remove rubidium - you are already using embeddium, which is a fork of rubidium
  • Topics

×
×
  • Create New...

Important Information

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