mirror of
https://github.com/Ellpeck/NaturesAura.git
synced 2024-12-22 14:59:22 +01:00
IT RUNS
This commit is contained in:
parent
65cce7fae5
commit
8fd1b0333e
315 changed files with 435 additions and 452 deletions
|
@ -108,9 +108,8 @@ dependencies {
|
|||
/* 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")*/
|
||||
|
||||
// TODO Patchouli
|
||||
/* compileOnly fg.deobf("vazkii.patchouli:Patchouli:1.16.4-50:api")
|
||||
runtimeOnly fg.deobf("vazkii.patchouli:Patchouli:1.16.4-50")*/
|
||||
compileOnly fg.deobf("vazkii.patchouli:Patchouli:1.18.1-61:api")
|
||||
runtimeOnly fg.deobf("vazkii.patchouli:Patchouli:1.18.1-61")
|
||||
|
||||
// TODO Curios
|
||||
/* runtimeOnly fg.deobf("top.theillusivec4.curios:curios-forge:1.16.5-4.0.5.0")
|
||||
|
|
|
@ -151,7 +151,7 @@ public class BlockDimensionRail extends BaseRailBlock implements IModItem, ICust
|
|||
|
||||
@Override
|
||||
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> builder) {
|
||||
builder.add(SHAPE);
|
||||
builder.add(SHAPE, WATERLOGGED);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -10,7 +10,6 @@ import net.minecraft.world.item.context.BlockPlaceContext;
|
|||
import net.minecraft.world.level.BlockGetter;
|
||||
import net.minecraft.world.level.Level;
|
||||
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.StateDefinition;
|
||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
|
||||
|
@ -81,7 +80,7 @@ public class BlockFurnaceHeater extends BlockContainerImpl implements ICustomBlo
|
|||
|
||||
@Override
|
||||
public VoxelShape getShape(BlockState state, BlockGetter levelIn, BlockPos pos, CollisionContext context) {
|
||||
return SHAPES[state.getValue(FACING).ordinal()];
|
||||
return SHAPES[state.getValue(FACING).get3DDataValue()];
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -50,16 +50,16 @@ public class BlockGoldPowder extends BlockImpl implements IColorProvidingBlock,
|
|||
var w = state.getValue(WEST) != RedstoneSide.NONE;
|
||||
|
||||
if (n || s && !n && !e && !w) {
|
||||
i |= 1 << Direction.NORTH.ordinal();
|
||||
i |= 1 << Direction.NORTH.get2DDataValue();
|
||||
}
|
||||
if (e || w && !n && !e && !s) {
|
||||
i |= 1 << Direction.EAST.ordinal();
|
||||
i |= 1 << Direction.EAST.get2DDataValue();
|
||||
}
|
||||
if (s || n && !e && !s && !w) {
|
||||
i |= 1 << Direction.SOUTH.ordinal();
|
||||
i |= 1 << Direction.SOUTH.get2DDataValue();
|
||||
}
|
||||
if (w || e && !n && !s && !w) {
|
||||
i |= 1 << Direction.WEST.ordinal();
|
||||
i |= 1 << Direction.WEST.get2DDataValue();
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@ import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
|
|||
import net.minecraftforge.api.distmarker.Dist;
|
||||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
|
||||
// TODO get the 1-pixel border around the ender overlay back
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
public class RenderEnderCrate implements BlockEntityRenderer<BlockEntityEnderCrate> {
|
||||
|
||||
|
|
|
@ -1,36 +1,57 @@
|
|||
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.api.multiblock.Matcher;
|
||||
import de.ellpeck.naturesaura.compat.ICompat;
|
||||
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.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.world.item.crafting.Ingredient;
|
||||
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.eventbus.api.SubscribeEvent;
|
||||
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 {
|
||||
|
||||
private static final ResourceLocation BOOK = new ResourceLocation(NaturesAura.MOD_ID, "book");
|
||||
/*
|
||||
private static final Map<ResourceLocation, IMultiblock> MULTIBLOCKS = new HashMap<>();
|
||||
*/
|
||||
|
||||
public static void addPatchouliMultiblock(ResourceLocation name, String[][] pattern, Object... rawMatchers) {
|
||||
/* for (int i = 1; i < rawMatchers.length; i += 2) {
|
||||
if (rawMatchers[i] instanceof Matcher) {
|
||||
Matcher matcher = (Matcher) rawMatchers[i];
|
||||
Matcher.ICheck check = matcher.getCheck();
|
||||
for (var i = 1; i < rawMatchers.length; i += 2) {
|
||||
if (rawMatchers[i] instanceof Matcher matcher) {
|
||||
var check = matcher.check();
|
||||
if (check == null)
|
||||
rawMatchers[i] = PatchouliAPI.get().anyMatcher();
|
||||
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));
|
||||
}
|
||||
}
|
||||
MULTIBLOCKS.put(name, PatchouliAPI.get().makeMultiblock(pattern, rawMatchers));*/
|
||||
MULTIBLOCKS.put(name, PatchouliAPI.get().makeMultiblock(pattern, rawMatchers));
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
|
@ -41,20 +62,20 @@ public class PatchouliCompat implements ICompat {
|
|||
return (T) manager.byKey(pre).orElse(null);
|
||||
}
|
||||
|
||||
/* public static IVariable ingredientVariable(Ingredient ingredient) {
|
||||
return IVariable.wrapList(Arrays.stream(ingredient.getMatchingStacks())
|
||||
public static IVariable ingredientVariable(Ingredient ingredient) {
|
||||
return IVariable.wrapList(Arrays.stream(ingredient.getItems())
|
||||
.map(IVariable::from).collect(Collectors.toList()));
|
||||
}*/
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setup(FMLCommonSetupEvent event) {
|
||||
/* event.enqueueWork(() -> {
|
||||
for (Map.Entry<ResourceLocation, IMultiblock> entry : MULTIBLOCKS.entrySet())
|
||||
event.enqueueWork(() -> {
|
||||
for (var entry : MULTIBLOCKS.entrySet())
|
||||
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 + ":chunk_loader", ModConfig.instance.chunkLoader.get());
|
||||
});*/
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -67,66 +88,66 @@ public class PatchouliCompat implements ICompat {
|
|||
|
||||
}
|
||||
|
||||
/* @SubscribeEvent
|
||||
@SubscribeEvent
|
||||
@OnlyIn(Dist.CLIENT)
|
||||
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;
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
var now = LocalDateTime.now();
|
||||
if (now.getMonth() == Month.MAY && now.getDayOfMonth() == 21) {
|
||||
int x = event.gui.width / 2 + 272 / 2 - 16;
|
||||
int y = event.gui.height / 2 - 180 / 2 - 26;
|
||||
var x = gui.width / 2 + 272 / 2 - 16;
|
||||
var y = gui.height / 2 - 180 / 2 - 26;
|
||||
|
||||
RenderHelper.disableStandardItemLighting();
|
||||
GlStateManager.color4f(1, 1, 1, 1);
|
||||
event.gui.getMinecraft().getTextureManager().bindTexture(ClientEvents.BOOK_GUI);
|
||||
AbstractGui.blit(event.matrixStack, x, y, 469, 0, 43, 42, 512, 256);
|
||||
RenderSystem.setShader(GameRenderer::getPositionTexShader);
|
||||
RenderSystem.setShaderTexture(0, ClientEvents.BOOK_GUI);
|
||||
Screen.blit(event.getPoseStack(), x, y, 469, 0, 43, 42, 512, 256);
|
||||
|
||||
if (event.mouseX >= x && event.mouseY >= y && event.mouseX < x + 43 && event.mouseY < y + 42)
|
||||
GuiUtils.drawHoveringText(event.matrixStack,
|
||||
Collections.singletonList(new StringTextComponent("It's the author Ellpeck's birthday!").setStyle(Style.EMPTY.setFormatting(TextFormatting.GOLD))),
|
||||
event.mouseX, event.mouseY, event.gui.width, event.gui.height, 0, event.gui.getMinecraft().fontRenderer);
|
||||
if (event.getMouseX() >= x && event.getMouseY() >= y && event.getMouseX() < x + 43 && event.getMouseY() < y + 42)
|
||||
gui.renderComponentTooltip(event.getPoseStack(),
|
||||
Collections.singletonList(new TextComponent("It's the author Ellpeck's birthday!").setStyle(Style.EMPTY.applyFormat(ChatFormatting.GOLD))),
|
||||
event.getMouseX(), event.getMouseY(), gui.getMinecraft().font);
|
||||
} else if (now.getMonth() == Month.JUNE) {
|
||||
int x = event.gui.width / 2 + 272 / 2;
|
||||
int y = event.gui.height / 2 - 180 / 2 + 16;
|
||||
var x = gui.width / 2 + 272 / 2;
|
||||
var y = gui.height / 2 - 180 / 2 + 16;
|
||||
|
||||
RenderHelper.disableStandardItemLighting();
|
||||
GlStateManager.color4f(1, 1, 1, 1);
|
||||
event.gui.getMinecraft().getTextureManager().bindTexture(ClientEvents.BOOK_GUI);
|
||||
AbstractGui.blit(event.matrixStack, x, y, 424, 0, 45, 26, 512, 256);
|
||||
RenderSystem.setShader(GameRenderer::getPositionTexShader);
|
||||
RenderSystem.setShaderTexture(0, ClientEvents.BOOK_GUI);
|
||||
Screen.blit(event.getPoseStack(), x, y, 424, 0, 45, 26, 512, 256);
|
||||
|
||||
if (event.mouseX >= x && event.mouseY >= y && event.mouseX < x + 45 && event.mouseY < y + 26)
|
||||
GuiUtils.drawHoveringText(event.matrixStack,
|
||||
Collections.singletonList(new StringTextComponent("§6Happy §4P§6r§ei§2d§9e§5!")),
|
||||
event.mouseX, event.mouseY, event.gui.width, event.gui.height, 0, event.gui.getMinecraft().fontRenderer);
|
||||
if (event.getMouseX() >= x && event.getMouseY() >= y && event.getMouseX() < x + 45 && event.getMouseY() < y + 26)
|
||||
gui.renderComponentTooltip(event.getPoseStack(),
|
||||
Collections.singletonList(new TextComponent("§6Happy §4P§6r§ei§2d§9e§5!")),
|
||||
event.getMouseX(), event.getMouseY(), gui.getMinecraft().font);
|
||||
}
|
||||
|
||||
String name = event.gui.getMinecraft().player.getName().getString();
|
||||
FancyInfo info = SupporterFancyHandler.FANCY_INFOS.get(name);
|
||||
var name = gui.getMinecraft().player.getName().getString();
|
||||
var info = SupporterFancyHandler.FANCY_INFOS.get(name);
|
||||
if (info != null) {
|
||||
int x = event.gui.width / 2 - 272 / 2 + 20;
|
||||
int y = event.gui.height / 2 + 180 / 2;
|
||||
var x = gui.width / 2 - 272 / 2 + 20;
|
||||
var y = gui.height / 2 + 180 / 2;
|
||||
|
||||
RenderHelper.disableStandardItemLighting();
|
||||
RenderSystem.color4f(1, 1, 1, 1);
|
||||
event.gui.getMinecraft().getTextureManager().bindTexture(ClientEvents.BOOK_GUI);
|
||||
RenderSystem.setShader(GameRenderer::getPositionTexShader);
|
||||
RenderSystem.setShaderTexture(0, ClientEvents.BOOK_GUI);
|
||||
|
||||
AbstractGui.blit(event.matrixStack, x, y, 496, 44, 16, 18, 512, 256);
|
||||
if (info.tier == 1) {
|
||||
AbstractGui.blit(event.matrixStack, x, y, 496 - 16, 44, 16, 18, 512, 256);
|
||||
Screen.blit(event.getPoseStack(), x, y, 496, 44, 16, 18, 512, 256);
|
||||
if (info.tier() == 1) {
|
||||
Screen.blit(event.getPoseStack(), x, y, 496 - 16, 44, 16, 18, 512, 256);
|
||||
} else {
|
||||
float r = ((info.color >> 16) & 255) / 255F;
|
||||
float g = ((info.color >> 8) & 255) / 255F;
|
||||
float b = (info.color & 255) / 255F;
|
||||
RenderSystem.color3f(r, g, b);
|
||||
AbstractGui.blit(event.matrixStack, x, y, 496 - 32, 44, 16, 18, 512, 256);
|
||||
var r = ((info.color() >> 16) & 255) / 255F;
|
||||
var g = ((info.color() >> 8) & 255) / 255F;
|
||||
var b = (info.color() & 255) / 255F;
|
||||
// TODO apply leaf color?
|
||||
//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)
|
||||
GuiUtils.drawHoveringText(event.matrixStack,
|
||||
Collections.singletonList(new StringTextComponent("Thanks for your support, " + name + "!").setStyle(Style.EMPTY.setFormatting(TextFormatting.YELLOW))),
|
||||
event.mouseX, event.mouseY, event.gui.width, event.gui.height, 0, event.gui.getMinecraft().fontRenderer);
|
||||
if (event.getMouseX() >= x && event.getMouseY() >= y && event.getMouseX() < x + 16 && event.getMouseY() < y + 18)
|
||||
gui.renderComponentTooltip(event.getPoseStack(),
|
||||
Collections.singletonList(new TextComponent("Thanks for your support, " + name + "!").setStyle(Style.EMPTY.applyFormat(ChatFormatting.YELLOW))),
|
||||
event.getMouseX(), event.getMouseY(), gui.getMinecraft().font);
|
||||
|
||||
}
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
/*
|
||||
package de.ellpeck.naturesaura.compat.patchouli;
|
||||
|
||||
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.IVariable;
|
||||
import vazkii.patchouli.api.IVariableProvider;
|
||||
|
@ -20,26 +19,14 @@ public class ProcessorAltar implements IComponentProcessor {
|
|||
public IVariable process(String key) {
|
||||
if (this.recipe == null)
|
||||
return null;
|
||||
switch (key) {
|
||||
case "input":
|
||||
return PatchouliCompat.ingredientVariable(this.recipe.input);
|
||||
case "output":
|
||||
return IVariable.from(this.recipe.output);
|
||||
case "catalyst":
|
||||
if (this.recipe.catalyst != Ingredient.EMPTY)
|
||||
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;
|
||||
}
|
||||
return switch (key) {
|
||||
case "input" -> PatchouliCompat.ingredientVariable(this.recipe.input);
|
||||
case "output" -> IVariable.from(this.recipe.output);
|
||||
case "catalyst" -> this.recipe.catalyst != Ingredient.EMPTY ? PatchouliCompat.ingredientVariable(this.recipe.catalyst) : null;
|
||||
case "type" -> this.recipe.requiredType != null ? IVariable.from(this.recipe.getDimensionBottle()) : null;
|
||||
case "name" -> IVariable.wrap(this.recipe.output.getDisplayName().getString());
|
||||
default -> null;
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -47,4 +34,3 @@ public class ProcessorAltar implements IComponentProcessor {
|
|||
return group.isEmpty() || group.equals(this.recipe.catalyst == Ingredient.EMPTY ? "altar" : "catalyst");
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
/*
|
||||
package de.ellpeck.naturesaura.compat.patchouli;
|
||||
|
||||
import de.ellpeck.naturesaura.recipes.AnimalSpawnerRecipe;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.SpawnEggItem;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraftforge.common.ForgeSpawnEggItem;
|
||||
import vazkii.patchouli.api.IComponentProcessor;
|
||||
import vazkii.patchouli.api.IVariable;
|
||||
import vazkii.patchouli.api.IVariableProvider;
|
||||
|
@ -22,23 +21,15 @@ public class ProcessorAnimalSpawner implements IComponentProcessor {
|
|||
if (this.recipe == null)
|
||||
return null;
|
||||
if (key.startsWith("input")) {
|
||||
int id = Integer.parseInt(key.substring(5)) - 1;
|
||||
if (this.recipe.ingredients.length > id)
|
||||
return PatchouliCompat.ingredientVariable(this.recipe.ingredients[id]);
|
||||
else
|
||||
return null;
|
||||
var id = Integer.parseInt(key.substring(5)) - 1;
|
||||
return this.recipe.ingredients.length > id ? PatchouliCompat.ingredientVariable(this.recipe.ingredients[id]) : null;
|
||||
} else {
|
||||
switch (key) {
|
||||
case "name":
|
||||
return IVariable.wrap(this.recipe.entity.getName().getString());
|
||||
case "entity":
|
||||
return IVariable.wrap(this.recipe.entity.getRegistryName().toString());
|
||||
case "egg":
|
||||
ItemStack egg = new ItemStack(SpawnEggItem.getEgg(this.recipe.entity));
|
||||
return IVariable.from(egg);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
return switch (key) {
|
||||
case "name" -> IVariable.wrap(this.recipe.entity.getDescription().getString());
|
||||
case "entity" -> IVariable.wrap(this.recipe.entity.getRegistryName().toString());
|
||||
case "egg" -> IVariable.from(new ItemStack(ForgeSpawnEggItem.fromEntityType(this.recipe.entity)));
|
||||
default -> null;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -47,4 +38,3 @@ public class ProcessorAnimalSpawner implements IComponentProcessor {
|
|||
return !"seekrit".equals(group);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
/*
|
||||
package de.ellpeck.naturesaura.compat.patchouli;
|
||||
|
||||
import de.ellpeck.naturesaura.recipes.OfferingRecipe;
|
||||
|
@ -19,18 +18,12 @@ public class ProcessorOffering implements IComponentProcessor {
|
|||
public IVariable process(String key) {
|
||||
if (this.recipe == null)
|
||||
return null;
|
||||
switch (key) {
|
||||
case "input":
|
||||
return PatchouliCompat.ingredientVariable(this.recipe.input);
|
||||
case "output":
|
||||
return IVariable.from(this.recipe.output);
|
||||
case "start":
|
||||
return PatchouliCompat.ingredientVariable(this.recipe.startItem);
|
||||
case "name":
|
||||
return IVariable.wrap(this.recipe.output.getDisplayName().getString());
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
return switch (key) {
|
||||
case "input" -> PatchouliCompat.ingredientVariable(this.recipe.input);
|
||||
case "output" -> IVariable.from(this.recipe.output);
|
||||
case "start" -> PatchouliCompat.ingredientVariable(this.recipe.startItem);
|
||||
case "name" -> IVariable.wrap(this.recipe.output.getDisplayName().getString());
|
||||
default -> null;
|
||||
};
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
/*
|
||||
package de.ellpeck.naturesaura.compat.patchouli;
|
||||
|
||||
import de.ellpeck.naturesaura.recipes.TreeRitualRecipe;
|
||||
|
@ -20,23 +19,15 @@ public class ProcessorTreeRitual implements IComponentProcessor {
|
|||
if (this.recipe == null)
|
||||
return null;
|
||||
if (key.startsWith("input")) {
|
||||
int id = Integer.parseInt(key.substring(5)) - 1;
|
||||
if (this.recipe.ingredients.length > id)
|
||||
return PatchouliCompat.ingredientVariable(this.recipe.ingredients[id]);
|
||||
else
|
||||
return null;
|
||||
var id = Integer.parseInt(key.substring(5)) - 1;
|
||||
return this.recipe.ingredients.length > id ? PatchouliCompat.ingredientVariable(this.recipe.ingredients[id]) : null;
|
||||
} else {
|
||||
switch (key) {
|
||||
case "output":
|
||||
return IVariable.from(this.recipe.result);
|
||||
case "sapling":
|
||||
return PatchouliCompat.ingredientVariable(this.recipe.saplingType);
|
||||
case "name":
|
||||
return IVariable.wrap(this.recipe.result.getDisplayName().getString());
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
return switch (key) {
|
||||
case "output" -> IVariable.from(this.recipe.result);
|
||||
case "sapling" -> PatchouliCompat.ingredientVariable(this.recipe.saplingType);
|
||||
case "name" -> IVariable.wrap(this.recipe.result.getDisplayName().getString());
|
||||
default -> null;
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
|
|
@ -9,13 +9,15 @@ import net.minecraft.tags.BlockTags;
|
|||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.Blocks;
|
||||
import net.minecraftforge.common.Tags;
|
||||
import net.minecraftforge.common.data.ExistingFileHelper;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
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 BlockTagProvider(DataGenerator generatorIn) {
|
||||
super(generatorIn);
|
||||
public BlockTagProvider(DataGenerator gen, @Nullable ExistingFileHelper existingFileHelper) {
|
||||
super(gen, NaturesAura.MOD_ID, existingFileHelper);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
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.fml.common.Mod;
|
||||
import net.minecraftforge.forge.event.lifecycle.GatherDataEvent;
|
||||
|
@ -13,7 +11,7 @@ public final class ModData {
|
|||
public static void gatherData(GatherDataEvent event) {
|
||||
var generator = event.getGenerator();
|
||||
var ex = event.getExistingFileHelper();
|
||||
var blockTags = new BlockTagProvider(generator);
|
||||
var blockTags = new BlockTagProvider(generator, ex);
|
||||
generator.addProvider(blockTags);
|
||||
generator.addProvider(new ItemTagProvider(generator, blockTags, ex));
|
||||
generator.addProvider(new BlockLootProvider(generator));
|
||||
|
|
|
@ -26,6 +26,7 @@ import net.minecraftforge.api.distmarker.Dist;
|
|||
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||
import net.minecraftforge.network.NetworkHooks;
|
||||
|
||||
// TODO these behave very weirdly in-world
|
||||
public class EntityEffectInhibitor extends Entity implements IVisualizable {
|
||||
|
||||
private static final EntityDataAccessor<String> INHIBITED_EFFECT = SynchedEntityData.defineId(EntityEffectInhibitor.class, EntityDataSerializers.STRING);
|
||||
|
|
|
@ -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.FeaturePlaceContext;
|
||||
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 java.util.Random;
|
||||
|
||||
import static net.minecraft.core.Direction.Axis;
|
||||
|
||||
public class LevelGenAncientTree extends Feature<TreeConfiguration> {
|
||||
public class LevelGenAncientTree extends Feature<NoneFeatureConfiguration> {
|
||||
|
||||
public LevelGenAncientTree() {
|
||||
super(Codec.unit(ModFeatures.Configured.ANCIENT_TREE.config()));
|
||||
super(Codec.unit(FeatureConfiguration.NONE));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean place(FeaturePlaceContext<TreeConfiguration> ctx) {
|
||||
public boolean place(FeaturePlaceContext<NoneFeatureConfiguration> ctx) {
|
||||
var level = ctx.level();
|
||||
var pos = ctx.origin();
|
||||
var rand = ctx.random();
|
||||
|
|
|
@ -23,6 +23,7 @@ import java.util.function.Supplier;
|
|||
@OnlyIn(Dist.CLIENT)
|
||||
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() {
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Ancient Trees",
|
||||
"icon": "naturesaura:ancient_leaves",
|
||||
"category": "creating",
|
||||
"category": "naturesaura:creating",
|
||||
"advancement": "naturesaura:wood_stand",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Disentangler of Mortals",
|
||||
"icon": "naturesaura:animal_generator",
|
||||
"category": "creating",
|
||||
"category": "naturesaura:creating",
|
||||
"advancement": "naturesaura:tainted_gold",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Reaper of Ender Heights",
|
||||
"icon": "naturesaura:chorus_generator",
|
||||
"category": "creating",
|
||||
"category": "naturesaura:creating",
|
||||
"advancement": "naturesaura:aura_bottle_end",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Rose of Oblivion",
|
||||
"icon": "naturesaura:end_flower",
|
||||
"category": "creating",
|
||||
"category": "naturesaura:creating",
|
||||
"advancement": "naturesaura:end_flower",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Firecracker Gaze",
|
||||
"icon": "naturesaura:firework_generator",
|
||||
"category": "creating",
|
||||
"category": "naturesaura:creating",
|
||||
"advancement": "naturesaura:offering",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Herbivorous Absorber",
|
||||
"icon": "naturesaura:flower_generator",
|
||||
"category": "creating",
|
||||
"category": "naturesaura:creating",
|
||||
"advancement": "naturesaura:infused_materials",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Creational Catalyst",
|
||||
"icon": "naturesaura:generator_limit_remover",
|
||||
"category": "creating",
|
||||
"category": "naturesaura:creating",
|
||||
"advancement": "naturesaura:offering",
|
||||
"priority": true,
|
||||
"pages": [
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Swamp Homi",
|
||||
"icon": "naturesaura:moss_generator",
|
||||
"category": "creating",
|
||||
"category": "naturesaura:creating",
|
||||
"advancement": "naturesaura:infused_materials",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Canopy Diminisher",
|
||||
"icon": "naturesaura:oak_generator",
|
||||
"category": "creating",
|
||||
"category": "naturesaura:creating",
|
||||
"advancement": "naturesaura:infused_materials",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "On Creating Aura",
|
||||
"icon": "naturesaura:gold_leaf",
|
||||
"category": "creating",
|
||||
"category": "naturesaura:creating",
|
||||
"advancement": "naturesaura:wood_stand",
|
||||
"priority": true,
|
||||
"pages": [
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Ritual of the Brewer",
|
||||
"icon": "naturesaura:potion_generator",
|
||||
"category": "creating",
|
||||
"category": "naturesaura:creating",
|
||||
"advancement": "naturesaura:sky_ingot",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Shooting Mark",
|
||||
"icon": "naturesaura:projectile_generator",
|
||||
"category": "creating",
|
||||
"category": "naturesaura:creating",
|
||||
"advancement": "naturesaura:tainted_gold",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Offshoot Observer",
|
||||
"icon": "naturesaura:slime_split_generator",
|
||||
"category": "creating",
|
||||
"category": "naturesaura:creating",
|
||||
"advancement": "naturesaura:tainted_gold",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Corporeal Eye",
|
||||
"icon": "naturesaura:animal_container",
|
||||
"category": "devices",
|
||||
"category": "naturesaura:devices",
|
||||
"advancement": "naturesaura:eye",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Aura Detector",
|
||||
"icon": "naturesaura:aura_detector",
|
||||
"category": "devices",
|
||||
"category": "naturesaura:devices",
|
||||
"advancement": "naturesaura:infused_materials",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Redstone Aura Vaporizer",
|
||||
"icon": "naturesaura:aura_timer",
|
||||
"category": "devices",
|
||||
"category": "naturesaura:devices",
|
||||
"advancement": "naturesaura:infused_materials",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Automatic Constructor",
|
||||
"icon": "naturesaura:auto_crafter",
|
||||
"category": "devices",
|
||||
"category": "naturesaura:devices",
|
||||
"advancement": "naturesaura:sky_ingot",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Adept Hopper",
|
||||
"icon": "naturesaura:grated_chute",
|
||||
"category": "devices",
|
||||
"category": "naturesaura:devices",
|
||||
"advancement": "naturesaura:infused_materials",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Item Distributor",
|
||||
"icon": "naturesaura:item_distributor",
|
||||
"category": "devices",
|
||||
"category": "naturesaura:devices",
|
||||
"advancement": "naturesaura:infused_materials",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Aura Attraction Cart",
|
||||
"icon": "naturesaura:mover_cart",
|
||||
"category": "devices",
|
||||
"category": "naturesaura:devices",
|
||||
"advancement": "naturesaura:aura_bottle_end",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Item Grounder",
|
||||
"icon": "naturesaura:pickup_stopper",
|
||||
"category": "devices",
|
||||
"category": "naturesaura:devices",
|
||||
"advancement": "naturesaura:infused_materials",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Powder Manipulator",
|
||||
"icon": "naturesaura:powder_placer",
|
||||
"category": "devices",
|
||||
"category": "naturesaura:devices",
|
||||
"advancement": "naturesaura:positive_imbalance",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Inexplicable Anger",
|
||||
"icon": "minecraft:fire_charge",
|
||||
"category": "effects",
|
||||
"category": "naturesaura:effects",
|
||||
"advancement": "naturesaura:negative_imbalance",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Increase of Fertility",
|
||||
"icon": "minecraft:egg",
|
||||
"category": "effects",
|
||||
"category": "naturesaura:effects",
|
||||
"advancement": "naturesaura:positive_imbalance",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Breathlessness",
|
||||
"icon": "minecraft:white_wool",
|
||||
"category": "effects",
|
||||
"category": "naturesaura:effects",
|
||||
"advancement": "naturesaura:negative_imbalance",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Natural Storage",
|
||||
"icon": "naturesaura:aura_cache",
|
||||
"category": "effects",
|
||||
"category": "naturesaura:effects",
|
||||
"advancement": "naturesaura:positive_imbalance",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Natural Decay",
|
||||
"icon": "naturesaura:decayed_leaves",
|
||||
"category": "effects",
|
||||
"category": "naturesaura:effects",
|
||||
"advancement": "naturesaura:negative_imbalance",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Effect Powder",
|
||||
"icon": "naturesaura:effect_powder{effect:'naturesaura:plant_boost'}",
|
||||
"category": "effects",
|
||||
"category": "naturesaura:effects",
|
||||
"advancement": "naturesaura:positive_imbalance",
|
||||
"priority": true,
|
||||
"pages": [
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Unstable Outbreak",
|
||||
"icon": "minecraft:tnt",
|
||||
"category": "effects",
|
||||
"category": "naturesaura:effects",
|
||||
"advancement": "naturesaura:negative_imbalance",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Crimson Decay",
|
||||
"icon": "minecraft:soul_sand",
|
||||
"category": "effects",
|
||||
"category": "naturesaura:effects",
|
||||
"advancement": "naturesaura:negative_imbalance",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Crimson Overgrowth",
|
||||
"icon": "naturesaura:nether_grass",
|
||||
"category": "effects",
|
||||
"category": "naturesaura:effects",
|
||||
"advancement": "naturesaura:positive_imbalance",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Mineral Amassing",
|
||||
"icon": "minecraft:diamond_ore",
|
||||
"category": "effects",
|
||||
"category": "naturesaura:effects",
|
||||
"advancement": "naturesaura:positive_imbalance",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Vegetational Increase",
|
||||
"icon": "minecraft:wheat_seeds",
|
||||
"category": "effects",
|
||||
"category": "naturesaura:effects",
|
||||
"advancement": "naturesaura:positive_imbalance",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Aura, conceptually",
|
||||
"icon": "naturesaura:gold_leaf",
|
||||
"category": "intro",
|
||||
"category": "naturesaura:intro",
|
||||
"pages": [
|
||||
{
|
||||
"type": "text",
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Baubles",
|
||||
"icon": "minecraft:totem_of_undying",
|
||||
"category": "intro",
|
||||
"category": "naturesaura:intro",
|
||||
"read_by_default": true,
|
||||
"flag": "mod:baubles",
|
||||
"pages": [
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Magical Botany",
|
||||
"icon": "minecraft:oak_sapling",
|
||||
"category": "intro",
|
||||
"category": "naturesaura:intro",
|
||||
"pages": [
|
||||
{
|
||||
"type": "text",
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "This Book",
|
||||
"icon": "patchouli:guide_book{'patchouli:book':'naturesaura:book'}",
|
||||
"category": "intro",
|
||||
"category": "naturesaura:intro",
|
||||
"priority": true,
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Aura Cache",
|
||||
"icon": "naturesaura:aura_cache",
|
||||
"category": "items",
|
||||
"category": "naturesaura:items",
|
||||
"advancement": "naturesaura:infused_materials",
|
||||
"priority": true,
|
||||
"pages": [
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Aura Trove",
|
||||
"icon": "naturesaura:aura_trove",
|
||||
"category": "items",
|
||||
"category": "naturesaura:items",
|
||||
"advancement": "naturesaura:sky_ingot",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Eir's Token",
|
||||
"icon": "naturesaura:break_prevention",
|
||||
"category": "items",
|
||||
"category": "naturesaura:items",
|
||||
"advancement": "naturesaura:sky_ingot",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Staff of Shadows",
|
||||
"icon": "naturesaura:cave_finder",
|
||||
"category": "items",
|
||||
"category": "naturesaura:items",
|
||||
"advancement": "naturesaura:offering",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Bucket of Infinite Color",
|
||||
"icon": "naturesaura:color_changer",
|
||||
"category": "items",
|
||||
"category": "naturesaura:items",
|
||||
"advancement": "naturesaura:infused_materials",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Crimson Meal",
|
||||
"icon": "naturesaura:crimson_meal",
|
||||
"category": "items",
|
||||
"category": "naturesaura:items",
|
||||
"advancement": "naturesaura:aura_bottle_nether",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Ring of Last Chance",
|
||||
"icon": "naturesaura:death_ring",
|
||||
"category": "items",
|
||||
"category": "naturesaura:items",
|
||||
"advancement": "naturesaura:sky_ingot",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Eye of the Shulker",
|
||||
"icon": "naturesaura:end_city_finder",
|
||||
"category": "items",
|
||||
"category": "naturesaura:items",
|
||||
"advancement": "naturesaura:aura_bottle_end",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Ender Ocular",
|
||||
"icon": "naturesaura:ender_access",
|
||||
"category": "items",
|
||||
"category": "naturesaura:items",
|
||||
"advancement": "naturesaura:aura_bottle_end",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Environmental Eye",
|
||||
"icon": "naturesaura:eye",
|
||||
"category": "items",
|
||||
"category": "naturesaura:items",
|
||||
"advancement": "naturesaura:wood_stand",
|
||||
"turnin": "naturesaura:eye",
|
||||
"priority": true,
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Environmental Ocular",
|
||||
"icon": "naturesaura:eye_improved",
|
||||
"category": "items",
|
||||
"category": "naturesaura:items",
|
||||
"advancement": "naturesaura:end_flower",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Eye of the Blaze",
|
||||
"icon": "naturesaura:fortress_finder",
|
||||
"category": "items",
|
||||
"category": "naturesaura:items",
|
||||
"advancement": "naturesaura:aura_bottle_nether",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Botanist's Armor",
|
||||
"icon": "naturesaura:infused_iron_chest",
|
||||
"category": "items",
|
||||
"category": "naturesaura:items",
|
||||
"advancement": "naturesaura:infused_materials",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Botanist's Tools",
|
||||
"icon": "naturesaura:infused_iron_pickaxe",
|
||||
"category": "items",
|
||||
"category": "naturesaura:items",
|
||||
"advancement": "naturesaura:infused_materials",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Staff of Baldur",
|
||||
"icon": "naturesaura:light_staff",
|
||||
"category": "items",
|
||||
"category": "naturesaura:items",
|
||||
"advancement": "naturesaura:sky_ingot",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Staff of Riches",
|
||||
"icon": "naturesaura:loot_finder",
|
||||
"category": "items",
|
||||
"category": "naturesaura:items",
|
||||
"advancement": "naturesaura:offering",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Staff of Ancient Knowledge",
|
||||
"icon": "naturesaura:netherite_finder",
|
||||
"category": "items",
|
||||
"category": "naturesaura:items",
|
||||
"advancement": "naturesaura:offering",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Eye of the Pillager",
|
||||
"icon": "naturesaura:outpost_finder",
|
||||
"category": "items",
|
||||
"category": "naturesaura:items",
|
||||
"advancement": "naturesaura:aura_bottle_overworld",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Token of Undying Friendship",
|
||||
"icon": "naturesaura:pet_reviver",
|
||||
"category": "items",
|
||||
"category": "naturesaura:items",
|
||||
"advancement": "naturesaura:sky_ingot",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Mystical Magnifier",
|
||||
"icon": "naturesaura:range_visualizer",
|
||||
"category": "items",
|
||||
"category": "naturesaura:items",
|
||||
"advancement": "naturesaura:infused_materials",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Amulet of Wrath",
|
||||
"icon": "naturesaura:shockwave_creator",
|
||||
"category": "items",
|
||||
"category": "naturesaura:items",
|
||||
"advancement": "naturesaura:tainted_gold",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Skyseeker's Armor",
|
||||
"icon": "naturesaura:sky_chest",
|
||||
"category": "items",
|
||||
"category": "naturesaura:items",
|
||||
"advancement": "naturesaura:sky_ingot",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Skyseeker's Tools",
|
||||
"icon": "naturesaura:sky_pickaxe",
|
||||
"category": "items",
|
||||
"category": "naturesaura:items",
|
||||
"advancement": "naturesaura:sky_ingot",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Aura Bottling",
|
||||
"icon": "naturesaura:aura_bottle{stored_type:'naturesaura:overworld'}",
|
||||
"category": "practices",
|
||||
"category": "naturesaura:practices",
|
||||
"advancement": "naturesaura:wood_stand",
|
||||
"turnin": "naturesaura:aura_bottle_overworld",
|
||||
"pages": [
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Aura Plants",
|
||||
"icon": "naturesaura:aura_bloom",
|
||||
"category": "practices",
|
||||
"category": "naturesaura:practices",
|
||||
"pages": [
|
||||
{
|
||||
"type": "text",
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Brilliant Trees",
|
||||
"icon": "naturesaura:gold_leaf",
|
||||
"category": "practices",
|
||||
"category": "naturesaura:practices",
|
||||
"priority": true,
|
||||
"turnin": "naturesaura:gold_leaf",
|
||||
"pages": [
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Offering to the Gods",
|
||||
"icon": "naturesaura:offering_table",
|
||||
"category": "practices",
|
||||
"category": "naturesaura:practices",
|
||||
"advancement": "naturesaura:tainted_gold",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Ritual of the Forest",
|
||||
"icon": "naturesaura:wood_stand",
|
||||
"category": "practices",
|
||||
"category": "naturesaura:practices",
|
||||
"advancement": "naturesaura:gold_leaf",
|
||||
"priority": true,
|
||||
"turnin": "naturesaura:wood_stand",
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "The Natural Altar",
|
||||
"icon": "naturesaura:nature_altar",
|
||||
"category": "using",
|
||||
"category": "naturesaura:using",
|
||||
"advancement": "naturesaura:aura_bottle_overworld",
|
||||
"priority": true,
|
||||
"turnin": "naturesaura:infused_materials",
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Altar of Birthing",
|
||||
"icon": "naturesaura:animal_spawner",
|
||||
"category": "using",
|
||||
"category": "naturesaura:using",
|
||||
"advancement": "naturesaura:sky_ingot",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Nature's Mend",
|
||||
"icon": "minecraft:enchanted_book",
|
||||
"category": "using",
|
||||
"category": "naturesaura:using",
|
||||
"advancement": "naturesaura:infused_tools",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Nature's Heal",
|
||||
"icon": "minecraft:enchanted_book",
|
||||
"category": "using",
|
||||
"category": "naturesaura:using",
|
||||
"advancement": "naturesaura:infused_tools",
|
||||
"flag": "mod:enchantability",
|
||||
"pages": [
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Armorer's Aid",
|
||||
"icon": "naturesaura:blast_furnace_booster",
|
||||
"category": "using",
|
||||
"category": "naturesaura:using",
|
||||
"advancement": "naturesaura:offering",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "World Eye",
|
||||
"icon": "naturesaura:chunk_loader",
|
||||
"category": "using",
|
||||
"category": "naturesaura:using",
|
||||
"advancement": "naturesaura:aura_bottle_end",
|
||||
"flag": "naturesaura:chunk_loader",
|
||||
"pages": [
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Transmutation Catalyst",
|
||||
"icon": "naturesaura:conversion_catalyst",
|
||||
"category": "using",
|
||||
"category": "naturesaura:using",
|
||||
"advancement": "naturesaura:sky_ingot",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "The Crimson Altar",
|
||||
"icon": "naturesaura:nature_altar",
|
||||
"category": "using",
|
||||
"category": "naturesaura:using",
|
||||
"advancement": "naturesaura:aura_bottle_nether",
|
||||
"priority": true,
|
||||
"turnin": "naturesaura:tainted_gold",
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Crumbling Catalyst",
|
||||
"icon": "naturesaura:crushing_catalyst",
|
||||
"category": "using",
|
||||
"category": "naturesaura:using",
|
||||
"advancement": "naturesaura:infused_materials",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Rails of the Worlds",
|
||||
"icon": "naturesaura:dimension_rail_nether",
|
||||
"category": "using",
|
||||
"category": "naturesaura:using",
|
||||
"advancement": "naturesaura:sky_ingot",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Ender Crate",
|
||||
"icon": "naturesaura:ender_crate",
|
||||
"category": "using",
|
||||
"category": "naturesaura:using",
|
||||
"advancement": "naturesaura:aura_bottle_end",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Aura Field Creator",
|
||||
"icon": "naturesaura:field_creator",
|
||||
"category": "using",
|
||||
"category": "naturesaura:using",
|
||||
"advancement": "naturesaura:sky_ingot",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Extraneous Firestarter",
|
||||
"icon": "naturesaura:furnace_heater",
|
||||
"category": "using",
|
||||
"category": "naturesaura:using",
|
||||
"advancement": "naturesaura:infused_materials",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Hopper Enhancement",
|
||||
"icon": "naturesaura:hopper_upgrade",
|
||||
"category": "using",
|
||||
"category": "naturesaura:using",
|
||||
"advancement": "naturesaura:infused_materials",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Imperceptible Builder",
|
||||
"icon": "naturesaura:placer",
|
||||
"category": "using",
|
||||
"category": "naturesaura:using",
|
||||
"advancement": "naturesaura:infused_materials",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Energetic Aura Forge",
|
||||
"icon": "naturesaura:rf_converter",
|
||||
"category": "using",
|
||||
"category": "naturesaura:using",
|
||||
"advancement": "naturesaura:sky_ingot",
|
||||
"flag": "naturesaura:rf_converter",
|
||||
"pages": [
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Winter's Calling",
|
||||
"icon": "naturesaura:snow_creator",
|
||||
"category": "using",
|
||||
"category": "naturesaura:using",
|
||||
"advancement": "naturesaura:sky_ingot",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Lamp of Sanctuary",
|
||||
"icon": "naturesaura:spawn_lamp",
|
||||
"category": "using",
|
||||
"category": "naturesaura:using",
|
||||
"advancement": "naturesaura:aura_bottle_end",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Everlasting Spring",
|
||||
"icon": "naturesaura:spring",
|
||||
"category": "using",
|
||||
"category": "naturesaura:using",
|
||||
"advancement": "naturesaura:offering",
|
||||
"pages": [
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "Shifting Sundial",
|
||||
"icon": "naturesaura:time_changer",
|
||||
"category": "using",
|
||||
"category": "naturesaura:using",
|
||||
"advancement": "naturesaura:aura_bottle_end",
|
||||
"pages": [
|
||||
{
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue