1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-20 11:45:51 +00:00

[CI skip] Refactoring

This commit is contained in:
TheBusyBiscuit 2020-02-08 20:50:21 +01:00
parent 7d38654452
commit 447683b600
5 changed files with 144 additions and 144 deletions

View File

@ -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());
}
}
}
}

View File

@ -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;

View File

@ -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);
}
}
}
}

View File

@ -1,10 +0,0 @@
package me.mrCookieSlime.Slimefun.api.energy;
import org.bukkit.block.Block;
@FunctionalInterface
public interface EnergyFlowListener {
void onPulse(Block b);
}

View File

@ -33,7 +33,7 @@ public final class ItemEnergy {
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 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")) { 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", "")); return Float.valueOf(line.split(" / ")[1].replace(" J", ""));
} }
@ -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);