Skip to content

Commit 3401ca8

Browse files
committed
some more utilities
1 parent ac55a66 commit 3401ca8

File tree

7 files changed

+74
-22
lines changed

7 files changed

+74
-22
lines changed

README.MD

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,12 @@ A library mod for 1.7.10 with lots of useful stuff. See the table below for more
1212

1313
The contents of the [util](src/main/java/com/falsepattern/lib/util) package so far:
1414

15-
| Class | Purpose |
16-
|---------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------|
17-
| [ResourceUtil](src/main/java/com/falsepattern/lib/util/ResourceUtil.java) | Provides methods for efficiently retrieving resources from SPECIFIC jar files instead of the entire classpath |
18-
| [Async](src/main/java/com/falsepattern/lib/util/Async.java) | Provides asynchronous execution utilities |
19-
15+
| Class | Purpose |
16+
|---------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------|
17+
| [AsyncUtil](src/main/java/com/falsepattern/lib/util/AsyncUtil.java) | Asynchronous execution utilities |
18+
| [LangUtil](src/main/java/com/falsepattern/lib/util/LangUtil.java) | Utility for having default language values defined inside code instead of lang files |
19+
| [RenderUtil](src/main/java/com/falsepattern/lib/util/RenderUtil.java) | Rendering tools. Currently, the only thing implemented is a way to grab the current partial tick time from the minecraft instance |
20+
| [ResourceUtil](src/main/java/com/falsepattern/lib/util/ResourceUtil.java) | Methods for efficiently retrieving resources from SPECIFIC jar files instead of the entire classpath |
2021

2122
Anything annotated with [@StableAPI](src/main/java/com/falsepattern/lib/StableAPI.java) is guaranteed to not change in patch versions.
2223

src/main/java/com/falsepattern/lib/internal/proxy/ClientProxy.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,19 @@
22

33
import com.falsepattern.lib.internal.FalsePatternLib;
44
import com.falsepattern.lib.internal.Tags;
5-
import com.falsepattern.lib.text.FormattedText;
65
import com.falsepattern.lib.updates.UpdateChecker;
7-
import com.falsepattern.lib.util.Async;
8-
import cpw.mods.fml.common.Loader;
6+
import com.falsepattern.lib.util.AsyncUtil;
97
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
108
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
119
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
1210
import cpw.mods.fml.relauncher.Side;
1311
import cpw.mods.fml.relauncher.SideOnly;
1412
import lombok.val;
1513
import net.minecraft.client.entity.EntityPlayerSP;
16-
import net.minecraft.client.resources.I18n;
17-
import net.minecraft.event.ClickEvent;
1814
import net.minecraft.util.IChatComponent;
1915
import net.minecraftforge.common.MinecraftForge;
2016
import net.minecraftforge.event.entity.EntityJoinWorldEvent;
2117

22-
import java.util.ArrayList;
2318
import java.util.List;
2419
import java.util.concurrent.Callable;
2520
import java.util.concurrent.Future;
@@ -38,7 +33,7 @@ public void preInit(FMLPreInitializationEvent e) {
3833
@Override
3934
public void postInit(FMLPostInitializationEvent e) {
4035
super.postInit(e);
41-
chatFuture = Async.asyncWorker.submit(new Callable<List<IChatComponent>>() {
36+
chatFuture = AsyncUtil.asyncWorker.submit(new Callable<List<IChatComponent>>() {
4237
@Override
4338
public List<IChatComponent> call() throws Exception {
4439
//Deadlock avoidance
@@ -47,7 +42,7 @@ public List<IChatComponent> call() throws Exception {
4742
return null;
4843
}
4944
if (!updatesFuture.isDone()) {
50-
chatFuture = Async.asyncWorker.submit(this);
45+
chatFuture = AsyncUtil.asyncWorker.submit(this);
5146
return null;
5247
}
5348
val updates = updatesFuture.get();

src/main/java/com/falsepattern/lib/internal/proxy/CommonProxy.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,14 @@
44
import com.falsepattern.lib.config.ConfigurationManager;
55
import com.falsepattern.lib.internal.FalsePatternLib;
66
import com.falsepattern.lib.internal.LibraryConfig;
7-
import com.falsepattern.lib.internal.Tags;
87
import com.falsepattern.lib.updates.ModUpdateInfo;
98
import com.falsepattern.lib.updates.UpdateChecker;
10-
import com.falsepattern.lib.util.Async;
9+
import com.falsepattern.lib.util.AsyncUtil;
1110
import cpw.mods.fml.common.event.FMLConstructionEvent;
1211
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
1312
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
1413
import lombok.val;
1514
import lombok.var;
16-
import net.minecraftforge.common.MinecraftForge;
1715

1816
import java.util.List;
1917
import java.util.concurrent.Callable;
@@ -37,7 +35,7 @@ public void preInit(FMLPreInitializationEvent e) {
3735
if (LibraryConfig.ENABLE_UPDATE_CHECKER) {
3836
FalsePatternLib.getLog().info("Launching asynchronous update check.");
3937
val updateCheckFuture = UpdateChecker.fetchUpdatesAsync(FalsePatternLib.UPDATE_URL);
40-
updatesFuture = Async.asyncWorker.submit(new Callable<List<ModUpdateInfo>>() {
38+
updatesFuture = AsyncUtil.asyncWorker.submit(new Callable<List<ModUpdateInfo>>() {
4139
@Override
4240
public List<ModUpdateInfo> call() {
4341
//Deadlock avoidance
@@ -46,7 +44,7 @@ public List<ModUpdateInfo> call() {
4644
return null;
4745
}
4846
if (!updateCheckFuture.isDone()) {
49-
updatesFuture = Async.asyncWorker.submit(this);
47+
updatesFuture = AsyncUtil.asyncWorker.submit(this);
5048
return null;
5149
}
5250
try {

src/main/java/com/falsepattern/lib/updates/UpdateChecker.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import com.falsepattern.lib.internal.LibraryConfig;
1010
import com.falsepattern.lib.internal.Tags;
1111
import com.falsepattern.lib.text.FormattedText;
12-
import com.falsepattern.lib.util.Async;
12+
import com.falsepattern.lib.util.AsyncUtil;
1313
import cpw.mods.fml.common.Loader;
1414
import lombok.val;
1515
import net.minecraft.client.resources.I18n;
@@ -37,7 +37,7 @@ public class UpdateChecker {
3737
* @return A future that will contain the update info about mods that were both available on the URL and installed
3838
*/
3939
public static Future<List<ModUpdateInfo>> fetchUpdatesAsync(String url) {
40-
return Async.asyncWorker.submit(() -> fetchUpdates(url));
40+
return AsyncUtil.asyncWorker.submit(() -> fetchUpdates(url));
4141
}
4242

4343
/**

src/main/java/com/falsepattern/lib/util/Async.java renamed to src/main/java/com/falsepattern/lib/util/AsyncUtil.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import com.falsepattern.lib.StableAPI;
44
import com.falsepattern.lib.internal.Tags;
5-
import lombok.Getter;
65

76
import java.util.concurrent.ExecutorService;
87
import java.util.concurrent.Executors;
@@ -13,7 +12,7 @@
1312
* You must make sure to solve any potential deadlocks yourself!
1413
*/
1514
@StableAPI(since = "0.8.0")
16-
public class Async {
15+
public class AsyncUtil {
1716
public static final ExecutorService asyncWorker = Executors.newSingleThreadExecutor((runnable) -> {
1817
Thread thread = new Thread(runnable);
1918
thread.setDaemon(true);
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.falsepattern.lib.util;
2+
3+
import com.falsepattern.lib.StableAPI;
4+
import cpw.mods.fml.common.registry.LanguageRegistry;
5+
import lombok.*;
6+
7+
import java.util.HashMap;
8+
import java.util.Map;
9+
10+
import static lombok.AccessLevel.PRIVATE;
11+
12+
@NoArgsConstructor(access = PRIVATE)
13+
@StableAPI(since = "0.8.0")
14+
public final class LangUtil {
15+
public static final String DEFAULT_LOCALE = "en_US";
16+
private static final ThreadLocal<HashMap<String, String>> tempMap = ThreadLocal.withInitial(HashMap::new);
17+
18+
public static void defaultLocalization(@NonNull Map<String, String> localeMap) {
19+
localeMap.forEach(LangUtil::defaultLocalization);
20+
}
21+
22+
public static void defaultLocalization(@NonNull String key, @NonNull String value) {
23+
if (!LanguageRegistry.instance().getStringLocalization(key, DEFAULT_LOCALE).isEmpty())
24+
return;
25+
val map = tempMap.get();
26+
map.put(key, value);
27+
LanguageRegistry.instance().injectLanguage(DEFAULT_LOCALE, map);
28+
map.clear();
29+
}
30+
}
31+
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.falsepattern.lib.util;
2+
3+
import cpw.mods.fml.relauncher.ReflectionHelper;
4+
import cpw.mods.fml.relauncher.SideOnly;
5+
import lombok.*;
6+
import net.minecraft.client.Minecraft;
7+
import net.minecraft.util.Timer;
8+
9+
import static cpw.mods.fml.relauncher.Side.CLIENT;
10+
import static lombok.AccessLevel.PRIVATE;
11+
import static net.minecraft.client.Minecraft.getMinecraft;
12+
13+
@SideOnly(CLIENT)
14+
@NoArgsConstructor(access = PRIVATE)
15+
public final class RenderUtil {
16+
private final static Timer MINECRAFT_TIMER = getMinecraftTimer();
17+
18+
@SneakyThrows
19+
private static Timer getMinecraftTimer() {
20+
val timerField = ReflectionHelper.findField(Minecraft.class, "timer", "field_71428_T");
21+
timerField.setAccessible(true);
22+
return (Timer) timerField.get(getMinecraft());
23+
}
24+
25+
public static float partialTick() {
26+
return MINECRAFT_TIMER.renderPartialTicks;
27+
}
28+
}

0 commit comments

Comments
 (0)