Bartz24 / VoidIslandControl

Other
8 stars 13 forks source link

World Spawn Resetting #53

Open Muzixs opened 6 years ago

Muzixs commented 6 years ago

We have a community server running Stoneblock and have an issue where new players joining the server are resetting the world spawn. It's presumed this is happening as intended given this check from your mod.

https://github.com/Bartz24/VoidIslandControl/blob/master/src/main/java/com/bartz24/voidislandcontrol/EventHandler.java#L73

Our issue is that the server spawn is not located at 0,0. This was done to avoid having it overlap with any nearby island upon creation. We want our players to spawn in at our respective coordinates, but every time a new player joins, it resets the initial spawn coordinates for the whole server, effecting existing players as well, preventing them from teleporting to the main spawn. Before we consider nuking that check, could you clarify the purpose behide this mechanic? As server owners it can be frustrating to have something like this force upon us without a config option to disable it. I also saw that there was a similar issue created but it appears the same problem is still occurring.

https://github.com/Bartz24/VoidIslandControl/issues/18

Muzixs commented 6 years ago

I saw this value but its not clear what "spawn position" is referring to. Is it the lavel.dat file value of something set within the mod? Despite having it set to false, players are still teleported to the top of the world in lava.

Forces players to spawn at the spawn position. By default, the player will be teleported to a safe spot above it if spawning fails. This config disables that B:forceSpawn=false

ghost commented 6 years ago

I started to have this same issue the other day aswell

Bartz24 commented 6 years ago

The world spawn resetting is done to avoid issues of people spawning where they're not supposed to.

My question is...why can you not put spawn at 0,0? No "islands" will interfere there.

Muzixs commented 6 years ago

Our server admin had stated that the spawn world encroach on surrounding islands. I recognize that such a case is highly unlikely (given the spawn would have to be 1,000x1,000 squared. Given your response, I presume it will be enough to satisfy any doubts he would have and hopefully give him some perspective on just how unlikely such a case would be.

However, while I also recognize your reasoning, it may benefit the progression of this mod to allow its users the ability to set where this forced reset occurs and have the island spawns adjust accordingly. I myself was having difficulties understanding why such a thing would be forced upon users when it could have otherwise been a configurable variable. So take it as you may; thankyou for your response on the matter.

EmanYm commented 5 years ago

Sorry to necro an old post...

Running a stoneblock server, someone decided to claim and build in the spawn (even though spawn protection is on in server.properties, and void island control config). I've been trying to change the spawn to another location WAY out of the way (29999600,29999600) that I made specifically to be used as spawn (/setworldspawn), but then when the next person connects the server crashes. Sponge catches a long log of unexpected world changes:

(Hastebin isn't working)

/ / Unexpected World Change Detected!/ / / Sponge's tracking system is very dependent on knowing when a change to any world takes place, however there are chances where Sponge does not know of changes that mods may perform. In cases like this, it is best to report to Sponge to get this change tracked correctly and accurately. / / / StackTrace:/ / java.lang.Exception: null/ / org.spongepowered.common.event.tracking.PhaseTracker.printUnexpectedBlockChange(PhaseTracker.java:524)/ / org.spongepowered.common.event.tracking.PhaseTracker.setBlockState(PhaseTracker.java:699)/ / net.minecraft.world.WorldServer.func_180501_a(WorldServer.java:2753)/ / net.minecraft.world.gen.structure.template.Template.func_189960_a(Template.java:242)/ / net.minecraft.world.gen.structure.template.Template.func_186253_b(Template.java:196)/ / com.bartz24.voidislandcontrol.IslandRegistry.generateCustomIsland(IslandRegistry.java:282)/ / com.bartz24.voidislandcontrol.IslandRegistry.access$100(IslandRegistry.java:22)/ / com.bartz24.voidislandcontrol.IslandRegistry$6.generate(IslandRegistry.java:231)/ / com.bartz24.voidislandcontrol.EventHandler.spawnPlat(EventHandler.java:240)/ / com.bartz24.voidislandcontrol.EventHandler.createSpawn(EventHandler.java:230)/ / com.bartz24.voidislandcontrol.EventHandler.spawnPlayer(EventHandler.java:194)/ / com.bartz24.voidislandcontrol.PlatformCommand.newPlatform(PlatformCommand.java:382)/ / com.bartz24.voidislandcontrol.EventHandler.playerLogin(EventHandler.java:86)/ / net.minecraftforge.fml.common.eventhandler.ASMEventHandler_1788_EventHandler_playerLogin_PlayerLoggedInEvent.invoke(.dynamic)/ / net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90)/ / net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:687)/ / net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:646)/ / org.spongepowered.mod.event.SpongeToForgeEventFactory.createAndPostPlayerLoggedInEvent(SpongeToForgeEventFactory.java:856)/ / org.spongepowered.mod.event.SpongeToForgeEventFactory.createAndPostForgeEvent(SpongeToForgeEventFactory.java:274)/ / org.spongepowered.mod.event.SpongeModEventManager.post(SpongeModEventManager.java:338)/ / org.spongepowered.mod.event.SpongeModEventManager.extendedPost(SpongeModEventManager.java:435)/ / org.spongepowered.mod.event.SpongeModEventManager.post(SpongeModEventManager.java:404)/ / org.spongepowered.common.event.SpongeEventManager.post(SpongeEventManager.java:458)/ / org.spongepowered.common.SpongeImpl.postEvent(SpongeImpl.java:242)/ / net.minecraft.server.management.PlayerList.initializeConnectionToPlayer(PlayerList.java:1680)/ / net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.completeServerSideConnection(NetworkDispatcher.java:255)/ / net.minecraftforge.fml.common.network.handshake.NetworkDispatcher.access$100(NetworkDispatcher.java:72)/ / net.minecraftforge.fml.common.network.handshake.NetworkDispatcher$1.func_73660_a(NetworkDispatcher.java:205)/ / net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:285)/ / net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:180)/ / net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:790)/ / net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:397)/ / net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:668)/ / net.minecraft.server.MinecraftServer.run(MinecraftServer.java:526)/ / java.lang.Thread.run(Thread.java:745)*/

This is posted roughly thirty times in a row in the console, disconnects everyone that is on and then stops any further connections with no message or error in the console or log. It just times everyone out.

Why, oh why, is there not a setting to move the spawn this mod forces for those of us that don't want to use 0,0 as spawn.