Load Modded Datapacks in DatapackScreen, before world creation (#6913)

This commit is contained in:
Cyborgmas authored and GitHub committed 2020-07-20 15:56:21 -07:00
1 parent a3edfd3748
commit 24f3ef5ffe
10 files changed
+112 -39

No files matched your search

@@ -139,6 +139,7 @@ import net.minecraftforge.event.world.BlockEvent;
import net.minecraftforge.event.world.NoteBlockEvent;
import net.minecraftforge.eventbus.api.Event.Result;
import net.minecraftforge.fluids.FluidAttributes;
import net.minecraftforge.fml.packs.ResourcePackLoader;
import net.minecraftforge.registries.DataSerializerEntry;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.ForgeRegistry;
@@ -1231,4 +1232,19 @@ public class ForgeHooks
locations.stream().map(ResourceLocation::toString).forEach(array::add);
}
}
public static List<String> getModPacks()
{
List<String> modpacks = ResourcePackLoader.getPackNames();
if(modpacks.isEmpty())
throw new IllegalStateException("Attempted to retrieve mod packs before they were loaded in!");
return modpacks;
}
public static List<String> getModPacksWithVanilla()
{
List<String> modpacks = getModPacks();
modpacks.add("vanilla");
return modpacks;
}
}
@@ -34,8 +34,16 @@ import net.minecraftforge.registries.IForgeRegistryEntry;
public class Tags
{
public static void init ()
{
Blocks.init();
Items.init();
}
public static class Blocks
{
private static void init(){}
public static final ITag.INamedTag<Block> CHESTS = tag("chests");
public static final ITag.INamedTag<Block> CHESTS_ENDER = tag("chests/ender");
public static final ITag.INamedTag<Block> CHESTS_TRAPPED = tag("chests/trapped");
@@ -132,6 +140,8 @@ public class Tags
public static class Items
{
private static void init(){}
public static final ITag.INamedTag<Item> ARROWS = tag("arrows");
public static final ITag.INamedTag<Item> BONES = tag("bones");
public static final ITag.INamedTag<Item> BOOKSHELVES = tag("bookshelves");
@@ -61,6 +61,11 @@ public class ResourcePackLoader
resourcePacks.addPackFinder(new LambdaFriendlyPackFinder(packFinder.apply(modResourcePacks, ModFileResourcePack::setPackInfo)));
}
public static List<String> getPackNames()
{
return modResourcePacks.values().stream().map(pack -> pack.getPackInfo().getName()).collect(Collectors.toList());
}
public static <V> Comparator<Map.Entry<String,V>> getSorter() {
List<String> order = new ArrayList<>();
order.add("vanilla");
@@ -52,6 +52,7 @@ import net.minecraft.world.gen.foliageplacer.FoliagePlacerType;
import net.minecraft.world.gen.placement.Placement;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
import net.minecraft.world.gen.treedecorator.TreeDecoratorType;
import net.minecraftforge.common.Tags;
import net.minecraftforge.common.loot.GlobalLootModifierSerializer;
import net.minecraftforge.fml.common.registry.GameRegistry;
@@ -114,5 +115,6 @@ public class ForgeRegistries
{
GameData.init();
Bootstrap.register();
Tags.init();
}
}