This commit is contained in:
Ell 2021-12-16 21:56:27 +01:00
parent 65cce7fae5
commit 8fd1b0333e
315 changed files with 435 additions and 452 deletions

View file

@ -108,9 +108,8 @@ dependencies {
/* compileOnly fg.deobf("mezz.jei:jei-1.16.5:7.6.1.75:api") /* compileOnly fg.deobf("mezz.jei:jei-1.16.5:7.6.1.75:api")
runtimeOnly fg.deobf("mezz.jei:jei-1.16.5:7.6.1.75")*/ runtimeOnly fg.deobf("mezz.jei:jei-1.16.5:7.6.1.75")*/
// TODO Patchouli compileOnly fg.deobf("vazkii.patchouli:Patchouli:1.18.1-61:api")
/* compileOnly fg.deobf("vazkii.patchouli:Patchouli:1.16.4-50:api") runtimeOnly fg.deobf("vazkii.patchouli:Patchouli:1.18.1-61")
runtimeOnly fg.deobf("vazkii.patchouli:Patchouli:1.16.4-50")*/
// TODO Curios // TODO Curios
/* runtimeOnly fg.deobf("top.theillusivec4.curios:curios-forge:1.16.5-4.0.5.0") /* runtimeOnly fg.deobf("top.theillusivec4.curios:curios-forge:1.16.5-4.0.5.0")

View file

@ -151,7 +151,7 @@ public class BlockDimensionRail extends BaseRailBlock implements IModItem, ICust
@Override @Override
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder) { protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder) {
builder.add(SHAPE); builder.add(SHAPE, WATERLOGGED);
} }
@Override @Override

View file

@ -10,7 +10,6 @@ import net.minecraft.world.item.context.BlockPlaceContext;
import net.minecraft.world.level.BlockGetter; import net.minecraft.world.level.BlockGetter;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.StateDefinition;
import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BlockStateProperties;
@ -81,7 +80,7 @@ public class BlockFurnaceHeater extends BlockContainerImpl implements ICustomBlo
@Override @Override
public VoxelShape getShape(BlockState state, BlockGetter levelIn, BlockPos pos, CollisionContext context) { public VoxelShape getShape(BlockState state, BlockGetter levelIn, BlockPos pos, CollisionContext context) {
return SHAPES[state.getValue(FACING).ordinal()]; return SHAPES[state.getValue(FACING).get3DDataValue()];
} }
@Override @Override

View file

@ -50,16 +50,16 @@ public class BlockGoldPowder extends BlockImpl implements IColorProvidingBlock,
var w = state.getValue(WEST) != RedstoneSide.NONE; var w = state.getValue(WEST) != RedstoneSide.NONE;
if (n || s && !n && !e && !w) { if (n || s && !n && !e && !w) {
i |= 1 << Direction.NORTH.ordinal(); i |= 1 << Direction.NORTH.get2DDataValue();
} }
if (e || w && !n && !e && !s) { if (e || w && !n && !e && !s) {
i |= 1 << Direction.EAST.ordinal(); i |= 1 << Direction.EAST.get2DDataValue();
} }
if (s || n && !e && !s && !w) { if (s || n && !e && !s && !w) {
i |= 1 << Direction.SOUTH.ordinal(); i |= 1 << Direction.SOUTH.get2DDataValue();
} }
if (w || e && !n && !s && !w) { if (w || e && !n && !s && !w) {
i |= 1 << Direction.WEST.ordinal(); i |= 1 << Direction.WEST.get2DDataValue();
} }
return i; return i;
} }

View file

@ -11,6 +11,7 @@ import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
// TODO get the 1-pixel border around the ender overlay back
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
public class RenderEnderCrate implements BlockEntityRenderer<BlockEntityEnderCrate> { public class RenderEnderCrate implements BlockEntityRenderer<BlockEntityEnderCrate> {

View file

@ -1,36 +1,57 @@
package de.ellpeck.naturesaura.compat.patchouli; package de.ellpeck.naturesaura.compat.patchouli;
import com.mojang.blaze3d.systems.RenderSystem;
import de.ellpeck.naturesaura.ModConfig;
import de.ellpeck.naturesaura.NaturesAura; import de.ellpeck.naturesaura.NaturesAura;
import de.ellpeck.naturesaura.api.multiblock.Matcher;
import de.ellpeck.naturesaura.compat.ICompat; import de.ellpeck.naturesaura.compat.ICompat;
import de.ellpeck.naturesaura.data.ItemTagProvider; import de.ellpeck.naturesaura.data.ItemTagProvider;
import de.ellpeck.naturesaura.events.ClientEvents;
import de.ellpeck.naturesaura.renderers.SupporterFancyHandler;
import net.minecraft.ChatFormatting;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.renderer.GameRenderer;
import net.minecraft.network.chat.Style;
import net.minecraft.network.chat.TextComponent;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.crafting.Ingredient;
import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.Recipe;
import net.minecraft.world.item.crafting.RecipeManager; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import vazkii.patchouli.api.BookDrawScreenEvent;
import vazkii.patchouli.api.IMultiblock;
import vazkii.patchouli.api.IVariable;
import vazkii.patchouli.api.PatchouliAPI;
import java.time.LocalDateTime;
import java.time.Month;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;
// TODO Patchouli
public class PatchouliCompat implements ICompat { public class PatchouliCompat implements ICompat {
private static final ResourceLocation BOOK = new ResourceLocation(NaturesAura.MOD_ID, "book"); private static final ResourceLocation BOOK = new ResourceLocation(NaturesAura.MOD_ID, "book");
/*
private static final Map<ResourceLocation, IMultiblock> MULTIBLOCKS = new HashMap<>(); private static final Map<ResourceLocation, IMultiblock> MULTIBLOCKS = new HashMap<>();
*/
public static void addPatchouliMultiblock(ResourceLocation name, String[][] pattern, Object... rawMatchers) { public static void addPatchouliMultiblock(ResourceLocation name, String[][] pattern, Object... rawMatchers) {
/* for (int i = 1; i < rawMatchers.length; i += 2) { for (var i = 1; i < rawMatchers.length; i += 2) {
if (rawMatchers[i] instanceof Matcher) { if (rawMatchers[i] instanceof Matcher matcher) {
Matcher matcher = (Matcher) rawMatchers[i]; var check = matcher.check();
Matcher.ICheck check = matcher.getCheck();
if (check == null) if (check == null)
rawMatchers[i] = PatchouliAPI.get().anyMatcher(); rawMatchers[i] = PatchouliAPI.get().anyMatcher();
else else
rawMatchers[i] = PatchouliAPI.get().predicateMatcher(matcher.getDefaultState(), rawMatchers[i] = PatchouliAPI.get().predicateMatcher(matcher.defaultState(),
state -> check.matches(null, null, null, null, state, (char) 0)); state -> check.matches(null, null, null, null, state, (char) 0));
} }
} }
MULTIBLOCKS.put(name, PatchouliAPI.get().makeMultiblock(pattern, rawMatchers));*/ MULTIBLOCKS.put(name, PatchouliAPI.get().makeMultiblock(pattern, rawMatchers));
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@ -41,20 +62,20 @@ public class PatchouliCompat implements ICompat {
return (T) manager.byKey(pre).orElse(null); return (T) manager.byKey(pre).orElse(null);
} }
/* public static IVariable ingredientVariable(Ingredient ingredient) { public static IVariable ingredientVariable(Ingredient ingredient) {
return IVariable.wrapList(Arrays.stream(ingredient.getMatchingStacks()) return IVariable.wrapList(Arrays.stream(ingredient.getItems())
.map(IVariable::from).collect(Collectors.toList())); .map(IVariable::from).collect(Collectors.toList()));
}*/ }
@Override @Override
public void setup(FMLCommonSetupEvent event) { public void setup(FMLCommonSetupEvent event) {
/* event.enqueueWork(() -> { event.enqueueWork(() -> {
for (Map.Entry<ResourceLocation, IMultiblock> entry : MULTIBLOCKS.entrySet()) for (var entry : MULTIBLOCKS.entrySet())
PatchouliAPI.get().registerMultiblock(entry.getKey(), entry.getValue()); PatchouliAPI.get().registerMultiblock(entry.getKey(), entry.getValue());
PatchouliAPI.get().setConfigFlag(NaturesAura.MOD_ID + ":rf_converter", ModConfig.instance.rfConverter.get()); PatchouliAPI.get().setConfigFlag(NaturesAura.MOD_ID + ":rf_converter", ModConfig.instance.rfConverter.get());
PatchouliAPI.get().setConfigFlag(NaturesAura.MOD_ID + ":chunk_loader", ModConfig.instance.chunkLoader.get()); PatchouliAPI.get().setConfigFlag(NaturesAura.MOD_ID + ":chunk_loader", ModConfig.instance.chunkLoader.get());
});*/ });
} }
@Override @Override
@ -67,66 +88,66 @@ public class PatchouliCompat implements ICompat {
} }
/* @SubscribeEvent @SubscribeEvent
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
public void onBookDraw(BookDrawScreenEvent event) { public void onBookDraw(BookDrawScreenEvent event) {
if (event.book == null || !event.book.equals(BOOK)) var book = event.getBook();
var gui = event.getScreen();
if (book == null || !book.equals(BOOK))
return; return;
LocalDateTime now = LocalDateTime.now(); var now = LocalDateTime.now();
if (now.getMonth() == Month.MAY && now.getDayOfMonth() == 21) { if (now.getMonth() == Month.MAY && now.getDayOfMonth() == 21) {
int x = event.gui.width / 2 + 272 / 2 - 16; var x = gui.width / 2 + 272 / 2 - 16;
int y = event.gui.height / 2 - 180 / 2 - 26; var y = gui.height / 2 - 180 / 2 - 26;
RenderHelper.disableStandardItemLighting(); RenderSystem.setShader(GameRenderer::getPositionTexShader);
GlStateManager.color4f(1, 1, 1, 1); RenderSystem.setShaderTexture(0, ClientEvents.BOOK_GUI);
event.gui.getMinecraft().getTextureManager().bindTexture(ClientEvents.BOOK_GUI); Screen.blit(event.getPoseStack(), x, y, 469, 0, 43, 42, 512, 256);
AbstractGui.blit(event.matrixStack, x, y, 469, 0, 43, 42, 512, 256);
if (event.mouseX >= x && event.mouseY >= y && event.mouseX < x + 43 && event.mouseY < y + 42) if (event.getMouseX() >= x && event.getMouseY() >= y && event.getMouseX() < x + 43 && event.getMouseY() < y + 42)
GuiUtils.drawHoveringText(event.matrixStack, gui.renderComponentTooltip(event.getPoseStack(),
Collections.singletonList(new StringTextComponent("It's the author Ellpeck's birthday!").setStyle(Style.EMPTY.setFormatting(TextFormatting.GOLD))), Collections.singletonList(new TextComponent("It's the author Ellpeck's birthday!").setStyle(Style.EMPTY.applyFormat(ChatFormatting.GOLD))),
event.mouseX, event.mouseY, event.gui.width, event.gui.height, 0, event.gui.getMinecraft().fontRenderer); event.getMouseX(), event.getMouseY(), gui.getMinecraft().font);
} else if (now.getMonth() == Month.JUNE) { } else if (now.getMonth() == Month.JUNE) {
int x = event.gui.width / 2 + 272 / 2; var x = gui.width / 2 + 272 / 2;
int y = event.gui.height / 2 - 180 / 2 + 16; var y = gui.height / 2 - 180 / 2 + 16;
RenderHelper.disableStandardItemLighting(); RenderSystem.setShader(GameRenderer::getPositionTexShader);
GlStateManager.color4f(1, 1, 1, 1); RenderSystem.setShaderTexture(0, ClientEvents.BOOK_GUI);
event.gui.getMinecraft().getTextureManager().bindTexture(ClientEvents.BOOK_GUI); Screen.blit(event.getPoseStack(), x, y, 424, 0, 45, 26, 512, 256);
AbstractGui.blit(event.matrixStack, x, y, 424, 0, 45, 26, 512, 256);
if (event.mouseX >= x && event.mouseY >= y && event.mouseX < x + 45 && event.mouseY < y + 26) if (event.getMouseX() >= x && event.getMouseY() >= y && event.getMouseX() < x + 45 && event.getMouseY() < y + 26)
GuiUtils.drawHoveringText(event.matrixStack, gui.renderComponentTooltip(event.getPoseStack(),
Collections.singletonList(new StringTextComponent("§6Happy §4P§6r§ei§2d§9e§5!")), Collections.singletonList(new TextComponent("§6Happy §4P§6r§ei§2d§9e§5!")),
event.mouseX, event.mouseY, event.gui.width, event.gui.height, 0, event.gui.getMinecraft().fontRenderer); event.getMouseX(), event.getMouseY(), gui.getMinecraft().font);
} }
String name = event.gui.getMinecraft().player.getName().getString(); var name = gui.getMinecraft().player.getName().getString();
FancyInfo info = SupporterFancyHandler.FANCY_INFOS.get(name); var info = SupporterFancyHandler.FANCY_INFOS.get(name);
if (info != null) { if (info != null) {
int x = event.gui.width / 2 - 272 / 2 + 20; var x = gui.width / 2 - 272 / 2 + 20;
int y = event.gui.height / 2 + 180 / 2; var y = gui.height / 2 + 180 / 2;
RenderHelper.disableStandardItemLighting(); RenderSystem.setShader(GameRenderer::getPositionTexShader);
RenderSystem.color4f(1, 1, 1, 1); RenderSystem.setShaderTexture(0, ClientEvents.BOOK_GUI);
event.gui.getMinecraft().getTextureManager().bindTexture(ClientEvents.BOOK_GUI);
AbstractGui.blit(event.matrixStack, x, y, 496, 44, 16, 18, 512, 256); Screen.blit(event.getPoseStack(), x, y, 496, 44, 16, 18, 512, 256);
if (info.tier == 1) { if (info.tier() == 1) {
AbstractGui.blit(event.matrixStack, x, y, 496 - 16, 44, 16, 18, 512, 256); Screen.blit(event.getPoseStack(), x, y, 496 - 16, 44, 16, 18, 512, 256);
} else { } else {
float r = ((info.color >> 16) & 255) / 255F; var r = ((info.color() >> 16) & 255) / 255F;
float g = ((info.color >> 8) & 255) / 255F; var g = ((info.color() >> 8) & 255) / 255F;
float b = (info.color & 255) / 255F; var b = (info.color() & 255) / 255F;
RenderSystem.color3f(r, g, b); // TODO apply leaf color?
AbstractGui.blit(event.matrixStack, x, y, 496 - 32, 44, 16, 18, 512, 256); //RenderSystem.color3f(r, g, b);
Screen.blit(event.getPoseStack(), x, y, 496 - 32, 44, 16, 18, 512, 256);
} }
if (event.mouseX >= x && event.mouseY >= y && event.mouseX < x + 16 && event.mouseY < y + 18) if (event.getMouseX() >= x && event.getMouseY() >= y && event.getMouseX() < x + 16 && event.getMouseY() < y + 18)
GuiUtils.drawHoveringText(event.matrixStack, gui.renderComponentTooltip(event.getPoseStack(),
Collections.singletonList(new StringTextComponent("Thanks for your support, " + name + "!").setStyle(Style.EMPTY.setFormatting(TextFormatting.YELLOW))), Collections.singletonList(new TextComponent("Thanks for your support, " + name + "!").setStyle(Style.EMPTY.applyFormat(ChatFormatting.YELLOW))),
event.mouseX, event.mouseY, event.gui.width, event.gui.height, 0, event.gui.getMinecraft().fontRenderer); event.getMouseX(), event.getMouseY(), gui.getMinecraft().font);
} }
}*/ }
} }

View file

@ -1,8 +1,7 @@
/*
package de.ellpeck.naturesaura.compat.patchouli; package de.ellpeck.naturesaura.compat.patchouli;
import de.ellpeck.naturesaura.recipes.AltarRecipe; import de.ellpeck.naturesaura.recipes.AltarRecipe;
import net.minecraft.item.crafting.Ingredient; import net.minecraft.world.item.crafting.Ingredient;
import vazkii.patchouli.api.IComponentProcessor; import vazkii.patchouli.api.IComponentProcessor;
import vazkii.patchouli.api.IVariable; import vazkii.patchouli.api.IVariable;
import vazkii.patchouli.api.IVariableProvider; import vazkii.patchouli.api.IVariableProvider;
@ -20,26 +19,14 @@ public class ProcessorAltar implements IComponentProcessor {
public IVariable process(String key) { public IVariable process(String key) {
if (this.recipe == null) if (this.recipe == null)
return null; return null;
switch (key) { return switch (key) {
case "input": case "input" -> PatchouliCompat.ingredientVariable(this.recipe.input);
return PatchouliCompat.ingredientVariable(this.recipe.input); case "output" -> IVariable.from(this.recipe.output);
case "output": case "catalyst" -> this.recipe.catalyst != Ingredient.EMPTY ? PatchouliCompat.ingredientVariable(this.recipe.catalyst) : null;
return IVariable.from(this.recipe.output); case "type" -> this.recipe.requiredType != null ? IVariable.from(this.recipe.getDimensionBottle()) : null;
case "catalyst": case "name" -> IVariable.wrap(this.recipe.output.getDisplayName().getString());
if (this.recipe.catalyst != Ingredient.EMPTY) default -> null;
return PatchouliCompat.ingredientVariable(this.recipe.catalyst); };
else
return null;
case "type":
if (this.recipe.requiredType != null)
return IVariable.from(this.recipe.getDimensionBottle());
else
return null;
case "name":
return IVariable.wrap(this.recipe.output.getDisplayName().getString());
default:
return null;
}
} }
@Override @Override
@ -47,4 +34,3 @@ public class ProcessorAltar implements IComponentProcessor {
return group.isEmpty() || group.equals(this.recipe.catalyst == Ingredient.EMPTY ? "altar" : "catalyst"); return group.isEmpty() || group.equals(this.recipe.catalyst == Ingredient.EMPTY ? "altar" : "catalyst");
} }
} }
*/

View file

@ -1,9 +1,8 @@
/*
package de.ellpeck.naturesaura.compat.patchouli; package de.ellpeck.naturesaura.compat.patchouli;
import de.ellpeck.naturesaura.recipes.AnimalSpawnerRecipe; import de.ellpeck.naturesaura.recipes.AnimalSpawnerRecipe;
import net.minecraft.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.item.SpawnEggItem; import net.minecraftforge.common.ForgeSpawnEggItem;
import vazkii.patchouli.api.IComponentProcessor; import vazkii.patchouli.api.IComponentProcessor;
import vazkii.patchouli.api.IVariable; import vazkii.patchouli.api.IVariable;
import vazkii.patchouli.api.IVariableProvider; import vazkii.patchouli.api.IVariableProvider;
@ -22,23 +21,15 @@ public class ProcessorAnimalSpawner implements IComponentProcessor {
if (this.recipe == null) if (this.recipe == null)
return null; return null;
if (key.startsWith("input")) { if (key.startsWith("input")) {
int id = Integer.parseInt(key.substring(5)) - 1; var id = Integer.parseInt(key.substring(5)) - 1;
if (this.recipe.ingredients.length > id) return this.recipe.ingredients.length > id ? PatchouliCompat.ingredientVariable(this.recipe.ingredients[id]) : null;
return PatchouliCompat.ingredientVariable(this.recipe.ingredients[id]);
else
return null;
} else { } else {
switch (key) { return switch (key) {
case "name": case "name" -> IVariable.wrap(this.recipe.entity.getDescription().getString());
return IVariable.wrap(this.recipe.entity.getName().getString()); case "entity" -> IVariable.wrap(this.recipe.entity.getRegistryName().toString());
case "entity": case "egg" -> IVariable.from(new ItemStack(ForgeSpawnEggItem.fromEntityType(this.recipe.entity)));
return IVariable.wrap(this.recipe.entity.getRegistryName().toString()); default -> null;
case "egg": };
ItemStack egg = new ItemStack(SpawnEggItem.getEgg(this.recipe.entity));
return IVariable.from(egg);
default:
return null;
}
} }
} }
@ -47,4 +38,3 @@ public class ProcessorAnimalSpawner implements IComponentProcessor {
return !"seekrit".equals(group); return !"seekrit".equals(group);
} }
} }
*/

View file

@ -1,4 +1,3 @@
/*
package de.ellpeck.naturesaura.compat.patchouli; package de.ellpeck.naturesaura.compat.patchouli;
import de.ellpeck.naturesaura.recipes.OfferingRecipe; import de.ellpeck.naturesaura.recipes.OfferingRecipe;
@ -19,18 +18,12 @@ public class ProcessorOffering implements IComponentProcessor {
public IVariable process(String key) { public IVariable process(String key) {
if (this.recipe == null) if (this.recipe == null)
return null; return null;
switch (key) { return switch (key) {
case "input": case "input" -> PatchouliCompat.ingredientVariable(this.recipe.input);
return PatchouliCompat.ingredientVariable(this.recipe.input); case "output" -> IVariable.from(this.recipe.output);
case "output": case "start" -> PatchouliCompat.ingredientVariable(this.recipe.startItem);
return IVariable.from(this.recipe.output); case "name" -> IVariable.wrap(this.recipe.output.getDisplayName().getString());
case "start": default -> null;
return PatchouliCompat.ingredientVariable(this.recipe.startItem); };
case "name":
return IVariable.wrap(this.recipe.output.getDisplayName().getString());
default:
return null;
} }
} }
}
*/

View file

@ -1,4 +1,3 @@
/*
package de.ellpeck.naturesaura.compat.patchouli; package de.ellpeck.naturesaura.compat.patchouli;
import de.ellpeck.naturesaura.recipes.TreeRitualRecipe; import de.ellpeck.naturesaura.recipes.TreeRitualRecipe;
@ -20,23 +19,15 @@ public class ProcessorTreeRitual implements IComponentProcessor {
if (this.recipe == null) if (this.recipe == null)
return null; return null;
if (key.startsWith("input")) { if (key.startsWith("input")) {
int id = Integer.parseInt(key.substring(5)) - 1; var id = Integer.parseInt(key.substring(5)) - 1;
if (this.recipe.ingredients.length > id) return this.recipe.ingredients.length > id ? PatchouliCompat.ingredientVariable(this.recipe.ingredients[id]) : null;
return PatchouliCompat.ingredientVariable(this.recipe.ingredients[id]);
else
return null;
} else { } else {
switch (key) { return switch (key) {
case "output": case "output" -> IVariable.from(this.recipe.result);
return IVariable.from(this.recipe.result); case "sapling" -> PatchouliCompat.ingredientVariable(this.recipe.saplingType);
case "sapling": case "name" -> IVariable.wrap(this.recipe.result.getDisplayName().getString());
return PatchouliCompat.ingredientVariable(this.recipe.saplingType); default -> null;
case "name": };
return IVariable.wrap(this.recipe.result.getDisplayName().getString());
default:
return null;
} }
} }
} }
}
*/

View file

@ -9,13 +9,15 @@ import net.minecraft.tags.BlockTags;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.Blocks;
import net.minecraftforge.common.Tags; import net.minecraftforge.common.Tags;
import net.minecraftforge.common.data.ExistingFileHelper;
import org.jetbrains.annotations.Nullable;
public class BlockTagProvider extends BlockTagsProvider { public class BlockTagProvider extends BlockTagsProvider {
public static final Tags.IOptionalNamedTag<Block> NETHER_ALTAR_WOOD = BlockTags.createOptional(new ResourceLocation(NaturesAura.MOD_ID, "nether_altar_wood")); public static final Tags.IOptionalNamedTag<Block> NETHER_ALTAR_WOOD = BlockTags.createOptional(new ResourceLocation(NaturesAura.MOD_ID, "nether_altar_wood"));
public BlockTagProvider(DataGenerator generatorIn) { public BlockTagProvider(DataGenerator gen, @Nullable ExistingFileHelper existingFileHelper) {
super(generatorIn); super(gen, NaturesAura.MOD_ID, existingFileHelper);
} }
@Override @Override

View file

@ -1,7 +1,5 @@
package de.ellpeck.naturesaura.data; package de.ellpeck.naturesaura.data;
import net.minecraft.data.DataGenerator;
import net.minecraftforge.common.data.ExistingFileHelper;
import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.forge.event.lifecycle.GatherDataEvent; import net.minecraftforge.forge.event.lifecycle.GatherDataEvent;
@ -13,7 +11,7 @@ public final class ModData {
public static void gatherData(GatherDataEvent event) { public static void gatherData(GatherDataEvent event) {
var generator = event.getGenerator(); var generator = event.getGenerator();
var ex = event.getExistingFileHelper(); var ex = event.getExistingFileHelper();
var blockTags = new BlockTagProvider(generator); var blockTags = new BlockTagProvider(generator, ex);
generator.addProvider(blockTags); generator.addProvider(blockTags);
generator.addProvider(new ItemTagProvider(generator, blockTags, ex)); generator.addProvider(new ItemTagProvider(generator, blockTags, ex));
generator.addProvider(new BlockLootProvider(generator)); generator.addProvider(new BlockLootProvider(generator));

View file

@ -26,6 +26,7 @@ import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.network.NetworkHooks; import net.minecraftforge.network.NetworkHooks;
// TODO these behave very weirdly in-world
public class EntityEffectInhibitor extends Entity implements IVisualizable { public class EntityEffectInhibitor extends Entity implements IVisualizable {
private static final EntityDataAccessor<String> INHIBITED_EFFECT = SynchedEntityData.defineId(EntityEffectInhibitor.class, EntityDataSerializers.STRING); private static final EntityDataAccessor<String> INHIBITED_EFFECT = SynchedEntityData.defineId(EntityEffectInhibitor.class, EntityDataSerializers.STRING);

View file

@ -11,21 +11,22 @@ import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraft.world.level.levelgen.feature.Feature;
import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext;
import net.minecraft.world.level.levelgen.feature.TreeFeature; import net.minecraft.world.level.levelgen.feature.TreeFeature;
import net.minecraft.world.level.levelgen.feature.configurations.TreeConfiguration; import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration;
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration;
import net.minecraft.world.level.material.Material; import net.minecraft.world.level.material.Material;
import java.util.Random; import java.util.Random;
import static net.minecraft.core.Direction.Axis; import static net.minecraft.core.Direction.Axis;
public class LevelGenAncientTree extends Feature<TreeConfiguration> { public class LevelGenAncientTree extends Feature<NoneFeatureConfiguration> {
public LevelGenAncientTree() { public LevelGenAncientTree() {
super(Codec.unit(ModFeatures.Configured.ANCIENT_TREE.config())); super(Codec.unit(FeatureConfiguration.NONE));
} }
@Override @Override
public boolean place(FeaturePlaceContext<TreeConfiguration> ctx) { public boolean place(FeaturePlaceContext<NoneFeatureConfiguration> ctx) {
var level = ctx.level(); var level = ctx.level();
var pos = ctx.origin(); var pos = ctx.origin();
var rand = ctx.random(); var rand = ctx.random();

View file

@ -23,6 +23,7 @@ import java.util.function.Supplier;
@OnlyIn(Dist.CLIENT) @OnlyIn(Dist.CLIENT)
public final class ParticleHandler { public final class ParticleHandler {
// TODO fix particle transparency, they don't seem to fade on the edges anymore
public static final ParticleRenderType MAGIC = new ParticleRenderType() { public static final ParticleRenderType MAGIC = new ParticleRenderType() {
@Override @Override

View file

@ -1,7 +1,7 @@
{ {
"name": "Ancient Trees", "name": "Ancient Trees",
"icon": "naturesaura:ancient_leaves", "icon": "naturesaura:ancient_leaves",
"category": "creating", "category": "naturesaura:creating",
"advancement": "naturesaura:wood_stand", "advancement": "naturesaura:wood_stand",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Disentangler of Mortals", "name": "Disentangler of Mortals",
"icon": "naturesaura:animal_generator", "icon": "naturesaura:animal_generator",
"category": "creating", "category": "naturesaura:creating",
"advancement": "naturesaura:tainted_gold", "advancement": "naturesaura:tainted_gold",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Reaper of Ender Heights", "name": "Reaper of Ender Heights",
"icon": "naturesaura:chorus_generator", "icon": "naturesaura:chorus_generator",
"category": "creating", "category": "naturesaura:creating",
"advancement": "naturesaura:aura_bottle_end", "advancement": "naturesaura:aura_bottle_end",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Rose of Oblivion", "name": "Rose of Oblivion",
"icon": "naturesaura:end_flower", "icon": "naturesaura:end_flower",
"category": "creating", "category": "naturesaura:creating",
"advancement": "naturesaura:end_flower", "advancement": "naturesaura:end_flower",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Firecracker Gaze", "name": "Firecracker Gaze",
"icon": "naturesaura:firework_generator", "icon": "naturesaura:firework_generator",
"category": "creating", "category": "naturesaura:creating",
"advancement": "naturesaura:offering", "advancement": "naturesaura:offering",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Herbivorous Absorber", "name": "Herbivorous Absorber",
"icon": "naturesaura:flower_generator", "icon": "naturesaura:flower_generator",
"category": "creating", "category": "naturesaura:creating",
"advancement": "naturesaura:infused_materials", "advancement": "naturesaura:infused_materials",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Creational Catalyst", "name": "Creational Catalyst",
"icon": "naturesaura:generator_limit_remover", "icon": "naturesaura:generator_limit_remover",
"category": "creating", "category": "naturesaura:creating",
"advancement": "naturesaura:offering", "advancement": "naturesaura:offering",
"priority": true, "priority": true,
"pages": [ "pages": [

View file

@ -1,7 +1,7 @@
{ {
"name": "Swamp Homi", "name": "Swamp Homi",
"icon": "naturesaura:moss_generator", "icon": "naturesaura:moss_generator",
"category": "creating", "category": "naturesaura:creating",
"advancement": "naturesaura:infused_materials", "advancement": "naturesaura:infused_materials",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Canopy Diminisher", "name": "Canopy Diminisher",
"icon": "naturesaura:oak_generator", "icon": "naturesaura:oak_generator",
"category": "creating", "category": "naturesaura:creating",
"advancement": "naturesaura:infused_materials", "advancement": "naturesaura:infused_materials",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "On Creating Aura", "name": "On Creating Aura",
"icon": "naturesaura:gold_leaf", "icon": "naturesaura:gold_leaf",
"category": "creating", "category": "naturesaura:creating",
"advancement": "naturesaura:wood_stand", "advancement": "naturesaura:wood_stand",
"priority": true, "priority": true,
"pages": [ "pages": [

View file

@ -1,7 +1,7 @@
{ {
"name": "Ritual of the Brewer", "name": "Ritual of the Brewer",
"icon": "naturesaura:potion_generator", "icon": "naturesaura:potion_generator",
"category": "creating", "category": "naturesaura:creating",
"advancement": "naturesaura:sky_ingot", "advancement": "naturesaura:sky_ingot",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Shooting Mark", "name": "Shooting Mark",
"icon": "naturesaura:projectile_generator", "icon": "naturesaura:projectile_generator",
"category": "creating", "category": "naturesaura:creating",
"advancement": "naturesaura:tainted_gold", "advancement": "naturesaura:tainted_gold",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Offshoot Observer", "name": "Offshoot Observer",
"icon": "naturesaura:slime_split_generator", "icon": "naturesaura:slime_split_generator",
"category": "creating", "category": "naturesaura:creating",
"advancement": "naturesaura:tainted_gold", "advancement": "naturesaura:tainted_gold",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Corporeal Eye", "name": "Corporeal Eye",
"icon": "naturesaura:animal_container", "icon": "naturesaura:animal_container",
"category": "devices", "category": "naturesaura:devices",
"advancement": "naturesaura:eye", "advancement": "naturesaura:eye",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Aura Detector", "name": "Aura Detector",
"icon": "naturesaura:aura_detector", "icon": "naturesaura:aura_detector",
"category": "devices", "category": "naturesaura:devices",
"advancement": "naturesaura:infused_materials", "advancement": "naturesaura:infused_materials",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Redstone Aura Vaporizer", "name": "Redstone Aura Vaporizer",
"icon": "naturesaura:aura_timer", "icon": "naturesaura:aura_timer",
"category": "devices", "category": "naturesaura:devices",
"advancement": "naturesaura:infused_materials", "advancement": "naturesaura:infused_materials",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Automatic Constructor", "name": "Automatic Constructor",
"icon": "naturesaura:auto_crafter", "icon": "naturesaura:auto_crafter",
"category": "devices", "category": "naturesaura:devices",
"advancement": "naturesaura:sky_ingot", "advancement": "naturesaura:sky_ingot",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Adept Hopper", "name": "Adept Hopper",
"icon": "naturesaura:grated_chute", "icon": "naturesaura:grated_chute",
"category": "devices", "category": "naturesaura:devices",
"advancement": "naturesaura:infused_materials", "advancement": "naturesaura:infused_materials",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Item Distributor", "name": "Item Distributor",
"icon": "naturesaura:item_distributor", "icon": "naturesaura:item_distributor",
"category": "devices", "category": "naturesaura:devices",
"advancement": "naturesaura:infused_materials", "advancement": "naturesaura:infused_materials",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Aura Attraction Cart", "name": "Aura Attraction Cart",
"icon": "naturesaura:mover_cart", "icon": "naturesaura:mover_cart",
"category": "devices", "category": "naturesaura:devices",
"advancement": "naturesaura:aura_bottle_end", "advancement": "naturesaura:aura_bottle_end",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Item Grounder", "name": "Item Grounder",
"icon": "naturesaura:pickup_stopper", "icon": "naturesaura:pickup_stopper",
"category": "devices", "category": "naturesaura:devices",
"advancement": "naturesaura:infused_materials", "advancement": "naturesaura:infused_materials",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Powder Manipulator", "name": "Powder Manipulator",
"icon": "naturesaura:powder_placer", "icon": "naturesaura:powder_placer",
"category": "devices", "category": "naturesaura:devices",
"advancement": "naturesaura:positive_imbalance", "advancement": "naturesaura:positive_imbalance",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Inexplicable Anger", "name": "Inexplicable Anger",
"icon": "minecraft:fire_charge", "icon": "minecraft:fire_charge",
"category": "effects", "category": "naturesaura:effects",
"advancement": "naturesaura:negative_imbalance", "advancement": "naturesaura:negative_imbalance",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Increase of Fertility", "name": "Increase of Fertility",
"icon": "minecraft:egg", "icon": "minecraft:egg",
"category": "effects", "category": "naturesaura:effects",
"advancement": "naturesaura:positive_imbalance", "advancement": "naturesaura:positive_imbalance",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Breathlessness", "name": "Breathlessness",
"icon": "minecraft:white_wool", "icon": "minecraft:white_wool",
"category": "effects", "category": "naturesaura:effects",
"advancement": "naturesaura:negative_imbalance", "advancement": "naturesaura:negative_imbalance",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Natural Storage", "name": "Natural Storage",
"icon": "naturesaura:aura_cache", "icon": "naturesaura:aura_cache",
"category": "effects", "category": "naturesaura:effects",
"advancement": "naturesaura:positive_imbalance", "advancement": "naturesaura:positive_imbalance",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Natural Decay", "name": "Natural Decay",
"icon": "naturesaura:decayed_leaves", "icon": "naturesaura:decayed_leaves",
"category": "effects", "category": "naturesaura:effects",
"advancement": "naturesaura:negative_imbalance", "advancement": "naturesaura:negative_imbalance",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Effect Powder", "name": "Effect Powder",
"icon": "naturesaura:effect_powder{effect:'naturesaura:plant_boost'}", "icon": "naturesaura:effect_powder{effect:'naturesaura:plant_boost'}",
"category": "effects", "category": "naturesaura:effects",
"advancement": "naturesaura:positive_imbalance", "advancement": "naturesaura:positive_imbalance",
"priority": true, "priority": true,
"pages": [ "pages": [

View file

@ -1,7 +1,7 @@
{ {
"name": "Unstable Outbreak", "name": "Unstable Outbreak",
"icon": "minecraft:tnt", "icon": "minecraft:tnt",
"category": "effects", "category": "naturesaura:effects",
"advancement": "naturesaura:negative_imbalance", "advancement": "naturesaura:negative_imbalance",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Crimson Decay", "name": "Crimson Decay",
"icon": "minecraft:soul_sand", "icon": "minecraft:soul_sand",
"category": "effects", "category": "naturesaura:effects",
"advancement": "naturesaura:negative_imbalance", "advancement": "naturesaura:negative_imbalance",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Crimson Overgrowth", "name": "Crimson Overgrowth",
"icon": "naturesaura:nether_grass", "icon": "naturesaura:nether_grass",
"category": "effects", "category": "naturesaura:effects",
"advancement": "naturesaura:positive_imbalance", "advancement": "naturesaura:positive_imbalance",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Mineral Amassing", "name": "Mineral Amassing",
"icon": "minecraft:diamond_ore", "icon": "minecraft:diamond_ore",
"category": "effects", "category": "naturesaura:effects",
"advancement": "naturesaura:positive_imbalance", "advancement": "naturesaura:positive_imbalance",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Vegetational Increase", "name": "Vegetational Increase",
"icon": "minecraft:wheat_seeds", "icon": "minecraft:wheat_seeds",
"category": "effects", "category": "naturesaura:effects",
"advancement": "naturesaura:positive_imbalance", "advancement": "naturesaura:positive_imbalance",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Aura, conceptually", "name": "Aura, conceptually",
"icon": "naturesaura:gold_leaf", "icon": "naturesaura:gold_leaf",
"category": "intro", "category": "naturesaura:intro",
"pages": [ "pages": [
{ {
"type": "text", "type": "text",

View file

@ -1,7 +1,7 @@
{ {
"name": "Baubles", "name": "Baubles",
"icon": "minecraft:totem_of_undying", "icon": "minecraft:totem_of_undying",
"category": "intro", "category": "naturesaura:intro",
"read_by_default": true, "read_by_default": true,
"flag": "mod:baubles", "flag": "mod:baubles",
"pages": [ "pages": [

View file

@ -1,7 +1,7 @@
{ {
"name": "Magical Botany", "name": "Magical Botany",
"icon": "minecraft:oak_sapling", "icon": "minecraft:oak_sapling",
"category": "intro", "category": "naturesaura:intro",
"pages": [ "pages": [
{ {
"type": "text", "type": "text",

View file

@ -1,7 +1,7 @@
{ {
"name": "This Book", "name": "This Book",
"icon": "patchouli:guide_book{'patchouli:book':'naturesaura:book'}", "icon": "patchouli:guide_book{'patchouli:book':'naturesaura:book'}",
"category": "intro", "category": "naturesaura:intro",
"priority": true, "priority": true,
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Aura Cache", "name": "Aura Cache",
"icon": "naturesaura:aura_cache", "icon": "naturesaura:aura_cache",
"category": "items", "category": "naturesaura:items",
"advancement": "naturesaura:infused_materials", "advancement": "naturesaura:infused_materials",
"priority": true, "priority": true,
"pages": [ "pages": [

View file

@ -1,7 +1,7 @@
{ {
"name": "Aura Trove", "name": "Aura Trove",
"icon": "naturesaura:aura_trove", "icon": "naturesaura:aura_trove",
"category": "items", "category": "naturesaura:items",
"advancement": "naturesaura:sky_ingot", "advancement": "naturesaura:sky_ingot",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Eir's Token", "name": "Eir's Token",
"icon": "naturesaura:break_prevention", "icon": "naturesaura:break_prevention",
"category": "items", "category": "naturesaura:items",
"advancement": "naturesaura:sky_ingot", "advancement": "naturesaura:sky_ingot",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Staff of Shadows", "name": "Staff of Shadows",
"icon": "naturesaura:cave_finder", "icon": "naturesaura:cave_finder",
"category": "items", "category": "naturesaura:items",
"advancement": "naturesaura:offering", "advancement": "naturesaura:offering",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Bucket of Infinite Color", "name": "Bucket of Infinite Color",
"icon": "naturesaura:color_changer", "icon": "naturesaura:color_changer",
"category": "items", "category": "naturesaura:items",
"advancement": "naturesaura:infused_materials", "advancement": "naturesaura:infused_materials",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Crimson Meal", "name": "Crimson Meal",
"icon": "naturesaura:crimson_meal", "icon": "naturesaura:crimson_meal",
"category": "items", "category": "naturesaura:items",
"advancement": "naturesaura:aura_bottle_nether", "advancement": "naturesaura:aura_bottle_nether",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Ring of Last Chance", "name": "Ring of Last Chance",
"icon": "naturesaura:death_ring", "icon": "naturesaura:death_ring",
"category": "items", "category": "naturesaura:items",
"advancement": "naturesaura:sky_ingot", "advancement": "naturesaura:sky_ingot",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Eye of the Shulker", "name": "Eye of the Shulker",
"icon": "naturesaura:end_city_finder", "icon": "naturesaura:end_city_finder",
"category": "items", "category": "naturesaura:items",
"advancement": "naturesaura:aura_bottle_end", "advancement": "naturesaura:aura_bottle_end",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Ender Ocular", "name": "Ender Ocular",
"icon": "naturesaura:ender_access", "icon": "naturesaura:ender_access",
"category": "items", "category": "naturesaura:items",
"advancement": "naturesaura:aura_bottle_end", "advancement": "naturesaura:aura_bottle_end",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Environmental Eye", "name": "Environmental Eye",
"icon": "naturesaura:eye", "icon": "naturesaura:eye",
"category": "items", "category": "naturesaura:items",
"advancement": "naturesaura:wood_stand", "advancement": "naturesaura:wood_stand",
"turnin": "naturesaura:eye", "turnin": "naturesaura:eye",
"priority": true, "priority": true,

View file

@ -1,7 +1,7 @@
{ {
"name": "Environmental Ocular", "name": "Environmental Ocular",
"icon": "naturesaura:eye_improved", "icon": "naturesaura:eye_improved",
"category": "items", "category": "naturesaura:items",
"advancement": "naturesaura:end_flower", "advancement": "naturesaura:end_flower",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Eye of the Blaze", "name": "Eye of the Blaze",
"icon": "naturesaura:fortress_finder", "icon": "naturesaura:fortress_finder",
"category": "items", "category": "naturesaura:items",
"advancement": "naturesaura:aura_bottle_nether", "advancement": "naturesaura:aura_bottle_nether",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Botanist's Armor", "name": "Botanist's Armor",
"icon": "naturesaura:infused_iron_chest", "icon": "naturesaura:infused_iron_chest",
"category": "items", "category": "naturesaura:items",
"advancement": "naturesaura:infused_materials", "advancement": "naturesaura:infused_materials",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Botanist's Tools", "name": "Botanist's Tools",
"icon": "naturesaura:infused_iron_pickaxe", "icon": "naturesaura:infused_iron_pickaxe",
"category": "items", "category": "naturesaura:items",
"advancement": "naturesaura:infused_materials", "advancement": "naturesaura:infused_materials",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Staff of Baldur", "name": "Staff of Baldur",
"icon": "naturesaura:light_staff", "icon": "naturesaura:light_staff",
"category": "items", "category": "naturesaura:items",
"advancement": "naturesaura:sky_ingot", "advancement": "naturesaura:sky_ingot",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Staff of Riches", "name": "Staff of Riches",
"icon": "naturesaura:loot_finder", "icon": "naturesaura:loot_finder",
"category": "items", "category": "naturesaura:items",
"advancement": "naturesaura:offering", "advancement": "naturesaura:offering",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Staff of Ancient Knowledge", "name": "Staff of Ancient Knowledge",
"icon": "naturesaura:netherite_finder", "icon": "naturesaura:netherite_finder",
"category": "items", "category": "naturesaura:items",
"advancement": "naturesaura:offering", "advancement": "naturesaura:offering",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Eye of the Pillager", "name": "Eye of the Pillager",
"icon": "naturesaura:outpost_finder", "icon": "naturesaura:outpost_finder",
"category": "items", "category": "naturesaura:items",
"advancement": "naturesaura:aura_bottle_overworld", "advancement": "naturesaura:aura_bottle_overworld",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Token of Undying Friendship", "name": "Token of Undying Friendship",
"icon": "naturesaura:pet_reviver", "icon": "naturesaura:pet_reviver",
"category": "items", "category": "naturesaura:items",
"advancement": "naturesaura:sky_ingot", "advancement": "naturesaura:sky_ingot",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Mystical Magnifier", "name": "Mystical Magnifier",
"icon": "naturesaura:range_visualizer", "icon": "naturesaura:range_visualizer",
"category": "items", "category": "naturesaura:items",
"advancement": "naturesaura:infused_materials", "advancement": "naturesaura:infused_materials",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Amulet of Wrath", "name": "Amulet of Wrath",
"icon": "naturesaura:shockwave_creator", "icon": "naturesaura:shockwave_creator",
"category": "items", "category": "naturesaura:items",
"advancement": "naturesaura:tainted_gold", "advancement": "naturesaura:tainted_gold",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Skyseeker's Armor", "name": "Skyseeker's Armor",
"icon": "naturesaura:sky_chest", "icon": "naturesaura:sky_chest",
"category": "items", "category": "naturesaura:items",
"advancement": "naturesaura:sky_ingot", "advancement": "naturesaura:sky_ingot",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Skyseeker's Tools", "name": "Skyseeker's Tools",
"icon": "naturesaura:sky_pickaxe", "icon": "naturesaura:sky_pickaxe",
"category": "items", "category": "naturesaura:items",
"advancement": "naturesaura:sky_ingot", "advancement": "naturesaura:sky_ingot",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Aura Bottling", "name": "Aura Bottling",
"icon": "naturesaura:aura_bottle{stored_type:'naturesaura:overworld'}", "icon": "naturesaura:aura_bottle{stored_type:'naturesaura:overworld'}",
"category": "practices", "category": "naturesaura:practices",
"advancement": "naturesaura:wood_stand", "advancement": "naturesaura:wood_stand",
"turnin": "naturesaura:aura_bottle_overworld", "turnin": "naturesaura:aura_bottle_overworld",
"pages": [ "pages": [

View file

@ -1,7 +1,7 @@
{ {
"name": "Aura Plants", "name": "Aura Plants",
"icon": "naturesaura:aura_bloom", "icon": "naturesaura:aura_bloom",
"category": "practices", "category": "naturesaura:practices",
"pages": [ "pages": [
{ {
"type": "text", "type": "text",

View file

@ -1,7 +1,7 @@
{ {
"name": "Brilliant Trees", "name": "Brilliant Trees",
"icon": "naturesaura:gold_leaf", "icon": "naturesaura:gold_leaf",
"category": "practices", "category": "naturesaura:practices",
"priority": true, "priority": true,
"turnin": "naturesaura:gold_leaf", "turnin": "naturesaura:gold_leaf",
"pages": [ "pages": [

View file

@ -1,7 +1,7 @@
{ {
"name": "Offering to the Gods", "name": "Offering to the Gods",
"icon": "naturesaura:offering_table", "icon": "naturesaura:offering_table",
"category": "practices", "category": "naturesaura:practices",
"advancement": "naturesaura:tainted_gold", "advancement": "naturesaura:tainted_gold",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Ritual of the Forest", "name": "Ritual of the Forest",
"icon": "naturesaura:wood_stand", "icon": "naturesaura:wood_stand",
"category": "practices", "category": "naturesaura:practices",
"advancement": "naturesaura:gold_leaf", "advancement": "naturesaura:gold_leaf",
"priority": true, "priority": true,
"turnin": "naturesaura:wood_stand", "turnin": "naturesaura:wood_stand",

View file

@ -1,7 +1,7 @@
{ {
"name": "The Natural Altar", "name": "The Natural Altar",
"icon": "naturesaura:nature_altar", "icon": "naturesaura:nature_altar",
"category": "using", "category": "naturesaura:using",
"advancement": "naturesaura:aura_bottle_overworld", "advancement": "naturesaura:aura_bottle_overworld",
"priority": true, "priority": true,
"turnin": "naturesaura:infused_materials", "turnin": "naturesaura:infused_materials",

View file

@ -1,7 +1,7 @@
{ {
"name": "Altar of Birthing", "name": "Altar of Birthing",
"icon": "naturesaura:animal_spawner", "icon": "naturesaura:animal_spawner",
"category": "using", "category": "naturesaura:using",
"advancement": "naturesaura:sky_ingot", "advancement": "naturesaura:sky_ingot",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Nature's Mend", "name": "Nature's Mend",
"icon": "minecraft:enchanted_book", "icon": "minecraft:enchanted_book",
"category": "using", "category": "naturesaura:using",
"advancement": "naturesaura:infused_tools", "advancement": "naturesaura:infused_tools",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Nature's Heal", "name": "Nature's Heal",
"icon": "minecraft:enchanted_book", "icon": "minecraft:enchanted_book",
"category": "using", "category": "naturesaura:using",
"advancement": "naturesaura:infused_tools", "advancement": "naturesaura:infused_tools",
"flag": "mod:enchantability", "flag": "mod:enchantability",
"pages": [ "pages": [

View file

@ -1,7 +1,7 @@
{ {
"name": "Armorer's Aid", "name": "Armorer's Aid",
"icon": "naturesaura:blast_furnace_booster", "icon": "naturesaura:blast_furnace_booster",
"category": "using", "category": "naturesaura:using",
"advancement": "naturesaura:offering", "advancement": "naturesaura:offering",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "World Eye", "name": "World Eye",
"icon": "naturesaura:chunk_loader", "icon": "naturesaura:chunk_loader",
"category": "using", "category": "naturesaura:using",
"advancement": "naturesaura:aura_bottle_end", "advancement": "naturesaura:aura_bottle_end",
"flag": "naturesaura:chunk_loader", "flag": "naturesaura:chunk_loader",
"pages": [ "pages": [

View file

@ -1,7 +1,7 @@
{ {
"name": "Transmutation Catalyst", "name": "Transmutation Catalyst",
"icon": "naturesaura:conversion_catalyst", "icon": "naturesaura:conversion_catalyst",
"category": "using", "category": "naturesaura:using",
"advancement": "naturesaura:sky_ingot", "advancement": "naturesaura:sky_ingot",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "The Crimson Altar", "name": "The Crimson Altar",
"icon": "naturesaura:nature_altar", "icon": "naturesaura:nature_altar",
"category": "using", "category": "naturesaura:using",
"advancement": "naturesaura:aura_bottle_nether", "advancement": "naturesaura:aura_bottle_nether",
"priority": true, "priority": true,
"turnin": "naturesaura:tainted_gold", "turnin": "naturesaura:tainted_gold",

View file

@ -1,7 +1,7 @@
{ {
"name": "Crumbling Catalyst", "name": "Crumbling Catalyst",
"icon": "naturesaura:crushing_catalyst", "icon": "naturesaura:crushing_catalyst",
"category": "using", "category": "naturesaura:using",
"advancement": "naturesaura:infused_materials", "advancement": "naturesaura:infused_materials",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Rails of the Worlds", "name": "Rails of the Worlds",
"icon": "naturesaura:dimension_rail_nether", "icon": "naturesaura:dimension_rail_nether",
"category": "using", "category": "naturesaura:using",
"advancement": "naturesaura:sky_ingot", "advancement": "naturesaura:sky_ingot",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Ender Crate", "name": "Ender Crate",
"icon": "naturesaura:ender_crate", "icon": "naturesaura:ender_crate",
"category": "using", "category": "naturesaura:using",
"advancement": "naturesaura:aura_bottle_end", "advancement": "naturesaura:aura_bottle_end",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Aura Field Creator", "name": "Aura Field Creator",
"icon": "naturesaura:field_creator", "icon": "naturesaura:field_creator",
"category": "using", "category": "naturesaura:using",
"advancement": "naturesaura:sky_ingot", "advancement": "naturesaura:sky_ingot",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Extraneous Firestarter", "name": "Extraneous Firestarter",
"icon": "naturesaura:furnace_heater", "icon": "naturesaura:furnace_heater",
"category": "using", "category": "naturesaura:using",
"advancement": "naturesaura:infused_materials", "advancement": "naturesaura:infused_materials",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Hopper Enhancement", "name": "Hopper Enhancement",
"icon": "naturesaura:hopper_upgrade", "icon": "naturesaura:hopper_upgrade",
"category": "using", "category": "naturesaura:using",
"advancement": "naturesaura:infused_materials", "advancement": "naturesaura:infused_materials",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Imperceptible Builder", "name": "Imperceptible Builder",
"icon": "naturesaura:placer", "icon": "naturesaura:placer",
"category": "using", "category": "naturesaura:using",
"advancement": "naturesaura:infused_materials", "advancement": "naturesaura:infused_materials",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Energetic Aura Forge", "name": "Energetic Aura Forge",
"icon": "naturesaura:rf_converter", "icon": "naturesaura:rf_converter",
"category": "using", "category": "naturesaura:using",
"advancement": "naturesaura:sky_ingot", "advancement": "naturesaura:sky_ingot",
"flag": "naturesaura:rf_converter", "flag": "naturesaura:rf_converter",
"pages": [ "pages": [

View file

@ -1,7 +1,7 @@
{ {
"name": "Winter's Calling", "name": "Winter's Calling",
"icon": "naturesaura:snow_creator", "icon": "naturesaura:snow_creator",
"category": "using", "category": "naturesaura:using",
"advancement": "naturesaura:sky_ingot", "advancement": "naturesaura:sky_ingot",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Lamp of Sanctuary", "name": "Lamp of Sanctuary",
"icon": "naturesaura:spawn_lamp", "icon": "naturesaura:spawn_lamp",
"category": "using", "category": "naturesaura:using",
"advancement": "naturesaura:aura_bottle_end", "advancement": "naturesaura:aura_bottle_end",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Everlasting Spring", "name": "Everlasting Spring",
"icon": "naturesaura:spring", "icon": "naturesaura:spring",
"category": "using", "category": "naturesaura:using",
"advancement": "naturesaura:offering", "advancement": "naturesaura:offering",
"pages": [ "pages": [
{ {

View file

@ -1,7 +1,7 @@
{ {
"name": "Shifting Sundial", "name": "Shifting Sundial",
"icon": "naturesaura:time_changer", "icon": "naturesaura:time_changer",
"category": "using", "category": "naturesaura:using",
"advancement": "naturesaura:aura_bottle_end", "advancement": "naturesaura:aura_bottle_end",
"pages": [ "pages": [
{ {

Some files were not shown because too many files have changed in this diff Show more