originalWorld.getSaveHandler().getWorldDirectory().getName(), true, server.getDataFixer()); World freshWorld = new WorldServer(server, saveHandler, originalWorld.getWorldInfo(), originalWorld.provider.getDimension(), originalWorld.profiler).init();
private File getSaveFolder(ISaveHandler saveHandler, World world) { File worldFolder; IChunkLoader chunkLoader = saveHandler.getChunkLoader(world.provider); if (chunkLoader instanceof AnvilChunkLoader) { worldFolder = ((AnvilChunkLoader) chunkLoader).chunkSaveLocation; } else { worldFolder = saveHandler.getWorldDirectory(); } File saveFolder = new File(worldFolder, "llibrary"); if (!saveFolder.exists()) { saveFolder.mkdirs(); } return saveFolder; } }
@Override public SpawnableObject getMojangStructurePart(String name) { ResourceLocation resourceLocation = new ResourceLocation(name); TemplateManager mojangStructureParts = this.world.getSaveHandler().getStructureTemplateManager(); Template mojangStructurePart = mojangStructureParts.getTemplate(this.world.getMinecraftServer(), resourceLocation); if (mojangStructurePart == null) { return null; } return new MojangStructurePart(name, mojangStructurePart); }
public static void addWorldNames(World world) { final ISaveHandler saveHandler = world.getSaveHandler(); final File worldDirectory = saveHandler.getWorldDirectory(); if (worldDirectory != null) { final String worldDir = worldDirectory.getName(); mainSanitizer.addPre(PRIORITY_SAVE_DIR_NAME, replaceNoDuplicates(worldDir, "[save dir]")); } try { File dummy = saveHandler.getMapFileFromName("dummy"); if (dummy != null) { String parent = dummy.getParentFile().getParent(); if (parent != null) mainSanitizer.addPre(PRIORITY_SAVE_DIR, pathNoDuplicate(parent, "[save dir]")); } } catch (Throwable t) { Log.warn(t, "Failed to get sanitizer name for world"); } String worldName = world.getWorldInfo().getWorldName(); mainSanitizer.addPre(PRIORITY_WORLD_NAME, replaceNoDuplicates(worldName, "[world name]")); }
private void refreshActiveTradeStations(World world) { activeTradeStations = new LinkedHashMap<>(); File worldSave = world.getSaveHandler().getMapFileFromName("dummy"); File file = worldSave.getParentFile(); if (!file.exists() || !file.isDirectory()) { return; } String[] list = file.list(); if (list == null) { return; } for (String str : list) { if (!str.startsWith(TradeStation.SAVE_NAME)) { continue; } if (!str.endsWith(".dat")) { continue; } MailAddress address = new MailAddress(str.replace(TradeStation.SAVE_NAME, "").replace(".dat", "")); ITradeStation trade = PostManager.postRegistry.getTradeStation(world, address); if (trade == null) { continue; } registerTradeStation(trade); } }
private void create(World world, LostCityChunkGenerator provider, Random random, int chunkX, int chunkZ) { Rotation rotation = Rotation.values()[random.nextInt(Rotation.values().length)]; ChunkPrimer chunkprimer = provider.getChunkPrimer(chunkX, chunkZ, false); int i = 5; int j = 5; if (rotation == Rotation.CLOCKWISE_90) { i = -5; } else if (rotation == Rotation.CLOCKWISE_180) { i = -5; j = -5; } else if (rotation == Rotation.COUNTERCLOCKWISE_90) { j = -5; } int k = chunkprimer.findGroundBlockIdx(7, 7); int l = chunkprimer.findGroundBlockIdx(7, 7 + j); int i1 = chunkprimer.findGroundBlockIdx(7 + i, 7); int j1 = chunkprimer.findGroundBlockIdx(7 + i, 7 + j); int k1 = Math.min(Math.min(k, l), Math.min(i1, j1)); if (k1 < 60) { this.isValid = false; } else { BlockPos blockpos = new BlockPos(chunkX * 16 + 8, k1 + 1, chunkZ * 16 + 8); List<WoodlandMansionPieces.MansionTemplate> list = Lists.<WoodlandMansionPieces.MansionTemplate>newLinkedList(); WoodlandMansionPieces.generateMansion(world.getSaveHandler().getStructureTemplateManager(), blockpos, rotation, list, random); this.components.addAll(list); this.updateBoundingBox(); this.isValid = true; } }
@Override public void deleteTradeStation(World world, IMailAddress address) { TradeStation trade = getTradeStation(world, address); if (trade == null) { return; } // Need to be marked as invalid since WorldSavedData seems to do some caching of its own. trade.invalidate(); cachedTradeStations.remove(address); getPostOffice(world).deregisterTradeStation(trade); File file = world.getSaveHandler().getMapFileFromName(trade.mapName); boolean delete = file.delete(); if (!delete) { Log.error("Failed to delete trade station file. {}", file); } }
/** * Requires to start up from external from here * * drawback of the singleton build style * * @param server */ public static void onServerAboutToStart( MinecraftServer server ) { File worldDirectory = DimensionManager.getCurrentSaveRootDirectory(); if( worldDirectory == null ) { worldDirectory = server.getActiveAnvilConverter().getSaveLoader( server.getFolderName(), false ).getWorldDirectory(); } final WorldData newInstance = new WorldData( worldDirectory ); instance = newInstance; newInstance.onServerStarting(); }
@Override protected void generateStructure(World world, Random random, BlockPos position) { MinecraftServer server = world.getMinecraftServer(); TemplateManager templateManager = world.getSaveHandler().getStructureTemplateManager(); PlacementSettings settings = new PlacementSettings().setRotation(this.rotation).setMirror(this.mirror); Template template = templateManager.getTemplate(server, STRUCTURE); Map<BlockPos, String> dataBlocks = template.getDataBlocks(position, settings); template.addBlocksToWorldChunk(world, position, settings); dataBlocks.forEach((pos, type) -> { if (type.equals("Chest")) { world.setBlockState(pos, Blocks.AIR.getDefaultState(), 3); TileEntity tile = world.getTileEntity(pos.down()); if (tile instanceof TileEntityChest) { ((TileEntityChest) tile).setLootTable(LootTableList.CHESTS_VILLAGE_BLACKSMITH, random.nextLong()); //TODO Proper loottable } } }); }
private File getCustomHandlersFile(World world) { File worldDirectory = world.getSaveHandler().getWorldDirectory(); return new File(worldDirectory.getPath() + "/custom_matter.json"); } }
@Override protected void generateStructure(World world, Random random, BlockPos position) { MinecraftServer server = world.getMinecraftServer(); TemplateManager templateManager = world.getSaveHandler().getStructureTemplateManager(); PlacementSettings settings = new PlacementSettings(); settings.setRotation(this.rotation); settings.setMirror(this.mirror); settings.setRandom(random); Template template = templateManager.getTemplate(server, STRUCTURE); template.addBlocksToWorldChunk(world, position, settings); Map<BlockPos, String> dataBlocks = template.getDataBlocks(position, settings); dataBlocks.forEach((pos, type) -> { ResourceLocation lootTable = LOOT_TABLES.get(type); if (lootTable != null) { world.setBlockToAir(pos); TileEntity tile = world.getTileEntity(pos.down()); if (tile instanceof TileEntityChest) { ((TileEntityChest) tile).setLootTable(lootTable, random.nextLong()); } } }); }
private File getGalaxyFile(World world) { File worldDirectory = world.getSaveHandler().getWorldDirectory(); return new File(worldDirectory.getPath() + "/galaxy.dat"); }
private void generateFossil(World world, Random random, BlockPos pos) { MinecraftServer minecraftserver = world.getMinecraftServer(); Rotation[] arotation = Rotation.values(); Rotation rotation = arotation[random.nextInt(arotation.length)]; int i = random.nextInt(FOSSILS.length); TemplateManager templatemanager = world.getSaveHandler().getStructureTemplateManager(); Template template = templatemanager.getTemplate(minecraftserver, FOSSILS[i]); ChunkPos chunkpos = new ChunkPos(pos); StructureBoundingBox structureboundingbox = new StructureBoundingBox(chunkpos.getXStart(), 0, chunkpos.getZStart(), chunkpos.getXEnd(), 256, chunkpos.getZEnd()); PlacementSettings placementsettings = (new PlacementSettings()).setRotation(rotation).setBoundingBox(structureboundingbox).setRandom(random); BlockPos blockpos = template.transformedSize(rotation); BlockPos blockpos1 = template.getZeroPositionWithTransform(pos, Mirror.NONE, rotation); placementsettings.setIntegrity(1F); template.addBlocksToWorld(world, blockpos1, placementsettings, 20); }
private File getMatterRegistryFile(World world) { File worldDirectory = world.getSaveHandler().getWorldDirectory(); return new File(worldDirectory.getPath() + "/matter_registry.dat"); }
private void spawnActualHouse(World world, StructureBoundingBox sbb){ TemplateManager manager = world.getSaveHandler().getStructureTemplateManager(); MinecraftServer server = world.getMinecraftServer(); if(manager != null && server != null){ EnumFacing facing = this.getCoordBaseMode(); Mirror mirror; Rotation rotation; if(facing == EnumFacing.SOUTH){ mirror = Mirror.NONE; rotation = Rotation.NONE; } else if(facing == EnumFacing.WEST){ mirror = Mirror.NONE; rotation = Rotation.CLOCKWISE_90; } else if(facing == EnumFacing.EAST){ mirror = Mirror.LEFT_RIGHT; rotation = Rotation.CLOCKWISE_90; } else{ mirror = Mirror.LEFT_RIGHT; rotation = Rotation.NONE; } PlacementSettings placement = new PlacementSettings().setRotation(rotation).setMirror(mirror).setBoundingBox(sbb); Template template = manager.getTemplate(server, STRUCTURE_RES_LOC); if(template != null){ template.addBlocksToWorld(world, new BlockPos(this.getXWithOffset(0, 0), this.getYWithOffset(0), this.getZWithOffset(0, 0)), placement); } } }
/** * Get save location for Minecolonies backup data, from the world/save * directory. * * @return Save file for minecolonies. */ @NotNull private static File getBackupSaveLocation(final Date date) { @NotNull final File saveDir = new File(DimensionManager.getWorld(0).getSaveHandler().getWorldDirectory(), FILENAME_MINECOLONIES_PATH); return new File(saveDir, String.format(FILENAME_MINECOLONIES_BACKUP, new SimpleDateFormat("yyyy-MM-dd_HH.mm.ss").format(date))); }
TemplateManager templateManager = world.getSaveHandler().getStructureTemplateManager(); Template template = templateManager.getTemplate(server, getResource(this.structureType));
/** * Get save location for Minecolonies data, from the world/save directory. * * @return Save file for minecolonies. */ @NotNull public static File getSaveLocation() { @NotNull final File saveDir = new File(DimensionManager.getWorld(0).getSaveHandler().getWorldDirectory(), FILENAME_MINECOLONIES_PATH); return new File(saveDir, FILENAME_MINECOLONIES); }
@Override public boolean addComponentParts(World world, Random random, StructureBoundingBox bounds) { MinecraftServer server = world.getMinecraftServer(); TemplateManager templateManager = world.getSaveHandler().getStructureTemplateManager(); PlacementSettings settings = new PlacementSettings().setRotation(this.rotation).setMirror(this.mirror).setIgnoreEntities(true); Template template = templateManager.getTemplate(server, STRUCTURE);
public static void onServerStarting(MinecraftServer server) { bloodValueWorldFile = new File(new File(server.getWorld(0).getSaveHandler().getWorldDirectory(), REFERENCE.MODID), "dynamic-blood-values.txt"); if (bloodValueWorldFile.exists()) { loadDynamicBloodValues(bloodValueWorldFile); } }