Jump to content

FOGC123

Members
  • Posts

    21
  • Joined

  • Last visited

Posts posted by FOGC123

  1. 35 minutes ago, Ugdhar said:

    You need to register TILE_ENTITIES on the mod event bus, as far as I've seen all deferred registers are usually registered on the mod event bus in the mod constructor.

    Sorry i wasnt very clear with my question, I have registered the deferred register on my mod event bus but:  "TileEntityType.Builder.create(TileEntityWandInfuser::new, ModBlocks.WAND_INFUSER.get())" still returns error Cannot resolve method 'create(<method reference>, net.minecraftforge.registries.IForgeRegistryEntry)'

  2. As i said I would like to register a tile entity using deferred register:

    Code

    package com.fogc123.randomadditions.tilentities;
    
    import com.fogc123.randomadditions.RandomAdditions;
    import com.fogc123.randomadditions.blocks.ModBlocks;
    import net.minecraft.tileentity.TileEntityType;
    import net.minecraftforge.fml.RegistryObject;
    import net.minecraftforge.registries.DeferredRegister;
    import net.minecraftforge.registries.ForgeRegistries;
    
    public class ModTileEntities {
        public static final DeferredRegister<TileEntityType<?>> TILE_ENTITIES = new DeferredRegister<>(ForgeRegistries.TILE_ENTITIES, RandomAdditions.MODID);
    
        public static final RegistryObject<TileEntityType<TileEntityWandInfuser>> WAND_INFUSER = TILE_ENTITIES.register("firstblock", () -> TileEntityType.Builder.create(TileEntityWandInfuser::new, ModBlocks.WAND_INFUSER.get()).build(null));
    }
    package com.fogc123.randomadditions.blocks;
    
    import com.fogc123.randomadditions.tilentities.ModTileEntities;
    import net.minecraft.block.Block;
    import net.minecraft.block.BlockState;
    import net.minecraft.block.material.Material;
    import net.minecraft.entity.player.PlayerEntity;
    import net.minecraft.tileentity.TileEntity;
    import net.minecraft.util.ActionResultType;
    import net.minecraft.util.Hand;
    import net.minecraft.util.math.BlockPos;
    import net.minecraft.util.math.BlockRayTraceResult;
    import net.minecraft.world.IBlockReader;
    import net.minecraft.world.World;
    
    import javax.annotation.Nullable;
    
    public class BlockWandInfuser extends Block {
        public BlockWandInfuser()
        {
            super(Block.Properties.create(Material.WOOD));
        }
    
        @Override
        public boolean hasTileEntity(final BlockState state) {
            return true;
        }
    
        @Nullable
        @Override
        public TileEntity createTileEntity(final BlockState state, final IBlockReader world)
        {
            return ModTileEntities.WAND_INFUSER.get().create();
        }
    
    }
    package com.fogc123.randomadditions.tilentities;
    
    import com.fogc123.randomadditions.blocks.ModBlocks;
    import com.fogc123.randomadditions.containers.WandInfuserContainer;
    import net.minecraft.entity.player.PlayerEntity;
    import net.minecraft.entity.player.PlayerInventory;
    import net.minecraft.entity.player.ServerPlayerEntity;
    import net.minecraft.inventory.container.Container;
    import net.minecraft.inventory.container.INamedContainerProvider;
    import net.minecraft.item.ItemStack;
    import net.minecraft.nbt.CompoundNBT;
    import net.minecraft.network.play.server.SUpdateTileEntityPacket;
    import net.minecraft.tileentity.ITickableTileEntity;
    import net.minecraft.tileentity.TileEntity;
    import net.minecraft.tileentity.TileEntityType;
    import net.minecraft.util.text.ITextComponent;
    import net.minecraft.util.text.TranslationTextComponent;
    import net.minecraftforge.common.util.LazyOptional;
    import net.minecraftforge.fml.network.NetworkHooks;
    import net.minecraftforge.items.ItemStackHandler;
    
    import javax.annotation.Nonnull;
    import javax.annotation.Nullable;
    
    public class TileEntityWandInfuser extends TileEntity implements ITickableTileEntity, INamedContainerProvider {
        //only one slot for now for testing
        public static final int BOOK_SLOT = 0;
    
    
        //handles inventory
        public final ItemStackHandler inventory = new ItemStackHandler(1) {
    
            @Override
            public boolean isItemValid(int slot, @Nonnull ItemStack stack) {
                // check if item is valid for slot, just return true for now(all items will be valid)
                return true;
            }
    
            @Override
            protected void onContentsChanged(int slot) {
                //callled everytime contents of inventory is changed
                super.onContentsChanged(slot);
                //mark entity dirty so game will save chunk to disc
                TileEntityWandInfuser.this.markDirty();
                System.out.println("Tile Entity Inventory Contents Changed!");
            }
        };
        //reduces number of objects i create(more efficient)
        public final LazyOptional<ItemStackHandler> inventoryCapabilityExternal = LazyOptional.of(() -> this.inventory)
    
        public TileEntityWandInfuser(TileEntityType<?> tileEntityTypeIn) {
            super(tileEntityTypeIn);
        }
    
        @Override
        public void tick() {
            //called every tick
    
        }
    
    
    
        @Override
        public void remove() {
            super.remove();
            inventoryCapabilityExternal.invalidate();
        }
    
        @Nonnull
        public CompoundNBT getUpdateTag() {
            return this.write(new CompoundNBT());
        }
    
    
    
        @Override
        public ITextComponent getDisplayName() {
            return new TranslationTextComponent(ModBlocks.WAND_INFUSER.get().);
        }
    
        /**
         * Called from {@link NetworkHooks#openGui}
         * (which is called from {@link BlockWandInfuser#onBlockActivated} on the logical server)
         *
         * @return The logical-server-side Container for this TileEntity
         */
        @Nullable
        @Override
        public Container createMenu(int windowId, PlayerInventory inv, PlayerEntity player) {
            return new WandInfuserContainer(windowId, inv, this);
        }
    
    }

     

  3. I want to summon a firecharge when you right click with a wand item but i have no idea how i would do that.

    My code:

    public class ItemFireballWand extends Item {
        public ItemFireballWand()
        {
            super(new Item.Properties().maxStackSize(1));
        }
    
        @Override
        public ActionResult<ItemStack> onItemRightClick(World worldIn, PlayerEntity playerIn, Hand handIn) {
            
            return ActionResult.resultSuccess(new ItemStack(this));
        }
    }

     

  4. 8 hours ago, diesieben07 said:

    Show your code.

    Here you go:
     

    public class BasicWand extends Item{
    
    
    
        public BasicWand(){
            super(new Item.Properties().maxStackSize(64).group(ModItemGroups.MOD_ITEM_GROUP));
            this.setRegistryName("basic_wand");
        }
    
        @Override
        public ActionResult<ItemStack> onItemRightClick(World world, PlayerEntity player, Hand hand)
        {
            if (player.isCrouching())
            {
                System.out.println("Wand Inventory opened!");
                return ActionResult.resultPass(new ItemStack(ModItems.BASIC_WAND));
    
            }
            System.out.println("Wand Used!");
            return ActionResult.resultPass(new ItemStack(ModItems.BASIC_WAND));
        }
    }

     

  5. I've been following a tutorial(https://cadiboo.github.io/tutorials/1.15.1/forge/) and i was having problems with registering items. The game launches fine, my mod gets loaded, but i can't get my item with the /give command. I see a one possible problem. The tutorial is using 1.15.1 and I am using 1.15.2(but i doubt that would make a big difference).

     

    My main mod class:

    package com.fogc123.randomadditions;
    import net.minecraftforge.fml.common.Mod;
    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.Logger;
    
    
    @Mod(Main.MODID)
    public final class Main {
        public static final String MODID = "random_additions";
        public static final Logger LOGGER = LogManager.getLogger();
    
        public Main()
        {
            LOGGER.debug("HI!");
        }
    }

     

    My modeventsubscriber class:

    package com.fogc123.randomadditions;
    
    import net.minecraft.item.Item;
    import net.minecraft.util.ResourceLocation;
    import net.minecraftforge.event.RegistryEvent;
    import net.minecraftforge.eventbus.api.SubscribeEvent;
    import net.minecraftforge.fml.common.Mod;
    import net.minecraftforge.registries.IForgeRegistry;
    import net.minecraftforge.registries.IForgeRegistryEntry;
    
    @Mod.EventBusSubscriber(modid = Main.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE)
    public final class ModEventSubscriber {
    
        @SubscribeEvent
        static void onRegisterItems(RegistryEvent.Register<Item> event)
        {
            //change this l8r
           event.getRegistry().registerAll(setup(new Item(new Item.Properties()), "first_item"));
        }
        public static <T extends IForgeRegistryEntry<T>> T setup(final T entry, final String name) {
            return setup(entry, new ResourceLocation(Main.MODID, name));
        }
    
        public static <T extends IForgeRegistryEntry<T>> T setup(final T entry, final ResourceLocation registryName) {
            entry.setRegistryName(registryName);
            return entry;
        }
    
    
    }

    And my mods.toml if that is needed

    # This is an example mods.toml file. It contains the data relating to the loading mods.
    # There are several mandatory fields (#mandatory), and many more that are optional (#optional).
    # The overall format is standard TOML format, v0.5.0.
    # Note that there are a couple of TOML lists in this file.
    # Find more information on toml format here:  https://github.com/toml-lang/toml
    # The name of the mod loader type to load - for regular FML @Mod mods it should be javafml
    modLoader="javafml" #mandatory
    # A version range to match for said mod loader - for regular FML @Mod it will be the forge version
    loaderVersion="[31,)" #mandatory This is typically bumped every Minecraft version by Forge. See our download page for lists of versions.
    # A URL to refer people to when problems occur with this mod
    issueTrackerURL="http://my.issue.tracker/" #optional
    # A list of mods - how many allowed here is determined by the individual mod loader
    [[mods]] #mandatory
    # The modid of the mod
    modId="random_additions" #mandatory
    # The version number of the mod - there's a few well known ${} variables useable here or just hardcode it
    version="${version}" #mandatory
     # A display name for the mod
    displayName="Random Additions" #mandatory
    # A URL to query for updates for this mod. See the JSON update specification <here>
    updateJSONURL="http://myurl.me/" #optional
    # A URL for the "homepage" for this mod, displayed in the mod UI
    displayURL="http://example.com/" #optional
    # A file name (in the root of the mod JAR) containing a logo for display
    logoFile="icon.png" #optional
    # A text field displayed in the mod UI
    credits="Random stuff" #optional
    # A text field displayed in the mod UI
    authors="FOGC123" #optional
    # The description text for the mod (multi line!) (#mandatory)
    description='''
    Random stuff i wanted to add.
    '''
    # A dependency - use the . to indicate dependency for a specific modid. Dependencies are optional.
    [[dependencies.examplemod]] #optional
        # the modid of the dependency
        modId="forge" #mandatory
        # Does this dependency have to exist - if not, ordering below must be specified
        mandatory=true #mandatory
        # The version range of the dependency
        versionRange="[31,)" #mandatory
        # An ordering relationship for the dependency - BEFORE or AFTER required if the relationship is not mandatory
        ordering="NONE"
        # Side this dependency is applied on - BOTH, CLIENT or SERVER
        side="BOTH"
    # Here's another dependency
    [[dependencies.examplemod]]
        modId="minecraft"
        mandatory=true
        versionRange="[1.15.2]"
        ordering="NONE"
        side="BOTH"

    Thanks!

  6. 3 hours ago, DaemonUmbra said:

    You should be opening the Run Configuration list and selecting one of the runs that genEclipseRuns generated (Note: These will not appear directly under the run button until you've used each one once, but they will appear in the complete list)

    How would i know if that was one of them(I have just run ./gradlew genEclipseRuns in terminal)

  7. 9 hours ago, Ugdhar said:

    In theory you should already have run configurations setup after ruinning genEclipseRuns or genIntellijRuns

     

    If I had to choose one, I would probably choose Main from net.minecraft.client.main

     

    I don't understand, what is genEclipseRuns, the way I setup my mod is I imported the grade file into workspace.

  8. As the title says, my mod that i am creating in eclipse crashes before the client opens.

     

    My log file:

    ---- Minecraft Crash Report ----
    // There are four lights!

    Time: 13/03/20 7:38 PM
    Description: Initializing game

    java.lang.NullPointerException: Initializing game
        at net.minecraftforge.fml.loading.progress.EarlyProgressVisualization.join(EarlyProgressVisualization.java:40) ~[forge-1.15.2-31.1.19_mapped_snapshot_20200225-1.15.1-launcher.jar:?] {}
        at net.minecraft.client.Minecraft.<init>(Minecraft.java:371) [forge-1.15.2-31.1.19_mapped_snapshot_20200225-1.15.1.jar:?] {}
        at net.minecraft.client.main.Main.main(SourceFile:166) [forge-1.15.2-31.1.19_mapped_snapshot_20200225-1.15.1.jar:?] {}
        at mcp.client.Start.main(Start.java:17) [forge-1.15.2-31.1.19_mapped_snapshot_20200225-1.15.1.jar:?] {}


    A detailed walkthrough of the error, its code path and all known details is as follows:
    ---------------------------------------------------------------------------------------

    -- Head --
    Thread: Render thread
    Stacktrace:
        at net.minecraftforge.fml.loading.progress.EarlyProgressVisualization.join(EarlyProgressVisualization.java:40)
        at net.minecraft.client.Minecraft.<init>(Minecraft.java:371)

    -- Initialization --
    Details:
    Stacktrace:
        at net.minecraft.client.main.Main.main(SourceFile:166)
        at mcp.client.Start.main(Start.java:17)

    -- System Details --
    Details:
        Minecraft Version: 1.15.2
        Minecraft Version ID: 1.15.2
        Operating System: Mac OS X (x86_64) version 10.15.3
        Java Version: 1.8.0_231, Oracle Corporation
        Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
        Memory: 221078840 bytes (210 MB) / 374865920 bytes (357 MB) up to 1908932608 bytes (1820 MB)
        CPUs: 4
        JVM Flags: 0 total;
        Launched Version: mcp
        Backend library: LWJGL version 3.2.1 build 12
        Backend API: NO CONTEXT
        GL Caps:
        Using VBOs: Yes
        Is Modded: Definitely; Client brand changed to 'forge'
        Type: Client (map_client.txt)
        CPU: <unknown>

×
×
  • Create New...

Important Information

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