Jump to content

Beds / Respawn points: Significant changes wanted/needed


keybounce
 Share

Recommended Posts

In vanilla minecraft, beds are characterized by the following:

1. They only activate at night.

2. They only exist in the overworld.

3. They reset the respawn point.

4. They reset weather.

5. They "fake-advance" time to daylight.

6. They are unique per-player.

 

This issue comes up in Mystcraft

http://mirror1.binarymage.com/mantisbt/view.php?id=47#c1345

 

It also came up in earlier versions of Twilight Forest.

 

Basically, as a player, the following is wanted:

1. Can activate at any time the dimension says that they can activate. For the overworld, that would be at night. For the twilight forest, that would be any time. For a mystcraft age, it might be something else.

 

Alternatively, it might be based on active light level -- given span mechanics, if you are in a small, dark room, nothing will spawn near you, and you could go to sleep in the dark even if it were light outside.

 

2. Obviously, they should exist on a per-dimension basis. Some dimensions will say "Yes, sleep here"; some won't. This behavior currently exists.

 

3. Equally, they should not be unique per player per server/world; they should be unique per player per dimension. In other words, each dimension has zero or one bed points, but every dimension (other than nether/end) might have a different one.

 

4. Some way to handle "This dimension is all asleep, while that dimension is awake". Note that mystcraft currently has a different sense of time/weather for each dimension; I do not know to what extent that is inside Mystcraft or inside Forge; I suspect that if it is in Mystcraft it would need to be moved into Forge.

 

5. In theory, once forge is handling per-dimension time effects from sleeping, then forge could trivially say "this dimension will be simulated instead of artificially time-jumped"; this would bring the "Somnia" mod back from the dead. (To clarify: while Forge could have "simulate the world" mechanics, activating them would be the job of a mod based on sleep state.)

 

 

Jeb! The sheep! The fence pens, they do nothing still leak!

Link to comment
Share on other sites

Quit linking to private sites that require authentication to view.

 

1) We have hooks for that

2) Pretty sure that already exists as well

3) You're saying that you want per-dimension spawn points. I haven't actually looked into it but im pretty sure thats possible already. If not it shouldn't be a difficult change.

4) 'all players sleeping' is already a per-world thing.

5) Worlds can already be 'simulated' base cleanly with Forge. There are a few mods that already do it.

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Patreon: http://www.patreon.com/lexmanos
Paypal: http://paypal.me/LexManos

BitCoin: 1Q8rWvUNMM2T1ZfDaFeeYQyVXtYoeT6tTn

Link to comment
Share on other sites

The only actual issue (and what Keybounce is trying to explain very badly) for Mystcraft is that each player stores only one bed spawn-point, not a bed spawn-point per dimension.  This means that if you set your bed spawn in one dimension it clears where you slept in other dimensions.  This also means that the respawn code attempts to use this single bed spawn in all dimensions, checking for beds or force respawning at those coordinates in whatever dimension the player is respawning in.

 

Thanks for pointing out that the issue tracker requires login to view.  I'll try to address that problem.  I'm not sure what causes that.

Link to comment
Share on other sites

5) Worlds can already be 'simulated' base cleanly with Forge. There are a few mods that already do it.

 

Really? That's ... a shock, to say the least.

 

The Somnia mod has to be completely re-written, and the author there is having various issues (Primarily related to lack of network access, but if it was that easy, someone else would have redone it). If it actually is possible to simulate a dimension's time passage while everyone is asleep, or when reloaded (*), I would think it would be a little more common / there would already be a mod for that.

 

(*): Example: If you leave a mystcraft age, and it unloads, then time stops. When you return to it, time continues from where you left it. No matter how many hours in-game have passed, no time passes. So if you enter a new age at overworld sunrise, and the new age has the same day cycle as the overworld, then leaving that age at "noon sun" will put you into the overworld at "noon sun". Waiting until overworld sunset, and returning to that age will still have it at "noon sun".

 

XCW has classified this as "Won't fix"; there are certainly cases where this behavior is desirable. But there are also cases (think farms) where you'd want at least some portions of the world (such as areas around that world's spawn) to advance. Being able to say "It's been an hour since this world was unloaded, so simulate an hour of time passage" has uses.

 

Obviously, there are a number of issues to work out in this case -- how much area, maximum simulation time, etc -- but the general principle is valid. Currently the "best" work-around is a fuel-dependent chunk loader, but the only one I know of -- Immibis's -- doesn't properly track the chunk loader being removed nor properly log chunk loader locations; I've seen it fail to recognize "out of fuel" on a loader at an NPC village.

Jeb! The sheep! The fence pens, they do nothing still leak!

Link to comment
Share on other sites

Did a look into it and ya, it could be expanded to dimesion based.

I look forward to your PR ;)

Shouldn't be hard, just need to keep an array int he player read/write from nbt. Default to the normal system if a dimensional one is not found.

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Patreon: http://www.patreon.com/lexmanos
Paypal: http://paypal.me/LexManos

BitCoin: 1Q8rWvUNMM2T1ZfDaFeeYQyVXtYoeT6tTn

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • This is my first time making a pack and i just wanted to add mods that i know or that look interesting. So When making the pack i get this error with Refined Storage https://pastebin.com/DxtTbVZW
    • Hello! When I'm trying to get items by tag during the recipe serialization, I'm getting an empty list. I have a guess that item tags're not loaded by the time minecraft loads my recipes. Here's my code: Class that saves information about ingredient's count Recipe serializer with some aux methods: Registry: Example of the json recipe file:  
    • I tried to install client forge on my linux desktop. But after "installation" it's missing forge[version].jar file in .minecraft/versions. I tried java 11 and 8 environment with same result. Here link to log file from installation: https://drive.google.com/file/d/1vtg9NT-WX5ilb1aNUvZlOv54gKWJuaT1/view?usp=share_link. I don't know what to do. I give for every directory permissions that I don't think that is issue. I will try check older versions if universal file work. Debian 11 (kernel 5.10)
    • I recently got error 1 in the launcher, so I restarted the .minecraft. After restarting it, I can't get the Forge 1.19.2 - 43.1.1 installer to run, I tried other versions and I get the same result, it opens a black box that closes instantly and nothing happens. I already tried to restart my pc, minecraft, update and reinstall java, run vanilla 1.19.2 and more recent versions of the game, disable Windows Firewall and antivirus and I still haven't solved it. Many times I installed forge and never ran into this problem. If I could receive assistance I would be very grateful.  
    • Here's the default loot table for gravel block: { "type": "minecraft:block", "pools": [ { "rolls": 1.0, "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:alternatives", "children": [ { "type": "minecraft:item", "conditions": [ { "condition": "minecraft:match_tool", "predicate": { "enchantments": [ { "enchantment": "minecraft:silk_touch", "levels": { "min": 1 } } ] } } ], "name": "minecraft:gravel" }, { "type": "minecraft:alternatives", "conditions": [ { "condition": "minecraft:survives_explosion" } ], "children": [ { "type": "minecraft:item", "conditions": [ { "condition": "minecraft:table_bonus", "enchantment": "minecraft:fortune", "chances": [ 0.1, 0.14285715, 0.25, 1.0 ] } ], "name": "minecraft:flint" }, { "type": "minecraft:item", "name": "minecraft:gravel" } ] } ] } ] } ] } This is a finicky loot table. If I add anything to it, nothing drops. I've added pools, entries, children ... you name it. Does anyone know the particulars about this table? I mean, periodically gravel drops flint instead of a gravel block. I understand the condition that could drop flint if the block survives an explosion. Otherwise, it drops the gravel block itself. I would like to further understand why the use of `children` and the set of `chance` values given in the explosion child entry. What I do understand is that `"type" : "minecraft:alternatives"` means that if this child/entry is successful, then it stops generating loot for this entry/pool. How often does the flint drop and is that taken care of in another location? Is that in a `"condition" : "minecraft:table_bonus"` loot table? Hmmm... I'll have to go take a look and see if there is something called table_bonus.json.
  • Topics

×
×
  • Create New...

Important Information

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