Skip to content

Commit 642a518

Browse files
committed
fix
1 parent 352e6d8 commit 642a518

12 files changed

Lines changed: 101 additions & 102 deletions

File tree

common/src/main/java/com/wulian/texturelocaleredirector/LangTextureCache.java renamed to common/src/main/java/com/wulian/texturelocaleredirector/TranslatableTextureCache.java

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,23 @@
11
package com.wulian.texturelocaleredirector;
22

3-
//? if >=1.21.11 {
43
import net.minecraft.resources.Identifier;
5-
//?} else if >=1.20.6 && <=1.21.10 {
6-
/*import net.minecraft.resources.ResourceLocation;
7-
*///?}
84

95
import java.lang.ref.SoftReference;
106
import java.util.Map;
117
import java.util.concurrent.ConcurrentHashMap;
128

13-
public class LangTextureCache {
9+
public class TranslatableTextureCache {
1410

15-
private static final Map<
16-
/*? if >=1.21.11 {*/ Identifier /*?} else {*/ /*ResourceLocation*/ /*?}*/
17-
, SoftReference<Boolean>
18-
> existsCache = new ConcurrentHashMap<>();
11+
private static final Map<Identifier, SoftReference<Boolean>> existsCache = new ConcurrentHashMap<>();
1912

2013
private static volatile String currentLanguage = "en_us";
2114

22-
public static Boolean get(
23-
/*? if >=1.21.11 {*/ Identifier /*?} else {*/ /*ResourceLocation*/ /*?}*/ id
24-
) {
15+
public static Boolean get(Identifier id) {
2516
SoftReference<Boolean> ref = existsCache.get(id);
2617
return ref != null ? ref.get() : null;
2718
}
2819

29-
public static void put(
30-
/*? if >=1.21.11 {*/ Identifier /*?} else {*/ /*ResourceLocation*/ /*?}*/ id,
31-
boolean exists
32-
) {
20+
public static void put(Identifier id, boolean exists) {
3321
existsCache.put(id, new SoftReference<>(exists));
3422
}
3523

@@ -45,11 +33,7 @@ public static String getCurrentLanguage() {
4533
return currentLanguage;
4634
}
4735

48-
public static
49-
/*? if >=1.21.11 {*/ Identifier /*?} else {*/ /*ResourceLocation*/ /*?}*/
50-
getLocalizedId(
51-
/*? if >=1.21.11 {*/ Identifier /*?} else {*/ /*ResourceLocation*/ /*?}*/ originalId
52-
) {
36+
public static Identifier getLocalizedId(Identifier originalId) {
5337
String lang = currentLanguage;
5438

5539
String originalPath = originalId.getPath();
@@ -68,10 +52,10 @@ public static String getCurrentLanguage() {
6852

6953
String localizedPath = before + lang + "/" + after;
7054

71-
//? if >=1.21.11 {
72-
return Identifier.of(originalId.getNamespace(), localizedPath);
55+
//? if >=1.21.1 {
56+
return Identifier.fromNamespaceAndPath(originalId.getNamespace(), localizedPath);
7357
//?} else {
74-
/*return new ResourceLocation(originalId.getNamespace(), localizedPath);
58+
/*return new Identifier(originalId.getNamespace(), localizedPath);
7559
*///?}
7660
}
7761
}

common/src/main/java/com/wulian/texturelocaleredirector/mixin/NamespaceResourceManagerMixin.java renamed to common/src/main/java/com/wulian/texturelocaleredirector/mixin/FallbackResourceManagerMixin.java

Lines changed: 25 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,11 @@
11
package com.wulian.texturelocaleredirector.mixin;
22

3-
import com.wulian.texturelocaleredirector.LangTextureCache;
3+
import com.wulian.texturelocaleredirector.TranslatableTextureCache;
44
import com.wulian.texturelocaleredirector.TextureLocaleRedirector;
5-
import net.minecraft.resource.NamespaceResourceManager;
6-
import net.minecraft.resource.Resource;
7-
import net.minecraft.resource.ResourceManager;
8-
//? if >=1.21.11 {
5+
import net.minecraft.server.packs.resources.FallbackResourceManager;
6+
import net.minecraft.server.packs.resources.Resource;
7+
import net.minecraft.server.packs.resources.ResourceManager;
98
import net.minecraft.resources.Identifier;
10-
//?} else if >=1.20.6 && <=1.21.10 {
11-
/*import net.minecraft.resources.ResourceLocation;
12-
*///?}
139
import org.spongepowered.asm.mixin.Mixin;
1410
import org.spongepowered.asm.mixin.Unique;
1511
import org.spongepowered.asm.mixin.injection.At;
@@ -21,29 +17,29 @@
2117
import java.util.Optional;
2218
import java.util.function.Predicate;
2319

24-
@Mixin(NamespaceResourceManager.class)
25-
public abstract class NamespaceResourceManagerMixin implements ResourceManager {
20+
@Mixin(FallbackResourceManager.class)
21+
public abstract class FallbackResourceManagerMixin implements ResourceManager {
2622

27-
@Inject(method = "findResources", at = @At("RETURN"))
28-
private void onFindResources(
23+
@Inject(method = "listResources", at = @At("RETURN"))
24+
private void onListResources(
2925
String startingPath,
3026
Predicate<
31-
/*? if >=1.21.11 {*/ Identifier /*?} else {*/ /*ResourceLocation*/ /*?}*/
27+
/*? if >=1.21.11 {*/ Identifier /*?} else {*/ /*Identifier *//*?}*/
3228
> allowedPathPredicate,
3329
CallbackInfoReturnable<
3430
Map<
35-
/*? if >=1.21.11 {*/ Identifier /*?} else {*/ /*ResourceLocation*/ /*?}*/,
31+
/*? if >=1.21.11 {*/ Identifier /*?} else {*/ /*Identifier *//*?}*/,
3632
Resource
3733
>
3834
> cir
3935
) {
4036

41-
if ("en_us".equals(LangTextureCache.getCurrentLanguage())) {
37+
if ("en_us".equals(TranslatableTextureCache.getCurrentLanguage())) {
4238
return;
4339
}
4440

4541
Map<
46-
/*? if >=1.21.11 {*/ Identifier /*?} else {*/ /*ResourceLocation*/ /*?}*/,
42+
/*? if >=1.21.11 {*/ Identifier /*?} else {*/ /*Identifier *//*?}*/,
4743
Resource
4844
> originalResources = cir.getReturnValue();
4945

@@ -52,23 +48,23 @@ private void onFindResources(
5248
}
5349

5450
Map<
55-
/*? if >=1.21.11 {*/ Identifier /*?} else {*/ /*ResourceLocation*/ /*?}*/,
51+
/*? if >=1.21.11 {*/ Identifier /*?} else {*/ /*Identifier *//*?}*/,
5652
Resource
5753
> langSpecificResources = new HashMap<>();
5854

5955
for (Map.Entry<
60-
/*? if >=1.21.11 {*/ Identifier /*?} else {*/ /*ResourceLocation*/ /*?}*/,
56+
/*? if >=1.21.11 {*/ Identifier /*?} else {*/ /*Identifier *//*?}*/,
6157
Resource
6258
> entry : originalResources.entrySet()) {
6359

6460
var originalId = entry.getKey();
65-
var langId = LangTextureCache.getLocalizedId(originalId);
61+
var langId = TranslatableTextureCache.getLocalizedId(originalId);
6662

6763
if (langId == null) {
6864
continue;
6965
}
7066

71-
Optional<Resource> langResource = this.checkResourceAndCache(langId, originalId);
67+
Optional<Resource> langResource = this.textureLocaleRedirector$checkResourceAndCache(langId, originalId);
7268
langResource.ifPresent(resource -> langSpecificResources.put(originalId, resource));
7369
}
7470

@@ -79,27 +75,27 @@ private void onFindResources(
7975

8076
@Inject(method = "getResource", at = @At("HEAD"), cancellable = true)
8177
private void onGetResource(
82-
/*? if >=1.21.11 {*/ Identifier /*?} else {*/ /*ResourceLocation*/ /*?}*/ id,
78+
/*? if >=1.21.11 {*/ Identifier /*?} else {*/ /*Identifier *//*?}*/ id,
8379
CallbackInfoReturnable<Optional<Resource>> cir
8480
) {
8581

86-
var langId = LangTextureCache.getLocalizedId(id);
82+
var langId = TranslatableTextureCache.getLocalizedId(id);
8783
if (langId == null) {
8884
return;
8985
}
9086

91-
Optional<Resource> langResource = this.checkResourceAndCache(langId, id);
87+
Optional<Resource> langResource = this.textureLocaleRedirector$checkResourceAndCache(langId, id);
9288
if (langResource.isPresent()) {
9389
cir.setReturnValue(langResource);
9490
}
9591
}
9692

9793
@Unique
98-
public Optional<Resource> checkResourceAndCache(
99-
/*? if >=1.21.11 {*/ Identifier /*?} else {*/ /*ResourceLocation*/ /*?}*/ langId,
100-
/*? if >=1.21.11 {*/ Identifier /*?} else {*/ /*ResourceLocation*/ /*?}*/ originalId
94+
public Optional<Resource> textureLocaleRedirector$checkResourceAndCache(
95+
/*? if >=1.21.11 {*/ Identifier /*?} else {*/ /*Identifier *//*?}*/ langId,
96+
/*? if >=1.21.11 {*/ Identifier /*?} else {*/ /*Identifier *//*?}*/ originalId
10197
) {
102-
Boolean cache = LangTextureCache.get(langId);
98+
Boolean cache = TranslatableTextureCache.get(langId);
10399

104100
if (cache != null) {
105101
if (cache) {
@@ -112,11 +108,11 @@ public Optional<Resource> checkResourceAndCache(
112108
Optional<Resource> langResource = this.getResource(langId);
113109

114110
if (langResource.isPresent()) {
115-
LangTextureCache.put(langId, true);
111+
TranslatableTextureCache.put(langId, true);
116112
TextureLocaleRedirector.LOGGER.info("Redirected resource {} -> {}", originalId, langId);
117113
return langResource;
118114
} else {
119-
LangTextureCache.put(langId, false);
115+
TranslatableTextureCache.put(langId, false);
120116
return Optional.empty();
121117
}
122118
}
Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,42 @@
11
package com.wulian.texturelocaleredirector.mixin;
22

3-
import com.wulian.texturelocaleredirector.LangTextureCache;
4-
import net.minecraft.client.resource.language.LanguageManager;
5-
import net.minecraft.client.resource.language.TranslationStorage;
6-
import net.minecraft.resource.ResourceManager;
3+
import com.wulian.texturelocaleredirector.TranslatableTextureCache;
4+
//? if >=1.21.1 {
5+
import net.minecraft.client.resources.language.ClientLanguage;
6+
//?}
7+
import net.minecraft.client.resources.language.LanguageManager;
8+
import net.minecraft.server.packs.resources.ResourceManager;
79
import org.spongepowered.asm.mixin.Mixin;
810
import org.spongepowered.asm.mixin.Shadow;
911
import org.spongepowered.asm.mixin.injection.At;
1012
import org.spongepowered.asm.mixin.injection.Inject;
1113
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
1214

15+
//? if >=1.21.1 {
1316
import java.util.function.Consumer;
17+
//?}
1418

1519
@Mixin(LanguageManager.class)
1620
public abstract class LanguageManagerMixin {
1721

1822
@Shadow
19-
private String currentLanguageCode;
23+
private String currentCode;
2024

2125
@Inject(method = "<init>", at = @At("TAIL"))
22-
private void onInit(String languageCode, Consumer<TranslationStorage> reloadCallback, CallbackInfo ci) {
23-
LangTextureCache.setCurrentLanguage(languageCode);
24-
LangTextureCache.clear();
26+
private void onInit(String languageCode /*? if >=1.21.1 {*/, Consumer<ClientLanguage> reloadCallback/*?}*/, CallbackInfo ci) {
27+
TranslatableTextureCache.setCurrentLanguage(languageCode);
28+
TranslatableTextureCache.clear();
2529
}
2630

27-
@Inject(method = "setLanguage", at = @At("HEAD"))
31+
@Inject(method = "setSelected", at = @At("HEAD"))
2832
private void onSetLanguage(String languageCode, CallbackInfo ci) {
29-
LangTextureCache.setCurrentLanguage(languageCode);
30-
LangTextureCache.clear();
33+
TranslatableTextureCache.setCurrentLanguage(languageCode);
34+
TranslatableTextureCache.clear();
3135
}
3236

33-
@Inject(method = "reload", at = @At("HEAD"))
37+
@Inject(method = "onResourceManagerReload", at = @At("HEAD"))
3438
private void onReload(ResourceManager manager, CallbackInfo ci) {
35-
LangTextureCache.setCurrentLanguage(currentLanguageCode);
36-
LangTextureCache.clear();
39+
TranslatableTextureCache.setCurrentLanguage(currentCode);
40+
TranslatableTextureCache.clear();
3741
}
3842
}

common/src/main/java/com/wulian/texturelocaleredirector/mixin/ReloadableResourceManagerImplMixin.java

Lines changed: 0 additions & 24 deletions
This file was deleted.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.wulian.texturelocaleredirector.mixin;
2+
3+
import com.wulian.texturelocaleredirector.TranslatableTextureCache;
4+
import net.minecraft.server.packs.PackResources;
5+
import net.minecraft.server.packs.resources.ReloadInstance;
6+
import net.minecraft.server.packs.resources.ReloadableResourceManager;
7+
import net.minecraft.util.Unit;
8+
import org.spongepowered.asm.mixin.Mixin;
9+
import org.spongepowered.asm.mixin.injection.At;
10+
import org.spongepowered.asm.mixin.injection.Inject;
11+
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
12+
13+
import java.util.List;
14+
import java.util.concurrent.CompletableFuture;
15+
import java.util.concurrent.Executor;
16+
17+
@Mixin(ReloadableResourceManager.class)
18+
public class ReloadableResourceManagerMixin {
19+
20+
@Inject(method = "createReload", at = @At("HEAD"))
21+
private void onReload(Executor prepareExecutor, Executor applyExecutor, CompletableFuture<Unit> initialStage, List<PackResources> packs, CallbackInfoReturnable<ReloadInstance> cir) {
22+
TranslatableTextureCache.clear();
23+
}
24+
}

common/src/main/resources/assets/texturelocaleredirector/texturelocaleredirector.mixins.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
},
99
"client": [
1010
"LanguageManagerMixin",
11-
"NamespaceResourceManagerMixin",
12-
"ReloadableResourceManagerImplMixin"
11+
"FallbackResourceManagerMixin",
12+
"ReloadableResourceManagerMixin"
1313
]
1414
}

common/versions/1.20.4/gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@ mod.mc_title=1.20.4
44
mod.mc_targets=1.20.3,1.20.4
55

66
deps.fabric_api=0.97.3+1.20.4
7-
deps.forge_loader=49.2.4
7+
deps.forge_loader=[UNSUPPORTED]
88
deps.neoforge_loader=20.4.251

common/versions/1.20.6/gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@ mod.mc_title=1.20.6
44
mod.mc_targets=1.20.5,1.20.6
55

66
deps.fabric_api=0.100.8+1.20.6
7-
deps.forge_loader=50.2.4
7+
deps.forge_loader=[UNSUPPORTED]
88
deps.neoforge_loader=20.6.139
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
mod.mc_dep_fabric=>=1.21 <=1.21.10
2+
mod.mc_dep_forgelike=[1.21,26.1)
3+
mod.mc_title=1.21.1
4+
mod.mc_targets=1.21.1
5+
6+
deps.fabric_api=0.116.7+1.21.1
7+
deps.forge_loader=[UNSUPPORTED]
8+
deps.neoforge_loader=21.1.66
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
mod.mc_dep_fabric=>=1.21 <=26.1
2-
mod.mc_dep_forgelike=[1.21,26.1)
1+
mod.mc_dep_fabric=1.21.11
2+
mod.mc_dep_forgelike=[1.21.11,)
33
mod.mc_title=1.21.11
44
mod.mc_targets=1.21.11
55

66
deps.fabric_api=0.141.2+1.21.11
7-
deps.forge_loader=61.0.8
7+
deps.forge_loader=[UNSUPPORTED]
88
deps.neoforge_loader=21.11.37-beta

0 commit comments

Comments
 (0)