aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java
diff options
context:
space:
mode:
authorBuildTools <james.jenour@protonmail.com>2021-03-27 07:40:53 +0800
committerBuildTools <james.jenour@protonmail.com>2021-03-27 07:40:53 +0800
commit03b9a8dbcc1ebd5f8c39e4733a741a4092ab0a1d (patch)
treeb8ddc6757fc06f4a325121e7d972c0ddf152b401 /src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java
parent06c3c7fcfd8f65e2a30f81626457f4180ea52a36 (diff)
downloadnotenoughupdates-03b9a8dbcc1ebd5f8c39e4733a741a4092ab0a1d.tar.gz
notenoughupdates-03b9a8dbcc1ebd5f8c39e4733a741a4092ab0a1d.tar.bz2
notenoughupdates-03b9a8dbcc1ebd5f8c39e4733a741a4092ab0a1d.zip
PRE26
Diffstat (limited to 'src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java')
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java139
1 files changed, 84 insertions, 55 deletions
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java b/src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java
index 061d6774..4f392ae8 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java
@@ -17,6 +17,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.nbt.*;
import net.minecraft.network.play.client.C0DPacketCloseWindow;
import net.minecraft.util.ResourceLocation;
+import org.apache.commons.io.FileUtils;
import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.Display;
@@ -26,6 +27,8 @@ import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.StandardCharsets;
import java.util.*;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
@@ -57,10 +60,10 @@ public class NEUManager {
private String currentProfileBackup = "";
public final HypixelApi hypixelApi = new HypixelApi();
- private ResourceLocation wkZip = new ResourceLocation("notenoughupdates:wkhtmltox.zip");
private Map<String, ItemStack> itemstackCache = new HashMap<>();
- //private static final String AUCTIONS_PRICE_URL = "https://moulberry.github.io/files/auc_avg_jsons/average_3day.json.gz";
+ private ExecutorService repoLoaderES = Executors.newSingleThreadExecutor();
+
private static final String GIT_COMMITS_URL = "https://api.github.com/repos/Moulberry/NotEnoughUpdates-REPO/commits/master";
private HashMap<String, Set<String>> usagesMap = new HashMap<>();
@@ -88,15 +91,6 @@ public class NEUManager {
if(itemRenameJson == null) {
itemRenameJson = new JsonObject();
}
-
- File wkShell = new File(configLocation, "wkhtmltox/bin/wkhtmltoimage");
- if(!wkShell.exists()) {
- try {
- InputStream is = Minecraft.getMinecraft().getResourceManager().getResource(wkZip).getInputStream();
- unzip(is, configLocation);
- } catch (IOException e) {
- }
- }
}
public void setCurrentProfile(String currentProfile) {
@@ -163,7 +157,7 @@ public class NEUManager {
}*/
- Thread thread = new Thread(() -> {
+ repoLoaderES.submit(() -> {
JDialog dialog = null;
try {
if(NotEnoughUpdates.INSTANCE.config.hidden.autoupdate) {
@@ -211,12 +205,23 @@ public class NEUManager {
} catch (IOException e) {
return;
}
+
+
URL url = new URL(dlUrl);
URLConnection urlConnection = url.openConnection();
urlConnection.setConnectTimeout(15000);
- urlConnection.setReadTimeout(20000);
- try (BufferedInputStream inStream = new BufferedInputStream(urlConnection.getInputStream());
- FileOutputStream fileOutputStream = new FileOutputStream(itemsZip)) {
+ urlConnection.setReadTimeout(30000);
+
+ try(InputStream is = urlConnection.getInputStream()) {
+ FileUtils.copyInputStreamToFile(is, itemsZip);
+ } catch (IOException e) {
+ dialog.dispose();
+ e.printStackTrace();
+ System.err.println("Failed to download NEU Repo! Please report this issue to the mod creator");
+ return;
+ }
+ /*try (BufferedInputStream inStream = new BufferedInputStream(urlConnection.getInputStream());
+ FileOutputStream fileOutputStream = new FileOutputStream(itemsZip)) {
byte dataBuffer[] = new byte[1024];
int bytesRead;
while ((bytesRead = inStream.read(dataBuffer, 0, 1024)) != -1) {
@@ -225,7 +230,7 @@ public class NEUManager {
} catch (IOException e) {
dialog.dispose();
return;
- }
+ }*/
pane.setMessage("Unzipping NEU Master Archive.");
dialog.pack();
@@ -242,6 +247,8 @@ public class NEUManager {
} catch (IOException e) {
}
}
+
+ Constants.reload();
}
} catch(Exception e) {
e.printStackTrace();
@@ -249,31 +256,40 @@ public class NEUManager {
if(dialog != null) dialog.dispose();
}
+ System.err.println("First load");
+
File items = new File(repoLocation, "items");
if(items.exists()) {
File[] itemFiles = new File(repoLocation, "items").listFiles();
if(itemFiles != null) {
for(File f : itemFiles) {
String internalname = f.getName().substring(0, f.getName().length()-5);
- if(!getItemInformation().keySet().contains(internalname)) {
- loadItem(internalname);
+ synchronized(itemMap) {
+ if(!itemMap.keySet().contains(internalname)) {
+ loadItem(internalname);
+ }
}
}
}
}
});
+ System.err.println("Second load");
+
File items = new File(repoLocation, "items");
if(items.exists()) {
File[] itemFiles = new File(repoLocation, "items").listFiles();
if(itemFiles != null) {
for(File f : itemFiles) {
String internalname = f.getName().substring(0, f.getName().length()-5);
- loadItem(internalname);
+ synchronized(itemMap) {
+ if(!itemMap.keySet().contains(internalname)) {
+ loadItem(internalname);
+ }
+ }
}
}
}
- thread.start();
}
/**
@@ -301,56 +317,69 @@ public class NEUManager {
itemMap.put(internalName, json);
if(json.has("recipe")) {
- JsonObject recipe = json.get("recipe").getAsJsonObject();
-
- String[] x = {"1","2","3"};
- String[] y = {"A","B","C"};
- for(int i=0; i<9; i++) {
- String name = y[i/3]+x[i%3];
- String itemS = recipe.get(name).getAsString();
- if(itemS != null && itemS.split(":").length == 2) {
- itemS = itemS.split(":")[0];
- }
+ synchronized(usagesMap) {
+ JsonObject recipe = json.get("recipe").getAsJsonObject();
+
+ String[] x = {"1","2","3"};
+ String[] y = {"A","B","C"};
+ for(int i=0; i<9; i++) {
+ String name = y[i/3]+x[i%3];
+ String itemS = recipe.get(name).getAsString();
+ if(itemS != null && itemS.split(":").length == 2) {
+ itemS = itemS.split(":")[0];
+ }
- if(!usagesMap.containsKey(itemS)) {
- usagesMap.put(itemS, new HashSet<>());
+ if(!usagesMap.containsKey(itemS)) {
+ usagesMap.put(itemS, new HashSet<>());
+ }
+ usagesMap.get(itemS).add(internalName);
}
- usagesMap.get(itemS).add(internalName);
}
}
if(json.has("displayname")) {
- int wordIndex=0;
- for(String str : json.get("displayname").getAsString().split(" ")) {
- str = clean(str);
- if(!titleWordMap.containsKey(str)) {
- titleWordMap.put(str, new HashMap<>());
- }
- if(!titleWordMap.get(str).containsKey(internalName)) {
- titleWordMap.get(str).put(internalName, new ArrayList<>());
+ synchronized(titleWordMap) {
+ int wordIndex=0;
+ for(String str : json.get("displayname").getAsString().split(" ")) {
+ str = clean(str);
+ if(!titleWordMap.containsKey(str)) {
+ titleWordMap.put(str, new HashMap<>());
+ }
+ if(!titleWordMap.get(str).containsKey(internalName)) {
+ titleWordMap.get(str).put(internalName, new ArrayList<>());
+ }
+ titleWordMap.get(str).get(internalName).add(wordIndex);
+ wordIndex++;
}
- titleWordMap.get(str).get(internalName).add(wordIndex);
- wordIndex++;
}
}
if(json.has("lore")) {
- int wordIndex=0;
- for(JsonElement element : json.get("lore").getAsJsonArray()) {
- for(String str : element.getAsString().split(" ")) {
- str = clean(str);
- if(!loreWordMap.containsKey(str)) {
- loreWordMap.put(str, new HashMap<>());
- }
- if(!loreWordMap.get(str).containsKey(internalName)) {
- loreWordMap.get(str).put(internalName, new ArrayList<>());
+ synchronized(loreWordMap) {
+ int wordIndex=0;
+ for(JsonElement element : json.get("lore").getAsJsonArray()) {
+ for(String str : element.getAsString().split(" ")) {
+ str = clean(str);
+ if(!loreWordMap.containsKey(str)) {
+ loreWordMap.put(str, new HashMap<>());
+ }
+ if(!loreWordMap.get(str).containsKey(internalName)) {
+ loreWordMap.get(str).put(internalName, new ArrayList<>());
+ }
+ loreWordMap.get(str).get(internalName).add(wordIndex);
+ wordIndex++;
}
- loreWordMap.get(str).get(internalName).add(wordIndex);
- wordIndex++;
}
}
}
} catch(Exception e) {
+ synchronized(loreWordMap) {
+ System.out.println("loreWordMap is : " + loreWordMap);
+ }
+ synchronized(titleWordMap) {
+ System.out.println("titleWordMap is : " + titleWordMap);
+ }
+ System.out.println("internalName is : " + internalName);
e.printStackTrace();
}
}
@@ -1037,7 +1066,7 @@ public class NEUManager {
/**
* Modified from https://www.journaldev.com/960/java-unzip-file-example
*/
- private static void unzip(InputStream src, File dest) {
+ public static void unzip(InputStream src, File dest) {
//buffer for read and write data to file
byte[] buffer = new byte[1024];
try {