Jump to content

PhilipChonacky

Members
  • Posts

    76
  • Joined

  • Last visited

Everything posted by PhilipChonacky

  1. OK, So to answer my own question, the Entity Renderer gets registered in FMLClientSetupEvent, which runs specifically on the client and right after FMLCommonSetupEvent (PreInit). I've been up and down my code and can't find anything wrong, but I'm still spawning vanilla chickens (with slightly different behavior) [repository updated] Latest log below: [08Jun2019 21:03:29.937] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher running: args [--gameDir, ., --launchTarget, fmluserdevclient, --fml.mcpVersion, 20190213.203750, --fml.mcVersion, 1.13.2, --fml.forgeGroup, net.minecraftforge, --fml.forgeVersion, 25.0.215, --version, MOD_DEV, --assetIndex, 1.13.1, --assetsDir, /home/philip/.gradle/caches/forge_gradle/assets, --username, Dev, --accessToken, ❄❄❄❄❄❄❄❄, --userProperties, {}] [08Jun2019 21:03:29.949] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher starting: java version 1.8.0_212 [08Jun2019 21:03:30.408] [main/INFO] [net.minecraftforge.fml.loading.FixSSL/CORE]: Added Lets Encrypt root certificates as additional trust [08Jun2019 21:03:31.581] [main/INFO] [cpw.mods.modlauncher.LaunchServiceHandler/MODLAUNCHER]: Launching target 'fmluserdevclient' with arguments [--version, MOD_DEV, --gameDir, ., --assetsDir, /home/philip/.gradle/caches/forge_gradle/assets, --assetIndex, 1.13.1, --username, Dev, --accessToken, ❄❄❄❄❄❄❄❄, --userProperties, {}] [08Jun2019 21:03:38.402] [Client thread/INFO] [net.minecraft.client.Minecraft/]: Setting user: Dev [08Jun2019 21:03:51.381] [Client thread/WARN] [net.minecraft.client.GameSettings/]: Skipping bad option: lastServer: [08Jun2019 21:03:51.458] [Client thread/INFO] [net.minecraft.client.Minecraft/]: LWJGL Version: 3.1.6 build 14 [08Jun2019 21:03:52.946] [Client thread/INFO] [net.minecraftforge.fml.ModLoader/CORE]: Loading Network data for FML net version: FML2 [08Jun2019 21:03:53.147] [modloading-worker-0/INFO] [net.minecraftforge.common.ForgeMod/FORGEMOD]: Forge mod loading, version 25.0.215, for MC 1.13.2 with MCP 20190213.203750 [08Jun2019 21:03:53.148] [modloading-worker-0/INFO] [net.minecraftforge.common.MinecraftForge/FORGE]: MinecraftForge v25.0.215 Initialized [08Jun2019 21:03:53.673] [Thread-1/FATAL] [net.minecraftforge.common.ForgeConfig/CORE]: Forge config just got changed on the file system! [08Jun2019 21:03:53.674] [Thread-1/FATAL] [net.minecraftforge.common.ForgeConfig/CORE]: Forge config just got changed on the file system! [08Jun2019 21:03:53.954] [Forge Version Check/INFO] [net.minecraftforge.fml.VersionChecker/]: [forge] Starting version check at https://files.minecraftforge.net/maven/net/minecraftforge/forge/promotions_slim.json [08Jun2019 21:03:54.228] [Client thread/INFO] [net.minecraft.resources.SimpleReloadableResourceManager/]: Reloading ResourceManager: main, forge-1.13.2-25.0.215_mapped_snapshot_20180921-1.13-recomp.jar, Default [08Jun2019 21:03:55.056] [Forge Version Check/INFO] [net.minecraftforge.fml.VersionChecker/]: [forge] Found status: BETA_OUTDATED Current: 25.0.215 Target: 25.0.219 [08Jun2019 21:03:55.063] [Forge Version Check/INFO] [net.minecraftforge.fml.VersionChecker/]: [chicken_mod] Starting version check at http://myurl.me/ [08Jun2019 21:03:55.893] [Forge Version Check/WARN] [net.minecraftforge.fml.VersionChecker/]: Failed to process update information java.io.IOException: Server returned HTTP response code: 400 for URL: http://myurl.me/ at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_212] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_212] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_212] at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_212] at sun.net.www.protocol.http.HttpURLConnection$10.run(HttpURLConnection.java:1944) ~[?:1.8.0_212] at sun.net.www.protocol.http.HttpURLConnection$10.run(HttpURLConnection.java:1939) ~[?:1.8.0_212] at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_212] at sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1938) ~[?:1.8.0_212] at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1508) ~[?:1.8.0_212] at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492) ~[?:1.8.0_212] at net.minecraftforge.fml.VersionChecker$1.openUrlStream(VersionChecker.java:173) ~[?:?] at net.minecraftforge.fml.VersionChecker$1.process(VersionChecker.java:190) ~[?:?] at java.lang.Iterable.forEach(Iterable.java:75) [?:1.8.0_212] at net.minecraftforge.fml.VersionChecker$1.run(VersionChecker.java:141) [?:?] Caused by: java.io.IOException: Server returned HTTP response code: 400 for URL: http://myurl.me/ at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1894) ~[?:1.8.0_212] at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492) ~[?:1.8.0_212] at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480) ~[?:1.8.0_212] at net.minecraftforge.fml.VersionChecker$1.openUrlStream(VersionChecker.java:157) ~[?:?] ... 3 more [08Jun2019 21:03:56.664] [Sound Library Loader/INFO] [net.minecraft.client.audio.SoundManager/]: Starting up SoundSystem version 201809301515... [08Jun2019 21:03:56.920] [Thread-5/INFO] [net.minecraft.client.audio.SoundManager/]: Initializing No Sound [08Jun2019 21:03:56.921] [Thread-5/INFO] [net.minecraft.client.audio.SoundManager/]: (Silent Mode) [08Jun2019 21:03:57.568] [Thread-5/INFO] [net.minecraft.client.audio.SoundManager/]: OpenAL initialized. [08Jun2019 21:03:57.571] [Sound Library Loader/INFO] [net.minecraft.client.audio.SoundManager/SOUNDS]: Preloading sound minecraft:sounds/ambient/underwater/underwater_ambience.ogg [08Jun2019 21:03:57.575] [Sound Library Loader/INFO] [net.minecraft.client.audio.SoundManager/SOUNDS]: Sound engine started [08Jun2019 21:04:05.524] [Client thread/INFO] [net.minecraft.client.renderer.texture.TextureMap/]: Max texture size: 4096 [08Jun2019 21:04:08.509] [Client thread/INFO] [net.minecraft.client.renderer.texture.TextureMap/]: Created: 512x512 textures-atlas [08Jun2019 21:04:14.568] [Client thread/WARN] [net.minecraft.client.GameSettings/]: Skipping bad option: lastServer: [08Jun2019 21:04:14.703] [Client thread/INFO] [com.mojang.text2speech.NarratorLinux/]: Narrator library successfully loaded [08Jun2019 21:04:15.132] [Realms Notification Availability checker #1/INFO] [com.mojang.realmsclient.client.RealmsClient/]: Could not authorize you against Realms server: Invalid session id [08Jun2019 21:04:25.610] [Thread-5/ERROR] [net.minecraft.client.audio.SoundManager/]: Error in class 'Source' [08Jun2019 21:04:25.614] [Thread-5/ERROR] [net.minecraft.client.audio.SoundManager/]: Channel null in method 'stop' [08Jun2019 21:04:25.614] [Thread-5/ERROR] [net.minecraft.client.audio.SoundManager/]: Error in class 'Source' [08Jun2019 21:04:25.614] [Thread-5/ERROR] [net.minecraft.client.audio.SoundManager/]: Channel null in method 'stop' [08Jun2019 21:04:27.659] [Client thread/WARN] [net.minecraft.command.Commands/]: Ambiguity between arguments [teleport, destination] and [teleport, targets] with inputs: [Player, 0123, @e, dd12be42-52a9-4a91-a8a1-11c01849e498] [08Jun2019 21:04:27.660] [Client thread/WARN] [net.minecraft.command.Commands/]: Ambiguity between arguments [teleport, location] and [teleport, destination] with inputs: [0.1 -0.5 .9, 0 0 0] [08Jun2019 21:04:27.661] [Client thread/WARN] [net.minecraft.command.Commands/]: Ambiguity between arguments [teleport, location] and [teleport, targets] with inputs: [0.1 -0.5 .9, 0 0 0] [08Jun2019 21:04:27.662] [Client thread/WARN] [net.minecraft.command.Commands/]: Ambiguity between arguments [teleport, targets] and [teleport, destination] with inputs: [Player, 0123, dd12be42-52a9-4a91-a8a1-11c01849e498] [08Jun2019 21:04:27.663] [Client thread/WARN] [net.minecraft.command.Commands/]: Ambiguity between arguments [teleport, targets, location] and [teleport, targets, destination] with inputs: [0.1 -0.5 .9, 0 0 0] [08Jun2019 21:04:27.853] [Client thread/INFO] [net.minecraft.item.crafting.RecipeManager/]: Loaded 0 recipes [08Jun2019 21:04:27.869] [Client thread/INFO] [net.minecraft.advancements.AdvancementList/]: Loaded 0 advancements [08Jun2019 21:04:27.995] [Server thread/INFO] [net.minecraft.server.integrated.IntegratedServer/]: Starting integrated minecraft server version 1.13.2 [08Jun2019 21:04:27.997] [Server thread/INFO] [net.minecraft.server.integrated.IntegratedServer/]: Generating keypair [08Jun2019 21:04:28.321] [Thread-1/FATAL] [net.minecraftforge.common.ForgeConfig/CORE]: Forge config just got changed on the file system! [08Jun2019 21:04:28.365] [Server thread/INFO] [net.minecraftforge.registries.GameData/REGISTRIES]: Injecting existing registry data into this SERVER instance [08Jun2019 21:04:28.534] [Server thread/INFO] [net.minecraftforge.registries.ForgeRegistry/REGISTRIES]: Registry Block: Found a missing id from the world minecraft:test_block [08Jun2019 21:04:29.184] [Server thread/INFO] [net.minecraft.resources.SimpleReloadableResourceManager/]: Reloading ResourceManager: main, Default, forge-1.13.2-25.0.215_mapped_snapshot_20180921-1.13-recomp.jar [08Jun2019 21:04:30.171] [Server thread/INFO] [net.minecraft.item.crafting.RecipeManager/]: Loaded 524 recipes [08Jun2019 21:04:31.188] [Server thread/INFO] [net.minecraft.advancements.AdvancementList/]: Loaded 571 advancements [08Jun2019 21:04:31.722] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Preparing start region for dimension minecraft:overworld [08Jun2019 21:04:32.113] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Preparing spawn area: 4% [08Jun2019 21:04:32.319] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Preparing spawn area: 8% [08Jun2019 21:04:32.404] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Preparing spawn area: 12% [08Jun2019 21:04:32.496] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Preparing spawn area: 16% [08Jun2019 21:04:32.579] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Preparing spawn area: 20% [08Jun2019 21:04:32.668] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Preparing spawn area: 24% [08Jun2019 21:04:32.760] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Preparing spawn area: 28% [08Jun2019 21:04:32.807] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Preparing spawn area: 32% [08Jun2019 21:04:32.842] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Preparing spawn area: 36% [08Jun2019 21:04:32.880] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Preparing spawn area: 40% [08Jun2019 21:04:33.018] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Preparing spawn area: 44% [08Jun2019 21:04:33.161] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Preparing spawn area: 48% [08Jun2019 21:04:33.319] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Preparing spawn area: 52% [08Jun2019 21:04:33.425] [Server thread/WARN] [net.minecraft.world.WorldServer/]: Keeping entity minecraft:chicken that already exists with UUID a5be0894-2fa4-4b52-952c-6c3fb640cb54 [08Jun2019 21:04:33.465] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Preparing spawn area: 56% [08Jun2019 21:04:33.522] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Preparing spawn area: 60% [08Jun2019 21:04:33.676] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Preparing spawn area: 64% [08Jun2019 21:04:33.757] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Preparing spawn area: 68% [08Jun2019 21:04:33.833] [Server thread/WARN] [net.minecraft.world.WorldServer/]: Keeping entity minecraft:pig that already exists with UUID c0b45209-cd3d-426d-9310-6b4806371ae0 [08Jun2019 21:04:33.874] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Preparing spawn area: 72% [08Jun2019 21:04:33.929] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Preparing spawn area: 76% [08Jun2019 21:04:34.029] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Preparing spawn area: 80% [08Jun2019 21:04:34.110] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Preparing spawn area: 84% [08Jun2019 21:04:36.094] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Preparing spawn area: 88% [08Jun2019 21:04:36.137] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Preparing spawn area: 92% [08Jun2019 21:04:36.185] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Preparing spawn area: 96% [08Jun2019 21:04:36.317] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Preparing spawn area: 100% [08Jun2019 21:04:36.317] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Time elapsed: 4594 ms [08Jun2019 21:04:37.251] [Server thread/INFO] [net.minecraft.server.integrated.IntegratedServer/]: Changing view distance to 12, from 10 [08Jun2019 21:04:39.884] [Netty Local Client IO #0/INFO] [net.minecraftforge.fml.network.NetworkHooks/]: Connected to a modded server. [08Jun2019 21:04:40.411] [Server thread/INFO] [net.minecraft.server.management.PlayerList/]: Dev[local:E:cf465c7f] logged in with entity id 312 at (-286.39401927871864, 79.0, -510.7622744925549) [08Jun2019 21:04:40.457] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Dev joined the game [08Jun2019 21:04:43.712] [Server thread/WARN] [net.minecraft.server.MinecraftServer/]: Can't keep up! Is the server overloaded? Running 5469ms or 109 ticks behind [08Jun2019 21:04:45.605] [Server thread/INFO] [net.minecraft.server.integrated.IntegratedServer/]: Saving and pausing game... [08Jun2019 21:04:45.623] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Saving chunks for level 'New World'/minecraft:overworld [08Jun2019 21:04:48.289] [Client thread/INFO] [net.minecraft.advancements.AdvancementList/]: Loaded 0 advancements [08Jun2019 21:04:49.397] [pool-5-thread-1/WARN] [com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService/]: Couldn't look up profile properties for com.mojang.authlib.GameProfile@2fabf2d[id=380df991-f603-344c-a090-369bad2a924a,name=Dev,properties={},legacy=false] com.mojang.authlib.exceptions.AuthenticationException: The client has sent too many requests within a certain amount of time at com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService.makeRequest(YggdrasilAuthenticationService.java:79) ~[authlib-1.5.25.jar:?] at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService.fillGameProfile(YggdrasilMinecraftSessionService.java:180) ~[authlib-1.5.25.jar:?] at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService$1.load(YggdrasilMinecraftSessionService.java:60) ~[authlib-1.5.25.jar:?] at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService$1.load(YggdrasilMinecraftSessionService.java:57) ~[authlib-1.5.25.jar:?] at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3716) ~[guava-21.0.jar:?] at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2424) ~[guava-21.0.jar:?] at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2298) ~[guava-21.0.jar:?] at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2211) ~[guava-21.0.jar:?] at com.google.common.cache.LocalCache.get(LocalCache.java:4154) ~[guava-21.0.jar:?] at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4158) ~[guava-21.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:5147) ~[guava-21.0.jar:?] at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:5153) ~[guava-21.0.jar:?] at com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService.fillProfileProperties(YggdrasilMinecraftSessionService.java:170) ~[authlib-1.5.25.jar:?] at net.minecraft.client.Minecraft.getProfileProperties(Minecraft.java:1909) ~[?:?] at net.minecraft.client.resources.SkinManager.lambda$loadProfileTextures$1(SkinManager.java:111) ~[?:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_212] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_212] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_212] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_212] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_212] [08Jun2019 21:05:10.747] [Server thread/WARN] [net.minecraft.server.MinecraftServer/]: Can't keep up! Is the server overloaded? Running 12054ms or 241 ticks behind [08Jun2019 21:05:27.820] [Server thread/WARN] [net.minecraft.server.MinecraftServer/]: Can't keep up! Is the server overloaded? Running 2027ms or 40 ticks behind [08Jun2019 21:05:29.904] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: [Dev: Summoned new Chicken] [08Jun2019 21:05:29.932] [Client thread/INFO] [net.minecraft.client.gui.GuiNewChat/]: [CHAT] Summoned new Chicken [08Jun2019 21:05:35.419] [Server thread/INFO] [net.minecraft.server.integrated.IntegratedServer/]: Saving and pausing game... [08Jun2019 21:05:35.437] [Server thread/INFO] [net.minecraft.server.MinecraftServer/]: Saving chunks for level 'New World'/minecraft:overworld [08Jun2019 21:05:36.250] [Client thread/INFO] [net.minecraft.client.Minecraft/]: Stopping! [08Jun2019 21:05:37.223] [Client thread/INFO] [net.minecraft.client.audio.SoundManager/]: SoundSystem shutting down... [08Jun2019 21:05:37.234] [Client thread/INFO] [net.minecraft.client.audio.SoundManager/]: SoundSystem Author: Paul Lamb, www.paulscode.com Log is below:
  2. ...and is there any documentation regarding all these new events? I was able to infer some of them from the ExampleMod, but I suspect that list isn't complete.
  3. https://github.com/pchonacky/randombits/blob/893d9786203126e4f62c5dc878868f5e3193f192/src/main/java/net/chonacky/minecraft/mod/chicken_mod/ChickenMod.java#L81 Sorry, bad form leaving the TODO there. Should I be registering there? I put it in the preinit Event
  4. Hi, I posted this in the bottom of another topic, but since there were no responses, so I imagine it was already stale. I having problems adding a custom entity (that I had previously working under 12.2) I have an entity (extended from EntityChicken + some code borrowed from vanilla horse class) with a custom renderer and model. It looks like the entity gets registered as it I can do a "/summon chicken_mod:protochicken" in-game, but what I get is a normal vanilla chicken (as identified when targeted in debug screen), albeit with some of the behaviors I'm trying to add (for instance riding like a saddled horse) My code in its entirety can be found here: https://github.com/pchonacky/randombits.git, but I will include the important bits below for brevity. Any help is appreciated. /Philip Rendering Registration: private void setup(final FMLCommonSetupEvent event) { DistExecutor.runWhenOn( Dist.CLIENT, () -> () -> RenderingRegistry.registerEntityRenderingHandler(EntityProtoChicken.class,RenderProtoChicken :: new) ); } Entity Registration (edited sightly for brevity): @Mod.EventBusSubscriber(modid=ChickenMod.MODID, bus=Mod.EventBusSubscriber.Bus.MOD) @ObjectHolder(ChickenMod.MODID) public static class RegistryEvents { //Register Entities @SubscribeEvent public static void onEntitiesRegistry(final RegistryEvent.Register<EntityType<?>> entityRegistryEvent) { entityRegistryEvent.getRegistry().registerAll( EntityType.Builder.create(EntityProtoChicken.class, EntityProtoChicken::new) .tracker(60, 24, true).disableSerialization().build("protochicken").setRegistryName(MODID, "protochicken") ); } } //RegistryEvents class Custom Entity: package net.chonacky.minecraft.mod.chicken_mod; import javax.annotation.Nullable; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.passive.EntityChicken; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.EnumHand; import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; public class EntityProtoChicken extends EntityChicken { public EntityProtoChicken(World worldIn) { super(worldIn); this.setSize(2.5F, 5.0F); this.setBoundingBox(this.getBoundingBox().offset(0, 0, 25)); this.stepHeight = 2.1F; // this.jumpPower = 0.0F; // this.isJumping = false; } @Override public float getEyeHeight() { return super.getEyeHeight()-0.5F; } @Override public void livingTick() { super.livingTick(); if (this.world.isRemote && this.dataManager.isDirty()) { this.dataManager.setClean(); } } @Override public boolean processInteract(EntityPlayer player, EnumHand hand) { this.mountTo(player); super.processInteract(player, hand); return true; } protected void mountTo(EntityPlayer player) { player.rotationYaw = this.rotationYaw; player.rotationPitch = this.rotationPitch; if (!this.world.isRemote) player.startRiding(this); } @Override public void updatePassenger(Entity passenger) { super.updatePassenger(passenger); float f = MathHelper.sin(this.renderYawOffset * 0.017453292F); float f1 = MathHelper.cos(this.renderYawOffset * 0.017453292F); //unused float f2 = 0.1F; //unused float f3 = 0.0F; passenger.setPosition( this.posX + (double)(0.1F * f), this.posY + (double)(this.height * 0.35F) + passenger.getYOffset() + 0.0D, this.posZ - (double)(0.1F * f1) ); if (passenger instanceof EntityLivingBase) ((EntityLivingBase)passenger).renderYawOffset = this.renderYawOffset; } @Override public void travel(float strafe, float vertical, float forward) { if (this.isBeingRidden() && this.canBeSteered() ) { //&& this.isHorseSaddled() EntityLivingBase controllingPassenger = (EntityLivingBase)this.getControllingPassenger(); this.rotationYaw = controllingPassenger.rotationYaw; this.prevRotationYaw = this.rotationYaw; this.rotationPitch = controllingPassenger.rotationPitch * 0.5F; this.setRotation(this.rotationYaw, this.rotationPitch); this.renderYawOffset = this.rotationYaw; this.rotationYawHead = this.renderYawOffset; strafe = controllingPassenger.moveStrafing * 0.5F; forward = controllingPassenger.moveForward; if (forward <= 0.0F) forward *= 0.25F; this.jumpMovementFactor = this.getAIMoveSpeed() * 0.1F; if (this.canPassengerSteer()) { this.setAIMoveSpeed((float)this.getAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).getValue()); super.travel(strafe, vertical, forward); } else if (controllingPassenger instanceof EntityPlayer) { this.motionX = 0.0D; this.motionY = 0.0D; this.motionZ = 0.0D; } if (this.onGround) this.isJumping = false; } else { this.jumpMovementFactor = 0.02F; super.travel(strafe, vertical, forward); } } @Override public boolean canBeSteered() { return this.getControllingPassenger() instanceof EntityLivingBase; } @Override @Nullable public Entity getControllingPassenger() { return this.getPassengers().isEmpty() ? null : (Entity)this.getPassengers().get(0); } } Custom Model: package net.chonacky.minecraft.mod.chicken_mod; import net.minecraft.client.renderer.entity.model.ModelBase; import net.minecraft.client.renderer.entity.model.ModelRenderer; import net.minecraft.entity.Entity; import net.minecraft.util.math.MathHelper; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @OnlyIn(Dist.CLIENT) public class ModelProtoChicken extends ModelBase { public ModelRenderer head; public ModelRenderer body; public ModelRenderer rightLeg; public ModelRenderer leftLeg; public ModelRenderer rightShin; public ModelRenderer leftShin; public ModelRenderer leftFoot; public ModelRenderer rightFoot; public ModelProtoChicken() { this.textureWidth = 132; this.textureHeight = 64; this.head = new ModelRenderer(this, 0, 16); this.head.addBox(-8.0F, -8.0F, -8.0F, 16, 8, 16, 5.0F); this.head.setRotationPoint(0.0F, -42.0F, 0.0F); this.body = new ModelRenderer(this, 0, 0); this.body.addBox(-16.0F, -16.0F, -16.0F, 32, 32, 32, 5.0F); this.body.setRotationPoint(0.0F, -23.0F, 0.0F); this.leftLeg = new ModelRenderer(this, 128,32); this.leftLeg.addBox(0.0F, 0.5F, 0.0F, 1, 13, 1 , 3.0F); this.leftLeg.setRotationPoint(20.0F, 0.0F, -24.0F); this.body.addChild(this.leftLeg); this.leftShin = new ModelRenderer(this, 128,32); this.leftShin.addBox(0.0F, -0.5F, 0.0F, 1, 13, 1, 3.0F); this.leftShin.setRotationPoint(0.0F, 12.0F, 0.0F); this.leftLeg.addChild(this.leftShin); this.leftFoot = new ModelRenderer(this,128,32); this.leftFoot.addBox(0.0F, 1.0F, -0.0F, 1, 4, 1, 3.0F); this.leftFoot.setRotationPoint(0.0F, 14.0F, 0.0F); this.leftShin.addChild(this.leftFoot); this.rightLeg = new ModelRenderer(this, 128,32); this.rightLeg.addBox(0.0F, 0.5F, 0.0F, 1, 13, 1 , 3.0F); this.rightLeg.setRotationPoint(-20.0F, 0.0F, -24.0F); this.body.addChild(this.rightLeg); this.rightShin = new ModelRenderer(this, 128,32); this.rightShin.addBox(0.0F, -0.5F, 0.0F, 1, 13, 1, 3.0F); this.rightShin.setRotationPoint(0.0F, 12.0F, 0.0F); this.rightLeg.addChild(this.rightShin); this.rightFoot = new ModelRenderer(this,128,32); this.rightFoot.addBox(0.0F, 1.0F, -0.0F, 1, 4, 1, 3.0F); this.rightFoot.setRotationPoint(0.0F, 14.0F, 0.0F); this.rightShin.addChild(this.rightFoot); // } /** * Sets the models various rotation angles then renders the model. */ @Override public void render(Entity entityIn, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scale) { this.setRotationAngles(limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scale, entityIn); this.head.render(scale); this.body.render(scale); } /** * Sets the model's various rotation angles. For bipeds, par1 and par2 are used for animating the movement of arms * and legs, where par1 represents the time(so that arms and legs swing back and forth) and par2 represents how * "far" arms and legs can swing at most. */ @Override public void setRotationAngles(float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scaleFactor, Entity entityIn) { this.head.rotateAngleX = headPitch * 0.017453292F; this.head.rotateAngleY = netHeadYaw * 0.017453292F; this.body.rotateAngleX = ((float)Math.PI / 2F); this.leftLeg.rotateAngleX = (MathHelper.cos(limbSwing * 0.6662F + (float)Math.PI) * 1.4F * limbSwingAmount) -((float)Math.PI/4); this.leftShin.rotateAngleX = -(MathHelper.cos(limbSwing * 0.6662F + (float)Math.PI) * 1.4F * limbSwingAmount) -((float)Math.PI/2); this.leftFoot.rotateAngleX = -((float)Math.PI/4) ; this.rightLeg.rotateAngleX = -(MathHelper.cos(limbSwing * 0.6662F + (float)Math.PI) * 1.4F * limbSwingAmount) -((float)Math.PI/4); this.rightShin.rotateAngleX = +(MathHelper.cos(limbSwing * 0.6662F + (float)Math.PI) * 1.4F * limbSwingAmount) -((float)Math.PI/2); this.rightFoot.rotateAngleX = -((float)Math.PI/4) ; // this.rightWing.rotateAngleZ = ageInTicks; // this.leftWing.rotateAngleZ = -ageInTicks; } } Custom Renderer: package net.chonacky.minecraft.mod.chicken_mod; import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.MathHelper; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @OnlyIn(Dist.CLIENT) public class RenderProtoChicken extends RenderLiving<EntityProtoChicken> { private static final ResourceLocation PROTOCHICKEN_TEXTURES = new ResourceLocation(ChickenMod.MODID+":textures/entity/byhut.png"); //"chicken:textures/entity/checker.png" // public RenderLiving(RenderManager rendermanagerIn, ModelBase modelbaseIn, float shadowsizeIn) public RenderProtoChicken(RenderManager manager) { super(manager, new ModelProtoChicken(), 1.75F); } @Override protected ResourceLocation getEntityTexture(EntityProtoChicken entity) { return PROTOCHICKEN_TEXTURES; } /** * Defines what float the third param in setRotationAngles of ModelBase is */ @Override protected float handleRotationFloat(EntityProtoChicken livingBase, float partialTicks) { float f = livingBase.oFlap + (livingBase.wingRotation - livingBase.oFlap) * partialTicks; float f1 = livingBase.oFlapSpeed + (livingBase.destPos - livingBase.oFlapSpeed) * partialTicks; return (MathHelper.sin(f) + 1.0F) * f1; } @Override public void doRender(EntityProtoChicken entity, double x, double y, double z, float entityYaw, float partialTicks) { if (entity.isInWater()) { super.doRender(entity, x, (y-1.0D), z, entityYaw, partialTicks); } else { super.doRender(entity, x, y, z, entityYaw, partialTicks); } if (!this.renderOutlines) { this.renderLeash(entity, x, y, z, entityYaw, partialTicks); } } }
  5. This is what the custom entity should look like [from 12.2]:
  6. I too am having problems adding a custom entity (that I had previously working under 12.2) I have an entity (extended from EntityChicken + some code borrowed from vanilla horse class) with a custom renderer and model. It looks like the entity gets registered as it I can do a "/summon chicken_mod:protochicken" in-game, but what I get is a normal vanilla chicken (as identified when targeted in debug screen), albeit with some of the behaviors I'm trying to add (for instance riding like a saddled horse) My code in its entirety can be found here: https://github.com/pchonacky/randombits.git, but I will include the important bits below for brevity. Any help is appreciated. /Philip Rendering Registration: private void setup(final FMLCommonSetupEvent event) { DistExecutor.runWhenOn( Dist.CLIENT, () -> () -> RenderingRegistry.registerEntityRenderingHandler(EntityProtoChicken.class,RenderProtoChicken :: new) ); } Entity Registration (edited sightly for brevity): @Mod.EventBusSubscriber(modid=ChickenMod.MODID, bus=Mod.EventBusSubscriber.Bus.MOD) @ObjectHolder(ChickenMod.MODID) public static class RegistryEvents { //Register Entities @SubscribeEvent public static void onEntitiesRegistry(final RegistryEvent.Register<EntityType<?>> entityRegistryEvent) { entityRegistryEvent.getRegistry().registerAll( EntityType.Builder.create(EntityProtoChicken.class, EntityProtoChicken::new) .tracker(60, 24, true).disableSerialization().build("protochicken").setRegistryName(MODID, "protochicken") ); } } //RegistryEvents class Custom Entity: package net.chonacky.minecraft.mod.chicken_mod; import javax.annotation.Nullable; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.passive.EntityChicken; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.EnumHand; import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; public class EntityProtoChicken extends EntityChicken { public EntityProtoChicken(World worldIn) { super(worldIn); this.setSize(2.5F, 5.0F); this.setBoundingBox(this.getBoundingBox().offset(0, 0, 25)); this.stepHeight = 2.1F; // this.jumpPower = 0.0F; // this.isJumping = false; } @Override public float getEyeHeight() { return super.getEyeHeight()-0.5F; } @Override public void livingTick() { super.livingTick(); if (this.world.isRemote && this.dataManager.isDirty()) { this.dataManager.setClean(); } } @Override public boolean processInteract(EntityPlayer player, EnumHand hand) { this.mountTo(player); super.processInteract(player, hand); return true; } protected void mountTo(EntityPlayer player) { player.rotationYaw = this.rotationYaw; player.rotationPitch = this.rotationPitch; if (!this.world.isRemote) player.startRiding(this); } @Override public void updatePassenger(Entity passenger) { super.updatePassenger(passenger); float f = MathHelper.sin(this.renderYawOffset * 0.017453292F); float f1 = MathHelper.cos(this.renderYawOffset * 0.017453292F); //unused float f2 = 0.1F; //unused float f3 = 0.0F; passenger.setPosition( this.posX + (double)(0.1F * f), this.posY + (double)(this.height * 0.35F) + passenger.getYOffset() + 0.0D, this.posZ - (double)(0.1F * f1) ); if (passenger instanceof EntityLivingBase) ((EntityLivingBase)passenger).renderYawOffset = this.renderYawOffset; } @Override public void travel(float strafe, float vertical, float forward) { if (this.isBeingRidden() && this.canBeSteered() ) { //&& this.isHorseSaddled() EntityLivingBase controllingPassenger = (EntityLivingBase)this.getControllingPassenger(); this.rotationYaw = controllingPassenger.rotationYaw; this.prevRotationYaw = this.rotationYaw; this.rotationPitch = controllingPassenger.rotationPitch * 0.5F; this.setRotation(this.rotationYaw, this.rotationPitch); this.renderYawOffset = this.rotationYaw; this.rotationYawHead = this.renderYawOffset; strafe = controllingPassenger.moveStrafing * 0.5F; forward = controllingPassenger.moveForward; if (forward <= 0.0F) forward *= 0.25F; this.jumpMovementFactor = this.getAIMoveSpeed() * 0.1F; if (this.canPassengerSteer()) { this.setAIMoveSpeed((float)this.getAttribute(SharedMonsterAttributes.MOVEMENT_SPEED).getValue()); super.travel(strafe, vertical, forward); } else if (controllingPassenger instanceof EntityPlayer) { this.motionX = 0.0D; this.motionY = 0.0D; this.motionZ = 0.0D; } if (this.onGround) this.isJumping = false; } else { this.jumpMovementFactor = 0.02F; super.travel(strafe, vertical, forward); } } @Override public boolean canBeSteered() { return this.getControllingPassenger() instanceof EntityLivingBase; } @Override @Nullable public Entity getControllingPassenger() { return this.getPassengers().isEmpty() ? null : (Entity)this.getPassengers().get(0); } } Custom Model: package net.chonacky.minecraft.mod.chicken_mod; import net.minecraft.client.renderer.entity.model.ModelBase; import net.minecraft.client.renderer.entity.model.ModelRenderer; import net.minecraft.entity.Entity; import net.minecraft.util.math.MathHelper; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @OnlyIn(Dist.CLIENT) public class ModelProtoChicken extends ModelBase { public ModelRenderer head; public ModelRenderer body; public ModelRenderer rightLeg; public ModelRenderer leftLeg; public ModelRenderer rightShin; public ModelRenderer leftShin; public ModelRenderer leftFoot; public ModelRenderer rightFoot; public ModelProtoChicken() { this.textureWidth = 132; this.textureHeight = 64; this.head = new ModelRenderer(this, 0, 16); this.head.addBox(-8.0F, -8.0F, -8.0F, 16, 8, 16, 5.0F); this.head.setRotationPoint(0.0F, -42.0F, 0.0F); this.body = new ModelRenderer(this, 0, 0); this.body.addBox(-16.0F, -16.0F, -16.0F, 32, 32, 32, 5.0F); this.body.setRotationPoint(0.0F, -23.0F, 0.0F); this.leftLeg = new ModelRenderer(this, 128,32); this.leftLeg.addBox(0.0F, 0.5F, 0.0F, 1, 13, 1 , 3.0F); this.leftLeg.setRotationPoint(20.0F, 0.0F, -24.0F); this.body.addChild(this.leftLeg); this.leftShin = new ModelRenderer(this, 128,32); this.leftShin.addBox(0.0F, -0.5F, 0.0F, 1, 13, 1, 3.0F); this.leftShin.setRotationPoint(0.0F, 12.0F, 0.0F); this.leftLeg.addChild(this.leftShin); this.leftFoot = new ModelRenderer(this,128,32); this.leftFoot.addBox(0.0F, 1.0F, -0.0F, 1, 4, 1, 3.0F); this.leftFoot.setRotationPoint(0.0F, 14.0F, 0.0F); this.leftShin.addChild(this.leftFoot); this.rightLeg = new ModelRenderer(this, 128,32); this.rightLeg.addBox(0.0F, 0.5F, 0.0F, 1, 13, 1 , 3.0F); this.rightLeg.setRotationPoint(-20.0F, 0.0F, -24.0F); this.body.addChild(this.rightLeg); this.rightShin = new ModelRenderer(this, 128,32); this.rightShin.addBox(0.0F, -0.5F, 0.0F, 1, 13, 1, 3.0F); this.rightShin.setRotationPoint(0.0F, 12.0F, 0.0F); this.rightLeg.addChild(this.rightShin); this.rightFoot = new ModelRenderer(this,128,32); this.rightFoot.addBox(0.0F, 1.0F, -0.0F, 1, 4, 1, 3.0F); this.rightFoot.setRotationPoint(0.0F, 14.0F, 0.0F); this.rightShin.addChild(this.rightFoot); // } /** * Sets the models various rotation angles then renders the model. */ @Override public void render(Entity entityIn, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scale) { this.setRotationAngles(limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scale, entityIn); this.head.render(scale); this.body.render(scale); } /** * Sets the model's various rotation angles. For bipeds, par1 and par2 are used for animating the movement of arms * and legs, where par1 represents the time(so that arms and legs swing back and forth) and par2 represents how * "far" arms and legs can swing at most. */ @Override public void setRotationAngles(float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scaleFactor, Entity entityIn) { this.head.rotateAngleX = headPitch * 0.017453292F; this.head.rotateAngleY = netHeadYaw * 0.017453292F; this.body.rotateAngleX = ((float)Math.PI / 2F); this.leftLeg.rotateAngleX = (MathHelper.cos(limbSwing * 0.6662F + (float)Math.PI) * 1.4F * limbSwingAmount) -((float)Math.PI/4); this.leftShin.rotateAngleX = -(MathHelper.cos(limbSwing * 0.6662F + (float)Math.PI) * 1.4F * limbSwingAmount) -((float)Math.PI/2); this.leftFoot.rotateAngleX = -((float)Math.PI/4) ; this.rightLeg.rotateAngleX = -(MathHelper.cos(limbSwing * 0.6662F + (float)Math.PI) * 1.4F * limbSwingAmount) -((float)Math.PI/4); this.rightShin.rotateAngleX = +(MathHelper.cos(limbSwing * 0.6662F + (float)Math.PI) * 1.4F * limbSwingAmount) -((float)Math.PI/2); this.rightFoot.rotateAngleX = -((float)Math.PI/4) ; // this.rightWing.rotateAngleZ = ageInTicks; // this.leftWing.rotateAngleZ = -ageInTicks; } } Custom Renderer: package net.chonacky.minecraft.mod.chicken_mod; import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.MathHelper; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @OnlyIn(Dist.CLIENT) public class RenderProtoChicken extends RenderLiving<EntityProtoChicken> { private static final ResourceLocation PROTOCHICKEN_TEXTURES = new ResourceLocation(ChickenMod.MODID+":textures/entity/byhut.png"); //"chicken:textures/entity/checker.png" // public RenderLiving(RenderManager rendermanagerIn, ModelBase modelbaseIn, float shadowsizeIn) public RenderProtoChicken(RenderManager manager) { super(manager, new ModelProtoChicken(), 1.75F); } @Override protected ResourceLocation getEntityTexture(EntityProtoChicken entity) { return PROTOCHICKEN_TEXTURES; } /** * Defines what float the third param in setRotationAngles of ModelBase is */ @Override protected float handleRotationFloat(EntityProtoChicken livingBase, float partialTicks) { float f = livingBase.oFlap + (livingBase.wingRotation - livingBase.oFlap) * partialTicks; float f1 = livingBase.oFlapSpeed + (livingBase.destPos - livingBase.oFlapSpeed) * partialTicks; return (MathHelper.sin(f) + 1.0F) * f1; } @Override public void doRender(EntityProtoChicken entity, double x, double y, double z, float entityYaw, float partialTicks) { if (entity.isInWater()) { super.doRender(entity, x, (y-1.0D), z, entityYaw, partialTicks); } else { super.doRender(entity, x, y, z, entityYaw, partialTicks); } if (!this.renderOutlines) { this.renderLeash(entity, x, y, z, entityYaw, partialTicks); } } }
  7. Found my issue --> Syntax error: <EntityType> should be replaced by <EntityType<?>> in RegistryEvent.Register<> ..now I just need to figure out how to register my custom model/renderer
  8. OK, So here's the code snippet from my registration entry: @SubscribeEvent public static void onEntitiesRegistry(final RegistryEvent.Register<EntityType> entityRegistryEvent) { entityRegistryEvent.getRegistry().registerAll( EntityType.Builder.create(EntityProtoChicken.class, EntityProtoChicken::new) .tracker(60, 24, true).build(MODID+":"+"protochicken") ); } The compiler complains thusly: Bound mismatch: The type EntityType is not a valid substitute for the bounded parameter <T extends IForgeRegistryEntry<T>> of the type RegistryEvent.Register<T> Which it doesn't do for <Blocks> or <Items> any ideas?
  9. I'm trying to port an entity I built in 1.12, but EntityEntry and EntityEntryBuilder seem to be missing. They were previously in net.minecraftforge.fml.common.registry, but aren't now. I tried a search, but could not locate it - the docs still mention it by name. I am using forge-1.13.2-25.0.215-mdk
  10. In conclusion, I could have paired all that previous mess down to this: @Mod.EventBusSubscriber(modid=ChickenMod.MODID, bus=Mod.EventBusSubscriber.Bus.MOD) @ObjectHolder(ChickenMod.MODID) public static class RegistryEvents { public static final Block test_block=null; public static final Item test_item=null; @SubscribeEvent public static void onBlocksRegistry(final RegistryEvent.Register<Block> blockRegistryEvent) { blockRegistryEvent.getRegistry().registerAll( new Block(Block.Properties.create(Material.IRON)).setRegistryName(ChickenMod.MODID,"test_block")); } @SubscribeEvent public static void onItemsRegistry(final RegistryEvent.Register<Item> itemRegistryEvent) { itemRegistryEvent.getRegistry().registerAll( (Item)new ItemBlock(test_block,new Item.Properties().group(ITEMTAB)).setRegistryName(test_block.getRegistryName()), new Item(new Item.Properties().group(ITEMTAB)).setRegistryName(ChickenMod.MODID,"test_item") ); } } I may make some changes to scale up [and possibly find a better IDE] /P [aka mush4brains]
  11. Thanks, I think I just learned more about how this modding works in the post 1.9 world than many hours of reading the documentation [and reading several misleading tutorials]
  12. So create a Block Object holder field that matches the registry name of the Block, and then instantiate an ItemBlock of the object in the Item Registry method?
  13. That brings up the challenge of how I would pass the requisite ItemBlocks to the Item registry, or would you recommend I separately instantiate an identical Block there new Item (new ItemBlock (new Block() , new Properties())...
  14. It looks like my issue was I hadn't refreshed the assets folder in my IDE (eclipse) after making changes to the JSON files - it works now. ...as to the other issue: Are you implying I should register in the same classes where I initialize (after making non-static)? or just use non-static fields for my entries? BTW- The repository was updated after I posted the clips, so the clips can be ignored - repository is more up to date /Philip
  15. Hi, I've been testing basic modding in 1.13 and getting trouble connecting to the model files for items & blocks I believe I am correctly assigning rResourceLocations, and the files are in the right place, but the logs indicate IO errors locating them This is an excerpt from my class for creating items. itemList is an ArrayList<Item> which will be assigned to a static list in the main method (ChickenMod.ITEMS) iterated in another class for registration (The iteration of the <Block> Array (ChickenMod.BLOCKS) is to add the required ItemBlocks to the registration list. private static void NewItem(String name, ItemGroup tab) { Item thisItem = new Item(new Properties().group(tab)) .setRegistryName(ChickenMOD.MODID,name); itemList.add(thisItem); public static List<Item> MakeItems() { ChickenMod.LOGGER.info("HELLO from MakeItems"); NewItem ("test_item", ItemGroup.MISC); for (Block thisBlock:ChickenMod.BLOCKS) { Item thisItem = new ItemBlock(thisBlock, new Properties().group(ChickenMod.ITEMTAB)).setRegistryName(thisBlock.getRegistryName()); ChickenMod.LOGGER.info("HELLO from MakeItems-> block tab registry" ); itemList.add(thisItem); } return itemList; } The static Method is triggered by a field assignment in the main class: public static List<Item> ITEMS = ModItems.MakeItems(); The list is later iterated for Event Registration: //Register Items @SubscribeEvent public static void registerItems(final RegistryEvent.Register<Item> event) { ChickenMOD.LOGGER.info("HELLO from Registry :: ITEMS"); for (Item thisItem : ChickenMod.ITEMS) { event.getRegistry().register(thisItem); } } I'm using a similar method for custom blocks: trigger a static method (via field assignment) to a list (of type <Block>) which is later iterated to register to the appropriate Event Bus (with similar results) The Items and blocks are being registered (I can access them in game), but they get the generic texture assignment which indicates the resources were no properly loaded. An excerpt from the log file: [26May2019 20:38:49.568] [Client thread/WARN] [net.minecraft.client.renderer.model.ModelBakery/]: Exception loading blockstate definition: chicken_mod:blockstates/test_block.json: java.io.FileNotFoundException: chicken_mod:blockstates/test_block.json [26May2019 20:38:50.410] [Client thread/WARN] [net.minecraft.client.renderer.model.ModelBakery/]: Unable to load model: 'chicken_mod:test_item#inventory' referenced from: chicken_mod:test_item#inventory: java.io.FileNotFoundException: chicken_mod:models/item/test_item.json [26May2019 20:38:50.410] [Client thread/WARN] [net.minecraft.client.renderer.model.ModelBakery/]: Unable to load model: 'chicken_mod:test_block#inventory' referenced from: chicken_mod:test_block#inventory: java.io.FileNotFoundException: chicken_mod:models/item/test_block.json The project as a whole can be found here: https://github.com/pchonacky/randombits.git I am aware there are probably more graceful ways to do this, but I am still working out what will work best - just trying to get it to work for now. Thanks in advance for your replies. /Philip
  16. I am. public static EntityEntry eG = (EntityEntryBuilder.create() .entity(EntityGrenade.class) .id("grenade", ID++) .tracker(64, 20, true) //set to "true" to send velocity updates to Client side .name("grenade") .build());
  17. OK, So I solved this. There is a method in EntityBuilder to set the the tracker parameters. The 3rd parameter is "sendVelocityUpdates" which apparently turns updates to the Client on/off (I had it set to false) public static EntityEntry eG = (EntityEntryBuilder.create() .entity(EntityGrenade.class) .id("grenade", ID++) .tracker(64, 20, true) //set to "true" to send velocity updates to Client side .name("grenade") .build());
  18. I don't currently have a github account (maybe it's time I get one
  19. Is there an IHasModel in the Forge code somewhere? I created my own since I could more easily cast the calls on the methods in the Item classes, but your way sounds more direct so I'll try that instead. OK, I'll do some debugging and post my results. I'll also try dropping the call to the super method below my code (although I can't do that for the constructor)
  20. Hello all, I have a grenade I created which is extended from EntityThrowable class and rendered by RenderSnowball. I also have overridden a couple of methods from the parent. While the entity behaves as programmed (explodes after fuse expires), the rendering on the client does not have as expected. The explosion takes place more or less where I expect it, the renderer on the client has the grenade dropping straight down (default behavior of parent class). I search around to see how Entities typically behave - a mirror version runs on both client and server sides, [and packets from the server keep them in sync?] but it is unclear why the difference in behavior. The item from which the entity is spawned spawns from the server side with an "if (!world.remote)" statement Here is the code: Item Class which spawns the grenade: public class ItemGrenade extends Item implements IHas1Model { private static String name = "grenade"; public ItemGrenade() { this.setUnlocalizedName(name); this.setRegistryName(name); this.setCreativeTab(CreativeTabs.COMBAT); this.setMaxStackSize(18); } /** * Called whenever this item is equipped and the right mouse button is pressed. * @param: itemStack, world, entityPlayer */ @Override public ActionResult<ItemStack> onItemRightClick(World world, EntityPlayer player, EnumHand handIn) { if (!world.isRemote) { world.spawnEntity(new EntityGrenade(world, player)); } return super.onItemRightClick(world, player, handIn); } //called from Client proxy @Override public void registerModel() { Grenadier.proxy.registerModel(this,0,"inventory"); } } Entity Class package net.chonacky.minecraft.mod.grenadier; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.projectile.EntityThrowable; import net.minecraft.util.DamageSource; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumParticleTypes; import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.math.Vec2f; import net.minecraft.world.World; public class EntityGrenade extends EntityThrowable { private int fuse; public EntityGrenade(World world, EntityLivingBase player) { super(world, player); this.fuse = 20; this.noClip=true; double vFactor = 0.5D; Vec2f pitchYaw = player.getPitchYaw(); double pitch = pitchYaw.y; double yaw = pitchYaw.x; double xVeloc = 0-(vFactor*(Math.sin(yaw))); double yVeloc = 0-(vFactor*(Math.sin(pitch))); double zVeloc = vFactor*(Math.cos(yaw)); this.setVelocity(xVeloc, yVeloc, zVeloc); // Debugging code // System.out.println("Pitch : "+pitch+" Yaw : "+yaw); // System.out.println("Xfactor: " + Math.sin(yaw) ); // System.out.println("x velocity = "+ xVeloc + // " y velocity = "+yVeloc+ // " z velocity = "+zVeloc); } //not used public EntityGrenade(World worldIn, double posX, double posY, double posZ) { super(worldIn, posX, posY, posZ); } @Override public void onUpdate() { super.onUpdate(); if (this.world.isRemote) { System.out.println("X : " + this.posX+" "+"Y : " + this.posY+" "+"Z : " + this.posZ); } //Decrement Fuse this.fuse--; //Blow up if fuse runs out if (this.fuse <= 0){ for (int i = 0; i < 8; ++i) { //EnumParticleTypes particleType, double xCoord, double yCoord, double zCoord, double xSpeed, double ySpeed, double zSpeed, int... parameters) this.world.spawnParticle(EnumParticleTypes.CLOUD, this.posX, this.posY, this.posZ, 0.0D, 0.0D, 0.0D); } if (!this.world.isRemote) { this.world.newExplosion(this, this.posX, this.posY, this.posZ, 1.5F, false, true); this.setDead(); } } } //stop if grenade hits something @Override protected void onImpact(RayTraceResult movObjPos) { if ((movObjPos.entityHit != null) && (!this.world.isRemote)) { movObjPos.entityHit.attackEntityFrom(DamageSource.causePlayerDamage((EntityPlayer) this.getThrower()),1); this.posX = movObjPos.entityHit.posX; this.posY = movObjPos.entityHit.posY+0.01F; this.posZ = movObjPos.entityHit.posZ; this.motionX=0F; this.motionY=0F; this.motionZ=0F; } else { //didn't hit an entity (hit a block) //Bounce Grenade //Which side was hit. : if ( movObjPos.sideHit == EnumFacing.UP) { //top hit this.motionX *= 0.699999988079071D; this.motionZ *= 0.699999988079071D; this.motionY *= -0.5D; } else { if ( (movObjPos.sideHit == EnumFacing.EAST) || (movObjPos.sideHit == EnumFacing.WEST)) { // east/west hit this.motionZ = -(0.9 * this.motionZ); } else { if ( (movObjPos.sideHit == EnumFacing.NORTH) || (movObjPos.sideHit == EnumFacing.SOUTH)) {// north/south hit this.motionX = -(0.9 * this.motionX); } else { if (movObjPos.sideHit == EnumFacing.DOWN) { //bottom hit this.motionY = -(0.9 * this.motionY); } else { return; /// none of the above } } } } } } } Registration Class: @EventBusSubscriber(modid = Grenadier.MODID) public class Registry { public static int ID=0; //ObjectHolders @ObjectHolder(Grenadier.MODID) public static class Objects { public static Item grenade = new ItemGrenade(); public static Item myfireball = new ItemMyFireball(); public static EntityEntry entityGrenade = EntityEntryBuilder.create() .entity(EntityGrenade.class) .id("grenade", ID++) .tracker(64, 20, false) .name("grenade") .build(); } //Register Items @SubscribeEvent public static void registerItems(Register<Item> event) { event.getRegistry().registerAll( Objects.grenade,Objects.myfireball); } //Register Entities @SubscribeEvent public static void registerEntities(Register<EntityEntry> event) { event.getRegistry().register(Objects.entityGrenade); } //Register Models @SubscribeEvent public static void registerModels(ModelRegistryEvent event) { ((IHas1Model)Objects.myfireball).registerModel(); ((IHas1Model)Objects.grenade).registerModel(); } } ...and finally, the client proxy (server proxy has empty versions of applicable methods) public class ClientProxy extends ServerProxy { public void registerModel(Item item, int i, String type) { ModelLoader.setCustomModelResourceLocation(item, i, new ModelResourceLocation(item.getRegistryName(), type)); } public void RegisterRenderers() { //Register RenderSnowball as renderer for EntityGrenade using ItemGrenade texture RenderingRegistry.registerEntityRenderingHandler(EntityGrenade.class, new IRenderFactory <EntityGrenade>() { @Override public Render<? super Entity> createRenderFor(RenderManager manager) { return (Render<? super Entity>)new RenderSnowball<Entity>(manager, Registry.Objects.grenade, Minecraft.getMinecraft().getRenderItem()); } }); } } Thank you all in advance. /P
  21. Grey Ghost is the only one I could site. Others would have been responses on forums. I think its a given that one can not always ascertain the knowledge of someone giving advice, and opinions abound. I was actually more interested in hearing what advantages the Event Registry method has, and whether ForgeRegistries would get deprecated in the near future. THanks /P
  22. Hi Animefan8888, Thanks, that was a newbie mistake! When I looked again, I obviously overlooked it. I've read and implemented the Event Registration, but seen both methods used by a variety of modders. Is ForgeRegistries getting deprecated soon? It may not be the most efficient method, but I'm working with kids and the events method gets complicated.
  23. Hello, I recently started modding 1.12.2 (from 1.7), and I'm trying to recode older (simple) mods to try and learn the newer methods. In 1.7, I created a custom throwable grenade by creating a simple ItemGrenade (Extending Item class) and an associated EntityGrenade (Extending EntityThrowable), then registering RenderSnowball w/ reference to the ItemGrenade (for texture). I tried a similar approach in 1.12.2, but Minecraft crashes with a Null pointer exception as soon as the grenade is thrown. Here's the code details: 1. Create ItemGrenade public class ItemGrenade extends Item { public ItemGrenade() { this.setRegistryName("grenade"); this.setUnlocalizedName("Grenade"); this.setCreativeTab(CreativeTabs.COMBAT); this.setMaxStackSize(18); } public ModelResourceLocation getModelResourceLocation() { return new ModelResourceLocation(this.getRegistryName().toString()); } /** * Called whenever this item is equipped and the right mouse button is pressed. * @param: itemStack, world, entityPlayer */ @Override public ActionResult<ItemStack> onItemRightClick(World world, EntityPlayer player, EnumHand handIn) { // if (!player.capabilities.isCreativeMode) { stack.setCount(stack.getCount()-1); } // IMPORTANT! Only spawn new entities on the server. If the world is not remote, // that means you are on the server: if (!world.isRemote) { world.spawnEntity(new EntityGrenade(world, player)); } return super.onItemRightClick(world, player, handIn); } } 2. Create EntityGrenade: public class EntityGrenade extends EntityThrowable { private int fuse; //not used public EntityGrenade(World world) { super(world); } public EntityGrenade(World world, EntityLivingBase player) { super(world, player); this.fuse = 20; this.noClip=true; } //not used public EntityGrenade(World worldIn, double posX, double posY, double posZ) { super(worldIn, posX, posY, posZ); } @Override public void onUpdate() { super.onUpdate(); // For troubleshooting // System.out.println(">>>>>Motion X = " + this.motionX); // System.out.println(">>>>>Motion Y = " + this.motionY); // System.out.println(">>>>>Motion Z = " + this.motionZ); //Decrement Fuse this.fuse--; //Blow up if fuse is 0 if (this.fuse <= 0){ for (int i = 0; i < 8; ++i) { //EnumParticleTypes particleType, double xCoord, double yCoord, double zCoord, double xSpeed, double ySpeed, double zSpeed, int... parameters) this.world.spawnParticle(EnumParticleTypes.CLOUD, this.posX, this.posY, this.posZ, 0.0D, 0.0D, 0.0D); } if (!this.world.isRemote) { this.world.newExplosion(this, this.posX, this.posY, this.posZ, 1.5F, false, true); this.setDead(); } } } //stop if grenade hits something @Override protected void onImpact(RayTraceResult movObjPos) { if ((movObjPos.entityHit != null) && (!this.world.isRemote)) { movObjPos.entityHit.attackEntityFrom(DamageSource.causePlayerDamage((EntityPlayer) this.getThrower()),1); this.posX = movObjPos.entityHit.posX; this.posY = movObjPos.entityHit.posY+0.01F; this.posZ = movObjPos.entityHit.posZ; this.motionX=0F; this.motionY=0F; this.motionZ=0F; } else { //didn't hit an entity (hit a block) //Bounce Grenade //Which side was hit. If its -1 then it went the full length of the ray trace. Bottom = 0, Top = 1, // East = 2, West = 3, North = 4, South = 5. if ( movObjPos.sideHit == EnumFacing.UP) { //top hit this.motionX *= 0.699999988079071D; this.motionZ *= 0.699999988079071D; this.motionY *= -0.5D; } else { if ( (movObjPos.sideHit == EnumFacing.EAST) || (movObjPos.sideHit == EnumFacing.WEST)) { // east/west hit this.motionZ = -(0.9 * this.motionZ); } else { if ( (movObjPos.sideHit == EnumFacing.NORTH) || (movObjPos.sideHit == EnumFacing.SOUTH)) {// north/south hit this.motionX = -(0.9 * this.motionX); } else { if (movObjPos.sideHit == EnumFacing.DOWN) { //bottom hit this.motionY = -(0.9 * this.motionY); } else { return; /// none of the above } } } } } } } 3. Register the item, entity, and renderer (RenderSnowball) @EventHandler public void preInit(FMLPreInitializationEvent event){ itemGrenade = (ItemGrenade)(new ItemGrenade()); ForgeRegistries.ITEMS.register(itemGrenade); entityGrenade = EntityEntryBuilder.create() .entity(EntityGrenade.class) .id("grenade", ID++) .tracker(64, 20, false) .name("grenade") .build(); ForgeRegistries.ENTITIES.register(entityGrenade); // required in order for the renderer to know how to render your item. (CLIENT ONLY) final int DEFAULT_ITEM_SUBTYPE = 0; ModelLoader.setCustomModelResourceLocation(itemGrenade, DEFAULT_ITEM_SUBTYPE, itemGrenade.getModelResourceLocation()); Minecraft mcIn = Minecraft.getMinecraft(); RenderingRegistry.registerEntityRenderingHandler(EntityGrenade.class, new IRenderFactory <EntityGrenade>() { @Override public Render createRenderFor(RenderManager manager) { return (Render)new RenderSnowball<Entity>(mcIn.getRenderManager(), itemGrenade, mcIn.getRenderItem()); } }); } ...and yes, I know I combined Client and non-client code here, I'm keeping it simple for now [and only testing in Client so I can work out the bugs. Here's the crash error: [18:13:55] [main/FATAL] [net.minecraft.client.Minecraft]: Reported exception thrown! net.minecraft.util.ReportedException: Rendering entity in world at net.minecraft.client.renderer.entity.RenderManager.renderEntity(RenderManager.java:432) ~[RenderManager.class:?] at net.minecraft.client.renderer.entity.RenderManager.renderEntityStatic(RenderManager.java:374) ~[RenderManager.class:?] at net.minecraft.client.renderer.RenderGlobal.renderEntities(RenderGlobal.java:655) ~[RenderGlobal.class:?] at net.minecraft.client.renderer.EntityRenderer.renderWorldPass(EntityRenderer.java:1398) ~[EntityRenderer.class:?] at net.minecraft.client.renderer.EntityRenderer.renderWorld(EntityRenderer.java:1312) ~[EntityRenderer.class:?] at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1115) ~[EntityRenderer.class:?] at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1207) ~[Minecraft.class:?] at net.minecraft.client.Minecraft.run(Minecraft.java:441) [Minecraft.class:?] at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_131] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_131] at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_131] 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_131] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_131] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_131] at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_131] at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?] at GradleStart.main(GradleStart.java:25) [start/:?] Caused by: java.lang.NullPointerException at net.minecraft.client.renderer.entity.RenderSnowball.doRender(RenderSnowball.java:35) ~[RenderSnowball.class:?] at net.minecraft.client.renderer.entity.RenderManager.renderEntity(RenderManager.java:390) ~[RenderManager.class:?] ... 20 more [18:13:55] [main/INFO] [STDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:629]: ---- Minecraft Crash Report ---- // Why is it breaking :( Time: 9/14/18 6:13 PM Description: Rendering entity in world java.lang.NullPointerException: Rendering entity in world at net.minecraft.client.renderer.entity.RenderSnowball.doRender(RenderSnowball.java:35) at net.minecraft.client.renderer.entity.RenderManager.renderEntity(RenderManager.java:390) at net.minecraft.client.renderer.entity.RenderManager.renderEntityStatic(RenderManager.java:374) at net.minecraft.client.renderer.RenderGlobal.renderEntities(RenderGlobal.java:655) at net.minecraft.client.renderer.EntityRenderer.renderWorldPass(EntityRenderer.java:1398) at net.minecraft.client.renderer.EntityRenderer.renderWorld(EntityRenderer.java:1312) at net.minecraft.client.renderer.EntityRenderer.updateCameraAndRender(EntityRenderer.java:1115) at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1207) at net.minecraft.client.Minecraft.run(Minecraft.java:441) at net.minecraft.client.main.Main.main(Main.java:118) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) at net.minecraft.launchwrapper.Launch.main(Launch.java:28) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) at GradleStart.main(GradleStart.java:25) A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: Client thread Stacktrace: at net.minecraft.client.renderer.entity.RenderSnowball.doRender(RenderSnowball.java:35) -- Entity being rendered -- Details: Entity Type: grenadier:grenade (net.chonacky.minecraft.mod.grenadier.EntityGrenade) Entity ID: 1048 Entity Name: entity.grenade.name Entity's Exact location: 231.74, 76.63, -136.82 Entity's Block location: World: (231,76,-137), Chunk: (at 7,4,7 in 14,-9; contains blocks 224,0,-144 to 239,255,-129), Region: (0,-1; contains chunks 0,-32 to 31,-1, blocks 0,0,-512 to 511,255,-1) Entity's Momentum: 0.00, -0.03, 0.00 Entity's Passengers: [] Entity's Vehicle: ~~ERROR~~ NullPointerException: null -- Renderer details -- Details: Assigned renderer: net.minecraft.client.renderer.entity.RenderSnowball@4f6fe1c9 Location: 0.00,1.52,0.00 - World: (0,1,0), Chunk: (at 0,0,0 in 0,0; contains blocks 0,0,0 to 15,255,15), Region: (0,0; contains chunks 0,0 to 31,31, blocks 0,0,0 to 511,255,511) Rotation: 0.0 Delta: 0.75999975 Stacktrace: at net.minecraft.client.renderer.entity.RenderManager.renderEntity(RenderManager.java:390) at net.minecraft.client.renderer.entity.RenderManager.renderEntityStatic(RenderManager.java:374) at net.minecraft.client.renderer.RenderGlobal.renderEntities(RenderGlobal.java:655) at net.minecraft.client.renderer.EntityRenderer.renderWorldPass(EntityRenderer.java:1398) at net.minecraft.client.renderer.EntityRenderer.renderWorld(EntityRenderer.java:1312) -- Affected level -- Details: Level name: MpServer All players: 1 total; [EntityPlayerSP['Player472'/250, l='MpServer', x=231.74, y=75.11, z=-136.82]] Chunk stats: MultiplayerChunkCache: 625, 625 Level seed: 0 Level generator: ID 00 - default, ver 1. Features enabled: false Level generator options: Level spawn location: World: (-36,64,56), Chunk: (at 12,4,8 in -3,3; contains blocks -48,0,48 to -33,255,63), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511) Level time: 43339 game time, 1575 day time Level dimension: 0 Level storage version: 0x00000 - Unknown? Level weather: Rain time: 0 (now: false), thunder time: 0 (now: false) Level game mode: Game mode: creative (ID 1). Hardcore: false. Cheats: false Forced entities: 172 total; [EntityItem['item.tile.sand.default'/256, l='MpServer', x=236.77, y=65.00, z=-131.35], EntityItem['item.tile.sand.default'/257, l='MpServer', x=236.83, y=68.00, z=-135.38], EntityItem['item.tile.sand.default'/258, l='MpServer', x=234.94, y=68.00, z=-134.76], EntityItem['item.tile.sand.default'/259, l='MpServer', x=238.13, y=68.00, z=-133.65], EntitySpider['Spider'/1030, l='MpServer', x=223.50, y=14.00, z=-158.50], EntityRabbit['Rabbit'/527, l='MpServer', x=277.55, y=77.00, z=-64.50], EntityRabbit['Rabbit'/530, l='MpServer', x=291.52, y=79.00, z=-97.93], EntityRabbit['Rabbit'/536, l='MpServer', x=286.52, y=71.00, z=-101.98], EntityGrenade['entity.grenade.name'/1048, l='MpServer', x=231.74, y=76.63, z=-136.82], EntityWitch['Witch'/541, l='MpServer', x=299.50, y=34.00, z=-137.50], EntityRabbit['Rabbit'/543, l='MpServer', x=297.04, y=63.00, z=-129.50], EntityBat['Bat'/546, l='MpServer', x=280.52, y=16.10, z=-116.24], EntityBat['Bat'/547, l='MpServer', x=272.25, y=36.10, z=-116.45], EntityRabbit['Rabbit'/548, l='MpServer', x=274.05, y=69.00, z=-122.43], EntityCreeper['Creeper'/552, l='MpServer', x=299.50, y=16.00, z=-148.50], EntityRabbit['Rabbit'/555, l='MpServer', x=307.46, y=69.00, z=-57.23], EntityRabbit['Rabbit'/557, l='MpServer', x=311.23, y=69.00, z=-60.06], EntityBat['Bat'/301, l='MpServer', x=153.43, y=21.40, z=-203.35], EntityRabbit['Rabbit'/572, l='MpServer', x=292.51, y=73.00, z=-73.52], EntityRabbit['Rabbit'/574, l='MpServer', x=289.63, y=78.00, z=-87.41], EntityRabbit['Rabbit'/575, l='MpServer', x=288.51, y=80.00, z=-91.35], EntityCreeper['Creeper'/320, l='MpServer', x=217.17, y=24.00, z=-184.52], EntityCreeper['Creeper'/321, l='MpServer', x=223.17, y=21.00, z=-188.47], EntitySkeleton['Skeleton'/322, l='MpServer', x=214.76, y=23.00, z=-188.46], EntityZombie['Zombie'/323, l='MpServer', x=217.51, y=30.00, z=-179.83], EntityRabbit['Rabbit'/324, l='MpServer', x=221.48, y=63.00, z=-182.22], EntityVillager['Villager'/325, l='MpServer', x=211.70, y=63.00, z=-186.52], EntityVillager['Villager'/326, l='MpServer', x=209.72, y=63.00, z=-185.45], EntityBat['Bat'/329, l='MpServer', x=172.76, y=46.34, z=-196.43], EntityRabbit['Rabbit'/335, l='MpServer', x=166.72, y=65.00, z=-186.53], EntityZombie['Zombie'/336, l='MpServer', x=217.64, y=40.00, z=-193.17], EntityVillager['Villager'/337, l='MpServer', x=212.30, y=66.00, z=-196.70], EntityVillager['Villager'/338, l='MpServer', x=231.30, y=63.00, z=-201.76], EntityRabbit['Rabbit'/341, l='MpServer', x=182.93, y=65.00, z=-167.49], EntitySkeleton['Skeleton'/342, l='MpServer', x=162.73, y=37.00, z=-176.53], EntitySkeleton['Skeleton'/343, l='MpServer', x=161.50, y=33.00, z=-169.50], EntityCreeper['Creeper'/344, l='MpServer', x=184.50, y=31.00, z=-180.50], EntitySkeleton['Skeleton'/345, l='MpServer', x=180.29, y=28.00, z=-188.53], EntityCreeper['Creeper'/346, l='MpServer', x=202.84, y=21.00, z=-198.59], EntitySkeleton['Skeleton'/347, l='MpServer', x=195.50, y=35.00, z=-192.50], EntitySkeleton['Skeleton'/348, l='MpServer', x=205.50, y=32.00, z=-202.50], EntityRabbit['Rabbit'/351, l='MpServer', x=218.27, y=72.00, z=-83.48], EntityRabbit['Rabbit'/353, l='MpServer', x=207.77, y=67.00, z=-89.44], EntitySkeleton['Skeleton'/361, l='MpServer', x=231.28, y=16.00, z=-155.48], EntityCreeper['Creeper'/362, l='MpServer', x=234.68, y=25.00, z=-153.33], EntityCreeper['Creeper'/363, l='MpServer', x=228.50, y=37.00, z=-155.50], EntityItem['item.item.seeds'/364, l='MpServer', x=234.84, y=64.00, z=-159.14], EntityItem['item.tile.sand.default'/365, l='MpServer', x=238.13, y=65.00, z=-157.18], EntityItem['item.tile.sand.default'/366, l='MpServer', x=239.79, y=65.00, z=-159.05], EntityItem['item.tile.sand.default'/367, l='MpServer', x=239.58, y=65.00, z=-157.38], EntityItem['item.tile.sand.default'/368, l='MpServer', x=238.37, y=65.00, z=-155.90], EntityItem['item.tile.sand.default'/369, l='MpServer', x=239.16, y=65.00, z=-156.44], EntitySkeleton['Skeleton'/881, l='MpServer', x=155.50, y=35.00, z=-190.50], EntityItem['item.tile.sand.default'/370, l='MpServer', x=237.27, y=65.00, z=-155.13], EntityItem['item.tile.sand.default'/371, l='MpServer', x=238.20, y=65.00, z=-154.13], EntityItem['item.tile.sand.default'/372, l='MpServer', x=236.13, y=66.00, z=-155.59], EntitySkeleton['Skeleton'/888, l='MpServer', x=228.50, y=19.00, z=-153.50], EntityBat['Bat'/385, l='MpServer', x=258.53, y=41.05, z=-128.55], EntityRabbit['Rabbit'/386, l='MpServer', x=218.25, y=69.00, z=-72.53], EntityItem['item.tile.sand.default'/392, l='MpServer', x=248.32, y=66.00, z=-110.13], EntityItem['item.tile.sandStone.default'/394, l='MpServer', x=248.25, y=66.00, z=-110.65], EntityZombie['Zombie'/906, l='MpServer', x=303.50, y=28.00, z=-188.50], EntityItem['item.tile.sandStone.default'/395, l='MpServer', x=245.54, y=65.00, z=-111.17], EntityItem['item.tile.sandStone.default'/396, l='MpServer', x=246.13, y=64.00, z=-111.72], EntityItem['item.tile.sandStone.default'/397, l='MpServer', x=246.27, y=64.00, z=-110.81], EntityItem['item.tile.sand.default'/398, l='MpServer', x=245.66, y=65.00, z=-110.13], EntityItem['item.tile.sand.default'/399, l='MpServer', x=247.88, y=65.00, z=-111.46], EntitySkeleton['Skeleton'/402, l='MpServer', x=280.46, y=18.00, z=-209.27], EntityRabbit['Rabbit'/403, l='MpServer', x=280.72, y=63.00, z=-212.97], EntitySkeleton['Skeleton'/404, l='MpServer', x=239.50, y=35.00, z=-163.73], EntityItem['item.item.seeds'/405, l='MpServer', x=236.83, y=63.94, z=-164.68], EntityItem['item.item.seeds'/406, l='MpServer', x=235.50, y=63.94, z=-163.85], EntityCreeper['Creeper'/918, l='MpServer', x=260.50, y=13.00, z=-110.50], EntityItem['item.item.seeds'/407, l='MpServer', x=237.19, y=64.00, z=-165.83], EntityItem['item.item.seeds'/408, l='MpServer', x=234.38, y=64.00, z=-163.03], EntityRabbit['Rabbit'/409, l='MpServer', x=228.31, y=67.28, z=-168.67], EntityRabbit['Rabbit'/410, l='MpServer', x=239.60, y=63.94, z=-170.49], EntityCreeper['Creeper'/411, l='MpServer', x=219.52, y=19.00, z=-145.17], EntityItem['item.item.dyePowder.black'/412, l='MpServer', x=213.58, y=47.00, z=-158.71], EntityVillager['Villager'/413, l='MpServer', x=258.53, y=63.00, z=-194.34], EntitySquid['Squid'/415, l='MpServer', x=244.40, y=63.57, z=-187.60], EntitySquid['Squid'/416, l='MpServer', x=244.40, y=59.24, z=-186.40], EntitySquid['Squid'/417, l='MpServer', x=245.60, y=61.88, z=-187.60], EntitySkeleton['Skeleton'/929, l='MpServer', x=311.50, y=14.00, z=-103.50], EntityVillager['Villager'/421, l='MpServer', x=246.50, y=63.00, z=-202.93], EntityCreeper['Creeper'/423, l='MpServer', x=225.52, y=20.00, z=-182.18], EntityVillager['Villager'/424, l='MpServer', x=239.37, y=64.00, z=-190.51], EntityVillager['Villager'/425, l='MpServer', x=232.45, y=64.00, z=-176.46], EntityVillager['Villager'/426, l='MpServer', x=228.08, y=64.00, z=-187.33], EntitySkeleton['Skeleton'/427, l='MpServer', x=220.50, y=30.00, z=-164.50], EntityCreeper['Creeper'/428, l='MpServer', x=218.48, y=46.00, z=-165.77], EntityCreeper['Creeper'/429, l='MpServer', x=214.50, y=43.00, z=-170.50], EntityItem['item.item.dyePowder.black'/430, l='MpServer', x=210.81, y=45.00, z=-165.97], EntityRabbit['Rabbit'/431, l='MpServer', x=234.35, y=63.00, z=-196.43], EntityCreeper['Creeper'/943, l='MpServer', x=239.50, y=17.00, z=-157.50], EntityRabbit['Rabbit'/432, l='MpServer', x=226.89, y=63.00, z=-206.17], EntityVillager['Villager'/436, l='MpServer', x=224.50, y=64.00, z=-213.93], EntitySkeleton['Skeleton'/440, l='MpServer', x=256.45, y=38.00, z=-135.16], EntitySkeleton['Skeleton'/441, l='MpServer', x=258.27, y=39.00, z=-135.51], EntityBat['Bat'/442, l='MpServer', x=253.80, y=39.06, z=-136.90], EntityBat['Bat'/443, l='MpServer', x=257.57, y=41.70, z=-128.58], EntityBat['Bat'/444, l='MpServer', x=258.46, y=52.10, z=-132.30], EntityItem['item.tile.sandStone.default'/445, l='MpServer', x=245.88, y=62.00, z=-115.67], EntityItem['item.tile.sand.default'/447, l='MpServer', x=242.13, y=67.00, z=-114.59], EntityItem['item.tile.sand.default'/448, l='MpServer', x=241.96, y=70.00, z=-116.49], EntityItem['item.tile.sand.default'/449, l='MpServer', x=243.34, y=69.00, z=-116.88], EntityItem['item.tile.sandStone.default'/450, l='MpServer', x=247.88, y=65.00, z=-112.72], EntityItem['item.tile.sandStone.default'/451, l='MpServer', x=246.76, y=65.00, z=-112.02], EntityItem['item.tile.sand.default'/452, l='MpServer', x=242.45, y=67.00, z=-115.62], EntityItem['item.tile.sand.default'/453, l='MpServer', x=242.13, y=67.00, z=-113.79], EntityItem['item.tile.sand.default'/454, l='MpServer', x=244.68, y=67.00, z=-115.01], EntityEnderman['Enderman'/455, l='MpServer', x=285.15, y=63.00, z=-156.46], EntityRabbit['Rabbit'/456, l='MpServer', x=234.90, y=70.27, z=-102.52], EntitySpider['Spider'/457, l='MpServer', x=308.17, y=29.00, z=-192.02], EntitySkeleton['Skeleton'/969, l='MpServer', x=190.50, y=35.00, z=-199.50], EntitySkeleton['Skeleton'/458, l='MpServer', x=305.34, y=31.00, z=-196.53], EntityItem['item.tile.sandStone.default'/459, l='MpServer', x=232.96, y=63.00, z=-121.17], EntityItem['item.tile.sandStone.default'/460, l='MpServer', x=232.88, y=60.00, z=-125.88], EntityItem['item.tile.sandStone.default'/461, l='MpServer', x=233.14, y=62.00, z=-121.13], EntityItem['item.tile.sandStone.default'/462, l='MpServer', x=232.13, y=60.00, z=-124.24], EntityItem['item.tile.sandStone.default'/463, l='MpServer', x=232.65, y=63.00, z=-126.88], EntityItem['item.tile.sandStone.default'/464, l='MpServer', x=233.88, y=62.00, z=-125.88], EntityItem['item.tile.sandStone.default'/465, l='MpServer', x=232.13, y=60.00, z=-125.84], EntityItem['item.tile.sand.default'/466, l='MpServer', x=231.13, y=62.00, z=-126.13], EntityItem['item.tile.sand.default'/467, l='MpServer', x=231.12, y=63.00, z=-125.47], EntityItem['item.tile.sandStone.default'/468, l='MpServer', x=234.88, y=62.00, z=-123.86], EntityItem['item.tile.sandStone.default'/469, l='MpServer', x=234.88, y=61.00, z=-122.22], EntityItem['item.tile.sandStone.default'/470, l='MpServer', x=233.86, y=62.00, z=-123.88], EntityItem['item.tile.sandStone.default'/471, l='MpServer', x=229.95, y=62.00, z=-122.17], EntityItem['item.tile.sand.default'/472, l='MpServer', x=230.13, y=68.00, z=-127.70], EntityItem['item.tile.sand.default'/473, l='MpServer', x=228.88, y=68.00, z=-127.13], EntityItem['item.tile.sand.default'/474, l='MpServer', x=228.19, y=69.00, z=-126.81], EntitySkeleton['Skeleton'/475, l='MpServer', x=259.89, y=12.00, z=-145.50], EntitySkeleton['Skeleton'/476, l='MpServer', x=259.21, y=40.00, z=-138.50], EntitySkeleton['Skeleton'/477, l='MpServer', x=260.49, y=38.00, z=-149.70], EntityBat['Bat'/478, l='MpServer', x=259.75, y=41.10, z=-145.25], EntityBat['Bat'/479, l='MpServer', x=255.13, y=11.19, z=-133.10], EntitySkeleton['Skeleton'/480, l='MpServer', x=253.77, y=37.00, z=-140.49], EntityCreeper['Creeper'/481, l='MpServer', x=254.84, y=38.00, z=-134.46], EntityItem['item.tile.sand.default'/482, l='MpServer', x=240.50, y=68.00, z=-134.13], EntityItem['item.tile.sand.default'/483, l='MpServer', x=241.96, y=68.00, z=-135.13], EntityVillager['Villager'/484, l='MpServer', x=272.58, y=63.00, z=-184.46], EntityBat['Bat'/485, l='MpServer', x=289.75, y=30.10, z=-196.36], EntitySkeleton['Skeleton'/486, l='MpServer', x=253.78, y=13.00, z=-148.49], EntitySkeleton['Skeleton'/487, l='MpServer', x=250.45, y=27.00, z=-158.25], EntitySkeleton['Skeleton'/488, l='MpServer', x=249.70, y=27.00, z=-157.04], EntityPlayerSP['Player472'/250, l='MpServer', x=231.74, y=75.11, z=-136.82], EntityZombie['Zombie'/490, l='MpServer', x=242.50, y=25.00, z=-152.50], EntityCreeper['Creeper'/491, l='MpServer', x=248.96, y=27.00, z=-156.30], EntityCreeper['Creeper'/492, l='MpServer', x=246.15, y=36.00, z=-151.57], EntityBat['Bat'/493, l='MpServer', x=251.83, y=37.10, z=-157.25], EntityCreeper['Creeper'/494, l='MpServer', x=254.50, y=37.00, z=-150.50], EntityBat['Bat'/495, l='MpServer', x=250.75, y=35.10, z=-155.25], EntityItem['item.tile.sand.default'/496, l='MpServer', x=247.18, y=62.00, z=-158.13], EntityItem['item.tile.sand.default'/497, l='MpServer', x=248.88, y=62.00, z=-158.13], EntityItem['item.tile.sand.default'/498, l='MpServer', x=242.42, y=65.00, z=-156.14], EntityItem['item.tile.sand.default'/499, l='MpServer', x=240.66, y=65.00, z=-158.15], EntityItem['item.tile.sand.default'/500, l='MpServer', x=241.25, y=65.00, z=-155.51], EntityItem['item.tile.sand.default'/501, l='MpServer', x=241.80, y=65.00, z=-157.98], EntityItem['item.tile.sand.default'/504, l='MpServer', x=248.21, y=61.00, z=-162.88], EntityItem['item.tile.sand.default'/505, l='MpServer', x=246.13, y=62.00, z=-161.10], EntityItem['item.tile.sand.default'/506, l='MpServer', x=249.88, y=61.00, z=-160.93], EntityItem['item.tile.sand.default'/251, l='MpServer', x=228.57, y=68.00, z=-129.40], EntityCreeper['Creeper'/507, l='MpServer', x=285.22, y=31.00, z=-198.51], EntityItem['item.tile.sand.default'/252, l='MpServer', x=231.49, y=68.00, z=-130.13], EntityCreeper['Creeper'/508, l='MpServer', x=280.50, y=24.00, z=-204.50], EntityItem['item.tile.sand.default'/253, l='MpServer', x=230.13, y=68.00, z=-130.88], EntitySpider['Spider'/509, l='MpServer', x=280.99, y=31.00, z=-198.96], EntityItem['item.tile.sand.default'/254, l='MpServer', x=227.13, y=69.00, z=-128.33], EntitySkeleton['Skeleton'/510, l='MpServer', x=269.50, y=53.00, z=-189.50], EntityItem['item.item.stick'/255, l='MpServer', x=234.15, y=69.00, z=-131.18], EntityVillager['Villager'/511, l='MpServer', x=268.82, y=64.00, z=-184.35]] Retry entities: 0 total; [] Server brand: fml,forge Server type: Integrated singleplayer server Stacktrace: at net.minecraft.client.multiplayer.WorldClient.addWorldInfoToCrashReport(WorldClient.java:461) at net.minecraft.client.Minecraft.addGraphicsAndWorldToCrashReport(Minecraft.java:2886) at net.minecraft.client.Minecraft.run(Minecraft.java:462) at net.minecraft.client.main.Main.main(Main.java:118) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) at net.minecraft.launchwrapper.Launch.main(Launch.java:28) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) at GradleStart.main(GradleStart.java:25) -- System Details -- Details: Minecraft Version: 1.12.2 Operating System: Linux (amd64) version 4.8.0-59-generic Java Version: 1.8.0_131, Oracle Corporation Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Oracle Corporation Memory: 252088168 bytes (240 MB) / 602406912 bytes (574 MB) up to 917504000 bytes (875 MB) JVM Flags: 0 total; IntCache: cache: 0, tcache: 0, allocated: 12, tallocated: 94 FML: MCP 9.42 Powered by Forge 14.23.4.2705 5 mods loaded, 5 mods active States: 'U' = Unloaded 'L' = Loaded 'C' = Constructed 'H' = Pre-initialized 'I' = Initialized 'J' = Post-initialized 'A' = Available 'D' = Disabled 'E' = Errored | State | ID | Version | Source | Signature | |:--------- |:--------- |:------------ |:-------------------------------- |:--------- | | UCHIJAAAA | minecraft | 1.12.2 | minecraft.jar | None | | UCHIJAAAA | mcp | 9.42 | minecraft.jar | None | | UCHIJAAAA | FML | 8.0.99.99 | forgeSrc-1.12.2-14.23.4.2705.jar | None | | UCHIJAAAA | forge | 14.23.4.2705 | forgeSrc-1.12.2-14.23.4.2705.jar | None | | UCHIJAAAA | grenadier | 0.3 | bin | None | Loaded coremods (and transformers): GL info: ' Vendor: 'VMware, Inc.' Version: '3.0 Mesa 12.0.6' Renderer: 'Gallium 0.4 on SVGA3D; build: RELEASE; LLVM;' Launched Version: 1.12.2 LWJGL: 2.9.4 OpenGL: Gallium 0.4 on SVGA3D; build: RELEASE; LLVM; GL version 3.0 Mesa 12.0.6, VMware, Inc. GL Caps: Using GL 1.3 multitexturing. Using GL 1.3 texture combiners. Using framebuffer objects because OpenGL 3.0 is supported and separate blending is supported. Shaders are available because OpenGL 2.1 is supported. VBOs are available because OpenGL 1.5 is supported. Using VBOs: Yes Is Modded: Definitely; Client brand changed to 'fml,forge' Type: Client (map_client.txt) Resource Packs: Current Language: English (US) Profiler Position: N/A (disabled) CPU: 4x Intel(R) Core(TM) i7-2760QM CPU @ 2.40GHz [18:13:55] [main/INFO] [STDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:629]: #@!@# Game crashed! Crash report saved to: #@!@# /home/philip/git/mc12/forge-1.12.2-14.23.4.2705-mdk/./crash-reports/crash-2018-09-14_18.13.55-client.txt AL lib: (EE) alc_cleanup: 1 device not closed THanks all in advance. /P
  24. Asked and answered: Due to the number of different project folders I have (1.7.10, 1.8.9, 1.11.1) I was editing the wrong sounds.json file. The one shown above is correct and works.
×
×
  • Create New...

Important Information

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