Skip to content

Commit 33416eb

Browse files
Ignore all Wurst translations from server-provided resource packs
1 parent 0cb844a commit 33416eb

File tree

1 file changed

+26
-1
lines changed

1 file changed

+26
-1
lines changed

src/main/java/net/wurstclient/WurstTranslator.java

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import java.util.IllegalFormatException;
1616
import java.util.List;
1717
import java.util.Map;
18+
import java.util.Optional;
1819
import java.util.function.BiConsumer;
1920

2021
import com.google.common.collect.Lists;
@@ -25,6 +26,7 @@
2526
import net.minecraft.client.resources.language.I18n;
2627
import net.minecraft.locale.Language;
2728
import net.minecraft.resources.ResourceLocation;
29+
import net.minecraft.server.packs.repository.KnownPack;
2830
import net.minecraft.server.packs.resources.Resource;
2931
import net.minecraft.server.packs.resources.ResourceManager;
3032
import net.minecraft.server.packs.resources.ResourceManagerReloadListener;
@@ -192,9 +194,11 @@ private void loadTranslations(ResourceManager manager,
192194
// be caught to prevent mod detection vulnerabilities using
193195
// intentionally corrupted resource packs.
194196
for(Resource resource : manager.getResourceStack(langId))
197+
{
195198
try(InputStream stream = resource.open())
196199
{
197-
Language.loadFromJson(stream, entryConsumer);
200+
if(isBuiltInWurstResourcePack(resource))
201+
Language.loadFromJson(stream, entryConsumer);
198202

199203
}catch(IOException | JsonParseException e)
200204
{
@@ -209,6 +213,27 @@ private void loadTranslations(ResourceManager manager,
209213
+ langCode);
210214
e.printStackTrace();
211215
}
216+
}
212217
}
213218
}
219+
220+
/**
221+
* Ensures that the given resource is from Wurst's built-in resource pack,
222+
* or at least from another client-side mod pretending to be Wurst, as it
223+
* should be impossible for server-provided resource packs to obtain a
224+
* KnownPack of <code>fabric:wurst</code>.
225+
*
226+
* <p>
227+
* ASSUME THEY CAN BYPASS THIS. CATCH EXCEPTIONS ANYWAY.
228+
*/
229+
private boolean isBuiltInWurstResourcePack(Resource resource)
230+
{
231+
KnownPack knownPack = Optional.ofNullable(resource)
232+
.flatMap(Resource::knownPackInfo).orElse(null);
233+
if(knownPack == null)
234+
return false;
235+
236+
return "fabric".equals(knownPack.namespace())
237+
&& "wurst".equals(knownPack.id());
238+
}
214239
}

0 commit comments

Comments
 (0)