More null checks
This commit is contained in:
parent
c684cccf74
commit
56aed7284c
|
|
@ -8,6 +8,7 @@ import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
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.BookEntry;
|
||||||
import vazkii.patchouli.client.book.BookPage;
|
import vazkii.patchouli.client.book.BookPage;
|
||||||
import vazkii.patchouli.client.book.ClientBookRegistry;
|
import vazkii.patchouli.client.book.ClientBookRegistry;
|
||||||
|
|
@ -26,32 +27,41 @@ public class ClientBookRegistryMixin {
|
||||||
@Inject(method = "reload", at = @At("RETURN"), remap = false)
|
@Inject(method = "reload", at = @At("RETURN"), remap = false)
|
||||||
private void performDeduplication(CallbackInfo ci) {
|
private void performDeduplication(CallbackInfo ci) {
|
||||||
Field templateField = ObfuscationReflectionHelper.findField(PageTemplate.class, "template");
|
Field templateField = ObfuscationReflectionHelper.findField(PageTemplate.class, "template");
|
||||||
|
Field contentsField = ObfuscationReflectionHelper.findField(Book.class, "contents");
|
||||||
Field componentsField = ObfuscationReflectionHelper.findField(BookTemplate.class, "components");
|
Field componentsField = ObfuscationReflectionHelper.findField(BookTemplate.class, "components");
|
||||||
Field itemsField = ObfuscationReflectionHelper.findField(ComponentItemStack.class, "items");
|
Field itemsField = ObfuscationReflectionHelper.findField(ComponentItemStack.class, "items");
|
||||||
int numItemsCleared = 0;
|
int numItemsCleared = 0;
|
||||||
for(Book book : BookRegistry.INSTANCE.books.values()) {
|
for(Book book : BookRegistry.INSTANCE.books.values()) {
|
||||||
for(BookEntry entry : book.contents.entries.values()) {
|
try {
|
||||||
for(BookPage page : entry.getPages()) {
|
BookContents contents = (BookContents)contentsField.get(book);
|
||||||
if(page instanceof PageTemplate) {
|
if(contents == null || contents.entries == null)
|
||||||
List<TemplateComponent> components;
|
continue;
|
||||||
try {
|
for(BookEntry entry : contents.entries.values()) {
|
||||||
BookTemplate template = (BookTemplate)templateField.get(page);
|
for(BookPage page : entry.getPages()) {
|
||||||
components = (List<TemplateComponent>)componentsField.get(template);
|
if(page instanceof PageTemplate) {
|
||||||
for(TemplateComponent component : components) {
|
List<TemplateComponent> components;
|
||||||
if(component instanceof ComponentItemStack) {
|
BookTemplate template = (BookTemplate) templateField.get(page);
|
||||||
ItemStack[] items = (ItemStack[])itemsField.get(component);
|
if(template == null)
|
||||||
for(int i = 0; i < items.length; i++) {
|
continue;
|
||||||
if(items[i] != null && items[i].getItem() == Items.AIR) {
|
components = (List<TemplateComponent>) componentsField.get(template);
|
||||||
|
if(components == null)
|
||||||
|
continue;
|
||||||
|
for (TemplateComponent component : components) {
|
||||||
|
if (component instanceof ComponentItemStack) {
|
||||||
|
ItemStack[] items = (ItemStack[]) itemsField.get(component);
|
||||||
|
if(items == null)
|
||||||
|
continue;
|
||||||
|
for (int i = 0; i < items.length; i++) {
|
||||||
|
if (items[i] != null && items[i].getItem() == Items.AIR) {
|
||||||
items[i] = ItemStack.EMPTY;
|
items[i] = ItemStack.EMPTY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch(ReflectiveOperationException e) {
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} catch(ReflectiveOperationException ignored) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ModernFix.LOGGER.info("Cleared {} unneeded book NBT tags", numItemsCleared);
|
ModernFix.LOGGER.info("Cleared {} unneeded book NBT tags", numItemsCleared);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user