Jump to content

Recommended Posts

Posted (edited)

Just came back after a short break from working on mods and the holidays and not finding much reference material to work with. At this point the game loads, I place the missing texture block and can activate it, however it turns into a redstone lamp. I am not sure if this is a .json issue, or .class at this point, however I'm leaning towards .json.

 

Redstone lamp class:

Spoiler

package com.kaelym.elypsis.blocks;

import com.kaelym.elypsis.ElypsisMod;

import net.minecraft.block.BlockRedstoneLight;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;


public class CustomRedstoneLight extends BlockRedstoneLight
{
    private static boolean isOn;

    public CustomRedstoneLight(boolean isOn)
    {
        super(isOn);
        this.isOn = isOn;

        if (isOn)
        {
            this.setLightLevel(1.0F);
        }
    }

    public CustomRedstoneLight(Material material, String unlocalizedName, String registryName) {
        super(isOn);
        setUnlocalizedName(ElypsisMod.MODID + "." + unlocalizedName);
        setRegistryName(registryName);
        setCreativeTab(ElypsisMod.ElypsisCustom_TAB);
        setSoundType(blockSoundType);
}    
}

ModelRegistryHandler (just the snip of the particular registration for this and RegistryHandler)

Spoiler

  registerModel(Item.getItemFromBlock(CustLight.BLUE_FLOWERLAMP));
       

RegistryHandler:

Spoiler

 new CustomRedstoneLight(Material.REDSTONE_LIGHT, "blue_flowerlamp", "blue_flowerlamp"),
                   

new ItemBlock(CustLight.BLUE_FLOWERLAMP).setRegistryName(CustLight.BLUE_FLOWERLAMP.getRegistryName()),

 

CustLight class:

Spoiler

package com.kaelym.elypsis.init;
import com.kaelym.elypsis.ElypsisMod;

import net.minecraft.block.Block;
import net.minecraftforge.fml.common.registry.GameRegistry.ObjectHolder;

@ObjectHolder(ElypsisMod.MODID)
public class CustLight {

    //G    
    //Glowstone
    public static final Block GLOW_BLUE_BLOCK=null, GLOW_GREEN_BLOCK=null,
            GLOW_PURPLE_BLOCK=null, GLOW_ORANGE_BLOCK=null, GLOW_MAGENTA_BLOCK=null;
    //R
    //Redstone lamps
    public static final Block BLUE_FLOWERLAMP=null;
        
}

CustomRedstoneLight class:

Spoiler

package com.kaelym.elypsis.blocks;

import com.kaelym.elypsis.ElypsisMod;

import net.minecraft.block.BlockRedstoneLight;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;


public class CustomRedstoneLight extends BlockRedstoneLight
{
    private static boolean isOn;

    public CustomRedstoneLight(boolean isOn)
    {
        super(isOn);
        this.isOn = isOn;

        if (isOn)
        {
            this.setLightLevel(1.0F);
        }
    }

 

Jsons:

Spoiler

elypsis:blockstates/blue_flowerlamp

 

{"forge_marker": 1,
"defaults": {
"model": "elypsis:blue_flowerlamp_off"
},
"variants": {
    "powered=false": ("model":"elypsis:blue_flowerlamp_off")
    "powered=true": ("model":"elypsis:blue_flowerlamp_on")
"normal": [{}],
"inventory": [{}]
}
}

 

elypsis/models/block/blue_flowerlamp_off

 

 

{
    "parent": "block/cube_all",
    "textures": {
        "all": "elypsis:blocks/blue_flowerlamp_off"
    }
}

 

 

elypsis/models/block/blue_flowerlamp_on

 

{
    "parent": "block/cube_all",
    "textures": {
        "all": "elypsis:blocks/blue_flowerlamp_on"
    }
}

 

 

elypsis/models/item/blue_flowerlamp

 

 

Crash:

Spoiler

[15:47:42] [Client thread/ERROR] [FML]: Could not load vanilla model parent 'elypsis:blocks/blue_flowerlamp_off' for 'net.minecraft.client.renderer.block.model.ModelBlock@64d11323'
net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model elypsis:blocks/blue_flowerlamp_off with loader VanillaLoader.INSTANCE, skipping
    at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:161) ~[ModelLoaderRegistry.class:?]
    at net.minecraftforge.client.model.ModelLoaderRegistry.getModelOrLogError(ModelLoaderRegistry.java:211) [ModelLoaderRegistry.class:?]
    at net.minecraftforge.client.model.ModelLoader$VanillaModelWrapper.getTextures(ModelLoader.java:387) [ModelLoader$VanillaModelWrapper.class:?]
    at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:171) [ModelLoaderRegistry.class:?]
    at net.minecraftforge.client.model.ModelLoader.loadItemModels(ModelLoader.java:302) [ModelLoader.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.loadVariantItemModels(ModelBakery.java:175) [ModelBakery.class:?]
    at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:151) [ModelLoader.class:?]
    at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?]
    at net.minecraft.client.resources.SimpleReloadableResourceManager.registerReloadListener(SimpleReloadableResourceManager.java:121) [SimpleReloadableResourceManager.class:?]
    at net.minecraft.client.Minecraft.init(Minecraft.java:560) [Minecraft.class:?]
    at net.minecraft.client.Minecraft.run(Minecraft.java:422) [Minecraft.class:?]
    at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_191]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_191]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_191]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_191]
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_191]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_191]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_191]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_191]
    at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    at GradleStart.main(GradleStart.java:25) [start/:?]
Caused by: java.io.FileNotFoundException: elypsis:models/blocks/blue_flowerlamp_off.json
    at net.minecraft.client.resources.FallbackResourceManager.getResource(FallbackResourceManager.java:69) ~[FallbackResourceManager.class:?]
    at net.minecraft.client.resources.SimpleReloadableResourceManager.getResource(SimpleReloadableResourceManager.java:65) ~[SimpleReloadableResourceManager.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.loadModel(ModelBakery.java:334) ~[ModelBakery.class:?]
    at net.minecraftforge.client.model.ModelLoader.access$1400(ModelLoader.java:115) ~[ModelLoader.class:?]
    at net.minecraftforge.client.model.ModelLoader$VanillaLoader.loadModel(ModelLoader.java:861) ~[ModelLoader$VanillaLoader.class:?]
    at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:157) ~[ModelLoaderRegistry.class:?]
    ... 23 more
[15:47:44] [Client thread/INFO] [FML]: Max texture size: 16384
[15:47:45] [Client thread/INFO] [minecraft/TextureMap]: Created: 1024x512 textures-atlas
[15:47:46] [Client thread/ERROR] [FML]: Exception loading model for variant elypsis:blue_flowerlamp#normal for blockstate "elypsis:blue_flowerlamp"
net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model elypsis:blue_flowerlamp#normal with loader VariantLoader.INSTANCE, skipping
    at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:161) ~[ModelLoaderRegistry.class:?]
    at net.minecraftforge.client.model.ModelLoader.registerVariant(ModelLoader.java:235) ~[ModelLoader.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.loadBlock(ModelBakery.java:153) ~[ModelBakery.class:?]
    at net.minecraftforge.client.model.ModelLoader.loadBlocks(ModelLoader.java:223) ~[ModelLoader.class:?]
    at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:150) ~[ModelLoader.class:?]
    at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?]
    at net.minecraft.client.resources.SimpleReloadableResourceManager.registerReloadListener(SimpleReloadableResourceManager.java:121) [SimpleReloadableResourceManager.class:?]
    at net.minecraft.client.Minecraft.init(Minecraft.java:560) [Minecraft.class:?]
    at net.minecraft.client.Minecraft.run(Minecraft.java:422) [Minecraft.class:?]
    at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_191]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_191]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_191]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_191]
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_191]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_191]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_191]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_191]
    at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    at GradleStart.main(GradleStart.java:25) [start/:?]
Caused by: net.minecraft.client.renderer.block.model.ModelBlockDefinition$MissingVariantException
    at net.minecraft.client.renderer.block.model.ModelBlockDefinition.getVariant(ModelBlockDefinition.java:83) ~[ModelBlockDefinition.class:?]
    at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1175) ~[ModelLoader$VariantLoader.class:?]
    at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:157) ~[ModelLoaderRegistry.class:?]
    ... 21 more
[15:47:46] [Client thread/ERROR] [FML]: Exception loading blockstate for the variant elypsis:blue_flowerlamp#normal:
java.lang.Exception: Could not load model definition for variant elypsis:blue_flowerlamp
    at net.minecraftforge.client.model.ModelLoader.getModelBlockDefinition(ModelLoader.java:269) ~[ModelLoader.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.loadBlock(ModelBakery.java:121) ~[ModelBakery.class:?]
    at net.minecraftforge.client.model.ModelLoader.loadBlocks(ModelLoader.java:223) ~[ModelLoader.class:?]
    at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:150) ~[ModelLoader.class:?]
    at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?]
    at net.minecraft.client.resources.SimpleReloadableResourceManager.registerReloadListener(SimpleReloadableResourceManager.java:121) [SimpleReloadableResourceManager.class:?]
    at net.minecraft.client.Minecraft.init(Minecraft.java:560) [Minecraft.class:?]
    at net.minecraft.client.Minecraft.run(Minecraft.java:422) [Minecraft.class:?]
    at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_191]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_191]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_191]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_191]
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_191]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_191]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_191]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_191]
    at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    at GradleStart.main(GradleStart.java:25) [start/:?]
Caused by: java.lang.RuntimeException: Encountered an exception when loading model definition of 'elypsis:blue_flowerlamp' from: 'elypsis:blockstates/blue_flowerlamp.json' in resourcepack: 'FMLFileResourcePack:Elypsis Mod'
    at net.minecraft.client.renderer.block.model.ModelBakery.loadModelBlockDefinition(ModelBakery.java:246) ~[ModelBakery.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.loadMultipartMBD(ModelBakery.java:223) ~[ModelBakery.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.getModelBlockDefinition(ModelBakery.java:208) ~[ModelBakery.class:?]
    at net.minecraftforge.client.model.ModelLoader.getModelBlockDefinition(ModelLoader.java:265) ~[ModelLoader.class:?]
    ... 20 more
Caused by: com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Unterminated object at line 6 column 28 path $.variants.
    at com.google.gson.Gson.fromJson(Gson.java:902) ~[Gson.class:?]
    at com.google.gson.Gson.fromJson(Gson.java:852) ~[Gson.class:?]
    at com.google.gson.Gson.fromJson(Gson.java:801) ~[Gson.class:?]
    at com.google.gson.Gson.fromJson(Gson.java:773) ~[Gson.class:?]
    at net.minecraftforge.client.model.BlockStateLoader.load(BlockStateLoader.java:80) ~[BlockStateLoader.class:?]
    at net.minecraft.client.renderer.block.model.ModelBlockDefinition.parseFromReader(ModelBlockDefinition.java:42) ~[ModelBlockDefinition.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.loadModelBlockDefinition(ModelBakery.java:242) ~[ModelBakery.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.loadMultipartMBD(ModelBakery.java:223) ~[ModelBakery.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.getModelBlockDefinition(ModelBakery.java:208) ~[ModelBakery.class:?]
    at net.minecraftforge.client.model.ModelLoader.getModelBlockDefinition(ModelLoader.java:265) ~[ModelLoader.class:?]
    ... 20 more
Caused by: com.google.gson.stream.MalformedJsonException: Unterminated object at line 6 column 28 path $.variants.
    at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1559) ~[JsonReader.class:?]
    at com.google.gson.stream.JsonReader.doPeek(JsonReader.java:491) ~[JsonReader.class:?]
    at com.google.gson.stream.JsonReader.skipValue(JsonReader.java:1224) ~[JsonReader.class:?]
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:218) ~[ReflectiveTypeAdapterFactory$Adapter.class:?]
    at com.google.gson.Gson.fromJson(Gson.java:887) ~[Gson.class:?]
    at com.google.gson.Gson.fromJson(Gson.java:852) ~[Gson.class:?]
    at com.google.gson.Gson.fromJson(Gson.java:801) ~[Gson.class:?]
    at com.google.gson.Gson.fromJson(Gson.java:773) ~[Gson.class:?]
    at net.minecraftforge.client.model.BlockStateLoader.load(BlockStateLoader.java:80) ~[BlockStateLoader.class:?]
    at net.minecraft.client.renderer.block.model.ModelBlockDefinition.parseFromReader(ModelBlockDefinition.java:42) ~[ModelBlockDefinition.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.loadModelBlockDefinition(ModelBakery.java:242) ~[ModelBakery.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.loadMultipartMBD(ModelBakery.java:223) ~[ModelBakery.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.getModelBlockDefinition(ModelBakery.java:208) ~[ModelBakery.class:?]
    at net.minecraftforge.client.model.ModelLoader.getModelBlockDefinition(ModelLoader.java:265) ~[ModelLoader.class:?]
    ... 20 more

 

Edited by Kaelym
grammar problems.
Posted

Threw my stuff at a Json validator, it seems the Blockstate is the problem. Does anyone mind explaining how what is did is wrong so I better understand for future jsons, or have a reference towards this particular instance?

 

Posted
28 minutes ago, Kaelym said:

Caused by: java.io.FileNotFoundException: elypsis:models/blocks/blue_flowerlamp_off.json

Well, in the crash log it looks like you're missing a file. That might be part of the issue.

Posted

thank you, i literally JUST changed that out! the model is still not working though, here is updated json:

 

Spoiler

{
    "forge_marker": 1,
    "defaults": {
        "model": "elypsis:blue_flowerlamp_off"
    },
    "variants": {
        "powered = false": {
            "model": "elypsis:blue_flowerlamp_off"
        },
        "powered = true": {
            "model": "elypsis:blue_flowerlamp_on"
        },
        "normal": [{}],
        "inventory": [{}]
    }
}

 

I'm sure the rest is just a silly mistake.

 

Thank you very much!

 

Posted
Spoiler

[16:39:34] [Client thread/ERROR] [FML]: Could not load vanilla model parent 'elypsis:blocks/blue_flowerlamp_off' for 'net.minecraft.client.renderer.block.model.ModelBlock@de58d71'
net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model elypsis:blocks/blue_flowerlamp_off with loader VanillaLoader.INSTANCE, skipping
    at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:161) ~[ModelLoaderRegistry.class:?]
    at net.minecraftforge.client.model.ModelLoaderRegistry.getModelOrLogError(ModelLoaderRegistry.java:211) [ModelLoaderRegistry.class:?]
    at net.minecraftforge.client.model.ModelLoader$VanillaModelWrapper.getTextures(ModelLoader.java:387) [ModelLoader$VanillaModelWrapper.class:?]
    at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:171) [ModelLoaderRegistry.class:?]
    at net.minecraftforge.client.model.ModelLoader.loadItemModels(ModelLoader.java:302) [ModelLoader.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.loadVariantItemModels(ModelBakery.java:175) [ModelBakery.class:?]
    at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:151) [ModelLoader.class:?]
    at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?]
    at net.minecraft.client.resources.SimpleReloadableResourceManager.registerReloadListener(SimpleReloadableResourceManager.java:121) [SimpleReloadableResourceManager.class:?]
    at net.minecraft.client.Minecraft.init(Minecraft.java:560) [Minecraft.class:?]
    at net.minecraft.client.Minecraft.run(Minecraft.java:422) [Minecraft.class:?]
    at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_191]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_191]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_191]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_191]
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_191]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_191]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_191]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_191]
    at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    at GradleStart.main(GradleStart.java:25) [start/:?]
Caused by: java.io.FileNotFoundException: elypsis:models/blocks/blue_flowerlamp_off.json
    at net.minecraft.client.resources.FallbackResourceManager.getResource(FallbackResourceManager.java:69) ~[FallbackResourceManager.class:?]
    at net.minecraft.client.resources.SimpleReloadableResourceManager.getResource(SimpleReloadableResourceManager.java:65) ~[SimpleReloadableResourceManager.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.loadModel(ModelBakery.java:334) ~[ModelBakery.class:?]
    at net.minecraftforge.client.model.ModelLoader.access$1400(ModelLoader.java:115) ~[ModelLoader.class:?]
    at net.minecraftforge.client.model.ModelLoader$VanillaLoader.loadModel(ModelLoader.java:861) ~[ModelLoader$VanillaLoader.class:?]
    at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:157) ~[ModelLoaderRegistry.class:?]
    ... 23 more
[16:39:37] [Client thread/INFO] [FML]: Max texture size: 16384
[16:39:37] [Client thread/INFO] [minecraft/TextureMap]: Created: 1024x512 textures-atlas
[16:39:38] [Client thread/ERROR] [FML]: Exception loading model for variant elypsis:blue_flowerlamp#normal for blockstate "elypsis:blue_flowerlamp"
net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model elypsis:blue_flowerlamp#normal with loader VariantLoader.INSTANCE, skipping
    at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:161) ~[ModelLoaderRegistry.class:?]
    at net.minecraftforge.client.model.ModelLoader.registerVariant(ModelLoader.java:235) ~[ModelLoader.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.loadBlock(ModelBakery.java:153) ~[ModelBakery.class:?]
    at net.minecraftforge.client.model.ModelLoader.loadBlocks(ModelLoader.java:223) ~[ModelLoader.class:?]
    at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:150) ~[ModelLoader.class:?]
    at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?]
    at net.minecraft.client.resources.SimpleReloadableResourceManager.registerReloadListener(SimpleReloadableResourceManager.java:121) [SimpleReloadableResourceManager.class:?]
    at net.minecraft.client.Minecraft.init(Minecraft.java:560) [Minecraft.class:?]
    at net.minecraft.client.Minecraft.run(Minecraft.java:422) [Minecraft.class:?]
    at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_191]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_191]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_191]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_191]
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_191]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_191]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_191]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_191]
    at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
    at GradleStart.main(GradleStart.java:25) [start/:?]
Caused by: net.minecraftforge.client.model.ModelLoaderRegistry$LoaderException: Exception loading model elypsis:block/blocks/blue_flowerlamp_off with loader VanillaLoader.INSTANCE, skipping
    at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:161) ~[ModelLoaderRegistry.class:?]
    at net.minecraftforge.client.model.ModelLoader$WeightedRandomModel.<init>(ModelLoader.java:658) ~[ModelLoader$WeightedRandomModel.class:?]
    at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1176) ~[ModelLoader$VariantLoader.class:?]
    at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:157) ~[ModelLoaderRegistry.class:?]
    ... 21 more
Caused by: java.io.FileNotFoundException: elypsis:models/block/blocks/blue_flowerlamp_off.json
    at net.minecraft.client.resources.FallbackResourceManager.getResource(FallbackResourceManager.java:69) ~[FallbackResourceManager.class:?]
    at net.minecraft.client.resources.SimpleReloadableResourceManager.getResource(SimpleReloadableResourceManager.java:65) ~[SimpleReloadableResourceManager.class:?]
    at net.minecraft.client.renderer.block.model.ModelBakery.loadModel(ModelBakery.java:334) ~[ModelBakery.class:?]
    at net.minecraftforge.client.model.ModelLoader.access$1400(ModelLoader.java:115) ~[ModelLoader.class:?]
    at net.minecraftforge.client.model.ModelLoader$VanillaLoader.loadModel(ModelLoader.java:861) ~[ModelLoader$VanillaLoader.class:?]
    at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:157) ~[ModelLoaderRegistry.class:?]
    at net.minecraftforge.client.model.ModelLoader$WeightedRandomModel.<init>(ModelLoader.java:658) ~[ModelLoader$WeightedRandomModel.class:?]
    at net.minecraftforge.client.model.ModelLoader$VariantLoader.loadModel(ModelLoader.java:1176) ~[ModelLoader$VariantLoader.class:?]
    at net.minecraftforge.client.model.ModelLoaderRegistry.getModel(ModelLoaderRegistry.java:157) ~[ModelLoaderRegistry.class:?]
    ... 21 more

problem seems easy enough :) just finding the json that's causing the problems again lol.

Posted

there's a lot of lines of code so I will cut out the bulk of it to save time

 

model registry:

Spoiler

package com.kaelym.elypsis.util;

import com.kaelym.elypsis.init.ModItems;
import com.kaelym.elypsis.init.CustLight;
import com.kaelym.elypsis.init.CustomBlocks;
import com.kaelym.elypsis.init.CustomStairs;
import com.kaelym.elypsis.init.ModBlocks;
import com.kaelym.elypsis.blocks.CustomBaseBlocks;
import com.kaelym.elypsis.blocks.CustomLightBlocks;
import com.kaelym.elypsis.blocks.ElypsisGens;
import com.kaelym.elypsis.init.ElypsisGen;

import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.item.Item;
import net.minecraftforge.client.event.ModelRegistryEvent;
import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.relauncher.Side;

@EventBusSubscriber(Side.CLIENT)
public class ModelRegistryHandler {
 

    @SubscribeEvent
    public static void registerModels(ModelRegistryEvent event) {
     //Items
        //Gems
        registerModel(ModItems.AMBER);

 

//L  
        //Lamps
        registerModel(Item.getItemFromBlock(CustLight.BLUE_FLOWERLAMP));
        
        
        //Lily Paneling
        registerModel(Item.getItemFromBlock(CustomBlocks.LILYBLUE_BLOCK));
        registerModel(Item.getItemFromBlock(CustomBlocks.LILYPINK_BLOCK));
        registerModel(Item.getItemFromBlock(CustomBlocks.LILYPURPLE_BLOCK));
        registerModel(Item.getItemFromBlock(CustomBlocks.LILYYELLOW_BLOCK))

 

   //W
        //Wool
        registerModel(Item.getItemFromBlock(ModBlocks.NEW_GREEN_WOOL)); };
    
private static void registerModel(Item item) {
        ModelLoader.setCustomModelResourceLocation(item, 0, new ModelResourceLocation(item.getRegistryName(), "inventory"));
    }
 
}

registry handler:

Spoiler

package com.kaelym.elypsis.util;


import com.kaelym.elypsis.ElypsisMod;
import com.kaelym.elypsis.blocks.BlockBasic;
import com.kaelym.elypsis.blocks.CustomRockPillars;
import com.kaelym.elypsis.blocks.CustStairs;
import com.kaelym.elypsis.blocks.CustomBaseBlocks;
import com.kaelym.elypsis.blocks.CustomLightBlocks;
import com.kaelym.elypsis.blocks.CustomRedstoneLight;
//import com.kaelym.elypsis.blocks.CustomRedstoneLight;
import com.kaelym.elypsis.blocks.GlassBlocks;
import com.kaelym.elypsis.blocks.RockPillars;
import com.kaelym.elypsis.item.ItemBasic;
import com.kaelym.elypsis.init.CustLight;
import com.kaelym.elypsis.init.CustomBlocks;
import com.kaelym.elypsis.init.CustomStairs;
import com.kaelym.elypsis.init.ModBlocks;
import com.kaelym.elypsis.init.ElypsisGen;
import com.kaelym.elypsis.blocks.ElypsisGens;

import net.minecraft.block.Block;
import net.minecraft.block.BlockStone;
import net.minecraft.block.material.Material;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import net.minecraftforge.event.RegistryEvent.Register;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;

@EventBusSubscriber
public class RegistryHandler {

   @SubscribeEvent
   public static void registerBlocks(Register<Block> event) {
       final Block [] blocks = {
        //Item Blocks
               new CustomBaseBlocks(Material.ROCK, "amber_block", "amber_block"),

      //L
               //Lamps
               new CustomRedstoneLight(Material.REDSTONE_LIGHT, "blue_flowerlamp", "blue_flowerlamp"),
                  

              
        //W      
               //Wool
               new ItemBlock(ModBlocks.NEW_GREEN_WOOL).setRegistryName(ModBlocks.NEW_GREEN_WOOL.getRegistryName()),
              
       };
     event.getRegistry().registerAll(items);
     event.getRegistry().registerAll(itemBlocks);
  }}

 

 

Posted

ah, I assumed this "

(Material material, String unlocalizedName, String registryName)" was three, I'll see what I can figure out to fix this problem =3

 

 

Posted

i see, sorry for the miscommunication then. I thought I updated that before my initial post . the full redstone light file is here.

Spoiler

package com.kaelym.elypsis.blocks;

import com.kaelym.elypsis.ElypsisMod;

import net.minecraft.block.BlockRedstoneLight;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;


public class CustomRedstoneLight extends BlockRedstoneLight
{    public CustomRedstoneLight(Material material, String unlocalizedName, String registryName) {
        super(isOn);
        setUnlocalizedName(ElypsisMod.MODID + "." + unlocalizedName);
        setRegistryName(registryName);
        setCreativeTab(ElypsisMod.ElypsisCustom_TAB);
        setSoundType(blockSoundType); }    
    private static boolean isOn;

    public CustomRedstoneLight(boolean isOn)
    {    super(isOn);
        this.isOn = isOn;
        if (isOn)
        { this.setLightLevel(1.0F); }}}
 

after rearranging the way it is coded and putting the boolean line after the constructor it is (mostly) working now. I walked away for coffee and a moment to think about it. thank you for everything you've helped with so far, though.

Posted (edited)

visual representation of current problem. Capture5.PNG.eceddd7450488ff6d0eb95f64411f357.PNG

 

 

updated code: redstonelight

Spoiler

package com.kaelym.elypsis.blocks;

import com.kaelym.elypsis.ElypsisMod;

import net.minecraft.block.BlockRedstoneLight;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;


public class CustomRedstoneLight extends BlockRedstoneLight
{

    private boolean isOn;

    public CustomRedstoneLight(boolean isOn, Material material, String unlocalizedName, String registryName) {
        super(isOn);
        setUnlocalizedName(ElypsisMod.MODID + "." + unlocalizedName);
        setRegistryName(registryName);
        setCreativeTab(ElypsisMod.ElypsisCustom_TAB);
        setSoundType(blockSoundType);

        this.isOn = isOn;
        if (isOn);
        {this.setLightLevel(1.0F);
    
    }    }
}

 

registry

Spoiler

 //Lamps
               new ItemBlock(CustLight.BLUE_FLOWERLAMP).setRegistryName(CustLight.BLUE_FLOWERLAMP.getRegistryName()),
               
                //Lamps
               new CustomRedstoneLight(false, Material.GLASS, "blue_flowerlamp", "blue_flowerlamp"),
                  

model:

Spoiler

  registerModel(Item.getItemFromBlock(CustLight.BLUE_FLOWERLAMP));

CustLight remained the same,

 

new blockstate file:

Spoiler

{
    "forge_marker": 1,
    "defaults": {
        "textures": {
            "all": "elypsis:blocks/blue_flowerlamp_off"
        },
        "model": "cube_all",
        "uvlock": true
    },
    "variants": {
        "powered = false": {
            "model": "elypsis:blocks/blue_flowerlamp_off"
        },
        "powered = true": {
            "model": "elypsis:blocks/blue_flowerlamp_on"
        },
        "normal": [{}],
        "inventory": [{}]
    }
}

block: (trying several, so these will most likely be wrong upon current post. also used two separate ones so you know which I have tried.)

Spoiler

{
    "parent": "elypsis:blocks/blue_flowerlamp_off",

    "variants": {
        "powered = false": {
            "model": "elypsis:blocks/blue_flowerlamp_off"
        },
    }
}

 

{
    "parent": "block/cube_all",
    "textures": {
        "all": "elypsis:blocks/Blue_flowerlamp_on"
    }
}

 

Also, as a note, there are NO errors in my console, including debug mode.

Edited by Kaelym
missed information.
Posted

narrowed down to :

 

 

        "powered = false": {
            "model": "elypsis:blocks/blue_flowerlamp_off"
        },
        "powered = true": {
            "model": "elypsis:blocks/blue_flowerlamp_on"
        },

 

this is not changing the block while powered. Am I using the wrong boolean? or just using the one I have inappropriately?

 

Posted (edited)

Just a clarification on my error:

the block when pulled out of creative looks fine, the item model is fine, and placement (no power ever) looks fine.

 

My problem: once the block is given power, it turns into a redstone lamp, even if you remove power.

 

Sorry if i seem a bit impatient for answers, I've been trying to get this right for a couple weeks now. (before break included)

 

Also, to make changes easier and less likely to mistype, I edited the block in question from blue_flowerlamp to blue_lamp, I found myself typing florwering after a while. ? any instances of flowerlamp you find, are gone in my base code and if you find one in my github feel free to point it out so i can change it to what it is supposed to be.

Edited by Kaelym
Posted

public class CustomRedstoneLight extends BlockRedstoneLight

{

private boolean isOn;

public CustomRedstoneLight(boolean isOn, Material material, String unlocalizedName, String registryName) {

super(isOn);

setUnlocalizedName(ElypsisMod.MODID + "." + unlocalizedName);

setRegistryName(registryName);

setCreativeTab(ElypsisMod.ElypsisCustom_TAB);

setSoundType(blockSoundType);

this.isOn = isOn;

if (isOn);

{this.setLightLevel(1.0F);

} }

}

You're not overriding wherever the redstone lamp sets its block state to "on".

  • Thanks 1

About Me

Spoiler

My Discord - Cadiboo#8887

My WebsiteCadiboo.github.io

My ModsCadiboo.github.io/projects

My TutorialsCadiboo.github.io/tutorials

Versions below 1.14.4 are no longer supported on this forum. Use the latest version to receive support.

When asking support remember to include all relevant log files (logs are found in .minecraft/logs/), code if applicable and screenshots if possible.

Only download mods from trusted sites like CurseForge (minecraft.curseforge.com). A list of bad sites can be found here, with more information available at stopmodreposts.org

Edit your own signature at www.minecraftforge.net/forum/settings/signature/ (Make sure to check its compatibility with the Dark Theme)

Posted (edited)
Quote

   public void onBlockAdded(World worldIn, BlockPos pos, IBlockState state)
    {
        if (!worldIn.isRemote)
        {
            if (this.isOn && !worldIn.isBlockPowered(pos))
            {
                worldIn.setBlockState(pos, Blocks.REDSTONE_LAMP.getDefaultState(), 2);
            }
            else if (!this.isOn && worldIn.isBlockPowered(pos))
            {
                worldIn.setBlockState(pos, Blocks.LIT_REDSTONE_LAMP.getDefaultState(), 2);
            }
        }
    }

    /**
     * Called when a neighboring block was changed and marks that this state should perform any checks during a neighbor
     * change. Cases may include when redstone power is updated, cactus blocks popping off due to a neighboring solid
     * block, etc.
     */
    public void neighborChanged(IBlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos)
    {
        if (!worldIn.isRemote)
        {
            if (this.isOn && !worldIn.isBlockPowered(pos))
            {
                worldIn.scheduleUpdate(pos, this, 4);
            }
            else if (!this.isOn && worldIn.isBlockPowered(pos))
            {
                worldIn.setBlockState(pos, Blocks.LIT_REDSTONE_LAMP.getDefaultState(), 2);
            }
        }
    }

    public void updateTick(World worldIn, BlockPos pos, IBlockState state, Random rand)
    {
        if (!worldIn.isRemote)
        {
            if (this.isOn && !worldIn.isBlockPowered(pos))
            {
                worldIn.setBlockState(pos, Blocks.REDSTONE_LAMP.getDefaultState(), 2);
            }
        }
    }

    /**
     * Get the Item that this Block should drop when harvested.
     */

Am I right in assuming this is what I need to be Overriding, or is there a better reference I can <should> be looking at? I'm getting a lot of errors over void, no imports available for updateTick etc... If this isn't it Ii'll continue my pursuits down the rabbit hole, gotta land eventually!

Edited by Kaelym
Posted (edited)

Yes, the last post was what I needed. however... New problem! My block is stuck in 'on'. What do I need to turn it off? or at least a reference to what I need to look at, to turn it off.

 

Sorry, i'm a problem child! if there's an error that can be done, I'll find it at least once.  =]

 

 

.Class:

CustomRedstoneLight.Class

CustLight.class

 

Handlers:

ModelRegistryHandler

RegistryHandler

 

Json:

Blockstates

Models

 

I will continue flipping through the reference and see if I have a "Eureka!" moment.

Edited by Kaelym
fixed one of the two problems (lighting)
Posted

try stepping through your code with the debugger

  • Thanks 1

About Me

Spoiler

My Discord - Cadiboo#8887

My WebsiteCadiboo.github.io

My ModsCadiboo.github.io/projects

My TutorialsCadiboo.github.io/tutorials

Versions below 1.14.4 are no longer supported on this forum. Use the latest version to receive support.

When asking support remember to include all relevant log files (logs are found in .minecraft/logs/), code if applicable and screenshots if possible.

Only download mods from trusted sites like CurseForge (minecraft.curseforge.com). A list of bad sites can be found here, with more information available at stopmodreposts.org

Edit your own signature at www.minecraftforge.net/forum/settings/signature/ (Make sure to check its compatibility with the Dark Theme)

Posted

Hi, I quickly took a glance at your code, my first shot (brief look) is that " this.isOn" is not reset to false in your updatetick method when you set the blockstate to unpowered again.

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

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