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.hooks.SlimefunHooks;
|
||||
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.CustomItemDataService;
|
||||
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.PlayerProfile;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
import me.mrCookieSlime.Slimefun.api.SlimefunBackup;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.UniversalBlockMenu;
|
||||
import me.mrCookieSlime.Slimefun.utils.ConfigCache;
|
||||
import me.mrCookieSlime.Slimefun.utils.Utilities;
|
||||
@ -94,9 +94,10 @@ public final class SlimefunPlugin extends JavaPlugin {
|
||||
private final CustomTextureService textureService = new CustomTextureService(this);
|
||||
private final BlockDataService blockDataService = new BlockDataService(this, "slimefun_block");
|
||||
private final GitHubService gitHubService = new GitHubService("TheBusyBiscuit/Slimefun4");
|
||||
private final AutoSavingService autoSavingService = new AutoSavingService();
|
||||
private final UpdaterService updaterService = new UpdaterService(this, getFile());
|
||||
|
||||
private final AutoSavingService autoSavingService = new AutoSavingService();
|
||||
private final BackupService backupService = new BackupService();
|
||||
|
||||
private TickerTask ticker;
|
||||
private LocalizationService local;
|
||||
private NetworkManager networkManager;
|
||||
@ -381,7 +382,7 @@ public final class SlimefunPlugin extends JavaPlugin {
|
||||
menu.save();
|
||||
}
|
||||
|
||||
SlimefunBackup.start();
|
||||
backupService.run();
|
||||
|
||||
// Prevent Memory Leaks
|
||||
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);
|
||||
|
||||
}
|
@ -33,7 +33,7 @@ public final class ItemEnergy {
|
||||
if (item == null || item.getType() == Material.AIR || item.getAmount() < 1) return 0F;
|
||||
if (!item.hasItemMeta() || !item.getItemMeta().hasLore()) return 0F;
|
||||
|
||||
for (String line: item.getItemMeta().getLore()) {
|
||||
for (String line : item.getItemMeta().getLore()) {
|
||||
if (line.startsWith(ChatColors.color("&c&o&8\u21E8 &e\u26A1 &7")) && line.contains(" / ") && line.endsWith(" J")) {
|
||||
return Float.valueOf(line.split(" / ")[1].replace(" J", ""));
|
||||
}
|
||||
@ -44,7 +44,7 @@ public final class ItemEnergy {
|
||||
|
||||
public static float addStoredEnergy(ItemStack item, float energy) {
|
||||
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 capacity = getMaxEnergy(item);
|
||||
|
Loading…
Reference in New Issue
Block a user