Search in sources :

Example 1 with SaveHandler

use of net.minecraft.world.storage.SaveHandler in project SpongeCommon by SpongePowered.

the class SpongeUser method save.

public void save() {
    SaveHandler saveHandler = (SaveHandler) WorldManager.getWorldByDimensionId(0).get().getSaveHandler();
    File dataFile = new File(saveHandler.playersDirectory, getUniqueId() + ".dat");
    NBTTagCompound tag;
    if (dataFile.isFile()) {
        try {
            tag = CompressedStreamTools.readCompressed(new FileInputStream(dataFile));
        } catch (IOException ignored) {
            // Nevermind
            tag = new NBTTagCompound();
        }
    } else {
        tag = new NBTTagCompound();
    }
    writeToNbt(tag);
    try {
        CompressedStreamTools.writeCompressed(tag, new FileOutputStream(dataFile));
        dirtyUsers.remove(this);
    } catch (IOException e) {
        SpongeImpl.getLogger().warn("Failed to save user file [{}]!", dataFile, e);
    }
}
Also used : SaveHandler(net.minecraft.world.storage.SaveHandler) FileOutputStream(java.io.FileOutputStream) NBTTagCompound(net.minecraft.nbt.NBTTagCompound) IOException(java.io.IOException) File(java.io.File) FileInputStream(java.io.FileInputStream)

Example 2 with SaveHandler

use of net.minecraft.world.storage.SaveHandler in project SpongeCommon by SpongePowered.

the class UserDiscoverer method getAllProfiles.

static Collection<org.spongepowered.api.profile.GameProfile> getAllProfiles() {
    Preconditions.checkState(Sponge.isServerAvailable(), "Server is not available!");
    Set<org.spongepowered.api.profile.GameProfile> profiles = Sets.newHashSet();
    // Add all cached profiles
    profiles.addAll(userCache.asMap().values().stream().map(User::getProfile).collect(Collectors.toList()));
    // Add all known profiles from the data files
    SaveHandler saveHandler = (SaveHandler) WorldManager.getWorldByDimensionId(0).get().getSaveHandler();
    String[] uuids = saveHandler.getAvailablePlayerDat();
    for (String playerUuid : uuids) {
        // before passing that back in getAvailablePlayerDat. It doesn't remove non ".dat" filenames from the list.
        if (playerUuid.contains(".")) {
            continue;
        }
        // At this point, we have a filename who has no extension. This doesn't mean it is actually a UUID. We trap the exception and ignore
        // any filenames that fail the UUID check.
        UUID uuid;
        try {
            uuid = UUID.fromString(playerUuid);
        } catch (Exception ex) {
            continue;
        }
        final GameProfile profile = SpongeImpl.getServer().getPlayerProfileCache().getProfileByUUID(uuid);
        if (profile != null) {
            profiles.add((org.spongepowered.api.profile.GameProfile) profile);
        }
    }
    // Add all whitelisted users
    final UserListWhitelist whiteList = SpongeImpl.getServer().getPlayerList().getWhitelistedPlayers();
    profiles.addAll(whiteList.getValues().values().stream().map(entry -> (org.spongepowered.api.profile.GameProfile) entry.value).collect(Collectors.toList()));
    // Add all banned users
    final UserListBans banList = SpongeImpl.getServer().getPlayerList().getBannedPlayers();
    profiles.addAll(banList.getValues().values().stream().filter(entry -> entry != null).map(entry -> (org.spongepowered.api.profile.GameProfile) entry.value).collect(Collectors.toList()));
    return profiles;
}
Also used : SpongeImpl(org.spongepowered.common.SpongeImpl) SaveHandler(net.minecraft.world.storage.SaveHandler) GameProfile(com.mojang.authlib.GameProfile) UserListBans(net.minecraft.server.management.UserListBans) SpongeUser(org.spongepowered.common.entity.player.SpongeUser) HashSet(java.util.HashSet) IMixinEntityPlayerMP(org.spongepowered.common.interfaces.entity.player.IMixinEntityPlayerMP) Locale(java.util.Locale) UserListEntryBan(net.minecraft.server.management.UserListEntryBan) SpongeUsernameCache(org.spongepowered.common.util.SpongeUsernameCache) PlayerProfileCache(net.minecraft.server.management.PlayerProfileCache) WorldServer(net.minecraft.world.WorldServer) User(org.spongepowered.api.entity.living.player.User) WorldManager(org.spongepowered.common.world.WorldManager) Collection(java.util.Collection) Sponge(org.spongepowered.api.Sponge) Set(java.util.Set) IOException(java.io.IOException) FileInputStream(java.io.FileInputStream) UUID(java.util.UUID) PlayerList(net.minecraft.server.management.PlayerList) Collectors(java.util.stream.Collectors) Sets(com.google.common.collect.Sets) File(java.io.File) TimeUnit(java.util.concurrent.TimeUnit) CompressedStreamTools(net.minecraft.nbt.CompressedStreamTools) UserListWhitelist(net.minecraft.server.management.UserListWhitelist) UserListWhitelistEntry(net.minecraft.server.management.UserListWhitelistEntry) Optional(java.util.Optional) Preconditions(com.google.common.base.Preconditions) CacheBuilder(com.google.common.cache.CacheBuilder) Cache(com.google.common.cache.Cache) SpongeUser(org.spongepowered.common.entity.player.SpongeUser) User(org.spongepowered.api.entity.living.player.User) IOException(java.io.IOException) SaveHandler(net.minecraft.world.storage.SaveHandler) GameProfile(com.mojang.authlib.GameProfile) UserListWhitelist(net.minecraft.server.management.UserListWhitelist) UUID(java.util.UUID) UserListBans(net.minecraft.server.management.UserListBans)

Example 3 with SaveHandler

use of net.minecraft.world.storage.SaveHandler in project ArsMagica2 by Mithion.

the class PowerNodeCache method getFileFromChunk.

private File getFileFromChunk(World world, ChunkCoordIntPair chunk, boolean createNew) {
    File saveFolder = saveDirs.get(world.provider.dimensionId);
    if (saveFolder == null) {
        ISaveHandler handler = world.getSaveHandler();
        if (handler instanceof SaveHandler) {
            saveFolder = new File(((SaveHandler) handler).getWorldDirectory(), folder);
            saveFolder.mkdirs();
            saveFolder = new File(saveFolder, String.format("DIM%d", world.provider.dimensionId));
            saveFolder.mkdirs();
            saveDirs.put(world.provider.dimensionId, saveFolder);
        } else {
            return null;
        }
    }
    int rX = (int) Math.floor(chunk.chunkXPos / 32);
    int rZ = (int) Math.floor(chunk.chunkZPos / 32);
    String fileName = String.format("%d_%d%s", rX, rZ, extension);
    File file = saveFilesCached.get(fileName);
    if (file != null)
        return file;
    file = new File(saveFolder, fileName);
    if (!file.exists()) {
        if (createNew) {
            try {
                file.createNewFile();
            } catch (Throwable t) {
                t.printStackTrace();
            }
        } else {
            return null;
        }
    }
    saveFilesCached.put(fileName, file);
    return file;
}
Also used : ISaveHandler(net.minecraft.world.storage.ISaveHandler) SaveHandler(net.minecraft.world.storage.SaveHandler) ISaveHandler(net.minecraft.world.storage.ISaveHandler) File(java.io.File)

Example 4 with SaveHandler

use of net.minecraft.world.storage.SaveHandler in project MinecraftForge by MinecraftForge.

the class ForgeEventFactory method firePlayerLoadingEvent.

public static void firePlayerLoadingEvent(EntityPlayer player, IPlayerFileData playerFileData, String uuidString) {
    SaveHandler sh = (SaveHandler) playerFileData;
    File dir = ObfuscationReflectionHelper.getPrivateValue(SaveHandler.class, sh, "playersDirectory", "field_" + "75771_c");
    MinecraftForge.EVENT_BUS.post(new PlayerEvent.LoadFromFile(player, dir, uuidString));
}
Also used : SaveHandler(net.minecraft.world.storage.SaveHandler) PlayerEvent(net.minecraftforge.event.entity.player.PlayerEvent) File(java.io.File)

Example 5 with SaveHandler

use of net.minecraft.world.storage.SaveHandler in project SpongeCommon by SpongePowered.

the class UserDiscoverer method getPlayerDataFile.

private static File getPlayerDataFile(UUID uniqueId) {
    // This may be called triggered by mods using FakePlayer during
    // initial world gen (before the overworld is registered). Because of
    // this, we need to check if the overworld is actually registered yet
    Optional<WorldServer> worldServer = WorldManager.getWorldByDimensionId(0);
    if (!worldServer.isPresent()) {
        return null;
    }
    // Note: Uses the overworld's player data
    SaveHandler saveHandler = (SaveHandler) worldServer.get().getSaveHandler();
    File file = new File(saveHandler.playersDirectory, uniqueId.toString() + ".dat");
    if (file.exists()) {
        return file;
    }
    return null;
}
Also used : SaveHandler(net.minecraft.world.storage.SaveHandler) WorldServer(net.minecraft.world.WorldServer) File(java.io.File)

Aggregations

File (java.io.File)5 SaveHandler (net.minecraft.world.storage.SaveHandler)5 FileInputStream (java.io.FileInputStream)2 IOException (java.io.IOException)2 WorldServer (net.minecraft.world.WorldServer)2 Preconditions (com.google.common.base.Preconditions)1 Cache (com.google.common.cache.Cache)1 CacheBuilder (com.google.common.cache.CacheBuilder)1 Sets (com.google.common.collect.Sets)1 GameProfile (com.mojang.authlib.GameProfile)1 FileOutputStream (java.io.FileOutputStream)1 Collection (java.util.Collection)1 HashSet (java.util.HashSet)1 Locale (java.util.Locale)1 Optional (java.util.Optional)1 Set (java.util.Set)1 UUID (java.util.UUID)1 TimeUnit (java.util.concurrent.TimeUnit)1 Collectors (java.util.stream.Collectors)1 CompressedStreamTools (net.minecraft.nbt.CompressedStreamTools)1