Jump to content

Recommended Posts

Posted

Hi,

I'm trying to make a custom boat, however, I'm stuck on how to proceed.

I know that the boat's custom class should extend .entity.vehicle.Boat, however, it seems that there's an Enum in that class that would be difficult to add another element to; overriding the enum doesn't seem to work, either, as several parts of it specifically require the Boat class.

Here's the code of the related files:

entity/custom/ModBoatEntity.java:

package com.realicraft.charlogs.block.entity.custom;

import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.vehicle.Boat;
import net.minecraft.world.level.Level;

public class ModBoatEntity extends Boat {
    public ModBoatEntity(EntityType<? extends Boat> p_38290_, Level p_38291_) {
        super(p_38290_, p_38291_);
    }


}

item/ModItems.java:

package com.realicraft.charlogs.item;

import com.realicraft.charlogs.block.ModBlocks;
import com.realicraft.charlogs.charLogs;
import net.minecraft.world.entity.vehicle.Boat;
import net.minecraft.world.item.BoatItem;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.SignItem;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;

public class ModItems {
    public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, charLogs.MODID);

    public static final RegistryObject<Item> CHAR_SIGN = ITEMS.register("char_sign",
            () -> new SignItem(new Item.Properties().tab(ModCreativeModeTab.CHARLOGS_TAB).stacksTo(16),
            ModBlocks.CHAR_SIGN.get(), ModBlocks.CHAR_WALL_SIGN.get()));

    public static final RegistryObject<Item> CHAR_BOAT = ITEMS.register("char_boat", () -> new BoatItem(false, Boat.Type.OAK, (new Item.Properties()).stacksTo(1).tab(ModCreativeModeTab.CHARLOGS_TAB)));

    public static void register(IEventBus eventBus) {
        ITEMS.register(eventBus);
    }
}

 

Posted

You shouldn't expect that vanilla classes are designed to be reused by modders.

There can be lots of hardcoding done by Mojang that makes this difficult or sometimes impossible.

 

You can just set it to OAK like you are doing and then just ignore it.

You are going to need to override those the methods that use that enum anyway such as BoatRenderer.getModelLocation() and Boat.getDropItem()

But I don't think you can reuse BoatItem as is anyway. It has a private method getBoat() that hard codes the entity creation as either Boat or ChestBoat.

You might be able to use access transformers to make that method protected and override it in a subclass?

https://forge.gemwire.uk/wiki/Access_Transformers

 

You should also be aware that Mojang are probably changing this code when they add bamboo rafts in 1.19.3?

 

Boilerplate:

If you don't post your logs/debug.log we can't help you. For curseforge you need to enable the forge debug.log in its minecraft settings. You should also post your crash report if you have one.

If there is no error in the log file and you don't have a crash report then post the launcher_log.txt from the minecraft folder. Again for curseforge this will be in your curseforge/minecraft/Install

Large files should be posted to a file sharing site like https://gist.github.com  You should also read the support forum sticky post.

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



×
×
  • Create New...

Important Information

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