mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-20 03:35:51 +00:00
[CI skip] Refactoring
This commit is contained in:
parent
7d38654452
commit
447683b600
@ -0,0 +1,137 @@
|
|||||||
|
package io.github.thebusybiscuit.slimefun4.core.services;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.text.DateFormat;
|
||||||
|
import java.text.ParseException;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import java.util.zip.ZipEntry;
|
||||||
|
import java.util.zip.ZipOutputStream;
|
||||||
|
|
||||||
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
|
|
||||||
|
public class BackupService {
|
||||||
|
|
||||||
|
public void run() {
|
||||||
|
DateFormat format = new SimpleDateFormat("yyyy-MM-dd-HH-mm");
|
||||||
|
|
||||||
|
File folder = new File("data-storage/Slimefun/block-backups");
|
||||||
|
List<File> backups = Arrays.asList(folder.listFiles());
|
||||||
|
|
||||||
|
if (backups.size() > 20) {
|
||||||
|
deleteOldBackups(format, backups);
|
||||||
|
}
|
||||||
|
|
||||||
|
File file = new File("data-storage/Slimefun/block-backups/" + format.format(new Date()) + ".zip");
|
||||||
|
|
||||||
|
if (!file.exists() || file.delete()) {
|
||||||
|
try {
|
||||||
|
if (file.createNewFile()) {
|
||||||
|
try (ZipOutputStream output = new ZipOutputStream(new FileOutputStream(file))) {
|
||||||
|
createBackup(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
Slimefun.getLogger().log(Level.INFO, "Backed up Data to: " + file.getName());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Slimefun.getLogger().log(Level.WARNING, "Could not create backup-file: " + file.getName());
|
||||||
|
}
|
||||||
|
} catch(IOException x) {
|
||||||
|
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating a World-Backup for Slimefun " + SlimefunPlugin.getVersion(), x);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void createBackup(ZipOutputStream output) throws IOException {
|
||||||
|
byte[] buffer = new byte[1024];
|
||||||
|
|
||||||
|
for (File folder : new File("data-storage/Slimefun/stored-blocks/").listFiles()) {
|
||||||
|
for (File file : folder.listFiles()) {
|
||||||
|
ZipEntry entry = new ZipEntry("stored-blocks/" + folder.getName() + '/' + file.getName());
|
||||||
|
output.putNextEntry(entry);
|
||||||
|
|
||||||
|
try (FileInputStream input = new FileInputStream(file)) {
|
||||||
|
int length;
|
||||||
|
|
||||||
|
while ((length = input.read(buffer)) > 0) {
|
||||||
|
output.write(buffer, 0, length);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
output.closeEntry();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (File file : new File("data-storage/Slimefun/universal-inventories/").listFiles()) {
|
||||||
|
ZipEntry entry = new ZipEntry("universal-inventories/" + file.getName());
|
||||||
|
output.putNextEntry(entry);
|
||||||
|
|
||||||
|
try (FileInputStream input = new FileInputStream(file)) {
|
||||||
|
int length;
|
||||||
|
|
||||||
|
while ((length = input.read(buffer)) > 0) {
|
||||||
|
output.write(buffer, 0, length);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
output.closeEntry();
|
||||||
|
}
|
||||||
|
|
||||||
|
for (File file : new File("data-storage/Slimefun/stored-inventories/").listFiles()) {
|
||||||
|
ZipEntry entry = new ZipEntry("stored-inventories/" + file.getName());
|
||||||
|
output.putNextEntry(entry);
|
||||||
|
|
||||||
|
try (FileInputStream input = new FileInputStream(file)) {
|
||||||
|
int length;
|
||||||
|
|
||||||
|
while ((length = input.read(buffer)) > 0) {
|
||||||
|
output.write(buffer, 0, length);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
output.closeEntry();
|
||||||
|
}
|
||||||
|
|
||||||
|
File chunks = new File("data-storage/Slimefun/stored-chunks/chunks.sfc");
|
||||||
|
|
||||||
|
if (chunks.exists()) {
|
||||||
|
ZipEntry entry = new ZipEntry("stored-chunks/chunks.sfc");
|
||||||
|
output.putNextEntry(entry);
|
||||||
|
|
||||||
|
try (FileInputStream input = new FileInputStream(chunks)) {
|
||||||
|
int length;
|
||||||
|
|
||||||
|
while ((length = input.read(buffer)) > 0) {
|
||||||
|
output.write(buffer, 0, length);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
output.closeEntry();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void deleteOldBackups(DateFormat format, List<File> backups) {
|
||||||
|
Collections.sort(backups, (a, b) -> {
|
||||||
|
try {
|
||||||
|
return (int) (format.parse(a.getName().replace(".zip", "")).getTime() - format.parse(b.getName().replace(".zip", "")).getTime());
|
||||||
|
} catch (ParseException e) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
for (int i = backups.size() - 20; i > 0; i--) {
|
||||||
|
if (!backups.get(i).delete()) {
|
||||||
|
Slimefun.getLogger().log(Level.WARNING, "Could not delete Backup: " + backups.get(i).getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -24,6 +24,7 @@ import io.github.thebusybiscuit.slimefun4.core.commands.SlimefunCommand;
|
|||||||
import io.github.thebusybiscuit.slimefun4.core.commands.SlimefunTabCompleter;
|
import io.github.thebusybiscuit.slimefun4.core.commands.SlimefunTabCompleter;
|
||||||
import io.github.thebusybiscuit.slimefun4.core.hooks.SlimefunHooks;
|
import io.github.thebusybiscuit.slimefun4.core.hooks.SlimefunHooks;
|
||||||
import io.github.thebusybiscuit.slimefun4.core.services.AutoSavingService;
|
import io.github.thebusybiscuit.slimefun4.core.services.AutoSavingService;
|
||||||
|
import io.github.thebusybiscuit.slimefun4.core.services.BackupService;
|
||||||
import io.github.thebusybiscuit.slimefun4.core.services.BlockDataService;
|
import io.github.thebusybiscuit.slimefun4.core.services.BlockDataService;
|
||||||
import io.github.thebusybiscuit.slimefun4.core.services.CustomItemDataService;
|
import io.github.thebusybiscuit.slimefun4.core.services.CustomItemDataService;
|
||||||
import io.github.thebusybiscuit.slimefun4.core.services.CustomTextureService;
|
import io.github.thebusybiscuit.slimefun4.core.services.CustomTextureService;
|
||||||
@ -78,7 +79,6 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AReactor;
|
|||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
import me.mrCookieSlime.Slimefun.api.PlayerProfile;
|
import me.mrCookieSlime.Slimefun.api.PlayerProfile;
|
||||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
import me.mrCookieSlime.Slimefun.api.SlimefunBackup;
|
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.UniversalBlockMenu;
|
import me.mrCookieSlime.Slimefun.api.inventory.UniversalBlockMenu;
|
||||||
import me.mrCookieSlime.Slimefun.utils.ConfigCache;
|
import me.mrCookieSlime.Slimefun.utils.ConfigCache;
|
||||||
import me.mrCookieSlime.Slimefun.utils.Utilities;
|
import me.mrCookieSlime.Slimefun.utils.Utilities;
|
||||||
@ -94,8 +94,9 @@ public final class SlimefunPlugin extends JavaPlugin {
|
|||||||
private final CustomTextureService textureService = new CustomTextureService(this);
|
private final CustomTextureService textureService = new CustomTextureService(this);
|
||||||
private final BlockDataService blockDataService = new BlockDataService(this, "slimefun_block");
|
private final BlockDataService blockDataService = new BlockDataService(this, "slimefun_block");
|
||||||
private final GitHubService gitHubService = new GitHubService("TheBusyBiscuit/Slimefun4");
|
private final GitHubService gitHubService = new GitHubService("TheBusyBiscuit/Slimefun4");
|
||||||
private final AutoSavingService autoSavingService = new AutoSavingService();
|
|
||||||
private final UpdaterService updaterService = new UpdaterService(this, getFile());
|
private final UpdaterService updaterService = new UpdaterService(this, getFile());
|
||||||
|
private final AutoSavingService autoSavingService = new AutoSavingService();
|
||||||
|
private final BackupService backupService = new BackupService();
|
||||||
|
|
||||||
private TickerTask ticker;
|
private TickerTask ticker;
|
||||||
private LocalizationService local;
|
private LocalizationService local;
|
||||||
@ -381,7 +382,7 @@ public final class SlimefunPlugin extends JavaPlugin {
|
|||||||
menu.save();
|
menu.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
SlimefunBackup.start();
|
backupService.run();
|
||||||
|
|
||||||
// Prevent Memory Leaks
|
// Prevent Memory Leaks
|
||||||
AContainer.processing = null;
|
AContainer.processing = null;
|
||||||
|
@ -1,128 +0,0 @@
|
|||||||
package me.mrCookieSlime.Slimefun.api;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileInputStream;
|
|
||||||
import java.io.FileOutputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.text.DateFormat;
|
|
||||||
import java.text.ParseException;
|
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.logging.Level;
|
|
||||||
import java.util.zip.ZipEntry;
|
|
||||||
import java.util.zip.ZipOutputStream;
|
|
||||||
|
|
||||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
|
||||||
|
|
||||||
public final class SlimefunBackup {
|
|
||||||
|
|
||||||
private SlimefunBackup() {}
|
|
||||||
|
|
||||||
public static void start() {
|
|
||||||
File folder = new File("data-storage/Slimefun/block-backups");
|
|
||||||
List<File> backups = Arrays.asList(folder.listFiles());
|
|
||||||
DateFormat format = new SimpleDateFormat("yyyy-MM-dd-HH-mm");
|
|
||||||
|
|
||||||
if (backups.size() > 20) {
|
|
||||||
Collections.sort(backups, (a, b) -> {
|
|
||||||
try {
|
|
||||||
return (int) (format.parse(a.getName().replace(".zip", "")).getTime() - new SimpleDateFormat("yyyy-MM-dd-HH-mm").parse(b.getName().replace(".zip", "")).getTime());
|
|
||||||
} catch (ParseException e) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
for (int i = backups.size() - 20; i > 0; i--) {
|
|
||||||
if (!backups.get(i).delete()) {
|
|
||||||
Slimefun.getLogger().log(Level.WARNING, "Could not delete Backup: " + backups.get(i).getName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
File file = new File("data-storage/Slimefun/block-backups/" + format.format(new Date()) + ".zip");
|
|
||||||
byte[] buffer = new byte[1024];
|
|
||||||
|
|
||||||
if (!file.exists() || file.delete()) {
|
|
||||||
try {
|
|
||||||
if (file.createNewFile()) {
|
|
||||||
try (ZipOutputStream output = new ZipOutputStream(new FileOutputStream(file))) {
|
|
||||||
for (File f1 : new File("data-storage/Slimefun/stored-blocks/").listFiles()) {
|
|
||||||
for (File f : f1.listFiles()) {
|
|
||||||
ZipEntry entry = new ZipEntry("stored-blocks/" + f1.getName() + '/' + f.getName());
|
|
||||||
output.putNextEntry(entry);
|
|
||||||
|
|
||||||
try (FileInputStream input = new FileInputStream(f)) {
|
|
||||||
int length;
|
|
||||||
|
|
||||||
while ((length = input.read(buffer)) > 0) {
|
|
||||||
output.write(buffer, 0, length);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
output.closeEntry();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (File f : new File("data-storage/Slimefun/universal-inventories/").listFiles()) {
|
|
||||||
ZipEntry entry = new ZipEntry("universal-inventories/" + f.getName());
|
|
||||||
output.putNextEntry(entry);
|
|
||||||
|
|
||||||
try (FileInputStream input = new FileInputStream(f)) {
|
|
||||||
int length;
|
|
||||||
|
|
||||||
while ((length = input.read(buffer)) > 0) {
|
|
||||||
output.write(buffer, 0, length);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
output.closeEntry();
|
|
||||||
}
|
|
||||||
|
|
||||||
for (File f : new File("data-storage/Slimefun/stored-inventories/").listFiles()) {
|
|
||||||
ZipEntry entry = new ZipEntry("stored-inventories/" + f.getName());
|
|
||||||
output.putNextEntry(entry);
|
|
||||||
|
|
||||||
try (FileInputStream input = new FileInputStream(f)) {
|
|
||||||
int length;
|
|
||||||
|
|
||||||
while ((length = input.read(buffer)) > 0) {
|
|
||||||
output.write(buffer, 0, length);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
output.closeEntry();
|
|
||||||
}
|
|
||||||
|
|
||||||
File chunks = new File("data-storage/Slimefun/stored-chunks/chunks.sfc");
|
|
||||||
|
|
||||||
if (chunks.exists()) {
|
|
||||||
ZipEntry entry = new ZipEntry("stored-chunks/chunks.sfc");
|
|
||||||
output.putNextEntry(entry);
|
|
||||||
|
|
||||||
try (FileInputStream input = new FileInputStream(chunks)) {
|
|
||||||
int length;
|
|
||||||
|
|
||||||
while ((length = input.read(buffer)) > 0) {
|
|
||||||
output.write(buffer, 0, length);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
output.closeEntry();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Slimefun.getLogger().log(Level.INFO, "Backed up Data to: " + file.getName());
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
Slimefun.getLogger().log(Level.WARNING, "Could not create backup-file: " + file.getName());
|
|
||||||
}
|
|
||||||
} catch(IOException x) {
|
|
||||||
Slimefun.getLogger().log(Level.SEVERE, "An Error occured while creating a World-Backup for Slimefun " + SlimefunPlugin.getVersion(), x);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,10 +0,0 @@
|
|||||||
package me.mrCookieSlime.Slimefun.api.energy;
|
|
||||||
|
|
||||||
import org.bukkit.block.Block;
|
|
||||||
|
|
||||||
@FunctionalInterface
|
|
||||||
public interface EnergyFlowListener {
|
|
||||||
|
|
||||||
void onPulse(Block b);
|
|
||||||
|
|
||||||
}
|
|
@ -44,7 +44,7 @@ public final class ItemEnergy {
|
|||||||
|
|
||||||
public static float addStoredEnergy(ItemStack item, float energy) {
|
public static float addStoredEnergy(ItemStack item, float energy) {
|
||||||
if (item == null || item.getType() == Material.AIR || item.getAmount() < 1) return 0F;
|
if (item == null || item.getType() == Material.AIR || item.getAmount() < 1) return 0F;
|
||||||
if (!item.hasItemMeta() || !item.getItemMeta().hasLore()) return 0F;
|
if (!item.hasItemMeta() || !item.getItemMeta().hasLore()) return 0;
|
||||||
|
|
||||||
float rest = 0F;
|
float rest = 0F;
|
||||||
float capacity = getMaxEnergy(item);
|
float capacity = getMaxEnergy(item);
|
||||||
|
Loading…
Reference in New Issue
Block a user