move blueprint saves inside world folder, fix #2886
This commit is contained in:
parent
31950ca099
commit
6ebb701f23
|
@ -87,36 +87,7 @@ import buildcraft.builders.TileConstructionMarker;
|
|||
import buildcraft.builders.TileFiller;
|
||||
import buildcraft.builders.TileQuarry;
|
||||
import buildcraft.builders.blueprints.RealBlueprintDeployer;
|
||||
import buildcraft.builders.schematics.SchematicAir;
|
||||
import buildcraft.builders.schematics.SchematicBed;
|
||||
import buildcraft.builders.schematics.SchematicCactus;
|
||||
import buildcraft.builders.schematics.SchematicCustomStack;
|
||||
import buildcraft.builders.schematics.SchematicDirt;
|
||||
import buildcraft.builders.schematics.SchematicDoor;
|
||||
import buildcraft.builders.schematics.SchematicEnderChest;
|
||||
import buildcraft.builders.schematics.SchematicFactoryBlock;
|
||||
import buildcraft.builders.schematics.SchematicFactoryEntity;
|
||||
import buildcraft.builders.schematics.SchematicFactoryMask;
|
||||
import buildcraft.builders.schematics.SchematicFarmland;
|
||||
import buildcraft.builders.schematics.SchematicFire;
|
||||
import buildcraft.builders.schematics.SchematicGlassPane;
|
||||
import buildcraft.builders.schematics.SchematicGravel;
|
||||
import buildcraft.builders.schematics.SchematicHanging;
|
||||
import buildcraft.builders.schematics.SchematicLever;
|
||||
import buildcraft.builders.schematics.SchematicMinecart;
|
||||
import buildcraft.builders.schematics.SchematicPiston;
|
||||
import buildcraft.builders.schematics.SchematicPortal;
|
||||
import buildcraft.builders.schematics.SchematicPumpkin;
|
||||
import buildcraft.builders.schematics.SchematicRail;
|
||||
import buildcraft.builders.schematics.SchematicRedstoneDiode;
|
||||
import buildcraft.builders.schematics.SchematicRedstoneLamp;
|
||||
import buildcraft.builders.schematics.SchematicRedstoneWire;
|
||||
import buildcraft.builders.schematics.SchematicSeeds;
|
||||
import buildcraft.builders.schematics.SchematicSign;
|
||||
import buildcraft.builders.schematics.SchematicSkull;
|
||||
import buildcraft.builders.schematics.SchematicStairs;
|
||||
import buildcraft.builders.schematics.SchematicStone;
|
||||
import buildcraft.builders.schematics.SchematicTripWireHook;
|
||||
import buildcraft.builders.schematics.*;
|
||||
import buildcraft.builders.statements.BuildersActionProvider;
|
||||
import buildcraft.core.CompatHooks;
|
||||
import buildcraft.core.DefaultProps;
|
||||
|
@ -136,6 +107,37 @@ import buildcraft.core.builders.schematics.SchematicTileCreative;
|
|||
import buildcraft.core.builders.schematics.SchematicWallSide;
|
||||
import buildcraft.core.config.ConfigManager;
|
||||
import buildcraft.core.proxy.CoreProxy;
|
||||
import com.google.common.collect.Lists;
|
||||
import cpw.mods.fml.client.event.ConfigChangedEvent;
|
||||
import cpw.mods.fml.common.FMLCommonHandler;
|
||||
import cpw.mods.fml.common.Mod;
|
||||
import cpw.mods.fml.common.event.*;
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||
import cpw.mods.fml.common.network.NetworkRegistry;
|
||||
import cpw.mods.fml.common.registry.GameRegistry;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.renderer.texture.TextureMap;
|
||||
import net.minecraft.entity.item.*;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.launchwrapper.Launch;
|
||||
import net.minecraft.stats.Achievement;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.event.TextureStitchEvent;
|
||||
import net.minecraftforge.common.DimensionManager;
|
||||
import net.minecraftforge.common.ForgeChunkManager;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.common.config.Property;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.PrintWriter;
|
||||
import java.util.List;
|
||||
|
||||
@Mod(name = "BuildCraft Builders", version = Version.VERSION, useMetadata = false, modid = "BuildCraft|Builders", dependencies = DefaultProps.DEPENDENCY_CORE)
|
||||
public class BuildCraftBuilders extends BuildCraftMod {
|
||||
|
@ -169,7 +171,7 @@ public class BuildCraftBuilders extends BuildCraftMod {
|
|||
public static boolean quarryLoadsChunks = true;
|
||||
public static boolean quarryOneTimeUse = false;
|
||||
|
||||
private String blueprintServerDir, blueprintClientDir;
|
||||
private String oldBlueprintServerDir, blueprintClientDir;
|
||||
|
||||
public class QuarryChunkloadCallback implements ForgeChunkManager.OrderedLoadingCallback {
|
||||
@Override
|
||||
|
@ -209,7 +211,7 @@ public class BuildCraftBuilders extends BuildCraftMod {
|
|||
BuildCraftCore.mainConfigManager.register("blueprints.serverDatabaseDirectory",
|
||||
"\"$MINECRAFT" + File.separator + "config" + File.separator + "buildcraft" + File.separator
|
||||
+ "blueprints" + File.separator + "server\"",
|
||||
"Location for the server blueprint database (used by all blueprint items).", ConfigManager.RestartRequirement.WORLD);
|
||||
"DEPRECATED - USED ONLY FOR COMPATIBILITY", ConfigManager.RestartRequirement.GAME);
|
||||
BuildCraftCore.mainConfigManager.register("blueprints.clientDatabaseDirectory",
|
||||
"\"$MINECRAFT" + File.separator + "blueprints\"",
|
||||
"Location for the client blueprint database (used by the Electronic Library).", ConfigManager.RestartRequirement.NONE);
|
||||
|
@ -236,9 +238,8 @@ public class BuildCraftBuilders extends BuildCraftMod {
|
|||
if (restartType == ConfigManager.RestartRequirement.GAME) {
|
||||
reloadConfig(ConfigManager.RestartRequirement.WORLD);
|
||||
} else if (restartType == ConfigManager.RestartRequirement.WORLD) {
|
||||
blueprintServerDir = BuildCraftCore.mainConfigManager.get("blueprints.serverDatabaseDirectory").getString();
|
||||
blueprintServerDir = JavaTools.stripSurroundingQuotes(replacePathVariables(blueprintServerDir));
|
||||
serverDB.init(new String[] {blueprintServerDir}, blueprintServerDir);
|
||||
oldBlueprintServerDir = BuildCraftCore.mainConfigManager.get("blueprints.serverDatabaseDirectory").getString();
|
||||
oldBlueprintServerDir = JavaTools.stripSurroundingQuotes(replacePathVariables(oldBlueprintServerDir));
|
||||
|
||||
reloadConfig(ConfigManager.RestartRequirement.NONE);
|
||||
} else {
|
||||
|
@ -333,8 +334,8 @@ public class BuildCraftBuilders extends BuildCraftMod {
|
|||
}
|
||||
}
|
||||
|
||||
// Refresh the databases once all the library type handlers are registered
|
||||
serverDB.refresh();
|
||||
// Refresh the client database once all the library type handlers are registered
|
||||
// The server database is refreshed later
|
||||
clientDB.refresh();
|
||||
}
|
||||
|
||||
|
@ -627,6 +628,12 @@ public class BuildCraftBuilders extends BuildCraftMod {
|
|||
TilePathMarker.clearAvailableMarkersList();
|
||||
}
|
||||
|
||||
@Mod.EventHandler
|
||||
public void serverAboutToStart(FMLServerAboutToStartEvent event) {
|
||||
String blueprintPath = new File(DimensionManager.getCurrentSaveRootDirectory(), "buildcraft" + File.separator + "blueprints").getPath();
|
||||
serverDB.init(new String[]{oldBlueprintServerDir, blueprintPath}, blueprintPath);
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void loadTextures(TextureStitchEvent.Pre evt) {
|
||||
|
|
|
@ -33,7 +33,7 @@ public class LibraryDatabase {
|
|||
protected LibraryId[] pages = new LibraryId[0];
|
||||
|
||||
private File outputDir;
|
||||
private File[] inputDirs;
|
||||
private List<File> inputDirs;
|
||||
|
||||
/**
|
||||
* Initialize the blueprint database.
|
||||
|
@ -47,10 +47,13 @@ public class LibraryDatabase {
|
|||
outputDir.mkdirs();
|
||||
}
|
||||
|
||||
inputDirs = new File[inputPaths.length];
|
||||
inputDirs = new ArrayList<File>();
|
||||
|
||||
for (int i = 0; i < inputDirs.length; ++i) {
|
||||
inputDirs[i] = new File(inputPaths[i]);
|
||||
for (int i = 0; i < inputPaths.length; ++i) {
|
||||
File inputDir = new File(inputPaths[i]);
|
||||
if (inputDir.exists()) {
|
||||
inputDirs.add(inputDir);
|
||||
}
|
||||
}
|
||||
|
||||
refresh();
|
||||
|
@ -58,7 +61,9 @@ public class LibraryDatabase {
|
|||
|
||||
public void refresh() {
|
||||
blueprintIds = new TreeSet<LibraryId>();
|
||||
loadIndex(inputDirs);
|
||||
for (File f : inputDirs) {
|
||||
loadIndex(f);
|
||||
}
|
||||
}
|
||||
|
||||
public void deleteBlueprint (LibraryId id) {
|
||||
|
@ -117,14 +122,6 @@ public class LibraryDatabase {
|
|||
}
|
||||
}
|
||||
|
||||
private void loadIndex(File[] dirs) {
|
||||
for (File dir : dirs) {
|
||||
if (dir != null) {
|
||||
loadIndex(dir);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void loadIndex(File directory) {
|
||||
FilenameFilter filter = new FilenameFilter() {
|
||||
@Override
|
||||
|
|
Loading…
Reference in a new issue