promotional bannermobile promotional banner

Spawn Defuzzer

Makes players on server spawn at the spawn point, not randomized around.

File Details

defuzz-1.1.0.jar

  • R
  • Dec 30, 2015
  • 3.58 KB
  • 401
  • 1.8.8

File Name

defuzz-1.1.0.jar

Supported Versions

  • 1.8.8

Here is the source of this mod: 

package thut.spawndefuzz;

import com.mojang.authlib.GameProfile;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.network.NetHandlerPlayServer;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.management.PlayerProfileCache;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.FMLCommonHandler;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.PlayerEvent.PlayerRespawnEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent.Phase;
import net.minecraftforge.fml.common.gameevent.TickEvent.PlayerTickEvent;
import net.minecraftforge.fml.common.network.FMLNetworkEvent.ServerConnectionFromClientEvent;

@Mod(modid = SpawnDefuzz.MODID, name = "Spawn Defuzzer", version = SpawnDefuzz.VERSION, acceptableRemoteVersions = "*")
public class SpawnDefuzz
{
public static final String MODID = "spawn_defuzzer";
public static final String VERSION = "1.1.0";

@EventHandler
public void preInit(FMLPreInitializationEvent event)
{
MinecraftForge.EVENT_BUS.register(this);
}

@SubscribeEvent
public void deFuzzRespawn(PlayerRespawnEvent event)
{
if (event.player.worldObj.isRemote) return;
BlockPos worldSpawn = event.player.worldObj.getSpawnPoint();
BlockPos playerSpawn = event.player.getBedLocation();
if (playerSpawn == null)
{
new PlayerMover(event.player, worldSpawn);
}
}

@SubscribeEvent
public void deFuzzSpawn(ServerConnectionFromClientEvent event)
{
if (event.handler instanceof NetHandlerPlayServer)
{
MinecraftServer mcServer = FMLCommonHandler.instance().getMinecraftServerInstance();
EntityPlayer player = ((NetHandlerPlayServer) event.handler).playerEntity;
BlockPos worldSpawn = null;
World playerWorld = mcServer.worldServerForDimension(player.dimension);
GameProfile gameprofile = player.getGameProfile();
PlayerProfileCache playerprofilecache = mcServer.getPlayerProfileCache();
GameProfile gameprofile1 = playerprofilecache.getProfileByUUID(gameprofile.getId());
if (gameprofile1 == null && playerWorld != null)
{
worldSpawn = playerWorld.provider.getSpawnPoint();
}

if (worldSpawn != null)
{
new PlayerMover(player, worldSpawn);
}
}
}

static class PlayerMover
{
EntityPlayer player;
BlockPos moveTo;

public PlayerMover(EntityPlayer toMove, BlockPos pos)
{
moveTo = pos;
player = toMove;
MinecraftForge.EVENT_BUS.register(this);
}

@SubscribeEvent
public void deFuzzRespawn(PlayerTickEvent event)
{
if (event.player == player && event.phase == Phase.START)
{
player.setPositionAndUpdate(moveTo.getX()+0.5, moveTo.getY()+0.5, moveTo.getZ()+0.5);
MinecraftForge.EVENT_BUS.unregister(this);
}
}
}
}