169 lines
11 KiB
Java
169 lines
11 KiB
Java
package net.minecraft.data.loot;
|
|
|
|
import com.google.gson.GsonBuilder;
|
|
import org.apache.logging.log4j.LogManager;
|
|
import java.util.Map;
|
|
import net.minecraft.world.level.storage.loot.predicates.LootItemCondition;
|
|
import net.minecraft.world.level.storage.loot.ValidationContext;
|
|
import java.io.IOException;
|
|
import net.minecraft.world.level.storage.loot.LootTables;
|
|
import java.nio.file.Path;
|
|
import net.minecraft.data.HashCache;
|
|
import com.google.common.collect.ImmutableList;
|
|
import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets;
|
|
import net.minecraft.world.level.storage.loot.parameters.LootContextParamSet;
|
|
import net.minecraft.world.level.storage.loot.LootTable;
|
|
import net.minecraft.resources.ResourceLocation;
|
|
import java.util.function.BiConsumer;
|
|
import java.util.function.Consumer;
|
|
import java.util.function.Supplier;
|
|
import com.mojang.datafixers.util.Pair;
|
|
import java.util.List;
|
|
import net.minecraft.data.DataGenerator;
|
|
import com.google.gson.Gson;
|
|
import org.apache.logging.log4j.Logger;
|
|
import net.minecraft.data.DataProvider;
|
|
|
|
public class LootTableProvider implements DataProvider {
|
|
private static final Logger LOGGER;
|
|
private static final Gson GSON;
|
|
private final DataGenerator generator;
|
|
private final List<Pair<Supplier<Consumer<BiConsumer<ResourceLocation, LootTable.Builder>>>, LootContextParamSet>> subProviders;
|
|
|
|
public LootTableProvider(final DataGenerator gy) {
|
|
this.subProviders = ImmutableList.of(Pair.of(FishingLoot::new, LootContextParamSets.FISHING), Pair.of(ChestLoot::new, LootContextParamSets.CHEST), Pair.of(EntityLoot::new, LootContextParamSets.ENTITY), Pair.of(BlockLoot::new, LootContextParamSets.BLOCK), Pair.of(GiftLoot::new, LootContextParamSets.GIFT));
|
|
this.generator = gy;
|
|
}
|
|
|
|
@Override
|
|
public void run(final HashCache ha) {
|
|
//
|
|
// This method could not be decompiled.
|
|
//
|
|
// Original Bytecode:
|
|
//
|
|
// 1: getfield net/minecraft/data/loot/LootTableProvider.generator:Lnet/minecraft/data/DataGenerator;
|
|
// 4: invokevirtual net/minecraft/data/DataGenerator.getOutputFolder:()Ljava/nio/file/Path;
|
|
// 7: astore_2 /* path3 */
|
|
// 8: invokestatic com/google/common/collect/Maps.newHashMap:()Ljava/util/HashMap;
|
|
// 11: astore_3 /* map4 */
|
|
// 12: aload_0 /* this */
|
|
// 13: getfield net/minecraft/data/loot/LootTableProvider.subProviders:Ljava/util/List;
|
|
// 16: aload_3 /* map4 */
|
|
// 17: invokedynamic BootstrapMethod #5, accept:(Ljava/util/Map;)Ljava/util/function/Consumer;
|
|
// 22: invokeinterface java/util/List.forEach:(Ljava/util/function/Consumer;)V
|
|
// 27: new Lnet/minecraft/world/level/storage/loot/ValidationContext;
|
|
// 30: dup
|
|
// 31: getstatic net/minecraft/world/level/storage/loot/parameters/LootContextParamSets.ALL_PARAMS:Lnet/minecraft/world/level/storage/loot/parameters/LootContextParamSet;
|
|
// 34: invokedynamic BootstrapMethod #6, apply:()Ljava/util/function/Function;
|
|
// 39: aload_3 /* map4 */
|
|
// 40: invokedynamic BootstrapMethod #7, apply:(Ljava/util/Map;)Ljava/util/function/Function;
|
|
// 45: invokespecial net/minecraft/world/level/storage/loot/ValidationContext.<init>:(Lnet/minecraft/world/level/storage/loot/parameters/LootContextParamSet;Ljava/util/function/Function;Ljava/util/function/Function;)V
|
|
// 48: astore csd5
|
|
// 50: invokestatic net/minecraft/world/level/storage/loot/BuiltInLootTables.all:()Ljava/util/Set;
|
|
// 53: aload_3 /* map4 */
|
|
// 54: invokeinterface java/util/Map.keySet:()Ljava/util/Set;
|
|
// 59: invokestatic com/google/common/collect/Sets.difference:(Ljava/util/Set;Ljava/util/Set;)Lcom/google/common/collect/Sets$SetView;
|
|
// 62: astore set6
|
|
// 64: aload set6
|
|
// 66: invokeinterface java/util/Set.iterator:()Ljava/util/Iterator;
|
|
// 71: astore 6
|
|
// 73: aload 6
|
|
// 75: invokeinterface java/util/Iterator.hasNext:()Z
|
|
// 80: ifeq 123
|
|
// 83: aload 6
|
|
// 85: invokeinterface java/util/Iterator.next:()Ljava/lang/Object;
|
|
// 90: checkcast Lnet/minecraft/resources/ResourceLocation;
|
|
// 93: astore sm8
|
|
// 95: aload csd5
|
|
// 97: new Ljava/lang/StringBuilder;
|
|
// 100: dup
|
|
// 101: invokespecial java/lang/StringBuilder.<init>:()V
|
|
// 104: ldc "Missing built-in table: "
|
|
// 106: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
|
|
// 109: aload sm8
|
|
// 111: invokevirtual java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
|
|
// 114: invokevirtual java/lang/StringBuilder.toString:()Ljava/lang/String;
|
|
// 117: invokevirtual net/minecraft/world/level/storage/loot/ValidationContext.reportProblem:(Ljava/lang/String;)V
|
|
// 120: goto 73
|
|
// 123: aload_3 /* map4 */
|
|
// 124: aload csd5
|
|
// 126: invokedynamic BootstrapMethod #8, accept:(Lnet/minecraft/world/level/storage/loot/ValidationContext;)Ljava/util/function/BiConsumer;
|
|
// 131: invokeinterface java/util/Map.forEach:(Ljava/util/function/BiConsumer;)V
|
|
// 136: aload csd5
|
|
// 138: invokevirtual net/minecraft/world/level/storage/loot/ValidationContext.getProblems:()Lcom/google/common/collect/Multimap;
|
|
// 141: astore multimap7
|
|
// 143: aload multimap7
|
|
// 145: invokeinterface com/google/common/collect/Multimap.isEmpty:()Z
|
|
// 150: ifne 176
|
|
// 153: aload multimap7
|
|
// 155: invokedynamic BootstrapMethod #9, accept:()Ljava/util/function/BiConsumer;
|
|
// 160: invokeinterface com/google/common/collect/Multimap.forEach:(Ljava/util/function/BiConsumer;)V
|
|
// 165: new Ljava/lang/IllegalStateException;
|
|
// 168: dup
|
|
// 169: ldc_w "Failed to validate loot tables, see logs"
|
|
// 172: invokespecial java/lang/IllegalStateException.<init>:(Ljava/lang/String;)V
|
|
// 175: athrow
|
|
// 176: aload_3 /* map4 */
|
|
// 177: aload_2 /* path3 */
|
|
// 178: aload_1 /* ha */
|
|
// 179: invokedynamic BootstrapMethod #10, accept:(Ljava/nio/file/Path;Lnet/minecraft/data/HashCache;)Ljava/util/function/BiConsumer;
|
|
// 184: invokeinterface java/util/Map.forEach:(Ljava/util/function/BiConsumer;)V
|
|
// 189: return
|
|
// MethodParameters:
|
|
// Name Flags
|
|
// ---- -----
|
|
// ha
|
|
// StackMapTable: 00 03 FF 00 49 00 07 00 07 00 C4 07 00 C6 07 00 C8 07 00 93 00 07 00 CA 00 00 F9 00 31 FA 00 34
|
|
//
|
|
// The error that occurred was:
|
|
//
|
|
// java.lang.IllegalStateException: Could not infer any expression.
|
|
// at com.strobel.decompiler.ast.TypeAnalysis.runInference(TypeAnalysis.java:374)
|
|
// at com.strobel.decompiler.ast.TypeAnalysis.run(TypeAnalysis.java:96)
|
|
// at com.strobel.decompiler.ast.AstOptimizer.optimize(AstOptimizer.java:344)
|
|
// at com.strobel.decompiler.ast.AstOptimizer.optimize(AstOptimizer.java:42)
|
|
// at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:214)
|
|
// at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:99)
|
|
// at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:782)
|
|
// at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethod(AstBuilder.java:675)
|
|
// at com.strobel.decompiler.languages.java.ast.AstBuilder.addTypeMembers(AstBuilder.java:552)
|
|
// at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeCore(AstBuilder.java:519)
|
|
// at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeNoCache(AstBuilder.java:161)
|
|
// at com.strobel.decompiler.languages.java.ast.AstBuilder.createType(AstBuilder.java:150)
|
|
// at com.strobel.decompiler.languages.java.ast.AstBuilder.addType(AstBuilder.java:125)
|
|
// at cuchaz.enigma.SourceProvider.getSources(SourceProvider.java:85)
|
|
// at cuchaz.enigma.EnigmaProject$JarExport.decompileClass(EnigmaProject.java:241)
|
|
// at cuchaz.enigma.EnigmaProject$JarExport.lambda$decompile$1(EnigmaProject.java:230)
|
|
// at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
|
|
// at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654)
|
|
// at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
|
|
// at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
|
|
// at java.base/java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:952)
|
|
// at java.base/java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:926)
|
|
// at java.base/java.util.stream.AbstractTask.compute(AbstractTask.java:327)
|
|
// at java.base/java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:746)
|
|
// at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
|
|
// at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
|
|
// at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
|
|
// at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
|
|
// at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:177)
|
|
//
|
|
throw new IllegalStateException("An error occurred while decompiling this method.");
|
|
}
|
|
|
|
private static Path createPath(final Path path, final ResourceLocation sm) {
|
|
return path.resolve("data/" + sm.getNamespace() + "/loot_tables/" + sm.getPath() + ".json");
|
|
}
|
|
|
|
@Override
|
|
public String getName() {
|
|
return "LootTables";
|
|
}
|
|
|
|
static {
|
|
LOGGER = LogManager.getLogger();
|
|
GSON = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create();
|
|
}
|
|
}
|