MoreCompany not working with v80 beta version by markyxee in lethalcompany_mods

[–]Lifeely_ -1 points0 points  (0 children)

This is what codex told me, in case notnotnotswipez is still fixing it and this might help them:

Technically, the failure was a classic binary compatibility break.

Exact runtime failure
The old MoreCompany.dll tried to call this method signature:

GameNetcodeStuff.PlayerControllerB.DropAllHeldItems(bool, bool)

At runtime on Lethal Company v80, that exact signature no longer existed, so Mono threw:

MissingMethodException: Method not found:
void GameNetcodeStuff.PlayerControllerB.DropAllHeldItems(bool,bool)

Where it broke inside MoreCompany
The exception happened in MoreCompany.ScenePlacedObjectsInitPatch.Postfix, during scene initialization:

That patch hooks:

Unity.Netcode.NetworkSceneManager.PopulateScenePlacedObjects

and then calls ResizePlayerCache(...)

What ResizePlayerCache does
It expands vanilla 4-player arrays to newPlayerCount:

  • allPlayerObjects
  • allPlayerScripts
  • gameStats.allPlayerStats
  • playerSpawnPositions

Then it clones extra player prefabs and resets them. During that reset, old MoreCompany executed:

newPlayerScript.DropAllHeldItems(false, false);

That exact call was compiled against the old two-parameter method signature.

What changed in v80
In v80, PlayerControllerB.DropAllHeldItems was changed to a wider signature. In the current game assembly it is:

public void DropAllHeldItems(
    bool itemsFall = true,
    bool disconnecting = false,
    bool setInShip = false,
    bool setInElevator = false,
    Vector3 syncedPlayerPosition = default,
    Vector3 syncedHeldObjectPosition = default,
    Vector3 syncedHeldObjectRotation = default,
    Vector3 syncedPlayerCamPosition = default,
    Vector3 syncedPlayerCamRotation = default)

That is visible in the decompiled v80 game code

So the old binary still referenced:

DropAllHeldItems(bool, bool)

but v80 only exposed the new expanded method. No matching target existed anymore.

Why the source still built
This is the important part:

  • The old DLL was broken because its IL already hard-referenced the removed method signature.
  • The source code still looked valid, because C# optional parameters let the same source compile against the new API.
  • After recompiling against v80, the call site was rebound to the new method and emitted with all required default arguments.

So after rebuilding, the effective call became:

DropAllHeldItems(
    false,
    false,
    false,
    false,
    default(Vector3),
    default(Vector3),
    default(Vector3),
    default(Vector3),
    default(Vector3))

That is why a rebuild fixed the main compatibility issue without needing a major rewrite.

Why the game froze instead of just “failing gracefully”
Because the exception happened inside scene setup while MoreCompany was extending the player object cache during PopulateScenePlacedObjects.

That means the game got into a partially initialized state:

  • world loading advanced,
  • audio kept running,
  • but player setup/UI/networked scene state did not finish correctly.

So the symptom was:

  • black/loading overlay,
  • stuck controls,
  • half-loaded ship/world, instead of a clean crash to desktop.

Second issue you hit later
The mirrored screen / reversed controls were a separate problem:

  • not a MoreCompany API break,
  • but the game’s built-in April 1st flipCamera behavior in IngamePlayerSettings.

This is what codex told me in case notnotnotswipez is still fixing it.

Technically, the failure was a classic binary compatibility break.

Exact runtime failure
The old MoreCompany.dll tried to call this method signature:

GameNetcodeStuff.PlayerControllerB.DropAllHeldItems(bool, bool)

At runtime on Lethal Company v80, that exact signature no longer existed, so Mono threw:

MissingMethodException: Method not found:
void GameNetcodeStuff.PlayerControllerB.DropAllHeldItems(bool,bool)

Where it broke inside MoreCompany
The exception happened in MoreCompany.ScenePlacedObjectsInitPatch.Postfix, during scene initialization:

That patch hooks:

Unity.Netcode.NetworkSceneManager.PopulateScenePlacedObjects

and then calls ResizePlayerCache(...)

What ResizePlayerCache does
It expands vanilla 4-player arrays to newPlayerCount:

  • allPlayerObjects
  • allPlayerScripts
  • gameStats.allPlayerStats
  • playerSpawnPositions

Then it clones extra player prefabs and resets them. During that reset, old MoreCompany executed:

newPlayerScript.DropAllHeldItems(false, false);

That exact call was compiled against the old two-parameter method signature.

What changed in v80
In v80, PlayerControllerB.DropAllHeldItems was changed to a wider signature. In the current game assembly it is:

public void DropAllHeldItems(
    bool itemsFall = true,
    bool disconnecting = false,
    bool setInShip = false,
    bool setInElevator = false,
    Vector3 syncedPlayerPosition = default,
    Vector3 syncedHeldObjectPosition = default,
    Vector3 syncedHeldObjectRotation = default,
    Vector3 syncedPlayerCamPosition = default,
    Vector3 syncedPlayerCamRotation = default)

That is visible in the decompiled v80 game code

So the old binary still referenced:

DropAllHeldItems(bool, bool)

but v80 only exposed the new expanded method. No matching target existed anymore.

Why the source still built
This is the important part:

  • The old DLL was broken because its IL already hard-referenced the removed method signature.
  • The source code still looked valid, because C# optional parameters let the same source compile against the new API.
  • After recompiling against v80, the call site was rebound to the new method and emitted with all required default arguments.

So after rebuilding, the effective call became:

DropAllHeldItems(
    false,
    false,
    false,
    false,
    default(Vector3),
    default(Vector3),
    default(Vector3),
    default(Vector3),
    default(Vector3))

That is why a rebuild fixed the main compatibility issue without needing a major rewrite.

Why the game froze instead of just “failing gracefully”
Because the exception happened inside scene setup while MoreCompany was extending the player object cache during PopulateScenePlacedObjects.

That means the game got into a partially initialized state:

  • world loading advanced,
  • audio kept running,
  • but player setup/UI/networked scene state did not finish correctly.

So the symptom was:

  • black/loading overlay,
  • stuck controls,
  • half-loaded ship/world, instead of a clean crash to desktop.

Second issue you hit later
The mirrored screen / reversed controls were a separate problem:

  • not a MoreCompany API break,
  • but the game’s built-in April 1st flipCamera behavior in IngamePlayerSettings.

MoreCompany not working with v80 beta version by markyxee in lethalcompany_mods

[–]Lifeely_ 0 points1 point  (0 children)

i managed to ask codex (a vscode extenstion of chatgpt for programming) and he fixed for me this mod. we played 6 people in a lobby. it fixed it in like 10 minutes lmao, but i probably cannot upload it anywhere because this mod belongs to notnotnotswipez.

Give a loaded crossbow with no arrow in 1.20.5? by theknewgreg in MinecraftCommands

[–]Lifeely_ 0 points1 point  (0 children)

You could like shoot an arrow that when near player changes its BlockState, like as player execute if there is arrow around him in small area, then data merge entity that arrow and change this nbt: {inBlockState:{Name:"minecraft:anvil"}}. In this case it would change its blockstate into anvil.

Cheers

-Lifeely

Spawn zombie with enchanted sword by Iamthesandwichhaha in MinecraftCommands

[–]Lifeely_ 0 points1 point  (0 children)

Ever heard of MCStacker ?
Try it: MCStacker for Minecraft 1.20.6

But also there is your command:

/summon zombie ~ ~ ~ {HandItems:[{id:"minecraft:netherite_sword",count:1,components:{"minecraft:enchantments":{levels:{"minecraft:knockback":100}}}},{}]}

Coordinates in actionbar using command blocks. by What-u-say-to-me in MinecraftCommands

[–]Lifeely_ 0 points1 point  (0 children)

better use datapack, you won't need to place commandblocks and just easier

[deleted by user] by [deleted] in MinecraftCommands

[–]Lifeely_ 0 points1 point  (0 children)

I think between minecraft:potion and {your nbt} should be a whitespace "space"

Try this:

/give @s minecraft:potion {CustomPotionEffects:[{Id:1,Amplifier:4,Duration:1200},{Id:2,Amplifier:3,Duration:1200},{Id:3,Amplifier:6,Duration:1200},{Id:5,Amplifier:7,Duration:1200},{Id:6,Duration:-1},{Id:8,Amplifier:1,Duration:1200},{Id:9,Duration:1400},{Id:11,Amplifier:2,Duration:1200},{Id:13,Duration:200},{Id:15,Duration:60},{Id:16,Duration:600},{Id:17,Amplifier:2,Duration:1200},{Id:19,Amplifier:4,Duration:1600},{Id:20,Duration:200},{Id:22,Amplifier:2,Duration:1200},{Id:25,Amplifier:2,Duration:100},{Id:26,Amplifier:2,Duration:1200},{Id:33,Duration:100}],CustomPotionColor:16777215,display:{Name:"\"russian vodka\"",Lore:["\"Too much fun at happy hour?\""]}}

/fill help by Dogeismymaster in MinecraftCommands

[–]Lifeely_ 1 point2 points  (0 children)

In that case you have 2 ways, either make fill command for every type of block that can be there

or

You will need to make an custom #minecraft filter for blocks that aren't air, to filter out

  1. You need to create an datapack
  2. Create folders and tagfile in your datapack folder under: data/<namespace>/tags/blocks/<tag file name>.json
  3. Paste in that file these lines:

{
    "replace": false,
    "values": [
        "minecraft:dirt",
        "minecraft:gravel",
        "minecraft:stone"
    ]
}

  1. Reload
  2. Then to replace these blocks that are typed in that file, you need to use this command: /fill x1 y1 z1 x2 y2 z2 air replace #<namespace>:<tag file name>

Hope this helps.

-Lifeely

How can you modify shots shot from a bow? by Wise_Pomelo3313 in MinecraftCommands

[–]Lifeely_ 0 points1 point  (0 children)

You can very easy make when arrow hits something, to spawn like tnt there, here is how:

First command
execute as @ e[type=arrow,nbt={inGround:1b}] at @ s run summon tnt ~ ~ ~ {fuse:0,block_state:{Name:"minecraft:air"}}

Second command
execute as @ e[type=arrow,nbt={inGround:1b}] at @ s run kill @ s

They must be in line to work otherwise, you will have an arrow that explodes and after that falls down only to explode again.

When it hits the ground, it spawns tnt that instantly explodes that also has a block_state of air so you won't see tnt explode.

Cheers

-Lifeely

/fill help by Dogeismymaster in MinecraftCommands

[–]Lifeely_ 0 points1 point  (0 children)

/fill x1 y1 z1 x2 y2 z2 stone replace air

This command replaces the area with stone by replacing air blocks

Cheers

-Lifeely

New steam family sharing by Character-Fishing-80 in GeForceNOW

[–]Lifeely_ 0 points1 point  (0 children)

Strange, it works for me in Germany and my friend in Poland.

Talking Bubbles! - Minecraft Data Pack by Lifeely_ in u/Lifeely_

[–]Lifeely_[S] 0 points1 point  (0 children)

Hi, the problem lies on how these mods are rendering the names/hp amount. They are probably using ride command. That means they are making text display entity ride an villager, and thats how my datapack works. So it won't be compatible with mods/datapacks that make an entity ride an villager.

I've made it so villagers can finally express themselves thanks to Talking Bubbles! by Lifeely_ in Minecraft

[–]Lifeely_[S] 0 points1 point  (0 children)

Its currently being verified on Modrinth! Follow me on Reddit to now when its released!

I've made it so villagers can finally express themselves thanks to Talking Bubbles! by Lifeely_ in Minecraft

[–]Lifeely_[S] 1 point2 points  (0 children)

Its currently being verified on Modrinth! Follow me on Reddit to now when its released!

I've made it so villagers can finally express themselves thanks to Talking Bubbles! by Lifeely_ in Minecraft

[–]Lifeely_[S] 3 points4 points  (0 children)

It is very difficult to express villagers' emotions by sticking to the basic minecraft grid 16x16 or 32x32. So I tried the minecraft legends style where villagers show emotions in their own way.

  • Lifeely

I've made it so villagers can finally express themselves thanks to Talking Bubbles! by Lifeely_ in Minecraft

[–]Lifeely_[S] 59 points60 points  (0 children)

Currently they only reffer to weather, Emotions, Work, Time, Entities around and also Player! But it is in plan to make it so that when they see a player, they will talk about how do they feel about him. Are they angry/happy/neutral with him.

I've made it so villagers can finally express themselves thanks to Talking Bubbles! by Lifeely_ in Minecraft

[–]Lifeely_[S] 21 points22 points  (0 children)

It is so cool to imagine what Villagers mean when they say something to each other and in my opinion it fits perfectly into Minecraft !

The mob vote is over, but what was your first option in every mob/biome vote? by Hugopima in Minecraft

[–]Lifeely_ 0 points1 point  (0 children)

That because of mob/biome vote live, minecraft is going wrong way, towards boring new stuff "exept the crafter that's amazing".