Merge remote-tracking branch 'origin/1.18' into 1.19.2

This commit is contained in:
embeddedt 2023-04-25 21:19:12 -04:00
commit fb7664ea3c
No known key found for this signature in database
GPG Key ID: A69433EC199B5613
4 changed files with 76 additions and 0 deletions

View File

@ -65,6 +65,7 @@ repositories {
url "https://maven.tterrag.com/"
}
maven { url "https://maven.shedaniel.me" }
maven { url 'https://maven.blamejared.com' }
}
dependencies {
@ -99,6 +100,7 @@ dependencies {
modCompileOnly("team.chisel.ctm:CTM:${ctm_version}")
modCompileOnly("curse.maven:supermartijncore-454372:4455391")
modImplementation("appeng:appliedenergistics2-forge:12.9.4")
modImplementation("vazkii.patchouli:Patchouli:1.19.2-77")
}
tasks.withType(JavaCompile) {

View File

@ -68,6 +68,7 @@ public class ModernFixEarlyConfig {
this.addMixinRule("perf.deduplicate_location", false);
this.addMixinRule("perf.cache_blockstate_cache_arrays", true);
this.addMixinRule("perf.cache_model_materials", true);
this.addMixinRule("perf.patchouli_deduplicate_books", modPresent("patchouli"));
this.addMixinRule("perf.datapack_reload_exceptions", true);
this.addMixinRule("perf.faster_texture_stitching", true);
/* off by default in 1.18 because it doesn't work as well */

View File

@ -0,0 +1,72 @@
package org.embeddedt.modernfix.mixin.perf.patchouli_deduplicate_books;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import net.minecraftforge.fml.util.ObfuscationReflectionHelper;
import org.embeddedt.modernfix.ModernFix;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import vazkii.patchouli.client.book.BookContents;
import vazkii.patchouli.client.book.BookEntry;
import vazkii.patchouli.client.book.BookPage;
import vazkii.patchouli.client.book.ClientBookRegistry;
import vazkii.patchouli.client.book.page.PageTemplate;
import vazkii.patchouli.client.book.template.BookTemplate;
import vazkii.patchouli.client.book.template.TemplateComponent;
import vazkii.patchouli.client.book.template.component.ComponentItemStack;
import vazkii.patchouli.common.book.Book;
import vazkii.patchouli.common.book.BookRegistry;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
@Mixin(ClientBookRegistry.class)
public class ClientBookRegistryMixin {
@Inject(method = "reload", at = @At("RETURN"), remap = false)
private void performDeduplication(CallbackInfo ci) {
Field templateField = ObfuscationReflectionHelper.findField(PageTemplate.class, "template");
Field contentsField = ObfuscationReflectionHelper.findField(Book.class, "contents");
Field componentsField = ObfuscationReflectionHelper.findField(BookTemplate.class, "components");
Field itemsField = ObfuscationReflectionHelper.findField(ComponentItemStack.class, "items");
int numItemsCleared = 0;
for(Book book : BookRegistry.INSTANCE.books.values()) {
try {
BookContents contents = (BookContents)contentsField.get(book);
for(BookEntry entry : contents.entries.values()) {
for (BookPage page : entry.getPages()) {
if (page instanceof PageTemplate) {
List<TemplateComponent> components;
BookTemplate template = (BookTemplate) templateField.get(page);
components = (List<TemplateComponent>) componentsField.get(template);
for (TemplateComponent component : components) {
if (component instanceof ComponentItemStack) {
ItemStack[] items = (ItemStack[]) itemsField.get(component);
for (ItemStack item : items) {
if (item.getItem() == Items.AIR) {
// remove any NBT
CompoundTag tag = item.getTag();
if (tag != null) {
numItemsCleared++;
List<String> keys = new ArrayList<>(tag.getAllKeys());
for (String key : keys)
item.removeTagKey(key);
}
}
}
}
}
}
}
}
} catch(ReflectiveOperationException e) {
continue;
}
}
ModernFix.LOGGER.info("Cleared {} unneeded book NBT tags", numItemsCleared);
}
}

View File

@ -63,6 +63,7 @@
"perf.model_optimizations.TransformationMatrixMixin",
"perf.model_optimizations.BooleanPropertyMixin",
"perf.model_optimizations.PropertyMixin",
"perf.patchouli_deduplicate_books.ClientBookRegistryMixin",
"perf.thread_priorities.IntegratedServerMixin",
"safety.BlockColorsMixin",
"safety.ItemColorsMixin",